{{htmlmetatags>metatag-description:(ICL George 3 and George 4 source: RING-MACROS)}} ====== RING-MACROS ====== (George Source) 22FL ...[??? SKIPTRAC SECT FILE FGN 20 DOC 3#FB #MAC SKIPTRACE 3#^2 # A MINOR UARIATION ON TRACE-FOR STEP ONLY 3*DL #SKI K6ACCESS>%A-%A 3*Y= TRACE %B,%C 3BCW #NOR 3BMN ...[??? ADDSKIP SECT FILE FGN 20 DOC 3BXG #MAC ADDSKIP 3CC6 # ADD IN ONE TO VARIOUS STASTISTICAL LOCATIONS 3CWQ #SKI %A 3DBB ( 3DW2 LDN 0 1 3F*L #STR %B 3FT= ADS 0 %B 3G#W #STR %C 3GSG ADS 0 %C 3H#6 #STR %D 3HRQ ADS 0 %D 3J?B ) 3JR2 #NOR 3K2S ...[??? VARIADNR SECT FILE FGN 20 DOC 3K=L [ THIS MACRO IS USED TO UPDATE CTS. RELEVANT TO FILESTOR READ 3KQ= [ TRANSFERS ON VARIOUS TYPES OF FILE 3L9W #MAC VARIADNR 3LPG #SKI I516A 3M96 ( 3MNQ LDX 0 %A 3N8B STO 0 GEN5 3NN2 CALL 0 (ARIADR) 3P7L ) 3PM= #NOR 3PX4 ...[??? VARIADNW SECT FILE FGN 20 DOC 3Q6W [ AS FOR VARIADR BUT FOR WRITE TRANSFERS. 3QLG #MAC VARIADNW 3R66 #SKI I516A 3RKQ ( 3S5B LDX 0 %A 3SK2 STO 0 GEN5 3T4L CALL 0 (ARIADW) 3TJ= ) 3W3W #NOR 3W?N ...[??? TESTUSEJ SECT FILE FGN 20 DOC 3WHG #MAC TESTUSEJ 3X36 # JUMPS TO %B,IF ANYONE ELSE IS USING THE BLOCK IN FREADBLOCK OF 3XGQ # THE ELEMENT AT %A,IN THE FSTACK BLOCK AT %C. X0 & X3 ARE OVERWRITT 3Y2B # AND %C MAY BE IN A DUBIOUS STATE IF ONE HAS JUMPED TO UB 3YG2 LDEX 3 ARINGNO(%C) [CT FOR LOOP 3Y^L SBN 3 1 3^F= BZE 3 M3TESTUSEJ [J IF ONLY ONE ELEMENT IN FSTACK BLK 3^YW ADN 3 1 [ADD 1 TO COUNT AGAIN 42DG LDX 0 3 42Y6 M4TESTUSEJ 43CQ ADN %C FELLEN 43XB BCT 0 M4TESTUSEJ 44C2 M2TESTUSEJ 44WL SBN %C FELLEN [PTR.TO NEXT ELEMENT(GOING UP BLOCK) 45B= LDCT 0 #776 [J ROUND IF NOT OPEN 45TW ANDX 0 A1+FGENERAL1(%C) [I.E. SPARE FCA USED BY AUTOCLOSE 46*G BZE 0 M1TESTUSEJ 46T6 LDX 0 FREADBLOCK(%A) [DROP THRU' IF SOMEONE BEHIND US IN 47#Q SBX 0 FREADBLOCK+A1(%C) [FILE 47SB BNG 0 M1TESTUSEJ 48#2 BZE 0 M5TESTUSEJ 48RL SBN 0 1 49?= BZE 0 %B 49QW BRN M1TESTUSEJ 4==G M5TESTUSEJ 4=Q6 LDN 0 A1(%C) 4?9Q SBN 0 0(%A) [J IF NOT OUR ELEMENT 4?PB BNZ 0 %B [ 4#92 M1TESTUSEJ 4#NL BCT 3 M2TESTUSEJ [J BACK 4*8= M3TESTUSEJ 4*MW #NOR 4*XN ...[??? TESTWAIT SECT FILE FGN 20 DOC 4B7G #MAC TESTWAIT 4BM6 # VERY MUCH AS ABOVE,JUMPS IF ANYONE ELSE IS WAITING FOR BLOCK 4C6Q LDEX 3 ARINGNO(%C) 4CLB SBN 3 1 4D62 BZE 3 M3TESTWAIT 4DKL ADN 3 1 4F5= LDX 0 3 4FJW M4TESTWAIT 4G4G ADN %C FELLEN 4GJ6 BCT 0 M4TESTWAIT 4H3Q M2TESTWAIT 4HHB SBN %C FELLEN 4J32 LDCT 0 #776 4JGL ANDX 0 A1+FGENERAL1(%C) 4K2= BZE 0 M1TESTWAIT 4KFW LDX 0 FREADBLOCK+A1(%C) 4K^G BXU 0 FREADBLOCK(%A),M1TESTWAIT 4LF6 LDX 0 FGENERAL2+A1(%C) 4LYQ ANDN 0 1 4MDB BNZ 0 %B 4MY2 M1TESTWAIT 4NCL BCT 3 M2TESTWAIT 4NX= M3TESTWAIT 4PBW #NOR 4PLN ...[??? TESTLOOK SECT FILE FGN 20 DOC 4PWG #MAC TESTLOOK 4QB6 # AS ABOVE -J.IF SOMEONE GONE FOR LAST BLOCK 4QTQ LDEX 3 ARINGNO(%C) 4R*B SBN 3 1 4RT2 BZE 3 M3TESTLOOK 4S#L ADN 3 1 4SS= LDX 0 3 4T?W M4TESTLOOK 4TRG ADN %C FELLEN 4W?6 BCT 0 M4TESTLOOK 4WQQ M2TESTLOOK 4X=B SBN %C FELLEN 4XQ2 LDCT 0 #776 4Y9L ANDX 0 A1+FGENERAL1(%C) 4YP= BZE 0 M1TESTLOOK 4^8W LDX 0 FREADBLOCK+A1(%C) 4^NG BXU 0 FREADBLOCK(%A),M1TESTLOOK 5286 LDX 0 FGENERAL2+A1(%C) 52MQ ANDN 0 2 537B BNZ 0 %B 53M2 M1TESTLOOK 546L BCT 3 M2TESTLOOK 54L= M3TESTLOOK 555W #NOR 55*N ...[??? TESTSLOW SECT FILE FGN 20 DOC 55KG #MAC TESTSLOWEST 5656 # JUMPS TO %B,IF ALL OTHER READERS IN FSTACK BLOCK POINTED TO BY %C 56JQ # READ MORE BLOCKS OF THE FILE THAN THE READER WITH ELEMENT AT %A. 574B LDEX 3 ARINGNO(%C) [CT FOR LOOP 57J2 SBN 3 1 583L BZE 3 %B [J IF ONLY 1 ELEMENT IN FSTACK BLOCK. 58H= ADN 3 1 592W LDX 0 3 59GG M4TESTSLOW 5=26 ADN %C FELLEN 5=FQ BCT 0 M4TESTSLOW 5=^B M2TESTSLOW 5?F2 SBN %C FELLEN 5?YL LDXC 0 A1+FGENERAL1(%C) 5#D= BCC M1TESTSLOW 5#XW LDX 0 FREADBLOCK+A1(%C) 5*CG BNG 0 M3TESTSLOW 5*X6 LDX 0 FREADBLOCK(%A) 5BBQ BNG 0 M1TESTSLOW 5BWB BXL 0 FREADBLOCK+A1(%C),M1TESTSLOW 5CB2 LDN 0 A1(%C) 5CTL SBN 0 0(%A) 5D*= BNZ 0 M3TESTSLOW 5DSW M1TESTSLOW 5F#G BCT 3 M2TESTSLOW 5FS6 BRN %B 5G?Q M3TESTSLOW 5GRB #NOR 5H38 ...[??? XTESTSLO SECT FILE FGN 20 DOC 5H?2 # AS ABOVE , BUT CHECKS WORD POINTER TOO 5HQL #MAC XTESTSLOWEST 5J== LDEX 3 ARINGNO(%C) 5JPW SBN 3 1 5K9G BZE 3 %B 5KP6 ADN 3 1 5L8Q LDX 0 3 5LNB M4XTEST 5M82 ADN %C FELLEN 5MML BCT 0 M4XTEST 5N7= M2XTEST 5NLW SBN %C FELLEN 5P6G LDXC 0 A1+FGENERAL1(%C) 5PL6 BCC M1XTEST 5Q5Q LDX 0 FREADBLOCK(%A) 5QKB BNG 0 M1XTEST 5R52 SBX 0 FREADBLOCK+A1(%C) 5RJL BNG 0 M1XTEST 5S4= BNZ 0 M3XTEST 5SHW LDX 0 FREADWORD(%A) 5T3G BNG 0 M1XTEST 5TH6 SBX 0 FREADWORD+A1(%C) 5W2Q BNG 0 M1XTEST 5WGB BNZ 0 M3XTEST 5X22 LDN 0 A1(%C) 5XFL SBN 0 0(%A) 5X^= BNZ 0 M3XTEST 5YDW M1XTEST 5YYG BCT 3 M2XTEST 5^D6 BRN %B 5^XQ M3XTEST 62CB #NOR 62CL ...[??? STILLSLOW SECT FILE FGN 20 DOC 62CW ...# AS XTESTLOWEST BUT EQUAL SLOWEST TREATED AS SLOWEST 62D6 ...#MAC STILLSLOW 62DB ... LDEX 3 ARINGNO(%C) 62DL ... SBN 3 1 62DW ... BZE 3 %B 62F6 ... ADN 3 1 62FB ... LDX 0 3 62FL ...M4STILLSLOW 62FW ... ADN %C FELLEN 62G6 ... BCT 0 M4STILLSLOW 62GB ...M2STILLSLOW 62GL ... SBN %C FELLEN 62GW ... LDXC 0 A1+FGENERAL1(%C) 62H6 ... BCC M1STILLSLOW 62HB ... LDX 0 FREADBLOCK(%A) 62HL ... BNG 0 M1STILLSLOW 62HW ... SBX 0 FREADBLOCK+A1(%C) 62J6 ... BNG 0 M1STILLSLOW 62JB ... BNZ 0 M3STILLSLOW 62JL ... LDX 0 FREADWORD(%A) 62JW ... BNG 0 M1STILLSLOW 62K6 ... SBX 0 FREADWORD+A1(%C) 62KB ... BNG 0 M1STILLSLOW 62KL ... BNZ 0 M3STILLSLOW 62KW ...M1STILLSLOW 62L6 ... BCT 3 M2STILLSLOW 62LB ... BRN %B 62LL ...M3STILLSLOW 62LW ...#NOR 62M8 ...[??? BLOCKDOW SECT FILE FGN 20 DOC 62X2 #MAC BLOCKDOWN 63BL # SUBTRACTS ONE FROM EACH FREADBLOCK IN THE FSTACK BLOCK POINTED TO 63W= # %A. %B IS AN ACCUMULATOR FOR USE BY(AND OVERWRITTEN BY)THE MACRO. 64*W LDEX %B ARINGNO(%A) [CT FOR LOOP 64TG LDX 0 %B 65*6 M3BLOCKDOWN 65SQ ADN %A FELLEN 66#B BCT 0 M3BLOCKDOWN 66S2 M2BLOCKDOWN 67?L SBN %A FELLEN [PTR TO NEXT ELEMENT(GOING UP BLOCK) 67R= LDX 0 FREADBLOCK+A1(%A) 68=W BNG 0 M1BLOCKDOWN 68QG SBN 0 1 69=6 STO 0 FREADBLOCK+A1(%A) 69PQ M1BLOCKDOWN 6=9B BCT %B M2BLOCKDOWN 6=P2 #NOR 6=YS ...[??? SFUB SECT FILE FGN 20 DOC 6?8L #MAC SFUB 6?N= # SEARCHES FROM THB FSTACK BLOCK AT %A FOR TIE USAGE BLOCB WHOSE 6#7W # BLOCK NUMBER IS IN %B,SETTING THE PTR IN %C IF FOUND& BRNING 6#MG # TO %D IF NOT FOUND . X1 &X0 OVERWRITTEN 6*76 # 6*LQ #STR %A,1 6B6B LDX 1 %A 6BL2 M1SFUB 6C5L LDX 1 FPTR(1) 6CK= #SKI IFS<1$1 6DJG LDX 0 ATYPE(1) 6F46 BXE 0 FILEPLUSFCB,%D 6FHQ BXE 0 FFSFURB,M2SFUB 6G3B BXU 0 FFSFUWB,M1SFUB 6GH2 M2SFUB 6H2L LDX 0 BACK2(1) 6HG= BXU 0 %B,M1SFUB 6HQ4 ... BXE 1 CXFI,%D 6H^W #STR %C,1 6JFG STO 1 %C 6J^6 #NOR 6K8Y ...[??? SFSTACK SECT FILE FGN 20 DOC 6KDQ #MAC SFSTACK 6KYB # THIS MACRO SEARCHES DOWN THE FILERING FOR THE RING ELEMENT OF 6LD2 # THE FILE OPEN AT DEPTH[%A].A POINTER TO THIS ELEMENT IS PUT INTO 6LXL # %B & IF DESIRED,A POINTER TO THE FSTACK BLOCK IS PUT IN %C 6MC= # X0 &%B,%C ARE OVERWRITTEN 6MWW # IF %D IS PRESENT,WE SEARCH FOR IT THE ELEMENT ATGIVEN DEPTH FOR TH 6NBG # ACTIVITY 6NW6 # 6P*Q #STR %B,%D 6PTB #SKI 6Q*2 ! SFSTACK ! %B=%D !!! 6QSL #STR %A 6R#= #SKI 6RRW ( 6S?G #STR %D 6SR6 #SKI 6T=Q ( 6TQB SMO FX2 6W=2 LDX %B FILERING 6WPL ) 6X9= #STR %D 6XNW MOD LDX %B FILERING,%D 6Y8G ) 6YN6 #STR %A 6^7Q ( 6^MB #STR %A,0 7272 ( 72LL #STR %A 736= LDX 0 %A 73KW ) 745G BNG 0 MSFSTACK3 74K6 #STR %D 754Q MOD LDX %B FILERING,%D 75JB #STR %D 7642 #SKI 76HL ( 773= SMO FX2 77GW LDX %B FILERING 782G ) 78G6 BZE 0 MSFSTACK2 78^Q MSFSTACK1 79FB MOD LDX %B FPTRF,%B 79^2 BCT 0 MSFSTACK1 7=DL BRN MSFSTACK2 7=Y= MSFSTACK3 7?CW #STR %D 7?XG MOD LDX %B FILERING+1,%D 7#C6 #STR %D 7#WQ #SKI 7*BB ( 7*W2 SMO FX2 7B*L LDX %B FILERING+1 7BT= ) 7C#W MSFSTACK4 7CSG ADN 0 1 7D#6 BZE 0 MSFSTACK2 7DRQ MOD LDX %B BPTRF,%B 7F?B BRN MSFSTACK4 7FR2 MSFSTACK2 7G=L ) 7GQ= #STR %C 7H9W ( 7HPG LDX %C %B 7J96 MOD ADX %C FBACKPOINT,%C 7JNQ ) 7K8B #NOR 85F8 ...[??? FILEOPEN SECT FILE FGN 20 DOC 85RL #MAC FILEOPEN 86?= LDX 2 FX2 86QW LDN 0 FILERING(2) 87=G BXE 0 FILERING(2),%A 87Q6 #NOR 87^Y ...[??? FILENUMB SECT FILE FGN 20 DOC 889Q #MAC FILENUMB 88PB [ PUTS NO. OF FILES OPEN IN %A 8992 [ ACT-POINTED TO BY %B, DEFAULT FX2 89NL #ACC %A 8=8= ( 8=MW LDN 0 1 8?7G STOZ %A 8?M6 ) 8#6Q #ACC %A 8#LB #SKI 8*62 LDN %A 0 8*KL #STR %B 8B5= MOD LDN 2 FILERING,%B 8BJW #STR %B 8C4G #SKI 8CJ6 ( 8D3Q SMO FX2 8DHB LDN 2 FILERING 8F32 ) 8FGL LDX 1 2 8G2= M1FILENUMB 8GFW LDX 1 FPTRF(1) 8G^G BXE 1 2,M2FILENUMB 8HF6 #ACC %A 8HYQ ADS 0 %A 8JDB #ACC %A 8JY2 #SKI 8KCL ADN %A 1 8KX= BRN M1FILENUMB 8LBW M2FILENUMB 8LWG LDX 1 FX1 8MB6 LDX 2 FX2 8MTQ #NOR 8N5J ...[??? FILECOUN SECT FILE FGN 20 DOC 8N*B #MAC FILECOUNT 8NT2 FILENUMB %A 8P#L #NOR 8PJD ...[??? LASTREKA SECT FILE FGN 20 DOC 8PS= #MAC LASTREKA 8Q?W [ %A -> USAGE BLOCK,%B -> NONZERO R.H 8QRG [ %B ON EXIT -> LAST(ZERO)RECORD 8R?6 M1LASTREKA 8RQQ SMO %B 8S=B LDEX 0 0(%A) 8SQ2 BZE 0 M2LASTREKA 8T9L ADS 0 %B 8TP= BRN M1LASTREKA 8W8W M2LASTREKA 8WNG #NOR 95?D ...[??? TOPFCA2 SECT FILE FGN 20 DOC 95H= #MAC TOPFCA2 [X2 ->[FX2] 962W LDX %A FILERING(2) 96GG #NOR 96Q# ...[??? PSTAC SECT FILE FGN 20 DOC 9726 #MAC PSTAC 97FQ #STR %A,%B 97^B LDX %A %B 98F2 ADX %A FBACKPOINT(%A) 98YL #NOR 998D ...[??? BFCBX SECT FILE FGN 20 DOC 99D= #MAC BFCBX [GIVEN FSTACK POINTER IN X%B,GIVES 99XW LDX %A BPTR(%B) [FCB POINTER IN X%A 9=CG #NOR 9=M# ...[??? TOPFCA SECT FILE FGN 20 DOC 9=X6 #MAC TOPFCA 9?BQ [ THIS MACRO SEARCHES FOR THE RING ELEMENT OF THE TOP FILE OPEN TO THE 9?WB [ CURRENT ACTIVITY AND GIVES A POINTER TO IT IN %A 9#B2 SMO FX2 9#TL #ACC %A 9**= #SKI 9*SW LDX %A FILERING [FOR %A AN ACCUMUALTOR 9B#G #ACC %A 9BS6 ( 9C?Q LDX 0 FILERING [FOR %A NOT AN ACCUMULATOR 9CRB STO 0 %A 9D?2 ) 9DQL #NOR 9F2D ...[??? TOPFCAV SECT FILE FGN 20 DOC 9F== #MAC TOPFCAV 9FPW # GIVES PTR TO FCA OF TOP FILE OPEN TO ACTIVITY POINTED TO BY 9G9G # %B 9GP6 MOD LDX %A FILERING,%B 9H8Q #NOR 9HDJ ...[??? NXFCA SECT FILE FGN 20 DOC 9HNB #MAC NXFCA 9J82 # 9JML # TO GIVF A POINTER IN %B TO NEXT ELEMENT IN FILERING AFTER %B, 9K7= # AND BRANCH TO %C IF IT DOES NOT EXIST. 9KLW LDX %B FPTRF(%A) 9L6G LDX 0 %B 9LL6 SMO FX2 9M5Q SBN 0 FILERING 9MKB BZE 0 %C 9N52 #NOR 9N#S ...[??? TOPFCB SECT FILE FGN 20 DOC 9NJL #MAC TOPFCB 9P4= [THIS MACRO SEARCHES FOR THE FCB OF THE TOP FILE OPEN TO THE CURRENT 9PHW [ACTIVITY AND GIVES A POINTER TO IT IN THE MODIFIER %A 9Q3G [THIS MACRO DOES NOT CHECK IF THE POINTER GIVEN IS TO AN FCB 9QH6 SMO FX2 9R2Q LDX %A FILERING [PICK UP -> TO RING ELEMENT 9RGB ADX %A FBACKPOINT(%A) [-> FSTACK BL. 9S22 LDX %A BPTR(%A) [PICK UP -> TO FCB 9SFL #NOR 9SPD ...[??? TOPFCB2 SECT FILE FGN 20 DOC 9S^= #MAC TOPFCB2 9TDW LDX %A FILERING(2) 9TYG MOD ADX %A FBACKPOINT,%A 9WD6 MOD LDX %A BPTR,%A 9WXQ #NOR 9X7J ...[??? TOPFCBV SECT FILE FGN 20 DOC 9XCB #MAC TOPFCBV 9XX2 # GIVES PTR TO FCB OF TOP FILE OPEN TO ACTIVITY POINTED TO BY 9YBL # %B 9YW= MOD LDX %A FILERING,%B 9^*W PSTAC %A,%A 9^TG BFCBX %A,%A =2*6 #NOR =2JY ...[??? TFCBCHEC SECT FILE FGN 20 DOC =2SQ #MAC TFCBCHECK =3#B [THIS MACRO DOES THE SAME AS TOPFCB AND CHECKS THAT THE POINTER GIVEN IN =3S2 [%A IS TO A FILE/FCB =4?L TOPFCB %A =4R= LDX 0 ATYPE(%A) =5=W SBX 0 FILEPLUSFCB =5QG BZE 0 M1TFCBCHECK =6=6 GEOERR 1,FCB MISS =6PQ M1TFCBCHECK =79B #NOR =7F8 ...[??? BASEFCB SECT FILE FGN 20 DOC =7P2 [ =7S7 ...#MAC BASEFCB =7X# ...[ =82F ...[ SET UP FOR SEARCH VIA FCB RING =85L ...[ %A MODIFIER FOR FCB RING =88R ...[ %B FILE,HALF,DIR OR WORK =8?Y ...[ %C LABEL IF NO FCBS =8C5 ...[ %D SPARE ACC NULL TAKES X0 =8G= ... =8KC ...#STR %D =8NJ ...#STR =8RP ... BASEFCB %A,%B,%C,0,%E =8WW ...#STR %D =923 ...( =958 ... =98* ...#OPT MBFCBFILE=1 =9?G ...#OPT MBFCBDIR=2 =9BM ...#OPT MBFCBHALF=4 =9FS ...#OPT MBFCBWORK=8 =9J^ ...#DEF MBFCB=MBFCB%B =9N6 ... =9R? ...#SKI MBFCB&7 =9WD ...( =9^K ... [NOT WORK FILE ==4Q ... %E ==7X ... LDX %D B%BN ==?4 ...#SKI MBFCB&4 ==B9 ... BZE %D %C [ZERO FCBS MAYBE FOR HALF ONLY ==FB ... ==JH ...#SKI MBFCB&1 ==MN ... LDX %A BFILE ==QT ... ==W2 ...#SKI MBFCB&2 ==^7 ... LDX %A BFILE =?4# ... =?7F ...#SKI MBFCB&4 =?=L ... LDX %A BHALF =?*R ... =?DY ... ADN %A FCBRING =?J5 ... =?M= ...#SKI MBFCB&5 =?QC ...( =?TJ ...#STR %E =?YP ...#SKI =#3W ... LDX %A 1(%A) =#73 ...) =#=8 ...) =#** ... =#DG ...#SKI MBFCB&8 =#HM ...( =#LS ... LDN %D BWORKRING(%A) [WORKFILE CASE =#P^ ... BXE %D BWORKRING(%A),%C [EMPTY =#T6 ... LDX %D BWORKRING(%A) =#Y? ... ADN %D FCBRING =*3D ... LDX %A %D =*6K ... =*9Q ...) =*#X ... =*D4 ...#FRE MBFCB =*H9 ...) =*LB ...#NOR =HL= ...[??? NEXTFCB SECT FILE FGN 20 DOC =HPW ...#MAC NEXTFCB =HTG ...[ =H^6 ...[ MOVE TO NEXT FCB =J4Q ...[ PARAMETERS AS BASEFCB =J8B ...[ EXCEPT LABEL USED IF MORE FCBS ARE PRESENT =J#2 ...#STR %D =JCL ...#STR =JH= ... NEXTFCB %A,%B,%C,0,%E =JLW ...#STR %D =JQG ...( =JW6 ... =J^Q ...#OPT NXFCBFILE=1 =K5B ...#OPT NXFCBDIR=2 =K92 ...#OPT NXFCBHALF=4 =K#L ...#OPT NXFCBWORK=8 =KD= ...#DEF NXFCB=NXFCB%B =KHW ... =KMG ... %E =KR6 ...#SKI NXFCB&5 =KWQ ... LDX %A 1(%A) [BACKWARDS SEARCH FOR FILE OR HALF =L2B ...#SKI NXFCB =L62 ... LDX %A 0(%A) [FORWARDS SEARCH FOR DIR OR WORK =L9L ...#SKI NXFCB&8 =L*= ...( =LDW ... BXU %D %A,%C [WORKFILES END OF RING TEST =LJG ...) =LN6 ...#SKI NXFCB&7 =LRQ ... BCT %D %C [FILE,DIR AND HALF END OF RING TEST =LXB ...#FRE NXFCB =M32 ...) =M6L ...#NOR =M== ...[??? DELFCB SECT FILE FGN 22 DOC =M*W ...#MAC DELFCB =MFG ... =MK6 ...[ MACRO TO FREE AN FCB =MNQ ...[ %A IS POINTER TO FCB %B IS FILE HALF OR WORK =MSB ...[[ =MY2 ... =N3L ... LDX 1 %A =N7= ...[ =N=W ...#STR WORK,%B =NBG ...( =NG6 ... LDN 0 1 [ADJUST COUNTS FOR HALF AND FILE =NKQ ...#STR HALF,%B =NPB ...( =NT2 ... LDX 2 BACK2(1) [DIR COUNT AS WELL TO BE ADJUSTED =NYL ... BPZ 2 MDELFCB =P4= ... SBS 0 BDIRN =P7W ...MDELFCB =P?G ...) =PC6 ... =PGQ ... SBS 0 B%BN =PLB ...) =PQ2 ... FREECORE 1 =PTL ...#NOR ?WJ8 ...[??? GETFCB SECT FILE FGN 20 DOC ?WWL # ?XB= #MAC GETFCB ?XTW [ THIS MACRO SEARCHES FOR THE FCB INDICATED BY THE BACKING STORE HOME IN ?Y*G [ %A,%A+1 IN THE OPEN FILE CHAIN STARTING AT THE BACK OF THE CHAIN ?YJC ...#MOD %B ?YR# ...!!!!! ?^29 ...#SKI %A-5 ?^96 ...( ?^D3 ... STO 5 GEN0 ?^LY ... STO 6 GEN1 [STO ACCS IF X5,6 NOT USED ?^TT ...#STR %A,4 #24Q ...#STR #2?M ...( #2GJ ... LDX 6 %A+1 [%A -3 CAREFUL ABOUT X4 #2PF ... LDX 5 %A #2YB ...) #37? ...#STR %A,4 #3B8 ...( #3K5 ... LDX 5 %A [LOAD FCB NUMBERS #3S2 ... LDX 6 %A+1 #42X ...) #49S ...) #4DP ... LDXC 0 6 [GET 1 OR 0 FOR FILE MOD #4ML ... LDN 0 0 [1-DIR 0= FILE #4WH ... ERN 0 1 [DIR=0 FFLE =1 #55D ... STO 0 GEN2 #5#* ... #5H= ... BASEFCB %B,DIR,M4GETFCB,,SMO GEN2 [SET UP ACCS FOR #5Q7 ...[SEARCH OF FCB RING #5^4 ...#STR %C #67^ ... STO %B GEN3 [RERING OPTION SAVE FIRST FCB #6BW ...M1GETFCB #6KR ... SMO CMIN64 [SMO TO TAKE US BACK TO BACK12 #6SN ... BXE 6 61(%B),M3GETFCB [BACK2 CORRECT #73K ...M2GETFCB #7=G ... NEXTFCB %B,DIR,M1GETFCB,,SMO GEN2 [NO TRY NEXT #7FC ...M4GETFCB #7N# ... GEOERR 1,FCB MISS [FCB NOT FOUND #7X9 ...M3GETFCB #866 ... SMO CMIN64 [BACK1 CORRECT? #8*3 ... BXU 5 60(%B),M2GETFCB [NO TRY NEXT #8HY ...#STR %C #8QT ...( #8^Q ...#SKI %B-3 #98M ... STO %B GEN3 #9CJ ... RERING %B,GEN2 [RERING FCB TO FIND IT FASTER #9LF ...#SKI %B-3 #9TB ... LDX %B GEN3 #=4? ...) #=?8 ... SBN %B FCBRING #=G5 ...#SKI %A-5 #=P2 ...( #=XX ... LDX 5 GEN0 #?6S ... LDX 6 GEN1 #?*P ...) #?JW #NOR #?SN ...[??? XSFCB SECT FILE FGN 20 DOC ##4G #MAC XSFCB ##J6 [ THIS IS THE REDEFINED SFCB MACRO WHICH GIVES A POINTER IN %B TO THE #*3Q [ FCB OF THE FILE OPEN AT LEVEL %A TO THE CURRENT ACTIVITY #*HB SFSTACK %A,%B [TO GIVE %B-> TO FCA IN STACK BLOCK #B32 MOD ADX %B FBACKPOINT,%B [%B -> FSTACK #BGL MOD LDX %B BPTR,%B [%B -> FCB #C2= MOD LDX 0 ATYPE,%B [= FCB? #CFW SBX 0 FILEPLUSFCB #C^G BZE 0 M1XSFCB #DF6 #SKI K6ALLGEO #DYQ GEOERR 1,FCB MISS #FDB M1XSFCB #FY2 #NOR #G7S ...[??? SFCB SECT FILE FGN 20 DOC #GCL #MAC SFCB #GX= XSFCB %A,%B #HBW #NOR #HLN ...[??? TOPFCAB SECT FILE FGN 20 DOC #HWG #MAC TOPFCAB #JB6 SMO FX2 #JTQ LDX %A FILERING #K*B SMO FBACKPOINT(%A) #KT2 LDX %B BPTR(%A) #L#L #NOR #LJD ...[??? TOPFCAB2 SECT FILE FGN 20 DOC #LS= #MAC TOPFCAB2 #M?W LDX %A FILERING(2) #MRG SMO FBACKPOINT(%A) #N?6 LDX %B BPTR(%A) #NQQ #NOR #P2J ...[??? FCANO2 SECT FILE FGN 20 DOC #P=B #MAC FCANO2 #PQ2 [ #Q9L [ SET %A -> SECOND FCA IN FILECHAIN,BRN %B IF NOT PRESENT #QP= [ #R8W TOPFCA %A,%A #RNG NXFCA %A,%A,%B #S86 #NOR #SCY ...[??? FCBNO2 SECT FILE FGN 20 DOC #SMQ #MAC FCBNO2 #T7B [ #TM2 [ SET %A -> SECOND FCB,BRN %B IF NOT THERE #W6L [ #WL= FCANO2 %A,%B #X5W PSTAC %A,%A #XKG BFCBX %A,%A #Y56 #NOR #Y#Y ...[??? RINGFILE SECT FILE FGN 20 DOC #YJQ #MAC RINGFILE #^4B [ THIS MACRO PUTS THE FILE ELEMENT POINTED TO IN %A INTO THE FILE RING #^J2 [ OF THE CURRENT ACTIVITY AT THE TOP LEVEL AND UPDATES FGENERAL1 *23L #SKI %B *2H= MOD LDX 0 FILERING,%B *32W #SKI %B *3GG #SKI *426 ( *4FQ SMO FX2 *4^B LDX 0 FILERING [PUTS POINTER TO NEW LEVEL 1 FILE *5F2 ) *5YL MOD STO 0 FPTRF,%A *6D= SMO 0 [PUTS %A IN BACK POINTER OF LEVEL 1 *6XW STO %A BPTRF [ELEMENT *7CG #SKI %B *7X6 MOD LDN 0 FILERING,%B *8BQ #SKI %B *8WB #SKI *9B2 ( *9TL SMO FX2 *=*= LDN 0 FILERING [PUTS POINTER TO BASE OF FILE RING IN *=SW ) *?#G MOD STO 0 BPTRF,%A *?S6 #SKI %B *#?Q MOD STO %A FILERING,%B *#RB #SKI %B **?2 #SKI **QL ( *B== SMO FX2 [PUTS %A IN FORWARD POINTER OF BASE *BPW STO %A FILERING [OF RING IN ACTIVITY BLOCK *C9G ) *CP6 #NOR CFBN ...[??? RESTOREN SECT FILE FGN 20 DOC CFLG [ CG66 #MAC RESTOREN CGKQ SETMODE 0,%A CH5B SMO FX2 CHK2 STO 0 ACOMMUNE1 CJ4L ... DOWN OPENEND,5 CJJ= #NOR CJS4 ...[??? SFCAB SECT FILE FGN 20 DOC CK3W [ CKHG #MAC SFCAB CL36 SFCA %A,%B,%C CLGQ #MOD %C CM2B #SKI CMG2 LDX %C BPTR(%C) CM^L #MOD %C CNF= ( CNYW SMO %C CPDG LDX %C BPTR CPY6 ) CQCQ #NOR CQMJ ...[??? SFCA SECT FILE FGN 20 DOC CQXB #MAC SFCA CRC2 #OPT M2SFCA=%B<4$4<1 CRWL #STR %C CSB= #OPT M3SFCA=%C<4$4<1<%C CSTW #OPT M3SFCA=0 CT*G #OPT M4SFCA=M2SFCA$1&M3SFCA CTT6 #OPT M5SFCA=M2SFCA^M3SFCA$1 CW#Q #STR %A,0 CWSB ( CX#2 #STR %A CXRL LDX 0 %A CY?= ) CYQW #SKI M4SFCA$1 C^=G ( C^Q6 LDX %B FX2 D29Q ADN %B FILERING D2PB ) D392 #SKI M4SFCA D3NL ( D48= LDX %C FX2 D4MW ADN %C FILERING D57G ) D5M6 #STR %A D66Q ( D6LB ADN 0 1 D762 M1SFCA D7KL ) D85= #SKI M2SFCA D8JW LDX %B FPTRF(%B) D94G #SKI M5SFCA D9J6 ( D=3Q SMO %B D=HB LDX %B FPTRF D?32 ) D?GL #SKI M4SFCA D#2= LDX %C FPTRF(%C) D#FW #STR %A D#^G BCT 0 M1SFCA D*F6 #STR %C D*YQ ( DBDB #STR %B,%C DBY2 ( DCCL #SKI M4SFCA$1 DCX= LDX %C %B DDBW #SKI M4SFCA DDWG LDX %B %C DFB6 ) DFTQ #SKI M2SFCA DG*B ADX %C FBACKPOINT(%B) DGT2 #SKI M4SFCA DH#L ADX %C FBACKPOINT(%C) DHS= #SKI M5SFCA DJ?W ( DJRG SMO %B DK?6 ADX %C FBACKPOINT DKQQ ) DL=B ) DLQ2 #STR %C DM9L ( DMP= ) DN8W #FRE M2SFCA DNNG #FRE M3SFCA DP86 #FRE M4SFCA DPMQ #FRE M5SFCA DQ7B #NOR DT#Y ...[??? SXFCB SECT FILE FGN 20 DOC DTJQ #MAC SXFCB DW4B SFCA %A,%B,%B DWJ2 #SKI %B<4$4 DX3L LDX %B BPTR(%B) DXH= #SKI %B>3$3 DY2W ( DYGG SMO %B D^26 LDX %B BPTR D^FQ ) D^^B #NOR F298 ...[??? CHANGEFI SECT FILE FGN 20 DOC F2F2 # F2YL # THIS MACRO CHANGES A FILE OF GIVEN LEVEL TO CURRENT ACTIVITY TO F3D= # A GIVEN LEVEL OF A SPECIFIED ACTIVITY. F3XW # F4CG #MAC CHANGEFILE F4X6 #ACC %A F5BQ #SKI F5WB ( F6B2 SMO FX2 F6TL STO %A ACOMMUNE3 F7*= ) F7SW #ACC %A F8#G ( F8S6 LDX 0 %A F9?Q SMO FX2 F9RB STO 0 ACOMMUNE3 F=?2 ) F=QL #STR %B F?== #SKI F?PW ( F#9G SMO FX2 F#P6 STOZ ACOMMUNE2 F*8Q ) F*NB #STR %B FB82 ( FBML LDN 0 %B FC7= SMO FX2 FCLW STO 0 ACOMMUNE2 FD6G ) FDL6 #STR %C FF5Q #SKI FFKB ( FG52 SMO FX2 FGJL STOZ ACOMMUNE1 FH4= ) FHHW #STR %C FJ3G ( FJH6 LDN 0 %C FK2Q SMO FX2 FKGB STO 0 ACOMMUNE1 FL22 ) FLFL DOWN CHANFILE,1 FL^= #NOR FM94 ...[??? FILEMOVE SECT FILE FGN 20 DOC FMDW # FMYG # THIS MACROS MOVES A FILE FROM ONE LEVEL TO ANOTHER IN A GIVEN ACTIVITY FND6 # FNXQ #MAC FILEMOVE FPCB #ACC %C FPX2 #SKI FQBL ( FQW= SMO FX2 FR*W STO %A ACOMMUNE3 FRTG ) FS*6 LDN 0 %A FSSQ SMO FX2 FT#B STO 0 ACOMMUNE1 FTS2 LDN 0 %B FW?L SMO FX2 FWR= STO 0 ACOMMUNE2 FX=W #SKI %C FXQG ( FY=6 #ACC %C FYPQ ( F^9B LDX 0 %C F^P2 SMO FX2 G28L STO 0 ACOMMUNE3 G2N= ) G37W ) G3MG #SKI %C G476 #SKI G4LQ ( G56B SMO FX2 G5L2 STOZ ACOMMUNE3 G65L ) G6K= DOWN CHANFILE,3 G74W #NOR G7#N ...[??? CHANGEST SECT FILE FGN 20 DOC G7JG #MAC CHANGESTREAM G846 #ACC %A G8HQ LDX 0 %A G93B SMO FX2 G9H2 #ACC %A G=2L #SKI G=G= STO %A ACOMMUNE1 G=^W #ACC %A G?FG STO 0 ACOMMUNE1 G?^6 DOWN CHANFILE,2 G#DQ #NOR G#NJ ...[??? GETFCBN SECT FILE FGN 20 DOC G#YB # G*D2 #MAC GETFCBN G*KT ... G*RN ... BPZ %B MGETFCBN2 G*^H ... LDX 0 FCBNO [UNIQUE NUMBER FOR DIR FCBS GB7B ...MGETFCBN1 GB*9 ... ADN 0 1 GBH4 ... STO 0 FCBNO GBNX ... BNG 0 MGETFCBN3 [TEST IF WE HAVE OVERFLOWED !! GBWQ ... LDCT 0 #400 [RESET FCB NO GC4K ... BRN MGETFCBN1 GC=D ...MGETFCBN2 GCD? ... LDX 0 FCBNUM [UNIQUE NUMBER FOR TERM FILE FCBS GCL6 ... ADNC 0 1 GCR^ ... STO 0 FCBNUM GC^S ...MGETFCBN3 GD7M ... STO 0 BACK2(%A) [STORE IN FCB GD*Q #NOR GDKJ ...[??? INITLFCA SECT FILE FGN 20 DOC GDTB [ GF*2 #MAC INITLFCA GFSL JBCC M1INITLFCA,3,BFLENW GG#= TRACEIF K6OPEN,99,299,FLOC1(3),REL ALST GGRW FON ISTACWT [FREE WAITERS FOR FSTACK GH?G M1INITLFCA GHR6 LDX 2 FPTR(3) GJ=Q BC 3,BFLEN GJQB LDEX 1 ARINGNO(2) GK=2 LDN 0 FELLEN GKPL MPY 0 1 GL9= LDN 0 1 GLNW ADS 0 ARINGNO(2) [UPDATE COUNT OF ELEMENTS GM8G ADN 1 A1 GMN6 ADX 2 1 GN7Q NGS 1 FBACKPOINT(2) GNMB #NOR GNX8 ...[??? SETUPFCA SECT FILE FGN 20 DOC GP72 [ GPLL #MAC SETUPFCA GQ6= JBC M1SETUPFCA,%B,BFLEN GQKW BS %B,BFLENW GR5G TRACEIF K6OPEN,99,299,FLOC1(%B),WT ALST GRK6 COOR3 ISTACWT [AND WAIT GS4Q BRN %C GSJB M1SETUPFCA GT42 BS %B,BFLEN GTHL LDX %A FPTR(%B) GW3= ALTLENR %A,%D [%D IS OVERWRITTEN GWGW #NOR H284 ...[??? FFCA SECT FILE FGN 20 DOC H2CW #MAC FFCA H2XG BNG 3 M1FSTAC H3C6 CALL 0 (HSFSTACKF) H3WQ M1FSTAC H4BB CALL 0 (HSFSTACKB) H4W2 #NOR H55S ...[??? LOCFCB SECT FILE FGN 20 DOC H5*L #MAC LOCFCB H5T= LDN 1 %A H6#W CALL 0 M1LOCFCB H6SG #OPT M2LOCFCB=1 H7#6 #SKI M2LOCFCB H7RQ ( H8?B BRN M3LOCFCB H8R2 #DEF M1LOCFCB=0? H9=L STO 0 GEN0 H9Q= STO 1 GEN1 H=9W LDN 0 3 H=PG LDN 1 GEN2 H=^# ... MOVE 0 5 H?DY ...[ ACC USE H?YJ ...[ 0 TESTNAMX H#D8 ...[ 1FILE FABS POINTER H#XS ...[ 2 FCB POINTER H*CD ...[ 3 FCB RING POINTER H*X4 ...[ 4AND 5 COMPARISON WORDS HBBN ...[ 6 NEXTFCB MACRO COUNT OF FCBS HBW# ...[ 7 TESTNAMX MACRO HC*Y ... HCTJ ... TOPFCB 2 HD*8 ... HUNT 1,FILE,FABSNB HDSS ... ADX 1 A1(1) [X1 POINTS TO LOCAL NAME HF#D ... [REF BY A1-6 HFS4 ... LDX 4 A1-6(1) [FIRST WORD OF LOCAL NAME HG?N ... LDX 5 FME1(2) [FIRST WORD OF USER NAME HGR# ... BASEFCB 3,FILE,M7LOCFCB,6 HH=Y ...M4LOCFCB HHQJ ... BXE 4 FLOC1-FCBRING(3),M6LOCFCB [FAST LOOP TO FIND FCB HJ=8 ...M5LOCFCB HJPS ... NEXTFCB 3,FILE,M4LOCFCB,6 HK9D ... BRN M7LOCFCB [FCB RING EXHAAUSTED HKP4 ...M6LOCFCB [A POSSIBLE FCB FOUND HL8N ... BXU 5 FUSER1-FCBRING(3),M5LOCFCB [USER NAME COMP HLN# ... TESTNAMX 5,FLOC2-FCBRING(3),A1-6+1(1),M5LOCFCB HM7Y ... LDX 0 FME2(2) [COMPARE REST OF USER NAME HMMJ ... BXU 0 FUSER2-FCBRING(3),M5LOCFCB HN78 ... LDX 0 FME3(2) HNLS ... BXU 0 FUSER3-FCBRING(3),M5LOCFCB HP6D ... BRN M9LOCFCB HPL4 ... J27G M7LOCFCB J2M6 SETREP NOTFOUND J36Q BRN M10LOCFCB J3LB M9LOCFCB J462 SETREP OK J4KL M10LOCFCB J55= LDX 0 3 J5*4 ... SBN 0 FCBRING J5JW LDN 1 GEN2 J64G LDN 2 3 J6J6 MOVE 1 5 J73Q LDX 1 GEN1 J7HB STO 0 0(1) J832 #SKI %A-1 J8GL LDX 1 FX1 J92= #SKI %A-2 J9FW LDX 2 FX2 J9^G LDX 0 GEN0 J=F6 EXIT 0 0 J=YQ #FREE M2LOCFCB J?DB #DEF M2LOCFCB=0 J?Y2 M3LOCFCB J#CL ) J#X= #NOR J*74 ...[??? FCBFIND SECT FILE FGN 20 DOC J*BW #MAC FCBFIND J*WG ... JBB6 ... HUNT 1,FILE,ENT JBTQ ...#SKI %A-6 JC*B ... STO 6 %A JCT2 ... STO 2 GEN0 [CLEAR WORKING AREA JD#L ... STO 3 GEN1 JDS= ... LDX 0 ELOC1(1) JF?W ... BASEFCB 3,FILE,MFCBFIND7,6 JFRG ...MFCBFIND1 JG?6 ... BXU 0 FLOC1-FCBRING(3),MFCBFIND2 [B IF LOCAL NAMES = JGQQ ... TESTNAMX 4,FLOC2-FCBRING(3),ELOC2(1),MFCBFIND4,2 JH=B ... LDX 0 ELAN(1) [TEST COMPLETE LOCAL NAME JHQ2 ... BXE 0 FLAN-FCBRING(3),MFCBFIND5 JJ9L ...MFCBFIND4 JJP= ... LDX 0 ELOC1(1) [CONTINUE SEARCH JK8W ...MFCBFIND2 JKNG ... NEXTFCB 3,FILE,MFCBFIND1,6 JL86 ... BRN MFCBFIND7 [FCBRING EXHAUSTED JLMQ ...MFCBFIND5 JM7B ... TOPFCB 2 JMM2 ... LDX 0 FME1(2) [TEST USER NAME FROM TOP FCB JN6L ... BXU 0 FUSER1-FCBRING(3),MFCBFIND4 JNL= ... LDX 0 FME2(2) JP5W ... BXU 0 FUSER2-FCBRING(3),MFCBFIND4 JPKG ... LDX 0 FME3(2) JQ56 ... BXU 0 FUSER3-FCBRING(3),MFCBFIND4 JQJQ ... SBN 3 FCBRING [POINT BACK TO START OF FCB JR4B ... LDX 0 3 [X0 CONTAINS FCB POINTER JRJ2 ...MFCBFIND7 JS3L ... LDX 2 GEN0 [RESTORE ACCS JSH= ... LDX 3 GEN1 JT2W ...#SKI %A-6 JTGG ... LDX 6 %A JW26 ... STO 0 %A JWFQ ... BNG 0 %B [B IF FCB NOT FOUND,0- LOCAL NAME JYXW #NOR J^CG ... J^X6 ...[??? TRANSFCB SECT FILE FGN 22 DOC K2BQ ...#MAC TRANSFCB K2WB ...[ K3B2 ...[ TRANSFER FCB FROM FFLE,ACT,HALFOR WORK CHAINS K3TL ...[ TO FILE,WORK OR HALF CHAINS K4*= ...[ K4SW ... K5#G ...#OPT MTFCBFILE=1 K5S6 ...#OPT MTFCBHALF=4 K6?Q ...#OPT MTFCBWORK=8 K6RB ...#OPT MTFCBACT=16 K7?2 ... K7QL ...#DEF MTFCB=MTFCB%C*64+MTFCB%B K8== ... K8PW ...[FROM ACT TO FILE KEYFCB K99G ...[ CHAIN BFILE+1 K9P6 ...[ UPDATE BFILEN AND OR BDIRN K=8Q ...[ TO WORK CHAIN BWORKRING+1(FX1) K=NB ...[ K?82 ...[FROM FILE TO HALF CHAIN BHALF K?ML ...[ UPDATE BDIRN,BFILEN,BHALFN K#7= ...[ K#LW ...[FROM HALF TO FILE CHAIN BFILE+1 K*6G ...[ UPDATE BDIRN,BFILEN,BHALFN K*L6 ...[ KB5Q ...[FROM WORK TO FILE CHAIN BFILE+1 KBKB ...[ KEYFCB KC52 ...[ UPDATE BFILEN KCJL ... KD4= ...#SKI %A>2-2 KDHW ...#DEF MTFCBPT=%A KF3G ...#SKI %A>2-2 KFH6 ...#SKI KG2Q ...( KGGB ...#DEF MTFCBPT=GEN0 KH22 ... STO %A GEN0 KHFL ...) KH^= ... KJDW ...#SKI MTFCB KJYG ...( [FROM ACT OR WORK KKD6 ...#SKI MTFCBd KKXQ ...( [TO FILE KLCB ...#SKI %A-1 KLX2 ... LDX 1 MTFCBPT [%A=ADDRESS OF FCB KMBL ...#SKI %D-2 [FOR BMINDEX KMW= ... LDX 2 BFILE+1 KN*W ... CHAIN 1,2 [CHAIN FCB INTO FILE CHAIN KNTG ... KP*6 ... LDN 0 1 KPSQ ... ADS 0 BFILEN [UPDATE FCB COUNT FOR FILE KQ#B ... LDX 2 BFILE KQS2 ... ADN 2 FCBRING KR?L ... LDX 2 1(2) [RING BEFORE MASTERS FCB KRR= ... LDX 1 MTFCBPT KS=W ... LDX 1 BACK2(1) KSQG ... BPZ 1 MTFCB1 [B IF TERMINAL FILE FCB KT=6 ... LDX 2 0(2) [RING AFTER MASTERS FCB FOR DIRECTORY KTPQ ... ADS 0 BDIRN [UPDATE DIR FCB COUNT KW9B ...MTFCB1 KWP2 ... LDX 1 MTFCBPT KX8L ... ADN 1 FCBRING KXN= ...#SKI MTFCB KY7W ...( KYMG ... STO 1 0(1) K^76 ... STO 1 1(1) K^LQ ... ENRING 1,2 [NEW FCB FROM ACT RING L26B ...) L2L2 ...#SKI MTFCB L35L ... RERING 1,2 [FCB FROM WORKFILE RING L3K= ... LDX 1 FX1 L44W ... LDX 2 FX2 L4JG ...#FRE MTFCBPT L546 ...#FRE MTFCB L5HQ ...#EXI L63B ...) L6H2 ... L72L ...#SKI MTFCBϨ$#1000 [FROM ACT TO WORK L7G= ...#DEL NOT PERMITTED L7^W ...( L8FG ... LDX 2 FX2 L8^6 ... ADN 2 BWORKRING L9DQ ...#SKI %A-1 L9YB ... LDX 1 MTFCBPT L=D2 ... CHAIN 1,2 [CHAIN FCB IN WORKFILE RING L=XL ... ADN 2 BWORKRING L?C= ... LDX 1 MTFCBPT L?WW ... LDN 0 FCBRING(1) L#BG ... STO 0 FCBRING(1) L#W6 ... STO 0 FCBRING+1(1) L**Q ... BXE 2 0(1),MTRANSF1 [FCB IS THE FIRST IN THE RING L*TB ... LDX 2 1 [X1 POINTS TO THE FCB LB*2 ... LDX 2 0(2) [X2 TO THE NEXT LBSL ... ADN 2 FCBRING LC#= ... ADN 1 FCBRING LCRW ... LDX 2 1(2) [X2TO THE LAST FCB'S FCBRING LD?G ... ENRING 1,2 [RING IN FCB IN SAME ORDER AS FCBS LDR6 ...MTRANSF1 LF=Q ...#FRE MTFCBPT LFQB ...#FRE MTFCB LG=2 ...#EXI LGPL ...) LH9= ...) LHNW ... LJ8G ...#SKI MTFCBƑ$#401 [FROM FILE TO HALF LJN6 ...( LK7Q ...#SKI MTFCBh$#104 LKMB ...#DEL LL72 ...) LLLL ...#SKI MTFCBƑ LM6= ... LDN 0 1 LMKW ...#SKI MTFCBh LN5G ... NGN 0 1 LNK6 ... ADS 0 BHALFN [UPDATE FCB COUNTS LP4Q ... SBS 0 BFILEN LPJB ... SBS 0 BDIRN LQ42 ... LQHL ...#SKI MTFCBƐ LR3= ... LDN 2 BHALF LRGW ...#SKI MTFCBd LS2G ... LDX 2 BFILE+1 LSG6 ...#SKI %A-1 LS^Q ... LDX 1 MTFCBPT LTFB ... CHAIN 1,2 [CHAAN FCB INTO FILE OR HALF CHAIN LT^2 ... LWDL ...#SKI MTFCBƑ LWY= ...( LXCW ... LDX 1 MTFCBPT LXXG ... ADN 1 FCBRING [POINT TO FCB LYC6 ... DERING 1 LYWQ ... LDX 1 MTFCBPT L^BB ... ADN 1 FCBRING [AND AGAIN L^W2 ... STO 1 0(1) [MAKE RING NULL FOR 1ST CASE M25S ... STO 1 BPTR(1) M2*L ... LDX 2 BHALF+1 M2T= ... LDX 2 1(2) [POINT TO LAST FCB ON HALF M3#W ... ADN 2 FCBRING M3SG ... ENRING 1,2 [RING FCB IN CORRECT SEQ M4#6 ...) M4RQ ...#SKI MTFCBh M5?B ...( M5R2 ... LDX 2 BFILE M6=L ... ADN 2 FCBRING M6Q= ... LDX 1 MTFCBPT [POINT TO LAST FCB IN CHAIN M79W ... ADN 1 FCBRING M7PG ... RERING 1,2 [RING IN FCB AT END ? M896 ...) M8NQ ...#FRE MTFCBPT M98B ...#FRE MTFCB M9N2 ...#NOR ^^^^ ...00546332002900000000