OPENWORK866

(George Source)

Macros used: ACROSS, BXGE, BXU, DOWN, FCAJO, FINDWFN, FINDWN, FREEBAX, GEOERR, GETDIRWORK, HUNT, JBS, JOBLOCK, LONGOFF, LONGON, LONGSET, LONGSTOP, MENDAREA, MFREE, MFREEW, MHUNT, OCTCON, OPENTEST, OPENWORK, READ, SEGENTRY, SETMODE, SETNCORE, SETREP, SETREP2, SETUPCORE, SUBCUBS, THAWWF, TOPFCA, TOPFCB, TRACE, UNOPCH, UP, UPPLUS, USERCRWF, VFREE

OPENWORK866.txt
22FL ...#SEG  OPENWORK                     [ROB RUSHTON 
22^=    #OPT  K0OPENWORK=0  
23DW    #LIS  K0OPENWORK>K0WORK>K0FILESTORE>K0ALLGEO
23YG    #OPT  K6OPENWORK=K6WORK>K6FILESTORE>K6ALLGEO
24D6          8HOPENWORK
24XQ          SEGENTRY K1OPENWORK,OPENWORK  
25CB          SEGENTRY K2OPENWORK,OPENWORK2 
25X2          SEGENTRY K3OPENWORK,ZGETDIRWORK   
26BL          SEGENTRY K13OPENWORK,ZGETDIRWORA  
26W=          SEGENTRY K4OPENWORK,THAWWF
27*W          SEGENTRY K5OPENWORK,OPENTEST  
27TG          SEGENTRY K8OPENWORK,USERCRWF  
28*6    [   
28SQ    [THIS SEGMENT CONTAINS THE CODING FOR SOME SUPER FAST WORKFILE MACROS,  
29#B    [AS FOLLOWS:-   
29S2    [     K1    -  OPENWORK 
2=?L    [     K3    -  GETDIRWORK (%A ABSENT)   
2=R=    [     K13   -  GETDIRWORK (%A PRESENT)  
2?=W    [     K4    -  THAWWF   
2?QG    [     K5    -  OPENTEST 
2#=6    [     K7    -  FREEZEWF 
2#PQ    [     K8    -  USERCRWF 
2*9B    [   
2*F8 ...XWORK          4HWORK   
2*P2    XMODES         +ADIROPEN+ALEAVE 
2B8L    TCLUDGE        +ACLUDGE 
2BN=    MCL            +AUSERCLEAN  
2C7W    SERAZADD       #40000              [BIT 9 FOR ERASE ADDITIVE MODE   
2CMG    XFCB  SETMODE  0,THAW              [S/R TO LOCATE FCB IN ALL CASES  
2D76          LDX   2  FX2  
2DLQ          ANDX  0  7                   [J TO LOOK FOR FILE IN CURRENT   
2F6B          BNZ   0  YETH                [IF MODE NOT THAW OR 
2FL2          LDCH  0  ATYPE(2)            [ACT NOT ACTLF WORKFILE MUST 
2G5L          SBN   0  ACTLF/64            [BE IN CURRENT ACT'S WFRING  
2GK=          BNZ   0  NOTH 
2H4W    YETH
2HJG          LDX   5  AWORK1(2)           [IF JOBNO IS ALREADY CALCULATED PICK 
2J46          BNZ   5  NXCP                [IT UP FROM AWORK1, OTHERWISE CALCULA
2JHQ    XJC 
2K3B          MHUNT    1,FILE,FABSNB
2KH2          OCTCON   A1+5(1)             [CONVERT JOBNO IN NAME TO BINARY 
2L2L          SMO      FX2  
2LG=          STO   5  AWORK1              [PRESERVE JOBNO FOR FUTURE USE   
2L^W    NXCP
2MFG          JOBLOCK  5,2                 [LOCATE JOB BLOCK &  
2M^6          BNG   2  NOFF                [J IF NO O JOBLOCK   
2NDQ          FCAJO    2,,N 
2NYB          LDCH  0  ATYPE(2) 
2PD2          SBN   0  CPAT/64  
2PXL          BNZ   0  NOFF                [J IF NO CPAT
2QC=          LDN   5  BWORKRING(2) 
2QWW    XFN 
2RBG          FINDWN   5,3,1               [LOCATE FCB ALLOWING TO-BE-ERASED
2RW6          TESTREPN OK,NOCP  
2S*Q          LDX   0  7           [J IF NOT OPEN ENTRY 
2STB          ANDN  0  #7000
2T*2          BZE   0  XIT  
2TSL          LDX   0  BACK1(3)            [PICK UP THE BACKING STORE HOME OF   
2W#=          STO   0  AWORK2(2)           [FCB & STORE IN CASE FCB IS REMOVED  
2WRW          LDX   0  BACK2(3)            [TO FILE CHAIN DURING THE OPENWORK   
2X?G          STO   0  AWORK3(2)
2XR6    XIT   EXIT  6  0                   [EXIT IF FCB FOUND   
2Y=Q    NFCB  GEOERR   1,NOWFFCB           [ERROR IF FROZEN FILE MISSING
2YQB    NJO   GEOERR   1,NOJOBNO
2^=2    NOTH
2^PL          SMO      FX2  
329=          LDN   5  BWORKRING
32NW          SETMODE  0,ERASING           [IF ERASING MODE IS SET ALLOW FOR
338G          ANDX  0  7                   [TO-BE-ERASED FCBS.  
33N6          BNZ   0  XFN  
347Q          FINDWN   5,3  
34MB          TESTREPN OK,NOFF  
3572          EXIT  6  0
35LL    NOCP
366=    NOFF
36KW          LDX   2  FX2  
375G          SETREP2  NOFILE   
37K6          LDX   0  7
384Q          ANDN  0  #7000
38JB          BZE   0  UP                  [J TO GO UP IF NO MAIN MIDE(I.E.GDEW)
3942          LDEX  0  CLONG1(2)           [IF LONG-EVENT FIELD SET, IT MUST
39HL          BZE   0  NLS                 [BE UNSET BEFORE ABANDINING THE  
3=3=          LONGOFF                      [OPENWORK TO DO AN OPENREL   
3=GW    NLS 
3?2G          UPPLUS   1
3?G6    UP  
3?^Q          SBN   7  1                   [IF GETDIRWORK ENTRY THE ENT SHOULD  
3#FB          BZE   7  UPP                 [BE FREED
3#^2          MFREEW   FILE,ENT 
3*DL    UPP 
3*Y=          UP
3*^S ...#   
3B3B ...#     THIS SUBROUTINE REDUCES A JOB'S ONLINE BS COUNT FOR A ! FILE. 
3B4Y ...#     ON ENTRY, X0= SIZE OF DECREMEMT IN BLOCKS.   X6 IS LINK.  
3B6G ...#     ON EXIT, X1=FX1, X2=FX2.   USES X0.  NO COORDINATION. 
3B84 ...#   
3B9L ...SUBCUBS 
3B?8 ...      SUBCUBS  NOTOPEN,0,JOB
3B#Q ...      EXIT  6  0
3BB# ...#   
3BCW    [THIS ROUTINE TESTS WHETHER THE FCB INDICATED BY X2 CAN BE OPENED   
3BXG    TRYREEL 
3CC6          LDN   0  AEMPTY              [IF IT IS EMPTY MODE,
3CWQ          ANDX  0  7
3DBB          BZE   0  ORDINARY 
3DW2          LDX   4  FWAITCOUNT(2)       [WE MUST MAKE SURE THAT  
3F*L          ORX   4  CTOPEN(2)           [THE FILE IS UTTERLY UNUSED. 
3FT=          SLC   4  1
3G#W          SLL   4  1                   [COMMUNE BIT DOESN'T MATTER. 
3GSG          ORX   4  FREEZECOUNT(2)      [NO GOOD IF FROZEN   
3H#6          BZE   4  OK   
3HRQ          SETMODE  0,REPLY             [TEST MODE WORD FOR REPLY BIT
3J?B          ANDX  0  7
3JR2          BNZ   0  SAYCANT             [IF THERE DONT WAIT  
3K=L          LDN   5  0                   [SET FCB B.S. HOME PAIR (I.E. ZERO & 
3KQ=          LDX   6  BACK2(2)            [UNIQUW N0.) FOR LONGSTOP
3L9W          LONGSET  6,XSET,6 
3LPG          LDN   0  #400 
3M96          ORS   0  COMM(3)             [SET WAITING TO EMPTY BIT IN FCB 
3MNQ          DOWN     OPENWAIT,3          [GO DOWN TO OPENWAIT FOR CLUDGETEST  
3N8B          BRN      NOCL                [J IF NO CLUDGE  
3NN2          NGN   4  1
3P7L          CALL  6  XFCB                [RELOCATE FCB
3PM=          LDN   0  #400 
3Q6W          ERS   0  COMM(3)             [UNSET WAITING TO EMPTY BIT IN FCB   
3QLG          BRN      SAYCANT  
3R66    NOCL
3RDH ...#UNS  EWAITFILE 
3RQY ...      LDX   6  XWORK(1)        [WORKFILE SWITCH FOR WHATSTATE   
3S5B          LONGSTOP XBRK2,,FWFREE
3TJ=          CALL  6  XFCB                [WAIT
3W3W          LDN   0  #400 
3WHG          ERS   0  COMM(3)             [UNSET WAITING TO EMPTY BIT IN FCB   
3X36          BRN      ONEREEL  
3XGQ    XBRK                               [BREAKIN DURING OPENWAIT OR LONGSTOP 
3Y2B          CALL  6  XFCB                [RELOCATE FCB
3YG2          LDN   0  1
3Y^L          SBS   0  FWAITCOUNT(3)       [BROKEN IN SO NO LONGER WAITING  
3^F=          BRN      NLFT 
3^YW    XBRK2   
42DG          CALL  6  XFCB                [RELOCATE FCB
42Y6          LDN   0  #400 
43CQ          ERS   0  COMM(3)             [UNSET WAITING TO EMPTY BIT IN FCB   
43XB          LONGON   6,5                 [WAKE UP OTHER WAITERS   
44C2    NLFT  HUNT     1,BSTB,FULLB        [SEE IF THERE IS A BSTB/FULLB LYING A
44WL          BNG   1  NBSTB               [J IF NOT
45B=          FREEBAX                      [FREE IT AND ITS BLOCKS IF THERE IS  
45TW          MFREE    BSTB,EMPTYB  
46*G    NBSTB   
46T6          UP
47#Q    OPDIR GEOERR   1,DIREMPTY          [OPENREL EMPTY ON A DIRECT-ORY   
47SB    [NO ONE CAN BE USING THE FILE IN ANY SENSE IN THE MULTI-REEL/EMPTY CASE.
48#2    [WE MIGHT AS WELL DO THE SAME FOR ONE REEL. 
48RL    ORDINARY
49?=          LDX   4  CTOPEN(2)           [PICK UP OPEN MODE:  
49QW    #SKI  K6OPENWORK>599-599
4==G          TRACE    4,WKCTOPEN   
4=Q6    [FORMAT IS; L.S. 12 BITS,COUNT OF READ OPENERS. NEXT L.S. 9 BITS,COUNT  
4?9Q    [OF APPEND OPENERS. B0=SOLE OPENER BIT   B1=COMMUNAL BIT.   
4?PB          LDX   0  FREEZECOUNT(2)   
4#92          BZE   0  NOFRZ               [OK IF NOT FROZEN
4#NL          LDN   0  #7000
4*8=          ANDX  0  7                   [TEST MODE WORD FOR READ 
4*MW          SBN   0  #3000
4B7G          BPZ   0  WAIT                [WAIT IF IT ISNT 
4BM6    NOFRZ   
4C6Q          BZE   4  OK                  [CARRY ON IF FCB OPEN
4CLB          LDN   0  #7000
4D62          ANDX  0  7                   [ISOLATE MAIN PART OF MODE   
4DKL          SBN   0  #3000               [TEST FOR READ   
4F5=          BPZ   0  S31                 [SKIP IF NOT READ
4FJW          LDX   0  4
4G4G          SRL   0  12                  [ISOLATE APPEND COUNT & SOLE BIT 
4GJ6          ANDN  0  #5777               [RID OF COMMUNE BIT. 
4H3Q          BNZ   0  TBC                 [TRY FOR COMMUNE MODE & FILE 
4HHB          BRN      OK   
4J32    S31 
4JGL          LDEX  0  FREEZECOUNT(2)   
4K2=          BNZ   0  WAIT                [MUST NOT IF FROZEN  
4KFW    TBC 
4K^G          LDX   4  FCOMMCT(2)   
4LF6          ANDN  4  #7777               [CT OF CLEAN OPENERS 
4LYQ          BZE   4  RCOMM               [J IF NONE   
4MDB          SMO      FX1  
4MY2          LDX   0  MCL  
4NCL          ANDX  0  7
4NX=          BZE   0  WAIT                [J IF NOT CLEAN  
4PBW          LDX   0  CTOPEN(2)
4PWG          BPZ   0  RDCT                [J IF NO WRITER  
4QB6          LDX   0  7
4QTQ          ANDN  0  #7000               [MAIN MODE   
4R*B          SBN   0  #3000
4RT2    #SKI  K6OPENWORK>599-599
4S#L          TRACE    0,WORKMODE   
4SS=          BPZ   0  WAIT                [J IF NOT READER 
4T?W    OK    EXIT  6  0
4TRG    RCOMM   
4W?6          LDX   4  FCOMMCT(2)   
4WQQ    #SKI  K6OPENWORK>599-599
4X=B          TRACE    4,WORKCOMM   
4XQ2          BZE   4  WAIT                [WAIT IF NO COMMUNERS
4Y9L          LDN   0  ACOMMUNE 
4YP=          ANDX  0  7
4^8W    #SKI  K6OPENWORK>599-599
4^NG          TRACE    0,COMMODE
5286          BZE   0  WAIT                [J IF NOT COMMUNE MODE   
52MQ          LDX   0  CTOPEN(2)
537B          SRL   0  12   
53M2          ANDN  0  #1777               [EXTRACT APPEND CT   
546L    #SKI  K6OPENWORK>599-599
54L=          TRACE    0,WORKAPP
555W          BNZ   0  OK                  [J IF APPENDERS  
55KG          SRL   4  12                  [CT OF COMMUNES  
5656    RDCT
56JQ          LDX   0  CTOPEN(2)
574B          ANDN  0  #7777               [CT OF READERS   
57J2          ERX   4  0
583L    #SKI  K6OPENWORK>599-599
58H=          TRACE    4,WORKRDCM   
592W          BZE   4  OK                  [J IF EQUAL  
59GG          BRN      WAIT 
5=26    [   
5=FQ    [THIS IS THE ENTRY FROM THE OPENWORK MACRO. THIS OPENS A WORKFILE   
5=^B    OPENWORK
5?F2          STOZ     AWORK1(2)           [ZEROIZE JOBNO MARKER
5?YL          LDX   7  EXEC1(2)            [MODE WORD IN X7 
5#D=    #SKI  K6OPENWORK
5#XW          TRACE    7,OPENWORK   
5*CG          CALL  6  XFCB                [LOCATE FCB  
5*X6          SMO      FX1  
5BBQ          ORX   7  XMODES              [ADD DIROPEN AND LEAVE MODES 
5BWB          BRN      ONEREEL  
5CB2    WAIT
5CTL          LDN   4  0
5D*=          SETMODE  0,REPLY  
5DSW          ANDX  0  7                   [TEST THE REPLY BIT IN THE MODE WORD:
5F#G          BZE   0  OOR3                [IF NOT THERE WAIT:  
5FS6    SAYCANT 
5G?Q          BNG   4  SCLD                [J IF CLUDGE 
5GRB          SETREP   CANT 
5H?2          BRN      REPG                [REPLY SET   
5HQL    SCLD  SETREP   CLUDGE   
5J==          TOPFCB   2                   [X2 -> FCB OF FILE OPEN AT TOP LEVEL 
5JPW          LDX   6  BACK2(3) 
5K9G          BXU   6  BACK2(2),REPG       [TEST FOR CLUDGE AT TOP LEVEL
5KP6          SMO      FX1  
5L8Q          LDX   0  TCLUDGE             [IF IT IS, SET BIT FOR COPY  
5LNB          TOPFCA   2
5M82          ORS   0  FGENERAL1(2)        [MARK1 ONLY **** 
5MML    REPG  UPPLUS   1
5N7=    XSET  GEOERR   1,OPENWORK   
5NLW    OOR3
5P6G          LDN   0  1
5PL6          ADS   0  FWAITCOUNT(3)       [ADD ONE TO THE COUNT OF WAITERS 
5Q5Q          LDN   5  0                   [SET UP B.S. HOME PAIR FOR FCB (I.E. 
5QKB          LDX   6  BACK2(3)            [ZERO & UNIQUE NO.) FOR LONGSTOP 
5R52          LONGSET  6,XSET,6            [SET WAITING STYLE   
5RJL          DOWN     OPENWAIT,3          [TEST FOR CLUDGE 
5S4=          BRN      NCLD                [NO CLUDGE IF COMES STRAIGHT UP  
5SHW          NGN   4  1                   [SET CLUDGE MARKER   
5T3G          CALL  6  XFCB                [RELOCATE FCB
5TH6          LDN   0  1
5W2Q          SBS   0  FWAITCOUNT(3)       [NO LONGER GOING TO WAIT 
5WGB          BRN      SAYCANT             [REMOVE UNCLEAN BIT AND CLEAR UP 
5X22    NCLD
5XFL          CALL  6  XFCB                [RELOCATE FCB
5X^=          LDX   0  7
5YDW          ADN   0  #1000               [TEST FOR AN UNCLEAN MODE
5YYG          ANDN  0  #4000
5^D6          BZE   0  TSTRP               [J IF IT ISNT
5^XQ          LDCT  0  2
62CB          ORS   0  COMM(3)             [OTHERWISE PUT BIT INTO FCB  
62X2    TSTRP   
63BL    #SKI  K6OPENWORK>599-599
63W=          TRACE    6,WORKSTOP   
648M ...#UNS  EWAITFILE 
64H4 ...      LDX   6  XWORK(1)        [WORKFILE SWITCH FOR WHATSTATE   
64TG          LONGSTOP XBRK,,FWFREE 
66#B    OPENWORK2   
66S2          CALL  6  XFCB                [LOCATE FCB  
67?L    SFCBA   
67R=          LDN   0  1                   [REMOVE THIS ACTIVITY FROM THE   
68=W          SBS   0  FWAITCOUNT(3)       [COUNT OF WAITERS.   
68QG    ONEREEL 
69=6          LDX   2  3                   [X2 -> REEL TO BE OPENED:
69PQ          CALL  6  TRYREEL  
6=9B    [   
6=P2    [N.B.THE ERASING MODE WILL NEVER BE SET IN OPENWORK SINCE THIS CASE IS  
6?8L    [DEALT WITH BY ERASEWORK MACRO  
6?N=    [   
6#7W          SETMODE  0,EMPTY             [IF EMPTY MODE IS SET THE POINTER
6#MG          ANDX  0  7                   [WITHIN FCB (FBLMOD) SHOULD BE SET   
6*76          BZE   0  NEMP                [TO INDICATE FILE HAS BEEN EMPTIED   
6*BY ...      LDX   0  FBLMOD(2)
6*LQ ...      SBN   0  FBLKS-A1            [X0= NO. OF BLOCKS TO FREE   
6*WJ ...      LDN   1  FBLKS-A1 
6B6B ...      STO   1  FBLMOD(2)
6BB8 ...      CALL  6  SUBCUBS             [DO SUBCUBS TO REDUCE JOB'S ONLINE BS
6BL2    NEMP
6C5L          LDX   1  7
6CK=          SMO      FX1  
6D4W          ANDX  1  MCL  
6DJG          BZE   1  NOBL1               [J IF NOT CLEAN  
6F46          LDN   0  1
6FHQ          BRN      NOBL2
6G3B    NOBL1   
6GH2          LDX   1  7
6H2L          ANDN  1  ACOMMUNE 
6HG=          BZE   1  PLUS                [J IF NOT COMMUNE
6H^W          LDCT  0  #200                [SET COMMUNE BRT 
6JFG          ORS   0  CTOPEN(3)
6J^6          LDN   0  #4000
6KDQ          SLL   0  1
6KYB    NOBL2   
6LD2          ADS   0  FCOMMCT(3)   
6LXL    PLUS
6MC=          LDX   4  7
6MWW          ANDN  4  #7777               [ISOLATE BOTTOM HALF OF MODE WORD
6NBG                                       [X3 -> FCB , MODE IN X7  
6NW6          LDN   0  #2777
6P*Q          BXGE  0  4,READ              [MAIN MODE 1 OR 2 FOR A READER   
6PTB          LDN   0  #7000
6Q*2          BXGE  4  0,SOLE              [CLEAN IS SOLE BUT NOT UMCLEAN BIT   
6QSL          LDCT  1  #2                  [BEING WRITTEN BIT GOES  
6R#=          ORS   1  COMM(3)             [INTO FCB.   
6RRW          LDN   0  #3777
6S?G          BXGE  0  4,RAPP              [3 FOR AN APPENDER   
6SR6    SOLE  LDCT  0  #400                [SOLE OPENER, JUST ONE BIT TO STORE  
6T=Q          ORS   0  CTOPEN(3)
6TQB          BRN      OPENFCBED
6W=2    READ  LDN   0  1
6WPL          ADS   0  CTOPEN(3)           [INCREASE COUNT OF READERS.  
6X9=          BRN      OPENFCBED                    [[CHECK IT IS SMALL?
6XNW    RAPP  LDN   0  #4000
6Y8G          ADX   0  0
6YN6          ADS   0  CTOPEN(3)           [INCREASE COUNT OF APPENDERS. <1024  
6^7Q    OPENFCBED   
6^MB          SMO      FX1  
7272          LDX   0  SERAZADD 
72LL          ANDX  0  7
736=          BZE   0  NERAD               [J IF NO ERASE ADDITIVE MODE 
73KW ...      LDN   0  4
745G          ORS   0  COMM(3)             [SET BEING ERASED BIT IN COMM
74K6    NERAD   
754Q          SETMODE  0,THAW   
75JB          ANDX  0  7                   [IF THAW MODE IS SET SUBTRACT 1 FROM 
7642          BZE   0  ORE                 [FREEZECOUNT OF FCB  
76HL          LDN   0  1
773=          SBS   0  FREEZECOUNT(3)   
77GW    ORE 
782G          ACROSS   ORELEND,2
78G6    [   
78^Q    [THIS IS THE ENTRY FROM GETDIRWORK MACRO. ITS PURPOSE IS TO SET UP A
79FB    [FILE/ENT BLOCK FOR A WORKFILE,RESEMBLING A USUAL DIRENT AS FAR AS IS   
79^2    [POSSIBLE.  
7=DL    ZGETDIRWORK 
7=Y=          LDN   7  0                   [ZEROISE X7 TO INDICATE GDEWORK ENTRY
7?CW    XSC 
7?XG          SETNCORE FRDE,1,FILE,ENT  
7#C6          LDCH  0  ATYPE(2)            [FI ACT AN ACTLF WORKFILE WILL NOT BE
7#WQ          SBN   0  ACTLF/64            [IN CURRENT ACT'S WFRING 
7*BB          BNZ   0  NLF  
7*W2          CALL  6  XJC                 [LOCATE CPAT & THEN FCB  
7B*L          BRN      XLF  
7BT=    NLF   CALL  6  NOTH                [LOCATE CPAT IN THIS ACT'S WORKFILERI
7C#W    XLF 
7CSG          LDX   2  3
7D#6          HUNT     3,FILE,FABSNB
7DRQ          HUNT     1,FILE,ENT   
7F?B          STOZ     A1(1)               [ZEROIZE ENT BLOCK   
7FR2          LDN   5  A1(1)
7G=L          LDN   6  A1+1(1)  
7GQ=          MOVE  5  FRDE-1   
7H9W          LDN   5  FRDE                [SET ENT HEADER  
7HPG          STO   5  A1(1)
7J96          LDN   5  FLOC1(2)            [MOVE LOCAL NAME TO DIRENT   
7JNQ          LDN   6  ELOC1(1) 
7K8B          MOVE  5  5
7KN2          LDCT  4  #20  
7L7L          ANDX  4  FCOMM(2) 
7LM=          LDX   3  0(2) 
7M6W    XEF   LDX   0  ATYPE(3) 
7MLG          SRL   0  12   
7N66          SBN   0  FILE+FEXTRA         [TEST IF NEXT BLOCK IS FEXTRA
7NKQ          BZE   0  XFE  
7P5B          LDX   0  ATYPE(3)            [IF NOT FEXTRA TEST IF NEXT FCB HAS  
7PK2          SBX   0  FILEPLUSFCB         [BEEN REACHED. ERROR IF IT HAS   
7Q4L          BZE   0  XGE  
7QJ=          LDX   3  0(3)                [PICK PTR TO NEXT BLOCK  
7R3W          BRN      XEF  
7RHG    XGE   GEOERR   1,NOFEXTRA   
7S36    XFE 
7SGQ          LDX   5  FWRITDAY(3)         [TAKE DATE & TIME FILE LAST WRITTEN  
7T2B          STO   5  EWRITDAY(1)         [TO FROM FEXTRA & PUT IN ENT BLOCK.  
7TG2          LDX   5  FWRITTIME(3) 
7T^L          STO   5  EWRITTIME(1) 
7WF=          LDX   5  FTM(3)   
7WYW          STO   5  ETM(1)   
7XDG          BNZ   4  SER                  [J II SERIAL
7XY6          LDX   0  FENDBUCK(2)  
7YCQ          STO   0  EENDBUCK(1)  
7YXB          LDN   0  #20                 [IF MT SET MT BIT & UPDATE AS SERIAL 
7^C2          ANDX  0  FCOMM(2)            [FILE FROM HERE,OTHERWISE FILE IS
7^WL          BZE   0  XMT                 [RANDOM. 
82B=          LDCT  0  4
82TW          ORS   0  EINF1(1) 
83*G          BRN      YMT  
83T6    XMT 
84#Q          LDX   0  FVERSION(2)         [UPDATE D.A. INFORMATION 
84SB          STO   0  EVERSION(1)  
85#2          LDX   4  FSIZE(2)            [SET SIZE IN EINF3 & ECOPS AS FOUND  
85RL          STO   4  EINF3(1)            [IN FSIZE
86?=          SRC   4  9
86QW          ADN   4  1
87=G          STO   4  ECOPS(1) 
87Q6          LDN   5  FFLOW(3) 
889Q          LDN   6  EFLOW(1) 
88PB          MOVE  5  3
8992          BRN      SOR  
89NL    SER 
8=8=          LDCT  0  #400                [SET SERIAL FILE BIT 
8=MW          ORS   0  EINF1(1) 
8?7G    YMT 
8?M6          LDN   0  FILESIZE            [SET MAX SIZE IN ENT AS DEFINED BY   
8#6Q          STO   0  EINF3(1)            [FILESIZE
8#LB          LDX   0  FBLMOD(2)           [SET SIZE IN ECOPS AS CALCULATED 
8*62          SBN   0  FBLKS-A1            [FROM FBLMOD 
8*KL          SRC   0  9
8B5=          ADN   0  1                   [SET FILE ONLINE BIT 
8BJW          STO   0  ECOPS(1) 
8C4G    SOR 
8CJ6          LDN   0  #1000               [IF THE 'WRITE ACCESS ALLOWED BY 
8D3Q          ANDX  0  FCOMM(2)            [PROPER USER' BIT IS SET IN THE  
8DHB          BZE   0  NWA                 [FCB, SET IT IN THE DIRENT ALSO  
8F32          LDN   0  #20  
8FGL          ORS   0  EINF2(1) 
8G2=    NWA 
8HF6          LDCT  0  #200                [SET LAST REEL BIT   
8HYQ          ORS   0  EINF1(1) 
8JDB          LDCT  0  #40  
8JY2          ANDX  0  FCOMM(2) 
8KCL          BZE   0  NLNK                [J IF NOT LINK DEF FILE  
8KX=          LDCT  0  #100                [SET LINK DEF BIT IN ENT 
8LBW          ORS   0  EINF1(1) 
8LWG    NLNK  LDN   0  1
8MB6          ANDX  0  FCOMM(2) 
8MTQ          BZE   0  NER                 [J IF NOT TO BE ERASED   
8N*B          LDCT  0  #40                 [SET TO- BE-ERASED BIT   
8NT2    NER 
8P#L          ADN   0  #40                 [SET WORKFILE MARKER 
8PS=          ORS   0  EINF2(1)            [SET TEMP FILE BIT   
8Q?W          LDCT  0  2
8QRG          ANDX  0  COMM(2)             [TRANSFER UNCLEAN WRITING BIT TO 
8R?6          ORS   0  EINF1(1)            [ENT IF IN FCB   
8RQQ          LDX   0  FREEZECOUNT(2)      [PUT FREEZECOUNT IN ENT  
8S=B          STO   0  EAUTOCOUNT(1)
8SQ2          LDX   0  FLAN(2)             [SET LANG
8T9L          STO   0  ELAN(1)  
8TP=    #SKI  K6OPENWORK>599-599
8W8W          TRACE 2,FCBLEVEL  
8WNG          SETREP   OK   
8X86          UP
8XMQ    [   
8Y7B    [THIS IS THE ENTRY FROM THE GETDIRWORK MACRO, ITS PURPOSE IS TO SET 
8YM2    [UP A FILE/ENT BLOCK FOR A WORKFILE EVEN IF IF IT IS TO-BE-ERSED,   
8^6L    [RESEMBLING A USUAL DIRENT AS FAR AS IS POSSIBLE
8^L=    ZGETDIRWORA 
925W          SETMODE  7,ERASING
92KG          BRN   XSC 
9356    [   
93JQ    [THIS IS THE ENTRY FROM THE THAWWF MACRO. ITS PURPOSE IS TO THAW A  
944B    [WORKFILE WITHOUT OPENING IT.   
94J2    THAWWF  
953L          LDN   7  1                   [SET NOT-OPENWORK MARKER 
95H=          CALL  6  XJC                 [LOCATE FCB FOR WORKFILE 
962W          LDX   0  FREEZECOUNT(3)   
96GG          SBN   0  1                   [DECREMENT FREEZECOUNT BY 1  
9726          BNG   0  NFRZ                [CHECK THAT IT DOES NOT GO -VE   
97FQ          STO   0  FREEZECOUNT(3)   
97^B          LDX   6  BACK2(3) 
98F2          LONGON   6,6                 [FREE ANY WAITERS
98YL          UPPLUS   1
99D=    NFRZ  GEOERR   1,NOFROST
99XW    [   
9=CG    [THIS IS THE ENTRY FOM THE OPENTEST MACRO. IT IS USED BY LISTFILE TO
9=X6    [LOCATE THE FCB FOR A WORKFILE AND TEST IF ANYONE HAS IT OPEN IN
9?BQ    [AN UNCLEAN MODE
9?WB    OPENTEST
9#B2          LDN   7  1                   [SET NOT-OPENWORK MARKER 
9#TL          CALL  6  XJC                 [LOCATE FCB IF THERE 
9**=          UNOPCH   3,OFW               [J IF OPEN FOR WRITING   
9*SW          UPPLUS   2
9B#G    OFW   UPPLUS   1
9BS6    [THIS IS THE ENTRY FROM THE USERCRWF MACRO. IT IS USED BY USEROPEN TO   
9C?Q    [UPDATE A WORKFILE'S FCB & FEXTRA FROM THE FEXTRA BLOCK.
9CRB    USERCRWF
9D?2          HUNT     3,FILE,CREATE
9DQL          BNG   3  XCR  
9F==          CALL  6  XLW                 [LOCATE FCB  
9FPW          LDCT  0  #20                 [FILE CAN ONLY BE CHANGED IF IT IS   
9G9G          ANDX  0  FCOMM(1)            [SERIAL  
9GP6          BZE   0  UNS  
9GYY ...      JBS      XCR,3,CESERIAL      [J IF SERIAL.
9H8Q          LDX   0  CETM(3)  
9HNB          SLC   0  9
9J82          ANDN  0  #377                [FILE DOES NOT NEED CHANGING IF  
9JML          LDN   4  5                   [CHANGE IS TO SERIAL.
9KLW          LDCT  5  #20  
9L6G          ERS   5  FCOMM(1)            [UNSET SERIAL BIT
9LL6          BXU   0  4,NMT               [J IF NOT MT 
9M5Q          LDN   0  #20  
9MKB          ORS   0  FCOMM(1)            [SET MT BIT  
9N52    NMT 
9NJL          LDX   0  CETM(3)  
9P4=          STO   0  FETM(1)  
9PHW          LDX   0  CEENDBUCK(3)        [UPDATE FENDBUCK & FVERSION IF   
9Q3G          STO   0  FENDBUCK(1)  
9QH6    NC1   LDX   0  CEVERSION(3) 
9R2Q          STO   0  FVERSION(1)  
9RGB          LDX   2  FPTR(1)             [LOCATE FEXTRA   
9S22          LDX   0  ATYPE(2) 
9SFL          SRL   0  12   
9S^=          SBN   0  FILE+FEXTRA  
9TDW          BZE   0  NOST 
9TYG          LDX   2  FPTR(2)  
9WD6    NOST  LDX   0  CETM(3)             [UPDATE PERI TYPE/MODE.  
9WXQ          STO   0  FTM(2)   
9XCB          LDN   4  CEFLOW(3)
9XX2          LDN   5  FFLOW(2) 
9YBL          MOVE  4  3
9YW=          LDN   0  #20  
9^*W          ANDX  0  FCOMM(1)            [IF MT SIZE OF FILE IS SET TO MAX
9^TG          BNZ   0  XBLOK               [THUS NO BLOCKS TO BE FREED  
=2*6          LDX   4  CEINF3(3)           [UPDATE FSIZE FOR DA FILE
=2SQ          ANDX  4  BITS22LS 
=3#B          STO   4  FSIZE(1) 
=3S2          SBX   4  FUSEBL(1)           [IF FCB ALREADY HAS MORE BLOCKS  
=4?L          ADN   4  FBLKS-A1            [ALLOCATED TO IT THAN ARE ALLOWED
=4R=          BPZ   4  XBLOK               [IN NEW FILE SIZE THE EXCESS BLOCKS  
=5=W          NGX   4  4                   [MUST BE FREED.  
=5QG          ADN   4  2
=6=6          SETUPCORE 4,3,BSTB,FULLB  
=6PQ          STO   4  A1(3)
=79B          CALL  6  XLW  
=7P2          LDX   0  BSPRE(1) 
=88L          STO   0  A1+1(3)  
=8N=          ADX   1  FUSEBL(1)
=97W          ADN   1  A1+2 
=9MG          SBX   1  4
==76          LDN   2  A1+2(3)  
==LQ          SMO      4
=?6B          MOVE  1  510  
=?L2          FREEBAX   
=#5L          MFREE    BSTB,EMPTYB  
=#K=          CALL  6  XLW  
=*4W          SBN   4  2
=*JG          SBS   4  ALOGLEN(1)          [RESET ALOGLEN & FBLMOD IF SOME  
=B46          LDX   4  ALOGLEN(1)          [BLOCKS FREED
=B?Y ...      LDX   0  FBLMOD(1)
=BHQ          STO   4  FBLMOD(1)
=BQ2 ...      STO   4  FUSEBL(1)           [UPDATE FUSEBL   
=BY= ...      SBX   0  FBLMOD(1)           [X0= CHANGE IN SIZE OF FBLMOD
=C6G ...      CALL  6  SUBCUBS             [ADJUST JOB'S ONLINE BS COUNT (WILL A
=C#Q ...                                   [  IF X0 IS -IVE !!!!, WHICH HELPS SI
=CH2    XBLOK VFREE    FILE,ENT 
=D2L          GETDIRWORK
=DG=    XCR   UP
=D^W    UNS   UPPLUS   1
=FFG    XLW   FINDWFN  ,1   
=F^6          TESTREPN OK,XGEO  
=GDQ          EXIT  6  0
=GYB    XGEO  GEOERR   1,NOWORKF
=HD2    [   
=HXL          MENDAREA GAPOPEN,K99OPENWORK  
=JC=    #END
^^^^ ...07770215000100000000