(George Source)
Macros used: ACROSS, ADDMODE, ANSOK2, BACKSPACE, BBS, BRUSEN, BS, BXE, CHAIN, CLOSEABANDON, CLOSETOP, DOWN, FJOCA, FREEBAX, FREETAB, GEOERR, GETDIRWORK, HUNT, HUNT2, HUNTW, INCRECUBS, JBC, JBS, JMBAC, JMBS, KEEPREP, KREPC, LOBSFILE, LOGACCESS, MBSXD, MENDAREA, MFREE, MFREEW, MHUNT, MHUNTW, NAME, NOLOBSFILE, OPEN, OPENRELX, OPENWORX, PICKREP2, PREP2, PTREP2, PUTREP2, SEG, SEGENTRY, SETBIT, SETMODE, SETREP, SETREP2, SETUPCORE, TAB, TABRESET, TABSET, TABULATE, TABUNSET, TESTMODE, TESTMULT, TESTNAMX, TESTREP2, TESTRPN2, TOPFCA2, TOPFCB2, TRACE, TRACEIF, TRAPADD, TREPN2, UP, UPPLUS, USERCRWF, VFREE, VFREEBAX, VFREEW, WRONG
22FL ... SEG USEROPEN,860,FILESTORE 22^= [ 2394 ...[ (C) COPYRIGHT INTERNATIONAL COMPUTERS LTD 1983 23DW [ 23YG SEGENTRY K1USEROPEN,ZENTRY 24D6 SEGENTRY K3USEROPEN,NEWFILE 24XQ [ 25CB [ 25X2 [ 26W= # USEROPEN OPENS FILESTORE ENTRANTS FOR COMMANDS 27*W [ IT CHECKS FILESTORE SECURITY (I.E. USER TRAPS, CREATING FILE IN RI 27TG [ DIRECTORY ETC.) 28*6 [ IT CHECKS THAT THE FILE IS OF THE KIND REQUIRED - PERIPHERAL TYPE/ 28SQ [ SERIAL OR RANDOM, FILE OR NON-FILE(MAG TAPE, EDS, ON-LINE DIRECT A 29#B [ K55, K54, K53 USED BY READIR MEND MACRO (VIDE MACROS HFD) 29S2 [ ETC. 2=?L [ ETC. 2=R= [ ETC. 2?=W 2?QG [ THIS SEGMENT HAS THE SECURE JOBWELL ENHANCEMENT WHICH 2#=6 [ CATERS FOR THE NEW 'SAVE' MODE. 2#PQ # THIS TABLE IS USED FOR PICKING THE TRAP TO CHECK APPROPRIATE TO TH 2*9B # OPENING MODE 2*P2 MODE [FOR CHECKING TRAPS 2B8L +CEXECUTE 2BN= +CREAD 2C7W +CREAD 2CMG +CAPPEND 2D76 +CWRITE+CREAD 2DLQ +CWRITE+CREAD 2F6B #SKI K6USEROPEN>99-99 2FL2 0 [#6000 IS NOT DEFINED AS A MODE 2G5L #SKI K6USEROPEN>99-99 2GK= +0 [CLEAN MODE NOT ALLOWED 2H4W NDIR 1,1,4HC1 2HJG UPM +AREPWAIT+AQUERY [XTRA MODES NEEDED FOR OPENREL 2J46 [ 2JHQ [ 2K3B [ KEEP MODES-USERCLEAN,CREATE,COMMUNE,REPLY,NOWAIT,DESTRUCT,EMPTY, 2KH2 [ LEAVE,AND MAIN MODES 2L2L [ 2LG= [ 2L^W [ REMOVE TERMDIR,STREAMS,UNTRAP,DIRONLY,SERONLY,NOERREP,STREAMCO 2MFG [ STREAMONLY,ERASE,FREEZE,OFFSET,SELF,DIR 2M^6 [ 2NDQ [ 2NYB NOPM [MASK TO REMOVE USEROPEN MODES NOT TO 2PD2 [BE GIVEN TO OPENREL 2PXL #02007756 2QC= MDDIR +ADIROPEN 2QWW MDOL +ADIROPEN+ALEAVE [EXTRA OPENREL MODES FOR STREAMCOMP 2RBG [ FREEZING 2RW6 [ GDR IS E-MODE FOR USEROPEN; GDESTR IS A-MODE FOR OPENREL 2S*Q MGDR +AGDESTR 2STB MASK1 #57777777 2T58 ...XASTER 4H**** 2T76 ...#UNS FTS2 2T94 ...#SKI 2T?2 ...( 2T*2 TABLE 2TSL SEGENTRY K55USEROPEN 2W#= 12HMANAGER 2WRW SEGENTRY K53USEROPEN 2X?G #GAP 45 2XH# ...) 2XR6 2Y=Q [ 2YQB [ USEROPEN/USEROPEX MACRO 2^=2 [ 2^PL [ K1USEROPEN IS ENTRY FROM USERONE 329= [ 32NW [ USE OF WORK SPACE 338G [ 33N6 [ AWORK1 SECOND MODE WORD E-MODES 347Q [ AWORK2 CONTAINS ANQDIR USED AT OKDIR & K3USEROPEN 34MB [ B0 SET MEANS A MULTIFILE HAS BEEN EMPTIED - 3572 [ IN USERCREA & USERSTRM 35LL [ AWORK3 SWITCHES -B1 SET-CREATE PRESERVED AS APROC-BUG 5399 35WD ...[ BIT 3 - DIRCLOSE REPLY FROM OPENREL (FOR LOGACCESS) 362* ...[ BITS 4-8 TRAPS TO BE CHECKED (LOGACCESS) 366= [ -FOR B0,15-23 SEE USERDIR/USERLIB 36KW [ AWORK4 FIRST MODE WORD A-MODES 375G [ 37K6 384Q [ FILE FOUND, FILE/ENT BLOCK LEFT & DIRECTORY IS TOP FILE 38JB [ OPEN. TAB 0 SET (IN USERDIR) AT THE BEGINNING OF THE NAME RECORD 3942 [ TABULATION PTR AT TAB 0 AND READ PTRS AT BEGINNING OF (AFTER HAVIN 39HL [ READ) THE LAST BLOCKS RECORD. 3=3= [ NO TAB STACK SET UP IF WORKFILE 3=GW 3?2G ZENTRY 3?G6 MHUNTW 3,FILE,ENT 3?^Q JBC NOTSYS,3,BECARE [J IF NOT IMPORTANT FILE 3##7 TESTMODE 5,XRAND,,FREEZE [CANT FREEZE SVFRZ 3#LJ TESTMODE AWORK1(2),XRAND,,SAVEFREEZE [IMP. FILES 3#^2 NOTSYS 3DBB JBC NOTEST,3,BEMDF [J IF NOT MDF 3DW2 TESTMODE 5,XMULT,NOT,STREAMS,STREAMONLY 3FT= [ 3G#W [ IF 'FILE' SUBMODE GIVEN USERONE CANNOT TRAP GDR WITH MULTIFILE 3GSG [ (ELEMENT). SO NEED TO CHECK AFTER ENT IS GIVEN 3H#6 [ 3HRQ SMO FX2 3J?B LDX 4 AWORK1 [GET 2ND MODE WORD 3JR2 BZE 4 NOTEST 3K=L TESTMODE 4,XRAND,,GDR [MDF/MULTEL CANT HAVE GDR 3KQ= NOTEST 3L9W JBC NINDEX,3,BEINDEX [J IF NOT INDEXED 3LFN ... TESTMODE 5,XRAND,,EMPTY [CANT OVERWRITE INDEXED FILES 3LPG ... TESTMAIN 5,YGENR,,GENERAL [DONT ALLOW CREATE EITHER EXCEPT 3L^# ... [BY FILEHANDLER WHICH USES GENERAL 3M96 ... TESTMODE 5,XRAND,,CREATE 3MDY ...YGENR 3MNQ LDX 0 EUSE1(3) 3N8B BNZ 0 XINDIR 3NN2 TESTMODE 5,XRAND,,ERASE 3P7L [ IF INDEXED & TERMINAL, CANT ERASE 3P=9 ... TESTMODE 5,TERM,,UNTRAP,DIRONLY[FILES WITH LANG **** ARE TREATED 3P#S ... LDX 0 ELAN(3) [DIRECTORIES FOR NON-SYSTEM OPENERS 3PCC ... BXE 0 XASTER(1),XINDIR [WITH THE ADDED RESTRICTION THAT 3PG2 ... [THEY CANNOT BE ERASED OR USED WHEN 3PJK ... [DIRONLY SUBMODE IS GIVEN (E.G. LD) 3PM= BRN TERM [J IF NOT ERASE 3Q6W NINDEX 3QLG LDX 0 EUSE1(3) 3R66 BNZ 0 XINDIR [J IF NOT TERMINAL FILE 3R8P ... TESTMODE 5,NMT,NOT,EMPTY [J IF NOT EMPTY MODE 3R?# ... JBS XTERMIN,3,BETEMP [MAY NOT OVERWRITE TEMP FILES (CAN 3R*X ... [ALLOW USERS TO CHEAT B O LOGANAL 3RDG ... [BY OVERWRITING MONFILES) 3RH5 ...NMT 3RKQ TESTMODE 5,TERM,NOT,DIRONLY [J IF NOT DIRONLY MODE ALSO 3S5B BRN XTERMIN [ERROR 3SK2 XINDIR 3SNX ...#UNS FTS2 3SSS ...#SKI 3SYP ...( 3T4L LDN 0 #7000 3TJ= ANDX 0 5 3W3W BZE 0 MODI [J IF EXECUTE 3WHG SBN 0 #3000 3X36 BPZ 0 MODI [J IF WRITE 3XGQ [ MANAGER CAN READ ALL DIRECTORIES 3Y2B [EXCFPT IF FREEZING 3Y#R TESTMODE 5,XDIR,,FREEZE 3YM8 TESTMODE AWORK1(2),XDIR,,SAVEFREEZE 3Y^L #SKI ANOUSER 3^F= BRUSEN NOJOB [J IF NO JOB BLOCK 3^YW FJOCA 2,FX2 [X2 POINTS TO JOB BLOCK 42DG #SKI ANOUSER<1$1 42Y6 ( 43CQ LDX 0 ALOGLEN(2) 43XB SBN 0 ASTJOB 44C2 BNZ 0 TUSER [PROPER USER IN JOBLOCK 44WL ) 45B= #SKI ANOUSER 45TW BRN TUSER 46*G NOJOB 46T6 [ FIDDLE X2 TO POINT TO USER NAME IN CPAT 47#Q LDX 2 FX2 47SB ADN 2 CPREFIX-JUSER [OTHERWISE PROPER USER IS CURRENT USE 48#2 TUSER 48RL [IF THE PROPER/CURRENT USER IS SAME AS THE ETRAP TESTED, MARK ATYPE 49?= HUNTW 3,FILE,FTRAP 49QW BNG 3 NOFTRAP 4==G TESTNAMX 3,ETRUSER1(3),JUSER(2),NOFTRAP 4=Q6 LDN 0 1 4?9Q ADS 0 ATYPE(3) [MARK 4?PB NOFTRAP 4#92 SEGENTRY K54USEROPEN 4#NL [ JOB UNDER :MANAGER-GIVE HIM MODE WHICH DOESN'T CHECK TRAPS 4*8= LDN 4 K53USEROPEN-K55USEROPEN/3 4*MW TESTAGAIN 4B7G TESTNAMX 3,TABLE(1),JUSER(2),TSTNM 4BM6 SETMODE 0,UNTRAP 4C6Q ORX 5 0 [DON'T CHECK TRAPS FOR MANAGER 4CLB BRN OKDIR 4D62 TSTNM 4DKL ADN 1 3 [GET NEXT NAME 4F5= BCT 4 TESTAGAIN 4FJW MODI [CHECK THAT MODES ALLOW DIRECTORY TO BE OPENED 4G4G TESTMODE 5,XDIR,NOT,DIRONLY,TERMDIR [DIRECTORY NOT A-LOWED 4GJ6 OKDIR [OK TO OPEN DIRECTORY 4H3Q KREPC 7,DIR 4HHB LDX 2 FX2 4J32 ORS 7 AWORK2(2) 4J45 ...) 4J58 ...#UNS FTS2 4J6? ...( 4J7B ... TESTMODE 5,OKDIR,,ERASE [ERASE ALLOWED ON DIRS 4J8F ... DOWN USEREXCP,3 [OTHERWISE ESTABLISH WHYS AND WHEREFOR 4J9J ... [ELSEWHERE. RETURNS UPPLUS 1 IF OK 4J=M ... BRN XDIR 4J?Q ... LDX 5 ACOMMUNE1(2) [RESTORE (POSSIBLY AUGMENTED) 4J#T ... [MODE WORD 4J*Y ...OKDIR 4JC3 ... KREPC 7,DIR 4JD6 ... ORS 7 AWORK2(2) 4JF9 ...) 4JGL TERM 4K2= [ 4KFW [ TEMP.CODE FOR MK 6.5-THIS SHD ALL CHANGE FOR MK7 -BUG 7335 4K^G [ 4LF6 MHUNTW 3,FILE,ENT 4LYQ JBC NOTAWK,3,BEWORK [J IF NOT A WORKFILE 4MDB TESTMODE 5,NOTAWK,NOT,CREATE [J IF CREATE MODE NOT GIVEN 4MY2 JBC NOTAWK,3,BEVIRGINDA [J IF WORKFILE HAS BEEN WRITTEN TO 4NCL CALL 6 TYPECHANGE 4NX= USERCRWF 4PBW ... BRN TC [AVOID OTHER CHECKS 4PWG BRN RALR 4QB6 NOTAWK 4QTQ LDN 4 #1000 4R*B ANDX 4 5 [X4 NON ZERO IF READ,APP,GEN,CLEAN 4RT2 [MAIN MODE.IE SERIAL FILE ACCESS 4S#L TESTMODE 5,UF1,,CREATE,EMPTY 4SS= CALL 6 USERTYPE [CHECK PERIPHERAL TYPE.X3=FILE/ENT ON 4T?W [ RETURN 4TRG BZE 4 TC [J IF NOT SERIAL ACCESS 4W?6 JBS TC,3,BESERIAL [J IF SERIAL FILE 4WQQ TESTMODE 5,TC,,ERASE [RANDOM FILE OK FOR ERASE 4X=B BRN XRAND 4XQ2 UF1 4Y9L ... JMBAC XDIRECT,3,BESERIAL,BEMT [J IF DA FILE EXISTS 4YP= ... BNZ 4 ORGTM [MODE IMPLIES REQUIRED FILE IS SERIAL 5286 HUNTW 2,FILE,CREATE 52MQ BNG 2 RALR [J IF NO FILE/CREATE BLOCK 537B ... JMBS ORGTM,2,CESERIAL,CEMT [J TO CHECK ORG OR TM DATA 555W XDIRECT 5656 TESTMODE 5,RALR,NOT,EMPTY 56JQ CALL 6 USERTYPE 56R# ... BRN ORGCHECK 56^W ...ORGTM 578G ... TESTMODE 5,TMCHECK,NOT,EMPTY [J IF FULL T/M CHECK NEEDED 579H ...ORGCHECK 57=J ... HUNTW 3,FILE,CREATE [OTHERWISE JUST CHECK MT+ SERIAL 57#L ... BNG 3 TC [BITS ARE IDENTICAL IN CREATE AND ENT 57BN ... MBSXD 6,CEMT,CESERIAL 57DQ ... ANDX 6 CEINF1(3) [X6=BITS IN CREATE 57GS ... MHUNTW 3,FILE,ENT 57JW ... MBSXD 0,BEMT,BESERIAL 57LY ... ANDX 0 EINF1(3) [BITS IN ENT 57P2 ... ERX 0 6 57R4 ... BZE 0 TC [J IF OK 57T6 ... KEEPREP 6,PERITYPE 57X8 ... BRN RE4 57^= ...TMCHECK 583L MHUNTW 3,FILE,ENT 58H= JBS TC,3,BEVIRGINDA [TYPE/MODE NOT SET UP YET 592W CALL 6 USERTYPE [CHECK PTM OF FILE 59GG [ 5=26 [ TRAP CHECKING SECTION 5=FQ [ 5=^B TC 5?F2 CALL 6 TYPECHANGE 5?YL LDN 4 #7000 [CONVERT MAIN MODE TO MODIFIER 5#D= ANDX 4 5 [FOR TABLE OF TRAPS 5#XW SRL 4 9 [X4 = 0 FOR EXECUTE MODE 5*CG LDX 1 FX1 5*X6 SMO 4 5BBQ LDX 7 MODE(1) [X7 CONTAINS REQUIRED TRAPS 5BWB SMO FX2 5CB2 LDX 3 AWORK1 [2ND MODE WORD 5CTL BZE 3 NEMODE 5D*= TESTMODE 3,NEMODE,NOT,GDR [IF GDR SUBMODE GIVEN, TEST 5DK4 ... TESTMAIN 5,NEMODE,NOT,READING [J IF NOT READING WITH CDR 5DSW LDN 7 CREAD+CWRITE [FOR READ,WRITE TRAPS 5F#G BRN MCH 5FS6 NEMODE 5G?Q TESTMODE 5,MCH,NOT,EMPTY,OFFSET 5GRB [ SPECIAL TRAPCHECKING FOR APPEND (OFFSET), EMPTY CASES 5H?2 TESTMODE 5,OFS,,OFFSET 5HQL LDN 7 CWRITE [TEST WRITE TRAP FOR EMPTY MODE 5J== BRN MCH 5JPW OFS 5K9G LDN 7 CAPPEND [TEST APPEND TRAP FOR OFFSET MODE 5KP6 MCH 5L8Q TESTMODE 5,NOTERASE,NOT,ERASE 5LNB LDN 7 CERASET [CHECK FOR ERASE TRAPS 5LQK ...#UNS ILOGACC 5LSS ...( 5LX3 ... LDCT 0 #20 5L^= ... SMO FX2 5M3F ... ORS 0 AWORK3 [SAVE TRAP CODE FOR LA 5M5N ...) 5M82 BRN MCH1 5MML NOTERASE 5MPJ ...#UNS ILOGACC 5MRG ...( 5MTD ... LDX 0 7 5MXB ... SRC 0 9 5M^# ... SMO FX2 5N3= ... ORS 0 AWORK3 [SAVE TRAP CODE FOR LA 5N58 ...) 5N7= [ PRE-MARK8 USED TO NOT CHECK TRAPS FOR MULTELEMENTS 5Q5Q TESTMODE 5,MCH1,NOT,UNTRAP,MULTEL 5QKB LDN 7 0 5R52 MCH1 5RJL MHUNT 2,FILE,FABSNB 5S4= LDN 6 #200 [BIT 16 5SHW ANDX 6 ATYPE(2) [X6=0 UNLESS A WORKFILE 5T3G [ IF NOT CREATE CASE, SHOULDNT BE FTRAPS AROUND 5TH6 ANDN 5 ACREATE 5W2Q BZE 7 NOTADJ 5WGB BNZ 6 NTADJ [DONT SET TABS IF WF 5XFL BZE 5 NTADJ [NO VALID FTRAPS 5YYG TABSET [FOR BACKSPACE BEFORE TRAPADD 5^D6 [ TAB 1 POINTS TO BEGINNING OF (I.E., HAVING JUST READ) LAST BLOCKS 5^XQ [ RECORD. IF NO BLOCKS RECORD TAB 1 IS SAME AS TAB 2 62CB TAB ,1 [TABULATION PTR -> TAB 1 6B6B NTADJ 6B6T ...#UNS JSKI29 6B7# ...( 6B7R ...# ************************************************** 6B98 ...# CSS SPECIAL - FILE PASSWORD SYSTEM 6B=K ... 6B#2 ... SEGENTRY K98USEROPEN 6B*C ... BRN NOCSSMOD 6BBS ... DOWN FILESECU,3 6BD9 ... BRN PASSFAIL 6BFL ...NOCSSMOD 6BH3 ... SEGENTRY K97USEROPEN 6BJD ...# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 6BK9 ...) 6BL2 CHECKTRA 6C5L #SKI K6USEROPEN>199-199 6CK= ( 6D4W TRACE 7,USERTRAP 6DJG TRACE EXEC1(2),USREXEC1 6F46 ) 6FHQ LDX 0 EXEC1(2) 6G3B ANDS 7 0 6GH2 ERX 7 0 6H2L ... BNZ 7 NOTR [J IF TRAPS NOT OK 6RRW BNZ 6 TRAPSOKWF [J IF A WORKFILE 6S?G [ READING/TABULATION PTRS -> TAB 0 IF NO FTRAPS. READ/TABULATION 6SR6 [ PTRS -> TAB 1 IF ANY FTRAPS 6T=Q ... TABULATE 6TQB TRAPSOKWF 6W=2 HUNT 1,FILE,FTRAP [NOT HUNTW B23 OF ATYPE MAY BE SET 6WPL BNG 1 NOTRADJ 6X9= BZE 5 XTRAP 6XNW [ 6Y8G [ BUG 3100-TG QUALIFIER MAY HAVE NO EFFECT OR TRAPS LOST IF 6YN6 [ FILE IS RETRIEVED & WAITED FOR. 6^7Q [ SO DUPLICATE FTRAP FOR 6^MB [ ACTIVITIES ENTERING K2USERONE & FREE FTRAP AT EXITS 7272 [ INEFFICIENT BUT BETTER DESIGN DEPENDS ON GREAT RECONSTRUCTION 72LL [ OF USEROPEN. MINIMIZE INEFFICIENCY BY DUPLICATING FTRAP ONLY 736= [ IF TRAPS FOUND BY CHECKTRA ABOVE ARE DIFFERENT FROM ETRAPMODES 73KW [ EXCEPTION HERE IS 'GROUP' (B0). 745G [ UNLESS TABULATION MACROS WORK AT LEVELS>0 THE METHOD OF 74K6 [ USING 'DIROPEN' MODE FOR OPENREL & DOING TRAPADD WHEN FILE IS 754Q [ OPEN SUCCESSFULLY DOES NOT WORK. 75JB [ 7642 LDX 0 ATYPE(1) [CHEK IF B23=1 76HL SRC 0 1 773= BPZ 0 TRAPCOPY [IF NOT SET, J TO DUPLICATE FTRAP 77GW SLL 0 1 [IF SET, UNSET IT & COMPARE TRAPS 782G STO 0 ATYPE(1) 78G6 LDX 0 ETRAPMODES(1) 78^Q TXU 0 EXEC1(2) 79FB BCC NOTRADJ 79^2 [ DONT DO TRAPADD IF TRAP(S) IN FTRAP ALREADY IN ETRAPMODES 7=DL TRAPCOPY 7=Y= LDX 3 ETRAPRH(1) 7?CW SETUPCORE 3,2,FILE,FTRAP 7?XG HUNT2 1,FILE,FTRAP,2 7#C6 LDN 1 ETRAPRH(1) 7#WQ LDN 2 ETRAPRH(2) 7*BB MOVE 1 0(3) 7*W2 MHUNTW 1,FILE,FTRAP 7B38 ...#UNS ILOGACC 7B8B ... BS 1,EDEFTRAP [TRAP NOT TO BE LOGGED 7B*L NAME 1,FILE,FREQ [TRAPADD FREES ALL FTRAPS 7BT= MHUNTW 1,FILE,FTRAP 7C#W LDX 2 FX2 7CSG NEMPTY 7D#6 NAME 1,FILE,FAPB 7D*C ... MHUNT 1,FILE,FABSNB 7DBN ... BBS 16,ATYPE(1),WFNCH 7DD3 ... OWNERCHECK [ CHECK OWNERSHIP WITH TRAP QUALS. 7DGL ... TESTREPN OK,XNOTOWN [ J IF NOT THE OWNER 7DK9 ...WFNCH 7DMT ... MHUNT 1,FILE,FAPB 7DRQ CHAIN 1,2 7F?B TRAPADD 7FR2 HUNT 1,FILE,FREQ [FREQ'S NORMALLY IN OFFLINE CHAIN 7G=L BNG 1 NOTRADJ 7GQ= NAME 1,FILE,FTRAP 7H9W NOTRADJ 7HPG BZE 5 NOTADJ 7J96 BNZ 6 NOTADJ [J IF A WORKFILE 7JNQ TABUNSET 7K8B TAB ,-1 [ALL TRACES OF TABSET REMOVED 7KN2 MHUNTW 1,FILE,ENT [THE FIRST OF THE TWO TABS(NOW THE 7L7L LDEX 3 ECOPS(1) [ONLY ONE LEFT)WAS SET IN USERDIR & 7N66 BZE 3 MCOPS1B3681 [REFERS TO A POSITION IMMEDIATELY 7NKQ NLOOPDMB123 [AFTER THE NAME RECORD.TRAPADD LEAVES 7P5B ... BACKSPACE [THE FILE POSITIONED HAVING JUST READ 7PK2 ... BCT 3 NLOOPDMB123 [THE BLOCKS RECORD.UNFORTUNATELY, 7Q4L MCOPS1B3681 [HOWEVER, THE ENTRY MAY HAVE BEEN 7QJ= TABRESET [REAPPENDED @ THE END OF DIRECTORY 7R3W [& DELETED FROM ITS ORIGINAL POSITION 7RHG [SO WE HAVE TO RECALCULATE THE 7S36 [POSITION WE WANT. 7SGQ [EVENTUALLY A MORE EFFICIENT WAY OF 7T2B [COPING WITH THIS MUST BE FOUND. 7TG2 [THIS CORRECTS B3681(GEOERR'FILEBENT' 7T^L NOTADJ 7WF= LDX 2 FX2 7WYW ERX 5 AWORK4(2) [GET ALL MODES EXCEPT CREATE 7XDG MHUNTW 3,FILE,ENT 7XY6 BNZ 4 NOTX [J IF NOT EXECUTE 7YCQ JBC RAND,3,BESERIAL [J IF RANDOM FILE 7YXB ADDMODE 5,READ 7^C2 NOTX 7^WL BNZ 6 NOTXWF [J IF A WORKFILE 82B= LDCT 6 #40 82TW ANDX 6 EINF1(3) [REMEMBER IF MDF 83*G TABULATE [POSITION AFTER NAME RECORD FOR OPENR 83T6 FREETAB 84#Q BNZ 6 SORM [MDF 84SB NOTXWF 85#2 LDX 1 FX1 86?= TESTMODE 5,XMULTF,,MULT [MULTI REQD BUT NOT DIR ENT FOR MDF 86QW TESTMODE 5,MDIR,,DIR 8?M6 SETMODE 4,MULTEL 8#6Q ANDX 4 5 8*62 ANDX 5 NOPM(1) [REMOVE MODES NOT USED OPENREL 8*KL ORX 5 UPM(1) 8G2= BZE 4 OPEN [J IF NOT MULTELEM 8GFW LDX 0 5 [MAIN MODE IS NOT CHANGED 8G^G ANDN 0 #7000 [MAIN MODE 8HF6 SBN 0 #3000 8HYQ BNG 0 OPEN [J IF A READ MODE 8JDB ORX 5 MDOL(1) 8JY2 OPEN 8KCL MHUNT 2,FILE,FABSNB 8KX= LDN 0 #200 8LBW ANDX 0 ATYPE(2) 8LWG BZE 0 OPEN1 [NOT A WORKFILE 8MB6 OPENWORX XBR,5 8MTQ TESTRPN2 OK,OREP 8N*B BRN OKW 8NT2 OPEN1 8P#L MHUNTW 3,FILE,ENT 8Q?W LDX 2 FX2 8QCR ... JBC XCARE,3,BESERIAL [J IF NOT SERIAL 8QHN ... TESTMODE AWORK1(2),YCARE,,USERCARE [USE CAREFUL MODE IF USERCARE 8QRG TESTMODE AWORK4(2),XCARE,NOT,OFFSET [J IF NOT APPENDING 8R?6 TESTMODE AWORK4(2),XCARE,,DESTRUCT [J IF DESTRUCT 8RC3 ... TESTMODE AWORK1(2),XCARE,,GDR [J IF GDR 8RGY ...YCARE 8RQQ ADDMODE 5,CAREFUL [ADD CAREFUL MODE FOR OPENREL 8S=B XCARE 8SHQ ... TESTMODE AWORK1(2),NGDESTR,NOT,GDR[J IF NOT GDR 8ST6 ... ADDMODE 5,GDESTR 8T6G ...NGDESTR 8T79 ...#UNS ILOGACC 8T7Y ...( 8T8M ... BBS 3,AWORK3(2),XLOG 8T9B ... TESTMODE AWORK4(2),XLOG,,MULTEL 8T=D ... LDX 1 AWORK3(2) 8T?G ... SLC 1 9 8T#J ... ANDN 1 #37 [SET TRAP CODE 8T*N ... LOGACCESS 2,1 [LOG IF NECESSARY 8TBC ...XLOG 8TC6 ...) 8TCW ... TRACEIF K6USEROPEN,199,299,5,USERMODE 8TP= OPENRELX XBR,5 8W8W OPD 8WNG TESTREPN OK,OREP 8X86 [ 8XMQ [ FILE EITHER CREATED (IN USERONE) & LEFT OPEN OR OPENED (ABOVE) 8Y7B [ AT LEVEL 0. IF DIROPEN MODE ALSO GIVEN, FILE'S DIR OPEN AT LEVEL 8YM2 [ 8^6L NEWFILE 8^L= [ REDUCES SIZE OF ELEMENT FOR TESTING 925W BZE 4 NSC 92KG SEGENTRY K50USEROPEN [FOR TINYMULT MACRO 9356 BRN NSC 93JQ TOPFCB2 2 944B STO 4 FSIZE(2) 94J2 LDX 2 FX2 953L NSC 95H= #SKI K6USEROPEN>99-99 962W ( 96GG HUNT 1,FILE,FLOCNB 9726 TRACE A1(1),USEROPEN 97FQ ) 97^B OKW 98F2 LDN 7 0 [NOT BRKIN 98YL LOBSFILE [CHARGING FOR ONLINE BS 99D= TOPFCB2 1 99XW JBS OKBS,1,BFWORK [J IF WKFILE--NO INCRECUBS 9=CG INCRECUBS XBS,, [INCREASE CURRENT ONLINE BS 9=X6 TESTRPN2 OK,NOKBS 9?BQ BRN OKBS 9?WB XBS 9#B2 LDX 7 GSIGN [BRKIN 9#TL NOKBS 9**= PICKREP2 6 9*SW NOLOBSFILE [UNSET BIT BEFORE CLOSE 9B#G TESTMODE 5,ZEMPTY,,EMPTY 9BS6 CLOSETOP [FILE 9C?Q BRN TESTDIR 9CRB ZEMPTY 9D?2 CLOSEABANDON [IF EMPTY MODE, GET PREVIOUS ENTRY 9DQL TESTDIR 9F== TESTMODE 5,XDIROP,NOT,DIROPEN 9FPW CLOSETOP [DIR 9G9G XDIROP 9GP6 [ DONT NEED TO WORRY ABOUT EMPTY CASE WITH MULTIFILES BECAUSE 9H8Q [ ELEMENTS ARE ERASED AND FSTREND IS CORRECT -- THE ELEMENTS 9HNB [ ARE CREATED IN USERCREA (NO EMPTY MODE). 9J82 [ ALSO DONT NEED TO CLOSE MDF SINCE CALLING ROUTINE (OR 9JML [ USERSTRM) WILL CLOSE THE MDF IN ERROR CASES (INCLUDES QUOTA) 9K7= BNG 7 XBR 9KLW BRN RE4 9L6G OKBS 9LL6 9M5Q 9MKB NGNC 7 1 [B0 USED ELSEWHERE 9N52 ANDX 7 AWORK2(2) [SO TAKE IT OUT 9NJL PTREP2 7 [STORE SU BSIDIARY REPLY 9P4= TREPN2 RANDOM,V1 9PHW SETREP2 RANDOM 9Q3G V1 9S22 TESTMODE AWORK4(2),V2,NOT,MULTEL 9SFL TOPFCA2 1 9S^= BS 1,BAMULT [MARK AS MULTELEM 9TDW #SKI K6USEROPEN>99-99 9TYG TRACE FX2,USERSTRM 9WD6 V2 9WMY ... LDN 4 1 [ONE FILE OPENED 9WXQ TESTMODE 5,UP,NOT,DIROPEN 9XCB [ J IF NOT WRITING TO AN ELEMENT OF A MULTIFILE 9XX2 [ DIRECTORY IS POSITIONED AFTER NAME RECORD FOR CREATE AND EMPTY, OTHERW 9YBL [ AFTER BLOCKS RECORD. 9YW= TESTMODE 5,V3,,EMPTY,CREATE 9^*W BACKSPACE 1 [POS DIRECTORY AFTER NAME RECORD 9^TG V3 DOWN COMPOST,4 [UPDATE MDF, TELL ACTLF =2*6 TESTREP2 LF512,RE [J IF >511 LFS =2SQ BRN MDIR1 =3#B =3S2 =4?L MDIR =4R= TESTMODE 5,XCOMPOST,,FREEZE =4YX LDX 2 FX2 =53P ... LDN 4 1 [ONE FILE OPENED FOR SIMPLE DIR MODE =56J TESTMODE AWORK1(2),MDIR1,NOT,SAVEFREEZE =5#? TESTMULT XMULT [ MULTIFILE ILLEGAL =5*N MHUNT 3,FILE,ENT =5C5 JBC XRANDOM,3,BESERIAL [ J IF NOT SERIAL FILE =5DG LDX 0 ETM(3) =5FX BNZ 0 XCOMPOST =5H# SETREP WRONG =5JP BRN XJOIN [ AMORPHOUS FILE =5L6 XRANDOM =5MH SETREP RANDOM =5N2 XJOIN =5NF CLOSETOP [ CLOSE DIRECTORY =5NN ... LDN 4 0 [NO FILE OPENED =5NY BRN UPPLUS1 [ NON-SERIAL FILE ILLEGAL =5QG XCOMPOST =5T5 ...#UNS ILOGACC =5XN ...( =62? ... LDN 1 CREAD [LOG LISTFILE =64W ... LOGACCESS 2,1 =67F ...) =6=6 DOWN COMPOST,3 [SET UP ACTLF =6PQ TESTREP2 LF512,RE [J IF >511 LFS =6^J ... LDN 4 0 [NO FILE OPENED =79B MDIR1 [SIMPLE DIR MODE =7P2 ANSOK2 =88L BRN UP =8N= =97W =9MG ==76 USERTYPE ==LQ SBX 6 FX1 =CH2 HUNTW 2,FILE,CREATE =D2L BNG 2 US1 =DG= DOWN USERTYPE,1 =D^W BRN RE [ERROR EXIT =FFG BRN UXIT =F^6 US1 =GDQ HUNTW 2,GOUT,INFO =GYB BNG 2 UXIT1 =HD2 DOWN USERTYPE,2 =HXL BRN RE =JC= UXIT =JWW MHUNTW 3,FILE,ENT =KBG UXIT1 =KW6 ADX 6 FX1 =L*Q EXIT 6 0 =LTB [ =M*2 [ =MSL [ ROUTINE TO ZEROIZE CETM IF *FR OR *FW TO INSURE THAT NEW STUFF =N#= [ CREATED WILL HAVE AMORPHOUS FORMAT. FOR OPEN =NRW [ =P?G TYPECHANGE =PR6 HUNTW 1,FILE,CREATE =Q=Q BNG 1 XHANDLER [J IF NO CREATE BLOCK =QQB LDX 0 CETM(1) =R=2 SRL 0 15 =RPL SBN 0 #462 =S9= BZE 0 YAMOR [J IF *FR =SNW SBN 0 1 =SYN ... BZE 0 YAMOR [J IF *FW =T8G ... SBN 0 1 =TD# ... BNZ 0 XHANDLER [J IF NOT *FH =TN6 YAMOR =W7Q STOZ CETM(1) =WMB LDCT 0 #100 =X72 SMO FX2 =XLL ORS 0 AWORK3 [CETM HAS BEEN ZEROIZED =Y6= XHANDLER =YKW EXIT 6 0 =^5G =^K6 ... ?24Q SORM ?2JB #SKI K6USEROPEN>199-199 ?342 ( ?3HL MHUNTW 3,FILE,ENT ?43= JBC XC,3,BEMULT [J IF NOT MULTEL ?4GW GEOERR 1,2BITS [BOTH MDF AND MULTELEM ?52G XC ?5G6 ) ?5^Q [ ?6FB [ DONT NEED BS FOR MDF ?6^2 [ ?7DL VFREEBAX ?8XG [ DONT GO ACROSS TO USERSTRM IF MDF SUBMODE GIVEN -> CANT BE ?9C6 [ OPENING MULT, JUST MDF ?9WQ ACROSS USERSTRM,1 ?=BB ?=W2 ??*L RAND ??T= ADDMODE 5,READR ?##W #SKI IGAM-1 ?#SG ( ?*#6 LDCT 0 4 ?*RQ ANDX 0 EINF1(3) ?B?B BNZ 0 XMT [EXECUTE ILLEGAL ON MT ?BR2 ) ?C=L KREPC 7,RANDOM ?CQ= ORS 7 AWORK2(2) [INSERT SUBSIDIARY REPLY ?D9W BRN NOTX ?DPG ?F96 ?FNQ ?G8B ?GN2 UP ?H7L CALL 6 VFREB ?HM= TESTMODE AWORK4(2),NFRENT,,DIR,LEAVE ?J6W VFREEW FILE,ENT [OPEN MAY HAVE FREED ENT ?JLG NFRENT ?K66 MHUNT 2,FILE,FABSNB ?KKQ BBS 16,ATYPE(2),UPNF [DONT FREE FLOCNB IF WORKFILE ?L5B MFREE FILE,FLOCNB ?LK2 BRN XGET ?M4L UPNF ?MJ= [ GETDIRWORK IN USERONE NOT ACCURATE IF FILE HASNT BEEN WRITTEN TO ?N3W [ SO IF NOT WRITTEN TO YET, DO SECOND GETDIRWORK TO GET RECENT INFO ?NHG TESTMODE 5,XGET,NOT,DIR,LEAVE ?P36 ... MFREEW FILE,ENT ?QG2 GETDIRWORK ?Q^L XGET ?RF= LDX 2 FX2 ?RYW HUNTW 3,BSTB,FULLB ?SDG BNG 3 NOFULL ?SY6 PICKREP2 6 ?TCQ PREP2 7 ?TXB FREEBAX ?WC2 MFREEW BSTB,EMPTYB ?WWL PUTREP2 6 ?XB= PTREP2 7 ?XTW NOFULL ?Y*G NGNC 7 1 ?YT6 ANDX 7 AWORK2(2) [B0 MAY BE SET-IGNORE IT ?^#Q #SKI K6USEROPEN>99-99 ?^SB ( #2#2 PICKREP2 6 #2RL TRACE 6,USERREP #3?= TRACE 7,SUBREP #3QW ) #4=G PTREP2 7 #4G# UPPLUS1 #4HB ... LDN 3 1 ['UPPLUS 1' EXIT #4JD ...UPPLUS #4KG ...# #4LJ ...# ROUTINE TO EXIT, BEARING IN MIND SHARED FILESTORE ENHANCEMENT #4ML ...# X3=0 => UP, X3=1 => UPPLUS 1 #58L ... UPPLUS 0(3) ['UP' OR 'UPPLUS 1' EXIT #59Q #5PB #692 [ BREAK-IN EXIT SECTION #6NL XBR #78= CALL 6 VFREA #7MW VFREEBAX [FREE ANY BS #7Q5 ... TESTMODE AWORK4(2),XFREE,NOT,MULTEL [ J IF MULT ELEMENT #7S# ... MHUNT 3,FILE,FABSNB #7WH ... LDN 7 1 #7YQ ... SMO A1(3) [ SUBTRACT 1 FROM GEN. NO. #82^ ... SBS 7 A1-2(3) [ BECAUSE OF BREAK-IN #858 ...XFREE #87G VFREEW FILE,CREATE #8FX ... LDN 3 0 ['UP' EXIT #8S# ... BRN UPPLUS #96Q #9LB #=62 [ CLEANUP ROUTINE FREES BLOCKS NOT PASSED BY CALLING ROUTINE #=KL VFREA #?5= VFREEW FILE,ENT #?JW VFREB ##4G VFREE FILE,FTRAP ##J6 EXIT 6 0 ##N3 ...XNOTOWN ##RY ... SETREP NOTOWN [ CANNOT ALTER TRAPSIF NOT THE OWNER ##XT ... BRN RE #*3Q RE #*HB #SKI K6USEROPEN>199-199 #B32 ( #BGL LDX 2 FX2 #C2= TESTMODE AWORK4(2),REPER,,REPLY #CFW TESTREPN CANT,REPER #C^G GEOERR 1,USERCANT #DF6 REPER #DYQ ) #FDB ACROSS REPERR,2 #FY2 OREP [REPLY FROM OPENREL IS NOT OK #GCL TESTREPN DIRCLOSE,RE #GJS ...#UNS ILOGACC #GQ2 ... SETBIT 3,AWORK3(2) #GX= ACROSS USERONE,2 #HBW #HWG [ ERROR CONDITIONS WITH NO ERROR REPLY SET YET #KT2 XDIR #L#L ...XTERMIN #M?W XRAND #MRG KEEPREP 6,WRONG #N?6 BRN RE4 #NQQ XMULTF #P=B KEEPREP 6,NOTMULT #PQ2 BRN RE4 #Q9L RALR #QP= KEEPREP 6,ALREADY #R8W BRN RE4 #RNG WTRAPS #S86 FREETAB #S8Q ...#UNS JSKI29 #S9B ...( #S=4 ...# *************************************************** #S#2 ...# CSS SPECIAL MOD - FILE PASSWORD SYSTEM #S*Y ... BRN NOTR #SCW ...PASSFAIL #SFS ... SETMODE 6,NOERREP #SHQ ... ORS 6 AWORK4(2) #SKN ...# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ #SLP ...) #SMQ NOTR #SNY ...#UNS ILOGACC #SQ6 ...( #SSR ... LDX 1 AWORK3(2) #SXD ... SLC 1 9 #T25 ... ANDN 1 #37 [SET TRAP CODE #T4S ... LOGACCESS 7,1 #T62 ...) #T7B KEEPREP 6,NOTRAP #TM2 BRN RE4 #W6L XMULT #WL= KEEPREP 6,NOMULTS #X5W RE4 #XKG VFREEW FILE,ENT #Y56 ACROSS REPERR,4 #YJQ #^4B [ ERROR CONDITIONS GIVING NAMEFORM REPLY WITH SUBSIDIARY COMMENT #^J2 XTRAP *23L LDN 7 0 *2H= ACROSS REPERR,3 *32W [ *3GG [ *426 ... MENDAREA 80,K99USEROPEN *4FQ ...#END ^^^^ ...43611026000100000000