{{htmlmetatags>metatag-description:(ICL George 3 and George 4 source: USEROPEN867)}}
====== USEROPEN867 ======
(George Source)
**Macros used:** [[george:macro:ACROSS|ACROSS]], [[george:macro:ADDMODE|ADDMODE]], [[george:macro:ANSOK2|ANSOK2]], [[george:macro:BACKSPACE|BACKSPACE]], [[george:macro:BBS|BBS]], [[george:macro:BRUSEN|BRUSEN]], [[george:macro:BS|BS]], [[george:macro:BXE|BXE]], [[george:macro:CHAIN|CHAIN]], [[george:macro:CLOSEABANDON|CLOSEABANDON]], [[george:macro:CLOSETOP|CLOSETOP]], [[george:macro:DOWN|DOWN]], [[george:macro:FJOCA|FJOCA]], [[george:macro:FREEBAX|FREEBAX]], [[george:macro:FREETAB|FREETAB]], [[george:macro:GEOERR|GEOERR]], [[george:macro:GETDIRWORK|GETDIRWORK]], [[george:macro:HUNT|HUNT]], [[george:macro:HUNT2|HUNT2]], [[george:macro:HUNTW|HUNTW]], [[george:macro:INCRECUBS|INCRECUBS]], [[george:macro:JBC|JBC]], [[george:macro:JBS|JBS]], [[george:macro:JMBAC|JMBAC]], [[george:macro:JMBS|JMBS]], [[george:macro:KEEPREP|KEEPREP]], [[george:macro:KREPC|KREPC]], [[george:macro:LOBSFILE|LOBSFILE]], [[george:macro:LOGACCESS|LOGACCESS]], [[george:macro:MBSXD|MBSXD]], [[george:macro:MENDAREA|MENDAREA]], [[george:macro:MFREE|MFREE]], [[george:macro:MFREEW|MFREEW]], [[george:macro:MHUNT|MHUNT]], [[george:macro:MHUNTW|MHUNTW]], [[george:macro:NAME|NAME]], [[george:macro:NOLOBSFILE|NOLOBSFILE]], [[george:macro:OPEN|OPEN]], [[george:macro:OPENRELX|OPENRELX]], [[george:macro:OPENWORX|OPENWORX]], [[george:macro:PICKREP2|PICKREP2]], [[george:macro:PREP2|PREP2]], [[george:macro:PTREP2|PTREP2]], [[george:macro:PUTREP2|PUTREP2]], [[george:macro:SEG|SEG]], [[george:macro:SEGENTRY|SEGENTRY]], [[george:macro:SETBIT|SETBIT]], [[george:macro:SETMODE|SETMODE]], [[george:macro:SETREP|SETREP]], [[george:macro:SETREP2|SETREP2]], [[george:macro:SETUPCORE|SETUPCORE]], [[george:macro:TAB|TAB]], [[george:macro:TABRESET|TABRESET]], [[george:macro:TABSET|TABSET]], [[george:macro:TABULATE|TABULATE]], [[george:macro:TABUNSET|TABUNSET]], [[george:macro:TESTMODE|TESTMODE]], [[george:macro:TESTMULT|TESTMULT]], [[george:macro:TESTNAMX|TESTNAMX]], [[george:macro:TESTREP2|TESTREP2]], [[george:macro:TESTRPN2|TESTRPN2]], [[george:macro:TOPFCA2|TOPFCA2]], [[george:macro:TOPFCB2|TOPFCB2]], [[george:macro:TRACE|TRACE]], [[george:macro:TRACEIF|TRACEIF]], [[george:macro:TRAPADD|TRAPADD]], [[george:macro:TREPN2|TREPN2]], [[george:macro:UP|UP]], [[george:macro:UPPLUS|UPPLUS]], [[george:macro:USERCRWF|USERCRWF]], [[george:macro:VFREE|VFREE]], [[george:macro:VFREEBAX|VFREEBAX]], [[george:macro:VFREEW|VFREEW]], [[george:macro:WRONG|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