USEROPEN867

(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

USEROPEN867.txt
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