{{htmlmetatags>metatag-description:(ICL George 3 and George 4 source: DIRENT867)}}
====== DIRENT867 ======
(George Source)
**Macros used:** [[george:macro:ASSMESS|ASSMESS]], [[george:macro:BITDEFS|BITDEFS]], [[george:macro:BRUSEN|BRUSEN]], [[george:macro:BXE|BXE]], [[george:macro:CLOSETOP|CLOSETOP]], [[george:macro:ERROR|ERROR]], [[george:macro:FINDNAME|FINDNAME]], [[george:macro:FNORM|FNORM]], [[george:macro:JANAL|JANAL]], [[george:macro:JBS|JBS]], [[george:macro:MFREE|MFREE]], [[george:macro:MHUNT|MHUNT]], [[george:macro:NAMETOP|NAMETOP]], [[george:macro:NEXTENT3|NEXTENT3]], [[george:macro:OPENDIR|OPENDIR]], [[george:macro:OPENSYS|OPENSYS]], [[george:macro:OUTMESS|OUTMESS]], [[george:macro:OUTPACKX|OUTPACKX]], [[george:macro:PARALYSE|PARALYSE]], [[george:macro:READ|READ]], [[george:macro:REPALLER|REPALLER]], [[george:macro:SEGENTRY|SEGENTRY]], [[george:macro:SETNCORE|SETNCORE]], [[george:macro:SETREP|SETREP]], [[george:macro:SETUPTAB|SETUPTAB]], [[george:macro:SPARAPAS|SPARAPAS]], [[george:macro:SSEARCH|SSEARCH]], [[george:macro:STEP|STEP]], [[george:macro:STEPAGAIN|STEPAGAIN]], [[george:macro:TABRESET|TABRESET]], [[george:macro:TABSET|TABSET]], [[george:macro:TABULATE|TABULATE]], [[george:macro:TESTHKN|TESTHKN]], [[george:macro:TESTHOOK|TESTHOOK]], [[george:macro:TESTREP|TESTREP]], [[george:macro:TESTREP2|TESTREP2]], [[george:macro:TRACE|TRACE]], [[george:macro:TRAPOPEN|TRAPOPEN]], [[george:macro:UP|UP]], [[george:macro:UPPLUS|UPPLUS]], [[george:macro:USEROPEN|USEROPEN]], [[george:macro:VFREE|VFREE]]
22FL #SEG DIRENT84 [M.C.D. MANN
22KH ...[
22PD ...[ (C) COPYRIGHT INTERNATIONAL COMPUTERS LTD 1982
22T* ...[
22^= #OPT K0DIRENT=0
23DW #LIS K0DIRENT>K0ALLGEO
23YG #
245N ...#UNS G400
24=W ...# THIS CHAPTER IS MODIFIED FOR G3PLUS-IH MK2
24D6 # THIS SEGMENT IMPLEMENTS THE "DIRENT" FORM OF THE SETPARAM COMMAND
24XQ #
25CB 8HDIRENT
25F# ...#
25H= ...#SKI G3ISSUE/10-4<1$1 [SKIP IF NOT MARK 8.40
25K8 ...(
25M6 ...#UNS BFABTSN [DEFINE BFABTSN IF NOT ALREADY DEFINE
25P4 ...#SKI
25R2 ... BITDEFS ATYPE,13,BFABTSN [BFABTSN ISN'T DEFINED IN 8.40
25SY ...)
25X2 SEGENTRY K1DIRENT,XK1DIRENT
26BL XSTAR #32 [ASTERISK
26W= XDIRENTSP +HDIRENTSP [MESSAGE IDENTIFIER
26XS ...#UNS G400
26^B ...(
272Y ...SMASK #77777700
274G ...XDIRENTMSP +HDIRENTMSP
2764 ...TWOBITS #60000000
277L ...XPOOL 12H*POOL
2798 ...XWORK 12H*WORK
27=Q ...XPWLOC 24HTAPE 00000000
27## ...)
27*W XK1DIRENT
27DF ...#UNS G400
27H4 ...(
27KM ... SEGENTRY G400DIRA
27N= ... TESTHOOK XDSK1
27QT ...)
27TG BRUSEN NOTUSER [J IF COMMAND IN NO-USER CONTEXT
28*6 #
28SQ # CHECK WHETHER THE CURRENT USER HAS READ TRAPS FOR THE DIRECTORY
29#B # (SPECIFIED OR IMPLIED) WHICH CONTAINS THE ENTRY FOR THE ENTRANT
29S2 # SPECIFIED IN THE CPB/CUNI BLOCK
2=?L #
2=R= MHUNT 3,CPB,CUNI [FIND OUR CPB/CUNI BLOCK
2?=W LDX 1 FX1
2?QG LDCH 4 APARA(3) [PICK UP FIRST CHARACTER OF PARAMETER
2#=6 SBN 4 #21 [IS IT "!" ? (WORKFILE NOT ALLOWED)
2#PQ BNZ 4 S1A [J IF NOT
2#S* ...#UNS G400
2#WY ...XDSK2
2#^J ... JANAL OPENERR [J IF STILL PROCESSING COMMAND
2*9B ERROR JDNOWORK [REPORT THE COMMAND ERROR
2*P2 BRN OPENERR [AND GIVE UP
2B8L ...S1A SMO FX2 [ASSUME THAT THE LAST CHARACTER
2BN= STOZ AWORK1 [OF THE PARAMETER IS NOT AN "*"
2C7W LDX 2 ANUM(3) [PICK UP THE TYPE/SIZE WORD
2CMG BZE 2 STERR [COMMAND ERROR "EXPRESSION INVALID"
2D76 BNG 2 STERR [ ... IF NULL OR NON-EXISTENT
2DLQ ANDN 2 #7777 [ISOLATE SIZE OF THE PARAMETER
2F6B SBN 2 1
2FL2 SRC 2 2 [CONVERT SIZE TO CHARACTER POINTER
2G5L SMO 3
2GK= LDCH 4 APARA(2) [PICK UP LAST CHARACTER OF PARAMETER
2H4W TXU 4 XSTAR(1) [IS IT "*" (MEANING "LAST VERSION") ?
2HJG BCS S1 [J IF NOT: LATEST VERSION NOT WANTED
2HL9 ...#
2HMY ...# THE FOLLOWING WORD IS NULLED BY THE "DIRENT ON" RESTORE
2HPM ...# TIME MACRO TO ALLOW THE USE OF AN "*" TERMINATOR AND IS
2HRB ...# RE-INSTATED BY "DIRENT OFF" WHICH SWITCHES OFF THIS
2HT5 ...# INTERNAL FACILITY
2HWS ...#
2HYH ...#ALT K90DIRENT=0?+37?
2J2= ... BRN S1 [J IF "*" IS NOT ALLOWED
2J46 LDCT 4 #400 [REMEMBER THAT THE LAST CHARACTER
2JHQ SMO FX2 [IS AN "*" AND THAT WE MUST SEARCH
2K3B STO 4 AWORK1 [THE DIRECTORY FOR "HIGHEST VERSION"
2KH2 LDEX 4 ATYPE(3) [GET PARAMETER NUMBER FROM CPB/CUNI
2L2L PARALYSE #32,,4 [FORM A CPB/CMULTI WITHOUT THE "*"
2LG= SPARAPAS [AND PUT PARAMETER IN NEW CPB/CUNI
2L^W MHUNT 3,CPB,CUNI [FIND THE NEW CPB/CUNI BLOCK
2MFG LDX 4 ANUM(3) [PICK UP THE PARAMETER SIZE
2M^6 BZE 4 STERR [COMMAND ERROR "EXPRESSION INVALID"
2NDQ BNG 4 STERR [ ... IF NULL OR NON-EXISTENT
2NNJ ...#ALT K91DIRENT=0?+37? [LABEL USED BY THE "DIRENT" MACRO
2NYB S1 NAMETOP 3,FILE,FNAME [RENAME THE CPB/CUNI TO FILE/FNAME
2PD2 ... FNORM 1 [CONVERT TO ABSOLUTE FILE NAME
2PXL TESTREP NAMEFORM,OPENERR [J IF FORMAT INCORRECT
2QC= FINDNAME [EXPAND THE ABSOLUTE FILE NAME
2QWW TESTREP OK,S2 [J IF DIRECTORY NAME EXISTS
2R6N ... JANAL OPENERR [J IF STILL PROCESSING COMMAND
2RBG REPALLER [REPORT THE COMMAND ERROR
2RW6 BRN OPENERR [AND GIVE UP
2S*Q S2 MHUNT 3,FILE,FABSNB [FIND THE FILE/FABSNB BLOCK
2SKJ ... JBS MAGTAPE,3,BFABTSN [COMMAND ERROR IF MT SPECIFIED
2STB SMO FX2
2T*2 LDX 4 AWORK1
2TSL BNG 4 STAR [J IF HIGHEST VERSION WANTED
2W#= LDX 7 HDREC(3) [PICK UP THE BLOCK LENGTH
2WRW SBN 7 11 [IF IT'S LESS THAN 10 : TOP OF TREE
2X?G BNG 7 S4 [J IF TOP OF FILESTORE TREE REACHED
2XR6 NGN 4 6
2Y=Q ADS 4 HDREC(3) [REDUCE BLOCK LENGTH BY 6 WORDS
2YQB OPENDIR ZBREAKIN,READ,QUERY [OPEN CURRENT DIRECTORY'S DIRECTORY
2^=2 TESTREP OK,S2A [J IF DIRECTORY OPENED OK
2^FS ... JANAL OPENERR [J IF STILL PROCESSING COMMAND
2^PL REPALLER [REPORT THE COMMAND ERROR
329= BRN OPENERR [AND GIVE UP
32NW S2A TRAPOPEN READ [ARE READ TRAPS OPEN?
338G TESTREP OKAY,S3 [J IF SO
33N6 LDCT 4 #400 [REMEMBER THAT READ TRAPS TO THE
347Q SMO FX2 [DIRECTORY ARE CLOSED AND WE MUST
34MB STO 4 AWORK1 [CHECK TRAPS ON THE FILE ITSELF
3572 S3 CLOSETOP [CLOSE THE DIRECTORY
35BS ... MFREE FILE,ENT
35LL MHUNT 3,FILE,FABSNB [FIND THE FILE/FABSNB BLOCK
366= LDN 4 6 [INCREMENT RECORD HEADER BY 6 WORDS
36KW ADS 4 HDREC(3) [BLOCK NOW REFERS TO THE ENTRANT
375G S4 MHUNT 3,FILE,FNAME [FIND OUR FILE/FNAME BLOCK AGAIN
37K6 NAMETOP 3,CPB,CUNI [AND RENAME IT CPB/CUNI
3=#L ...S5 USEROPEN ZBREAKIN,READR,DIR,UNTRAP,TERMDIR,NOERREP [OPEN DIRECTORY
3=L2 ...S6 TESTREP2 OK,S7 [J IF THE OPEN WAS SUCCESSFUL
3=QN ...S6A
3?2G ... JANAL OPENERR [J IF STILL PROCESSING COMMAND
3?=# ...S6B REPALLER [REPORT THE COMMAND ERROR
3?G6 OPENERR [COMMAND ERROR HAS BEEN DETECTED AND
3?PY ... VFREE FILE,ADJUNCTS
3?^Q UPPLUS 1 [REPORTED SO TERMINATE THE COMMAND
3#2K ...S6C CLOSETOP
3#3D ... BRN OPENERR
3#4* ...S7
3#6Y ... LDX 2 FX2
3#9H ... LDX 4 AWORK1(2)
3##6 ... BPZ 4 S7A [J IF NO MORE TRAP CHECKING NEEDED
3#BP ... CHECKTRAPS
3#F# ... LDX 0 ACOMMUNE7(2)
3#HX ... BNZ 0 S7A
3#LG ... SETREP NOTRAP
3#N9 ... JANAL S6C
3#PY ... BRN S6B
3#RN ...S7A
3#W? ... SETNCORE 12,4,ADATA,CREADL [CREATE AN ADATA/CREADL BLOCK
3#^2 LDN 5 40
3*DL SMO 4
3*Y= STO 5 A1 [SET THE BLOCK LENGTH TO 40 WORDS
3BCW MHUNT 3,FILE,FABSNB [FIND THE FILE/FABSNB BLOCK
3BXG STO 4 7 [REMEMBER ADDRESS OF THE ADATA/CREADL
3CC6 LDX 6 HDREC(3) [PICK UP FILE/FABSNB RECORD HEADER
3CWQ SBN 6 12 [RELATIVE PTR TO FINAL USER NAME
3DBB BPZ 6 S8 [J IF AT LEAST 1 USER NAME IN BLOCK
3DW2 LDN 6 0 [OTHERWISE POINT TO TOP USER NAME
3F*L S8 SMO 6
3FCJ ... LDX 4 A1(3)
3FFG ... BXE 4 HCOLUSER,S91
3FG6 ... SBN 4 10
3FGQ ... BZE 4 S91
3FHD ... SMO 6
3FKB ... LDN 4 A1(3)
3FM# ... BRN S92
3FP= ...S91
3FR8 ... SMO 6
3FT= LDN 4 A1+1(3) [POINT TO USER NAME IN CORE BLOCK
3G54 ...S92
3G#W SMO 7
3GSG LDN 5 A1+2 [AND ITS DESTINATION IN ADATA/CREADL
3H#6 MOVE 4 3 [MOVE USER NAME INTO THE BLOCK
3HLH ... SMO 6
3HYY ... LDN 4 A1+6(3)
3J?B BNZ 6 S9
3JR2 SBN 4 2 [CORRECT POINTER IF USING TOP NAME
3K=L S9 SMO 7
3KQ= LDN 5 A1+5 [AND ITS DESTINATION IN ADATA/CREADL
3L9W MOVE 4 6 [INSERT LOCAL NAME IN THE BLOCK
3LPG SMO FX2
3M96 STOZ AWORK2 [REMEMBER "*" WASN'T SPECIFIED
3MDY ... MFREE FILE,ENT
3MNQ BRN OUTMESS [AND ASSEMBLE THE MESSAGE BLOCK
3N8B #
3NN2 # IF THE ENTRANT DESCRIPTION IS TERMINATED WITH AN "*",
3P7L # THE RELEVANT DIRECTORY IS NOW SEARCHED FOR THE "HIGHEST
3PM= # VERSION" OF THE SPECIFIED FILE
3Q6W #
3QLG STAR
3R66 SETNCORE 12,7,ADATA,CREADL [CREATE AN OUTPUT BLOCK
3RKQ LDN 4 40
3S5B SMO 7
3SK2 STO 4 A1 [SET THE BLOCK SIZE TO 40 WORDS
3SSS ... MHUNT 3,FILE,FABSNB [FIND OUR FILE/FABSNB AGAIN
3T4L LDX 6 HDREC(3) [PICK UP FILE/FABSNB RECORD HEADER
3TJ= SBN 6 12 [RELATIVE PTR TO FINAL USER NAME
3TS4 ... BNG 6 NOTLIKELY [J IF TOP OF FILESTORE TREE REACHED
3W3W SMO 6
3WHG LDN 4 A1+1(3) [POINT TO USER NAME IN CORE BLOCK
3X36 SMO 7
3XGQ LDN 5 A1+2 [AND DESTINATION IN ADATA/CREADL
3Y2B MOVE 4 3 [MOVE USER NAME INTO ADATA/CREADL
3YG2 ADN 4 5 [POINT TO LOCAL NAME IN CORE BLOCK
3Y^L SMO FX2 [AND SAVE THE LOCAL NAME
3^F= LDN 5 AWORK2 [ (WITHOUT THE "*")
3^YW MOVE 4 3 [IN AWORK2, AWORK3 AND AWORK4
42DG ADN 6 6 [REMOVE FINAL LOCAL NAME FROM BLOCK
42Y6 STO 6 HDREC(3) [SO THAT IT REFERS TO THE DIRECTORY
439G ...ST11 USEROPEN ZBREAKIN,READ,DIRONLY,UNTRAP,TERMDIR,NOERREP [OPEN DIRECT
43GW ... TESTREP2 OK,ST12 [J IF THE OPEN WAS SUCCESSFUL
43S= ... JANAL OPENERR [J IF STILL PROCESSING COMMAND
445L ... REPALLER [REPORT THE COMMAND ERROR
44C2 BRN OPENERR [J IF USEROPEN DETECTED ERROR
44WL ST12 SETUPTAB [INITIALIZE TAB SYSTEM FOR CREEPING
456D ... TABSET [EXTEND FILE/FTAB BY 2 WORDS
45B= NGN 6 1
45TW STO 6 AWORK1(2) [INITIALIZE HIGHEST VERSION NUMBER
46*G STEP [TO POINT TO FIRST RECORD
46T6 ST13 TRACE ELOC1-A1(3),DIRENTRY
47#Q BZE 3 ST25 [J IF DIRECTORY EXHAUSTED
47SB LDN 6 0 [INITIALIZE VERSION NUMBER BED
48#2 LDN 7 12 [12 CHARACTER LOCAL NAME
48RL LDN 1 0 [INITIALISE CHARACTER POINTER TO
49?= ST14 SMO 3 [THE LOCAL NAME IN AWORK1 ONWARDS
49QW LDCH 4 ELOC1-A1(1) [PICK UP CHARACTER FROM ENTRANT NAME
4==G SMO FX2
4=Q6 LDCH 5 AWORK2(1) [AND FROM THE STORED LOCAL NAME
4?9Q TXU 4 5 [ARE THEY THE SAME?
4?PB BCS ST15 [J IF NOT TO CHECK FOR VERSION NUMBER
4*MW BCHX 1 £ [CHARACTERS ARE IDENTICAL SO FAR
4B7G BCT 7 ST14 [J IF MORE CHARACTERS TO COMPARE
4BC# ... SBN 4 #20 [IF LAST CHARACTER IS A SPACE
4BM6 ... BZE 4 ST21 [THE VERSION NUMBER IS "ZERO"
4BWY ... BRN ST27 [ELSE ALL 12 CHARACTERS ARE IDENTICAL
4C6Q ST15 SBN 5 #20 [END OF LOCAL NAME REACHED?
4CLB BZE 5 ST17 [J IF SO: CHECK FOR VERSION NUMBER
4D62 ST16 NEXTENT3 [GET THE NEXT DIRECTORY ENTRY
4DKL BRN ST13 [AND CARRY ON SEARCHING
4F5= ST17 SBN 4 10 [IS THE DIRECTORY CHARACTER NUMERIC?
4FJW BPZ 4 ST16 [J IF NOT : GET NEXT ENTRY
4G4G ADN 4 10
4GJ6 LDN 5 4 [COMPARE 4 VERSION CHARACTERS ONLY
4H3Q ... LDN 2 0 [INITIALISE CHARACTER POINTER TO X6
4HHB BRN ST19
4J32 ST18 SMO 3
4JGL LDCH 4 ELOC1-A1(1) [PICK UP NEXT VERSION CHARACTER
4K2= SBN 4 10
4KFW ... BPZ 4 ST21 [J IF END OF VERSION NUMBER REACHED
4K^G ADN 4 10
4LF6 ST19 DCH 4 6(2) [DEPOSIT THE CHARACTER IN X6
4LYQ ... BCT 7 ST20 [J IF MORE CHARACTERS IN NAME
4MDB ... BRN ST21 [END OF LOCAL NAME REACHED
4MY2 ...ST20 BCHX 2 £ [INCREMENT X6 CHARACTER POINTER
4PBW BCHX 1 £ [INCREMENT RECORD POINTER
4PWG ... BCT 5 ST18 [J IF < 4 VERSION CHARACTERS SCANNED
4QB6 ...ST21 LDX 2 FX2 [END OF VERSION NUMBER REACHED
4TRG LDX 1 GMINUS1 ["MINUS 1"
4W?6 TXU 1 AWORK1(2) [IS THIS FIRST ACCEPTABLE FILE FOUND?
4WQQ BCC ST24 [J IF SO: THIS VERSION HIGHEST SO FAR
4X=B TXL 6 AWORK1(2) [COMPARE VERSION NUMBER WITH HIGHEST
4XQ2 BCS ST16 [NOT HIGHEST SO FAR SO TRY NEXT ENTRY
4Y9L TXU 6 AWORK1(2)
4YP= BCC ST16 [EQUAL TO HIGHEST, BUT HIGHER
4^8W [GENERATION NUMBER TAKES PRECEDENCE
4^NG [AND THAT WILL APPEAR FIRST IN DIR
5286 ST24 STO 6 AWORK1(2) [STORE NEW HIGHEST VERSION NUMBER
52MQ TABRESET [RESET TAB TO POINT TO THIS ENTRY
537B BRN ST16 [READ NEXT ENTRY IN THE DIRECTORY
53M2 #
546L # THE END OF THE DIRECTORY HAS BEEN REACHED: IF THE REQUIRED
54L= # ENTRANT HAS BEEN FOUND, IT IS PICKED UP FROM THE TAB SYSTEM
555W #
55KG ST25
5656 LDX 4 AWORK1(2)
56JQ BPZ 4 ST26 [J IF REQUIRED ENTRY FOUND
574B CLOSETOP [THE REQUIRED ENTRANT DOESN'T EXIST
57J2 MFREE ADATA,CREADL [SO FREE THE ADATA/CREADL BLOCK
583L MFREE CPB,CMULTI [AND THE NEW CPB/CMULTI
58?D ... JANAL OPENERR [J IF STILL PROCESSING COMMAND
58H= ERROR JDNODIR [REPORT "DIRECTORY ENTRANT NOT FOUND"
592W BRN OPENERR [AND GIVE UP
59GG ST26 TABULATE [SET READING POINTER TO DIR ENTRY
5=26 STEPAGAIN [TO GET THAT POINTER IN X3
5=FQ ST27 SBN 3 A1
5=^B MHUNT 1,ADATA,CREADL [FIND THE ADATA/CREADL BLOCK
5?F2 LDN 4 ELOC1(3)
5?YL LDN 5 A1+5(1)
5#D= MOVE 4 3 [LOCAL NAME INTO BUFFER BLOCK
5#XW LDX 4 EGEN(3)
5*CG STO 4 A1+9(1) [GENERATION NUMBER
5*X6 LDX 4 ELAN(3)
5BBQ STO 4 A1+10(1) [LANGUAGE CODE
5BWB #
5CB2 # NOW THAT THE INFORMATION TO BE OUTPUT HAS BEEN SET
5CTL # UP IN AN ADATA/CREADL BLOCK A COMMON ROUTINE MAY
5D*= # BE USED TO ASSEMBLE THE MESSAGE
5DSW #
5F#G OUTMESS
5FS6 CLOSETOP
5G?Q MHUNT 3,ADATA,CREADL
5GRB LDN 4 A1+2(3) [USERNAME
5H?2 LDN 5 3 [LENGTH
5HQL LDN 6 JPDUSERNAME [PDC
5J== CALL 7 XOUTPACK [SET UP ELEMENT IN GMON/ASET
5JPW MHUNT 3,ADATA,CREADL
5K9G LDN 4 A1+5(3) [LOCAL NAME
5KP6 LDN 6 JPDLOCNAME [PDC
5L8Q CALL 7 XOUTPACK [SET UP LOCAL NAME ELEMENT
5LNB MHUNT 3,ADATA,CREADL
5M82 LDN 4 A1+9(3) [GENERATION
5MML LDN 5 1
5N7= LDN 6 JPDGENNUM [PDC
5NLW CALL 7 XOUTPACK [SET UP GEN NO ELEMENT
5P6G MHUNT 3,ADATA,CREADL
5PL6 LDN 4 A1+10(3) [LANGUAGE CODE
5Q5Q LDN 6 JPDLANGUAGE [PDC
5QKB CALL 7 XOUTPACK
5R52 LDX 1 FX1
5RJL ASSMESS XDIRENTSP(1) [ASSEMBLE MESSAGE IN GMON/AOUT BLOCK
5S4= MFREE ADATA,CREADL [FREE THE ADATA/CREADL BLOCK
5SHW SMO FX2
5T3G LDX 7 AWORK2 [WAS AN "*" SPECIFIED?
5TH6 BZE 7 UP [J IF NOT
5W2Q MFREE CPB,CMULTI [THE NEW CPB/CMULTI
5W=J ...UP
5WGB ... VFREE FILE,ADJUNCTS
5WQ8 ... UPPLUS 3 [SUCCESSFUL RETURN TO SETPARAM
5X22 #
5XFL # SUBROUTINE TO SET UP A MESSAGE ELEMENT IN A GMON/ASET BLOCK
5X^= #
5YDW XOUTPACK
5YYG SBX 7 FX1
5^D6 OUTPACKX 4,5,6
5^XQ ADX 7 FX1
62CB EXIT 7 0
62X2 #
6348 ...NOTLIKELY
639B ... MFREE ADATA,CREADL [FREE THE ADATA/CREADL BLOCK
63BL STERR
63LD ... VFREE FILE,ADJUNCTS
63W= UP [COMMAND ERROR: "EXPRESSION INVALID"
64*W #
64TG ZBREAKIN
65*6 UPPLUS 2 [BREAK IN DETECTED BY FS ROUTINES
65SQ #
664J ... SEGENTRY G400DIRD
66#B NOTUSER [REPORT COMMAND ERROR: "'DIRENT' NOT
66J8 ... JANAL OPENERR
66S2 ERROR JDWRONGUSER [ALLOWED IN NO-USER CONTEXT"
67?L BRN OPENERR [AND GIVE UP
67R= #
67WB ...MAGTAPE [REPORT "ENTIRELY THE WRONG TYPE"
67XY ... JANAL OPENERR
67^G ... ERROR ERVRYWRONG [IF A MAGNETIC TAPE WAS SPECIFIED
684L ... BRN OPENERR [AND GIVE UP
687Q ...#
68MB ...#UNS G400
6972 ...(
69LL ...#
6=6= ...# THIS CODE IMPLEMENTS THE HOOK VERSION
6=KW ...#
6?5G ... SEGENTRY G400DIRB
6?K6 ...XDSK1
6#4Q ... MHUNT 3,CPB,CUNI [PARAMETER BLOCK
6#JB ... LDX 0 ANUM(3)
6*42 ... BZE 0 STERR [ERROR,NULL PARAM
6*HL ... BNG 0 STERR [ERROR,NONEXISTENT PARAM
6B3= ... LDCH 0 APARA(3)
6BGW ... SBN 0 #21
6C2G ... BZE 0 XDSK2 [ERROR-WORKFILE
6CG6 ... BRUSEN XDSKF [JIF NO-USER CONTEXT
6C^Q ... BRN XDSK3 [J ROUND
6DFB ...XDSKF
6DK? ... TESTHKN NOTUSER [MUST BE HOOKED FOR NO USER CONTEXT
6DP8 ... SEGENTRY G400DIRC
6DT5 ... NULL [BRN NOTUSER IF IHSPNOUSER OFF
6D^2 ... STOZ CPREFIX(2)
6FDL ... STOZ CPREFIX+1(2) [CLEAR CPREFIX AREA
6FY= ... STOZ CPREFIX+2(2)
6GCW ...XDSK3
6GXG ... NAMETOP 3,FILE,FNAME
6HC6 ... FNORM [NORMALISE
6HWQ ... TESTREPN OK,OPENERR [J IF FORMAT ERROR
6JBB ... MHUNT 3,FILE,FNAME
6JW2 ... NAMETOP 3,CPB,CUNI
6K*L ... STOZ AWORK1(2) [CLEAR MARKER WD
6KT= ... STOZ AWORK2(2) [CLEAR FOR OUTMESS
6L#W ... MHUNT 3,FILE,FABSNB
6LSG ... LDX 0 ATYPE(3)
6M#6 ... ADN 0 2
6MRQ ... STO 0 ATYPE(3)
6N?B ... ANDN 0 #1000
6NR2 ... SLL 0 13 [MOVE TO B1=NO USER SPECIFIED
6P=L ... ORS 0 AWORK1(2) [SAVE LOCAL NAME ONLY BIT
6PQ= ... LDX 0 ALOGLEN(3)
6Q9W ... SBX 0 HDREC(3)
6QPG ... SBN 0 2
6R96 ... BNG 0 XDSK4B [J NO TSN
6RNQ ... SMO ALOGLEN(3)
6S8B ... LDX 0 A1-1(3)
6SN2 ... BPZ 0 XDSK16
6T7L ... JANAL OPENERR
6TM= ... ERROR ERXENOSER
6W6W ... BRN OPENERR
6WLG ...XDSK16
6X66 ... LDX 0 GSIGN
6XKQ ... ORS 0 AWORK1(2) [SAVE TSN SPEC'D BIT
6Y5B ... SMO ALOGLEN(3)
6YK2 ... LDX 0 A1-8(3)
6^4L ... BNZ 0 XDSK4
6^J= ... LDX 0 TWOBITS(1)
723W ... ORS 0 AWORK1(2)
72HG ... BRN XDSK4
7336 ...XDSK4B
73GQ ... LDX 0 A1+1(3)
742B ... BZE 0 STERR
74G2 ...XDSK4
74^L ... LDX 0 AWORK1(2)
75F= ... SLC 0 1
75YW ... BNG 0 XDSK5
76DG ... FINDNAME
76Y6 ... TESTREP OK,XDSK4A
77CQ ... JANAL OPENERR
77XB ... REPALLER
78C2 ... BRN OPENERR
78WL ...XDSK4A
79B= ... MHUNT 3,FILE,FABSNB
79TW ...XDSK5
7=*G ... BRUSEN XDSK6 [J IF NOUSER
7=T6 ... BRN XDSK7
7?#Q ...XDSK6
7?SB ... LDX 0 AWORK1(2)
7##2 ... BNG 0 XDSK7
7#RL ... SLC 0 1
7*?= ... BNG 0 STERR [FORMAT ERROR
7*QW ...XDSK7
7B=G ... LDX 0 AWORK1(2)
7BQ6 ... BPZ 0 XDSK8 [NOT MT WITH TSN
7C9Q ... SMO ALOGLEN(3)
7CPB ... LDX 4 A1-1(3) [LOAD TSN
7D92 ... OPENSYS ZBREAKIN,SERIAL,READ
7DNL ... SSEARCH XDSK9,4 [FIND RECORD IN SERIAL
7F8= ... LDX 6 5(3)
7FMW ... SLC 6 3
7G7G ... BNG 6 XDSK10 [ERROR = NAMED WORKE TAPE
7GM6 ... LDX 5 2(3) [FIRST WD OF USERNAME
7H6Q ... BZE 5 XDSK11 [POOL OR WORK TAPE
7HLB ... LDX 6 3(3) [REST OF ...
7J62 ... LDX 7 4(3) [USERNAME
7JKL ... MHUNT 3,FILE,FABSNB
7K5= ... LDX 0 AWORK1(2)
7KJW ... SLC 0 1
7L4G ... BNG 0 XDSK12 [USER NAME NOT GIVEN
7LJ6 ... LDX 0 HDREC(3)
7M3Q ... SBN 0 12
7MHB ... BPZ 0 XDSK15
7N32 ... LDN 0 0
7NGL ...XDSK15
7P2= ... ADX 3 0
7PFW ... TXU 5 A1+1(3) [COMPARE SERIAL AND SPECIFIED
7P^G ... TXU 6 A1+2(3) [USER NAMES
7QF6 ... TXU 7 A1+3(3)
7QYQ ... BCC XDSK8 [J IF NAMES AGREE
7RDB ... CLOSETOP
7RY2 ... JANAL OPENERR
7SCL ... ERROR ERDISAGREE [REPORT ERROR
7SX= ... BRN OPENERR
7TBW ...XDSK12
7TWG ... STO 5 HDREC+1(3) [REPLACE USER NAME
7WB6 ... STO 6 HDREC+2(3)
7WTQ ... STO 7 HDREC+3(3)
7X*B ...XDSK8
7XT2 ... BRUSEN XDSK8A [NO TRAP CHECKING IF NO USER CONTEXT
7^RG ... MHUNT 3,FILE,FABSNB
82?6 ... LDX 7 HDREC(3) [PICK UP THE BLOCK LENGTH
82QQ ... SBN 7 11 [IF IT'S LESS THAN 10 : TOP OF TREE
83=B ... BNG 7 XDTC4 [J IF TOP OF FILESTORE TREE REACHED
83Q2 ... NGN 4 6
849L ... ADS 4 HDREC(3) [REDUCE BLOCK LENGTH BY 6 WORDS
84P= ... LDX 4 ATYPE(3) [RESET ATYPE WORD SO THAT GETDIR
858W ... DSA 4 AWORK1(2) [DOSN'T GET CONFUSED THINKING
85NG ... ANDN 4 #5700 [IT SHOULD BE LOOKING FOR A
8686 ... DSA 4 ATYPE(3) [MAGNETIC TAPE
86MQ ... OPENDIR ZBREAKIN,READ,QUERY [OPEN CURRENT DIRECTORY'S DIRECTORY
877B ... TESTREP OK,XDTC2 [J IF DIRECTORY OPENED OK
87M2 ... JANAL OPENERR
886L ... REPALLER [REPORT THE COMMAND ERROR
88L= ... BRN OPENERR [AND GIVE UP
895W ...XDTC2
89KG ... TRAPOPEN READ [ARE READ TRAPS OPEN?
8=56 ... TESTREP OKAY,XDTC3 [J IF SO
8=JQ ... LDCT 4 #100 [REMEMBER THAT READ TRAPS TO THE
8?4B ... SMO FX2 [DIRECTORY ARE CLOSED AND WE MUST
8?J2 ... ORS 4 AWORK1 [CHECK TRAPS ON THE FILE ITSELF
8#3L ...XDTC3
8#H= ... CLOSETOP [CLOSE THE DIRECTORY
8*2W ... MHUNT 3,FILE,FABSNB [FIND THE FILE/FABSNB BLOCK
8*GG ... LDN 4 6 [INCREMENT RECORD HEADER BY 6 WORDS
8B26 ... ADS 4 HDREC(3) [BLOCK NOW REFERS TO THE ENTRANT
8BFQ ... LDX 4 AWORK1(2) [REINSTATE ORIGINAL ATYPE SETTING
8B^B ... DSA 4 ATYPE(3) [TO ALLOW FOR MAGNETIC TAPES
8CF2 ...XDTC4
8CYL ...XDSK8A
8DD= ... OPENDIR ZBREAKIN,READ,QUERY [ GET DIR ENTRY
8DXW ... TESTREPN OK,XDTC6
8FCG ...XDTC7
8FX6 ... BRUSEN XDSK14 [NO TRAP CHECKING IF NO USER CONTEXT
8GBQ ... LDX 4 AWORK1(2)
8GWB ... SLL 4 2
8HB2 ... BPZ 4 XDSK14 [J IF NO MORE TRAP CHECKING NEEDED
8HTL ... CHECKTRAPS
8J*= ... LDX 0 ACOMMUNE7(2)
8JSW ... BNZ 0 XDSK14
8K#G ... SETREP NOTRAP
8KC5 ... JANAL XDSK17A
8KFN ... BRN XDTC6A
8KJ? ...XDSK17A
8KLW ... CLOSETOP
8KPF ... BRN XDSK17
8KS6 ...XDTC6
8L?Q ... JANAL XDSK17
8LHJ ...XDTC6A
8LRB ... REPALLER [REPORT ERRORS
8M?2 ...XDSK17
8N== ... LDX 0 AWORK1(2)
8NPW ... BPZ 0 OPENERR
8P9G ... CLOSETOP
8PP6 ... BRN OPENERR
8Q8Q ...XDSK14
8QNB ... SETNCORE 13,4,ADATA,CREADL
8R82 ... MHUNT 3,FILE,FABSNB
8RML ... LDN 0 40
8S7= ... SMO 4
8SLW ... STO 0 A1 [CHAR CT FOR FILES
8T6G ... LDX 6 HDREC(3)
8TL6 ... SBN 6 12
8W5Q ... BPZ 6 XDSK13
8WKB ... LDN 6 0
8X52 ...XDSK13
8XJL ... SMO 6
8Y4= ... LDN 6 A1+1(3) [POINTER TO USER NAME
8YHW ... LDX 7 4
8^3G ... ADN 7 A1+2
8^H6 ... MOVE 6 3 [MOVE IN USER NAME
922Q ... ADN 7 3 [UPDATE POINTER
92GB ... MHUNT 3,FILE,ENT
9322 ... LDN 6 ELOC1(3)
93FL ... MOVE 6 5 [MOVE LOCAL NAME
93^= ... LDX 0 ELAN(3)
94DW ... SMO 7
94YG ... STO 0 5
95D6 ... LDX 0 ESER(3)
95XQ ... BZE 0 OUTMESS [ASSEMBLE O/P
96CB ... SMO 7
96X2 ... STO 0 6 [STORE TSN
97BL ... LDN 0 4
97W= ... SMO 4
98*W ... ADS 0 A1 [UPDATE COUNT
98TG ...OUTMESST
99*6 ... CLOSETOP [DIRECTORY
99SQ ... LDX 0 AWORK1(2)
9=#B ... BPZ 0 OUTMST1
9=S2 ...OUTMESSTA
9??L ... CLOSETOP [SERIAL
9?R= ...OUTMST1
9#=W ... MHUNT 3,ADATA,CREADL
9#QG ... LDN 4 A1+2(3) [USERNAME
9*=6 ... LDN 5 3 [LENGTH
9*PQ ... LDN 6 JPDUSERNAME [PDC
9B9B ... CALL 7 XOUTPACK [SET UP ELEMENT IN GMON/ASET
9BP2 ... MHUNT 3,ADATA,CREADL
9C8L ... LDN 4 A1+5(3) [LOCAL NAME
9CN= ... LDN 6 JPDLOCNAME [PDC
9D7W ... CALL 7 XOUTPACK [SET UP LOCAL NAME ELEMENT
9DMG ... MHUNT 3,ADATA,CREADL
9F76 ... LDN 4 A1+9(3) [GENERATION
9FLQ ... LDN 5 1
9G6B ... LDN 6 JPDGENNUM [PDC
9GL2 ... CALL 7 XOUTPACK [SET UP GEN NO ELEMENT
9H5L ... MHUNT 3,ADATA,CREADL
9HK= ... LDN 4 A1+8(3) [REEL
9J4W ... LDN 5 1
9JJG ... LDN 6 JPDREELNUM [PDC NAME
9K46 ... CALL 7 XOUTPACK
9KHQ ... MHUNT 3,ADATA,CREADL
9L3B ... LDN 4 A1+11(3)
9LH2 ... LDN 5 2
9M2L ... LDN 6 JPDTSN
9MG= ... CALL 7 XOUTPACK
9M^W ... LDX 1 FX1
9NFG ... ASSMESS XDIRENTMSP(1)
9N^6 ... MFREE ADATA,CREADL
9PDQ ... BRN UP
9PYB ...#
9QD2 ...# VARIOUS SPECIAL CASES
9QXL ...XDSK9
9RC= ... CLOSETOP [SERIAL
9RWW ... JANAL OPENERR
9SBG ... ERROR ERUNKNOWN
9SW6 ... BRN OPENERR [EXIT
9T*Q ...XDSK10
9TTB ... CLOSETOP [NAMED WORKTAPE
9W*2 ... BRN XDSK2
9WSL ...XDSK11
9X#= ... CLOSETOP [POOL OR WORK TAPE
9XRW ... SETNCORE 13,7,ADATA,CREADL
9Y?G ... LDN 0 44
9YR6 ... SMO 7
9^=Q ... STO 0 A1
9^QB ... SRC 6 2
=2=2 ... BNG 6 WORK [WORK TAPE
=2PL ... LDN 6 XPOOL(1)
=39= ...XDSK11A
=3NW ... ADN 7 A1+2 [POINTER
=48G ... MOVE 6 3
=4N6 ... ADN 7 3
=57Q ... LDN 6 XPWLOC(1) [PSEUDO=LOCAL NAME
=5MB ... MOVE 6 6
=672 ... SMO 7
=6LL ... STO 4 6 [TSN
=76= ... BRN OUTMST1
=7KW ...WORK
=85G ... LDN 6 XWORK(1)
=8K6 ... BRN XDSK11A
=94Q ...)
=9JB ...#END
^^^^ ...205006630005