22FL ...[??? FNORM SECT FILE FGN 6 DOC 2FL2 #MAC FNORM 2G5L #STR %A 2GK= #SKI 2H4W ( 2HJG DOWN DECODE,2 2J46 ) 2JHQ #STR %A 2K3B ( 2KH2 LDN 0 %A 2L2L SMO FX2 2LG= STO 0 EXEC3 [SET MODE PARAM IN EXEC3 2L^W DOWN DECODE,1 2MFG ) 2M^6 #NOR 2N8Y ...[??? USERNORM SECT FILE FGN 6 DOC 2NDQ #MAC USERNORM 2NYB LDEX 0 %A 2PD2 SMO FX2 2PXL STO 0 ACOMMUNE6 2QC= #STR NOERRMESS,%B 2QWW ( 2RBG #STR %B 2RW6 GEOERR 1,USERNORM 2S*Q DOWN NORMALUS,4 2STB ) 2T*2 #STR NOERRMESS,%B 2TSL #SKI 2W#= DOWN NORMALUS,7 2WRW #NOR 2X3N ...[??? FINDNAME SECT FILE FGN 6 DOC 2X?G #MAC FINDNAME 2XR6 DOWN LEXIFIND,1 2Y=Q #NOR 2YQB ...[??? OWNERCHE SECT FILE FGN 6 DOC 2^PL #MAC OWNERCHE 2^PY ...[ THIS MACRO CHECKS IF FILES IN THE DIRECTORY OPEN AT THE TOP LEVEL 2^Q= ...[ ARE OWNED BY THE PROPER USER. 2^QK ...#UNS FTS1 2^RJ ...( 2^SH ...#STR NOADJ,%A 2^TG ...#SKI 2^WF ...( 2^XD ... LDN 0 1 2^YC ... SMO FX2 2^^B ... STO 0 ACOMMUNE8 322* ...) 323# ...#STR NOADJ,%A 324? ...( 325= ... SMO FX2 3269 ... STOZ ACOMMUNE8 3278 ...) 3287 ...) 329= DOWN OWNERCHE,1 32NW #NOR 338G ...[??? CHECKOWN SECT FILE FGN 6 DOC 347Q #MAC CHECKOWNER 34#Y ...[ THIS MACRO CHECKS IF THE ENTRANT,WHOSE NAME IS IN THE 1ST FABSNB 34G6 ...[ IS OWNED BY THE PROPER USER. 34MB DOWN OWNERCHE,2 3572 #NOR 35LL ...[??? PROPUSER SECT FILE FGN 6 DOC 375G #MAC PROPUSER 379C ...[ CHECKS WHETHER A USER, WHOSE NAME IS IN CPREFIX IN THE CURRENT 37*# ...[ ACTIVITY BLOCK, IS A PROPER USER. IF NOT, THE PROPER USER NAME 37F9 ...[ IS LEFT IN ACOMMUNE1-3 37K6 DOWN LEXIFIND,2 384Q #NOR 38JB ...[??? DICTJOB SECT FILE FGN 6 DOC 3=3= #MAC DICTJOB 3=77 ...[ DICTJOB MACRO KEEPS A COUNT OF JOBS RUNNING IN A USER & DOES OTHER 3=?4 ...[ ENTRY POINTS: 1-JOB,ETC. 2-ENDJOB,ETC. 3-ERASE 3=B^ ...[ DICTJOB 3 IS THE SAME AS JOBQCHEC (WHICH WAS ALREADY IN USE) 3=GW #STR %A,5 3?2G #SKI 3?G6 ( 3?^Q LDX 0 %B 3#FB SMO FX2 3#^2 STO 0 ACOMMUNE1 3*DL ) 3*Y= DOWN DICTJOB,%A 3BCW #NOR 3BMN ...[??? FILELOG SECT FILE FGN 6 DOC 3BXG #MAC FILELOG 3CC6 DOWN FILELOG,1 3CWQ #NOR 3D6J ...[??? TEMPDIRA SECT FILE FGN 6 DOC 3DBB #MAC TEMPDIRA 3DW2 FJOCA 1,FX2 3F*L LDCT 0 #002 3FT= ANDX 0 JMISC(1) 3G#W BNZ 0 M1TEMPDIRA 3GSG DOWN NEWDIR,5 3H#6 BRN %A 3HRQ BRN %B 3J?B M1TEMPDIRA 3JR2 #NOR 3K=L ...[??? FREEALL SECT FILE FGN 6 DOC 3KQ= #MAC FREEALL 3L24 ...[ FREES ALL BS BLOCKS IN A FRB OF FULLB FORMAT & ALSO FREES THE FRB 3L9W MHUNTW 2,FILE,FRB 3LPG NAME 2,BSTB,FULLB 3M96 FREEBAX [FREE BS BLOCKS IN FULLB 3MNQ MFREE BSTB,EMPTYB [FREE CORE 3N8B #NOR 3NN2 ...[??? TESTNAME SECT FILE FGN 6 DOC 3QLG #MAC TESTNAME 3QPL ...[ THIS TESTS TWO NAMES AND SETS X7 ZERO IF THEY ARE 3QSQ ...[ NOT ALIKE %A=LENGTH OF NAME %B, %C CONTAIN THE 3QXW ...[ STARTING ADDRESSES OF THE TWO NAMES 3R32 ...[ IT USES X7 AND X0 3R66 NGN 0 %A [SET UP X0 AS COUNT 3RKQ TTEST 3S5B SMO 0 3SK2 LDX 7 %A+%B [ LOAD INTO X7 FIRST WORD 3T4L SMO 0 [J IF NOTSAME 3TJ= TXU 7 %A+%C 3W3W BCS NOTSAME 3WHG ADN 0 1 [ADD ONE TO COUNT 3X36 BNZ 0 TTEST [ J IF COUNT NOT EXPIRED 3XGQ LDN 7 1 [SET X7 FOR ALIKE 3Y2B BRN TOUT 3YG2 NOTSAME 3Y^L LDN 7 0 3^F= TOUT [SET X7 FOR NOTALIKE 3^YW #NOR 42DG ...[??? TESTNAMX SECT FILE FGN 6 DOC 43CQ #MAC TESTNAMX 43JY ...[ THIS MACRO TESTS 2 NAMES AND BRANCHES TO %D IF THEY ARE NOT EQUAL 43Q6 ...[ %E IS A WORK-ACCUMULATOR ,X7 BEING THE DEFAULT VALUE 43XB NGN 0 %A 44C2 M1TESTNAMX 44WL #STR %E 45B= ( 45TW SMO 0 46*G LDX %E %A+%B 46T6 SMO 0 47#Q TXU %E %A+%C 47SB ) 48#2 #STR %E 48RL #SKI 49?= ( 49QW SMO 0 4==G LDX 7 %A+%B 4=Q6 SMO 0 4?9Q TXU 7 %A+%C 4?PB ) 4#92 BCS %D 4#NL ADN 0 1 4*8= BNZ 0 M1TESTNAMX 4*MW #NOR 4*XN ...[??? TESTUSER SECT FILE FGN 6 DOC 4B7G #MAC TESTUSER [TESTS IF WORD"%A CONTAINS" :" 4BM6 #ACC %A 4C6Q ( 4CLB LDX 0 %A 4D62 BXE 0 HCOLUSER,%B 4DKL ) 4F5= #ACC %A 4FJW #SKI 4G4G BXE %A HCOLUSER,%B 4GJ6 #NOR 4GRY ...[??? UNNORM SECT FILE FGN 6 DOC 4H3Q #MAC UNNORM 4HHB #STR %A 4J32 #SKI 4JGL DOWN NNORM,1 4K2= #STR %A 4KFW ( 4K^G #STR %A,FULL 4LF6 #SKI 4LYQ DOWN NNORM,1 4MDB #STR %A,TWO 4MY2 #SKI 4NCL DOWN NNORM,2 4NX= #STR %A,LOC 4PBW #SKI 4PWG DOWN NNORM,3 4QB6 #STR %A,FULL 4QTQ ( 4R*B #STR %A,TWO 4RT2 ( 4S#L #STR %A,LOC 4SS= GEOERR 1,UNNORM 4T?W ) 4TRG ) 4W?6 ) 4WQQ #NOR 4X=B ...[??? ERASE SECT FILE FGN 6 DOC 4XQ2 #MAC ERASE 4X^S ...[ THIS MACRO ERASES THE FILE WHOSE FABSNB IS IN THE CHAIN. 4Y9L DOWN ERASEA,2 4YP= #NOR 4^8W ...[??? ERASEND SECT FILE FGN 6 DOC 4^NG #MAC ERASEND 4^Y# ...[ SAME AS ERASE BUT DIRECTORY ABOVE TO-BE-ERASED FILE IS OPEN 5286 DOWN ERASEA,1 52MQ #NOR 537B ...[??? CREATEB SECT FILE FGN 6 DOC 53M2 #MAC CREATEB 53WS ...[ THIS MACRO SETS UP A GENERAL PURPOSE FILE/CREATE BLOCK 546L SETNCORE CREALEN,1,FILE,CREATE 54L= #MOD %A 555W #SKI 55KG ( 5656 #STR %A,1 56JQ LDX %A 1 574B ) 57J2 ADN 1 A1 583L STOZ 0(1) 58H= LDX 0 1 592W ADN 1 1 59GG MOVE 0 CREALEN-1 5=26 #STR 1,%A 5=FQ #SKI 5=^B SBN 1 A1+1 5?F2 #STR 1,%A 5?YL LDX 1 FX1 5#D= #NOR 5#XW ...[??? FRIGMONF SECT FILE FGN 6 DOC 5*X6 #MAC FRIGMONF 5B4# ...[ THIS MACRO IS A FRIG TO CREATE A WORKFILE OPEN TO A CPAT INSIDE 5B9G ...[ THE SYSTEM AND ACCESSIBLE BY COMMAND EG LISTFILE 5BBQ CREATEWF [SETS UP A WORKFILE FCB,FEXTRA AND 5BWB [CHAINS IT AT THE TOP OF THE STACK 5CB2 OPENWORK M1FRIGMONF,GENERAL 5CTL TESTRPN2 OK,M1FRIGMONF 5D*= #STR %B 5DSW #SKI 5F#G FILEMOVE 0,-1 [MAKE IT BOTTOM FILE 5FS6 BRN M2FRIGMONF 5G?Q M1FRIGMONF 5GRB #STR %A 5H?2 BRN %A 5HQL #STR %A 5J== #STR 5JPW GEOERR 1,FRIGMONF 5K9G M2FRIGMONF 5KP6 #NOR 5L8Q ...[??? FINDFCB SECT FILE FGN 6 DOC 5MML #MAC FINDFCB 5MMY ...[ 5MN= ...[ ACCS USED AS FOLLOWS 5MNJ ...[ X0 TESTNAMX 5MNW ...[ X1 FCBRING POINTER 5MP8 ...[ X2 POINTER TO THE REQUIRED NAME IN FABS 5MPG ...[ X3 =0 IF USER NAME OR ELSE POINTER TO SUPUSER NAME 5MPS ...[ X4 LOCAL NAME USER NAME IDICATOR . 0=FLOC1,3= FME1 5MQ6 ...[ X5 FIRST WORD OF REQ NAME OR GENERAL WORK WORD 5MQD ...[ X6 =0 IF ON DIR RING OR =1 IF ON HALF RING 5MQQ ...[ X7 FCB COUNT 5MR4 ...[ 5MRH ...[ THIS MACRO SEARCHES THROUGH BOTH THE OPEN AND HALF-OPEN FILE CHAINS 5MXD ...[ FOR AN FCB WHOSE NAME IS GIVEN IN A FILE/FABSNB POINTED TO BY %A. 5N3* ...[ THE POINTER TO THE FCB IF FOUND IS GIVEN IN %B. 5N7= LDX 1 %A 5NLW LDN 2 %B 5P6G CALL 0 M1FINDFCB 5PL6 #OPT M2FINDFCB=1 5Q5Q #SKI M2FINDFCB 5QKB ( 5R52 BRN M3FINDFCB 5RJL #DEF M1FINDFCB=0? 5S4= STO 0 GEN0 [STORE LINK IN GEN0 5SHW STO 1 GEN1 [KEEP %A IN GEN1 5T3G LDN 0 3 5TH6 LDN 1 GEN2 [ACCUMULATORS 3 TO 7 DUMPED 5W2Q MOVE 0 5 [ IN GEN2 TO GEN6 5WCT ... 5WSY ... NGX 5 GEN1 5X=3 ... STO 2 GEN1 5XM6 ... HUNT 2,FILE,FABSNB 5Y49 ... ADX 5 A1(2) 5YF# ... ADX 2 5 [POINTER DOWN FABS 5YWC ... ADN 2 A1 [POINTS TO REQ NAME 5^?G ... SBN 5 1 [ARE WE AT THE TOP OF THE FABS 5^NK ... 625N ... LDN 3 0 [SET X34 TO INDICATE USERNAME 62GR ... LDN 4 FME1-FLOC1 62XW ... BZE 5 M4FINDFCB [X2 POINTS TO TOP NAME MUST BE USER 63#^ ... 63Q4 ... LDX 0 0(2) 6477 ... ADN 2 1 64J= ... SBX 0 HCOLUSER [SEE IF USER COLON 64^* ... BZE 0 M4FINDFCB [YES IT IS 65BD ... 65RH ... SBN 2 1 [LOOKING FOR LOCAL NAME 668L ... SBN 5 3 66KP ... LDX 3 2 [SO SET X3 TO SUPUSER 672S ... LDN 4 0 67CX ... SBN 3 3 67T2 ... BZE 5 M4FINDFCB [SUPUSER IS TOP OF FABS 68=5 ... 68M8 ... SBN 3 2 [SUPUSER IS NOT TOP SO ADJUST X3 694? ... 69FB ...M4FINDFCB 69WF ... 6=?J ... LDX 5 0(2) [LOAD COMPARISON WORD 6=NM ... LDN 6 1 [INDICATE HALF OPEN CHAIN 6?5Q ... BASEFCB 1,HALF,M10FINDFCB,7 6?GT ...[ 6?XY ...M5FINDFCB 6#*3 ... BZE 4 M8FINDFCB [DO LOCAL TEST 6#Q6 ...M6FINDFCB [USERNAME TEST 6*79 ... BXE 5 FME1-FCBRING(1),M11FINDFCB 6*J# ...M7FINDFCB 6*^C ... NEXTFCB 1,DIR,M6FINDFCB,7 6BBG ... BRN M10FINDFCB 6BRK ... 6C8N ...M8FINDFCB [LOCAL NAME TEST 6CKR ... BXE 5 FLOC1-FCBRING(1),M11FINDFCB 6D2W ...M9FINDFCB 6DC^ ... NEXTFCB 1,DIR,M8FINDFCB,7 6DT4 ... 6F=7 ...M10FINDFCB [FCB NOT FOUND ON THIS SEARCH 6FM= ... BZE 6 M10AFINDFCB [FINISHED BOTH HALF AND DIR 6G4* ... LDN 6 0 [INDICATE DIR CHAIN 6GFD ... BASEFCB 1,DIR,M10AFINDFCB,7 6GWH ... BRN M5FINDFCB [RETURN TO SEARCH DIR RING 6H?L ... 6HNP ...M10AFINDFCB [GIVE REPLY NOTFOUND 6J5S ... KEEPREP 7,NOTFOUND 6JGX ... BRN M16FINDFCB 6JY2 ... 6K*5 ...M11FINDFCB [THIS ROUTINE CHECKS FURTHER DETAILS OF FCB 6KQ8 ... LDX 5 1(2) 6L7? ... SMO 4 6LJB ... BXU 5 FLOC2-FCBRING(1),M12FINDFCB [COMPARE REST OF NAME 6L^F ... 6MBJ ... LDX 5 2(2) 6MRM ... SMO 4 6N8Q ... BXE 5 FLOC3-FCBRING(1),M13FINDFCB 6NKT ... 6P2Y ...M12FINDFCB [RETURN TO SEARCH 6PD3 ... LDX 5 0(2) 6PT6 ... BZE 4 M9FINDFCB [LOCAL NAME EXIT 6Q=9 ... BRN M7FINDFCB [USER NAME EXIT 6QM# ... 6R4C ...M13FINDFCB [FIRST NAME OK 6RFG ... BZE 3 M14FINDFCB [USER SO NO FURTHER NAME CHECK NECC 6RWK ... TESTNAMX 3,0(3),FUSER1-FCBRING(1),M12FINDFCB,5 [LOCAL NAME CHEC 6S?N ... 6SNR ...M14FINDFCB [FINAL CHECK FOR TO BE ERASED DIRS 6T5W ... LDX 5 FCOMM-FCBRING(1) 6TG^ ... ANDN 5 1 6TY4 ... BNZ 5 M12FINDFCB 6W*7 ... SBN 1 FCBRING [EVERYTHING OK 6WQ= ... LDX 5 1 6WTG ...#STR %C 6WYQ ...#SKI 6X42 ...( 6X7* ... BZE 6 M15FINDFCB [FILE ALREADY OPEN 6XJD ... LDX 4 FPTR(1) [CHAIN BLOCKS ON FILE CHAIN 6X^H ... TRANSFCB 5,HALF,FILE 6YBL ... LDX 1 4 6YRP ... CHAIN 1,BFILE+1 [CHAIN FINDEXF BLOCK 6^8S ... 6^KX ...M15FINDFCB 6^SD ...) 7232 ... LDX 2 5 72D5 ... KEEPREP 7,OK 72T8 ... 73=? ...M16FINDFCB 73MB ... PUTREP 7 745G TRACEIF K6OPEN,99,299,7,HALFREP 74K6 LDN 0 GEN2 [RESTORE X3 TO X7 754Q LDN 1 3 75JB MOVE 0 5 7642 LDX 1 GEN1 76HL STO 2 0(1) [PUT -> IN %B 773= LDX 1 FX1 77GW LDX 2 FX2 782G BRN (GEN0) 78G6 #FREE M2FINDFCB 78^Q #DEF M2FINDFCB=0 79FB M3FINDFCB 79^2 ) 7=DL #NOR 7=ND ...[??? READLEX SECT FILE FGN 6 DOC 7=Y= #MAC READLEX 7?CW DOWN USELEX,1 7?XG #NOR 7#7# ...[??? NEWUSER SECT FILE FGN 6 DOC 7#C6 #MAC NEWUSER 7#WQ DOWN USELEX,2 7*BB #NOR 7*L8 ...[??? FREELEX SECT FILE FGN 6 DOC 7*W2 #MAC FREELEX 7B*L DOWN USELEX,3 7BT= #NOR 7C#W ...[??? NOOWNERA SECT FILE FGN 6 DOC 7CSG ...#MAC NOOWNERACC 7D#6 ...#MEN OWNERCHE 7DRQ ...#TRA K55OWNERCHE 7F?B ... BRN K56OWNERCHE 7FR2 ...#END 7G=L ...#NOR ^^^^ ...07372056001100000000