(George Source)
Macros used: ACROSS, ADDMODE, APVSF, BS, BXU, COOR3, DOWN, FINDFCB, GEOERR, GFCB, JBC, JMBAC, LONGOFF, LONGSET, MENDAREA, MFREE, MONOUT, OUTPACK, READ, SEG, SEGENTRY, SETREP, SETREP2, TESTMODE, TESTREP2, TOPFCA, TOPFCB, TRACE, TRACEIF, UP, UPPLUS, VFREEW
22FL [ 22^= [THIS IS A TIDIED-UP VERSION WITH MODETEST & BITSETTING MACROS 23DW [ 23YG ... SEG ORELHALF,8,ROB RUSHTON ,OPEN 24D6 SEGENTRY K1ORELHALF,Z1ORELHALF 24XQ SEGENTRY K2ORELHALF,Z2ORELHALF 25CB [ 25X2 XGETFCB 26BL GFCB 6,3 [FIND FCB WITH UNIQUE NUMBER = [X6] 26W= EXIT 2 0 27*W [THIS ROUTINE TESTS WHETHER THE FCB INDICATED BY X2 CAN BE OPENED 27TG YCOP 28*6 JMBAC OK,2,BFFCB,BFMCOP [MUST WAIT IF FILE OPEN OR BEING OPEN 28SQ [COPY MODE: ELSE OK 29#B BRN WAIT [IS ALREADY OPEN 29S2 TRYREEL 2=?L TESTMAIN 7,YCOP,,COPY [J IF COPY 2=R= TESTMODE 7,ORDINARY,NOT,EMPTY 2?=W OPDIR GEOERR 1,DIREMPTY [OPENREL EMPTY ON A DIRECT-ORY 2?QG [NO ONE CAN BE USING THE FILE IN ANY SENSE IN THE MULTI-REEL/EMPTY CASE. 2#=6 [WE MIGHT AS WELL DO THE SAME FOR ONE REEL. 2#PQ ORDINARY 2*9B LDX 4 CTOPEN(2) [PICK UP OPEN MODE: 2*P2 TRACEIF K6ORELHALF,199,299,4,CTOPEN 2B8L [FORMAT IS; L.S. 12 BITS,COUNT OF READ OPENERS. NEXT L.S. 9 BITS,COUNT 2BN= [OF APPEND OPENERS. B0=SOLE OPENER BIT B1=COMMUNAL BIT. 2C7W BZE 4 OK [CARRY ON IF FCB OPEN 2CMG TESTMAIN 7,WAIT,NOT,READING 2D76 LDX 0 4 2DLQ SRL 0 12 [ISOLATE APPEND COUNT & SOLE BIT 2F6B ANDN 0 #5777 [RID OF COMMUNE BIT. 2FL2 BNZ 0 WAIT [WAIT IF NOT OPEN IN READ 2G5L OK EXIT 6 0 2GK= [ 2H4W Z1ORELHALF 2HJG OPENMAST 2HS# ... STOZ AWORK4(2) 2J46 STOZ AWORK1(2) 2JHQ LDX 7 ACOMMUNE7(2) 2K3B ADDMODE 7,CAREFUL,LEAVE,DIROPEN [AS NO ENT OR 2KH2 CLEARMOD 7,REPLY [GET RID OF REPLY MODE 2L2L TRACE 7,OPENMAST 2LG= LDX 3 BFILE [X3 -> FCB OF MASTER 2L^W BRN ONEREEL 2MFG [ 2M^6 Z2ORELHALF 2N8Y ... STOZ AWORK4(2) 2NDQ LDN 0 4 2NYB STO 0 AWORK1(2) [STORE HALFOPEN MARKER 2PD2 LDX 6 ACOMMUNE8(2) [LEVEL IN FABSNB 2PXL LDX 7 ACOMMUNE7(2) [MODES 2QC= FINDFCB 6,3 2QWW TESTREP2 OK,XERAZ 2RBG BRN UPPLUS1 2RW6 XERAZ 2S*Q ... JBC XHAOK,3,BFOPENERASE [J IF BEING ERASED! 2STB TESTMODE 7,XNF,,ERASING,THAW [J IF ERASING OR THAW MODES PRESENT 2T*2 SETREP2 NOFILE 2TSL BRN TUPP 2W#= XNF 2WRW SETREP2 NOTFOUND 2X?G BRN TUPP 2XR6 XHAOK 2Y=Q TESTMODE 7,XMADE,,DIREPLY 2YQB CLEARMOD 7,REPLY 2^=2 XMADE 2^PL ADDMODE 7,LEAVE,DIROPEN [FOR HALFOPEN 329= BRN ONEREEL 32NW WAIT 338G LDN 4 0 33N6 TESTMODE 7,OOR3,NOT,REPLY [WAIT UNLESS REPLY MODE GIVEN 347Q SAYCANT 34MB WENT 3572 TESTMODE 7,MENT,,LEAVE [FREE ENT UNLESS LEAVE MODE 35LL MFREE FILE,ENT 366= MENT 36KW BNG 4 SCLD [J IF CLUDGE 375G SETREP CANT 37K6 BRN REPG [REPLY SET 384Q SCLD SETREP CLUDGE 38JB TOPFCB 2 [X2 -> FCB OF FILE OPEN AT TOP LEVEL 3942 BXU 6 BACK2(2),REPG [TEST FOR CLUDGE AT TOP LEVEL 39HL TOPFCA 2 3=3= BS 2,BACLUDGE [SET BIT FOR COPY IF CLUDGE (??) 3=GW BRN UPPLUS1 3?2G OOR3 3?G6 LDN 0 1 3?^Q ADS 0 FWAITCOUNT(3) [ADD ONE TO THE COUNT OF WAITERS 3#FB LDX 5 BACK1(3) 3#^2 LDX 6 BACK2(3) [PICK UP BACKING STORE HOME PAIR 3*DL LONGSET 6,XSET,6 [SET WAITING STYLE 3*Y= DOWN OPENWAIT,3 [TEST FOR CLUDGE 3BCW BRN NCLD [NO CLUDGE IF COMES STRAIGHT UP 3BXG NGN 4 1 [SET CLUDGE MARKER 3CC6 CALL 2 XGETFCB [FIND FCB AGAIN 3CWQ LDN 0 1 3DBB SBS 0 FWAITCOUNT(3) [NO LONGER GOING TO WAIT 3DW2 BRN SAYCANT [REMOVE UNCLEAN BIT AND CLEAR UP 3F*L NCLD 3FT= PAR LONGOFF 3FWS ... LDX 0 AWORK4(2) 3FYB ... BNZ 0 NOMESS 3F^Y ... CALL 2 XGETFCB 3G3G ... JBC WCOOR,3,BFFREZ [J IF FILE NOT FROZEN BY DUMPER. 3G54 ... OUTPACK FME1(3),3,USERNAME [PREPARE USERNAME OF DIRECTORY AS 3G6L ... MONOUT INCFREZD [OUTPUT PARM. OUTPUT 'WAITING' MESSAG 3G88 ... LDN 4 1 3G9Q ... STO 4 AWORK4(2) 3G?# ...NOMESS 3G#W CALL 2 XGETFCB [FIND FCB AGAIN 3GJN ...WCOOR 3GSG LDX 0 CTOPEN(3) [TEST IF FILE HAS BECOME FREE 3H#6 BZE 0 SDFCB 3HRQ TRACEIF K6ORELHALF,199,299,6,ORELCOOR 3J?B COOR3 6 [WAIT FOR OBSTRUCTION TO CLEAR: 3JR2 TESTMODE 7,QTEST,NOT,REPWAIT 3K=L SETDIRC 3KQ= CALL 2 XGETFCB 3L9W LDN 0 1 3LPG SBS 0 FWAITCOUNT(3) [REPLY DIRECTORY HAS BEEN CLOSED 3M96 SETREP DIRCLOSE 3MNQ XDC 3N8B TESTMODE 7,UPPLUS1,,LEAVE [FREE ENT UNLESS LEAVE MODE GIVEN 3NN2 VFREEW FILE,ENT 3P7L XUP 3PM= REPG 3Q6W TUPP 3QLG UPPLUS1 3R66 UPPLUS 1 3RKQ QTEST 3S5B SFCBA 3SK2 CALL 2 XGETFCB [GET X3 -> FCB AGAIN 3T4L SDFCB 3TJ= LDN 0 1 [REMOVE THIS ACTIVITY FROM THE 3W3W SBS 0 FWAITCOUNT(3) [COUNT OF WAITERS. 3WHG ONEREEL 3X36 LDX 2 3 [X2 -> REEL TO BE OPENED: 3XGQ TESTMODE 7,NR,NOT,ERASE 3Y2B BS 2,BFERASE [SET 'TO BE ERASED' BIT IF ERASE MODE 3YG2 NR 3Y^L CALL 6 TRYREEL 3^F= OFCB 3^YW LDX 5 BACK1(3) [PICK UP HOME PAIR OF FCB. 42DG LDX 6 BACK2(3) 42Y6 TESTMAIN 7,NCOP,NOT,COPY 43CQ BS 3,BFFCB [SET 'DON'T MOVE FCB' BIT IF COPY MOD 43XB BRN OPENFCBED 44C2 NCOP 44WL TESTMAIN 7,READ,,READING 45B= TESTMAIN 7,SOLE,,CLEAN 45TW TESTMODE 7,NUWB,,CAREFUL 46*G BS 3,BFUWB [SET UWB UNLESS CAREFUL 46T6 NUWB 47#Q TESTMAIN 7,RAPP,,APPEND 47SB SOLE LDCT 0 #400 [SOLE OPENER, JUST ONE BIT TO STORE 48#2 ORS 0 CTOPEN(3) 48RL BRN OPENFCBED 49?= READ LDN 0 1 49QW ADS 0 CTOPEN(3) [INCREASE COUNT OF READERS. 4==G BRN OPENFCBED [[CHECK IT IS SMALL? 4=Q6 RAPP LDN 0 #4000 4?9Q ADX 0 0 4?PB ADS 0 CTOPEN(3) [INCREASE COUNT OF APPENDERS. <1024 4#92 OPENFCBED 4#DS ... APVSF UP [ADJUST ACT PRI 4#NL ACROSS ORELEND,1 4*8= XSET GEOERR 1,ORELHALF 4*MW [ 4B7G MENDAREA GAPOPEN,K99ORELHALF 4BM6 #END ^^^^ ...47077343000400000000