OPENREL865

(George Source)

Macros used: ACROSS, ADDMODE, BACKSPACE, BASEFCB, BC, BS, BXE, BXU, CHAIN, CLOSETOP, DOWN, FREEBAX, FREECORE, GEOERR, GETBAX, GETDIR, GETFCBN, HUNT, HUNTW, JBC, JBS, JBSS, JMBAC, JMBS, KEEPREP, MBC, MBS, MENDAREA, MFREE, MFREEW, MHUNT, MHUNTW, NAME, NEXTFCB, OPEN, OPENCREX, OPENDIR, OPENEND, OPENREL, OPENRELX, PUTREP, READ, READAGAIN, RESQUERY, RESTFILE, REWRITE, SEG, SEGENTRY, SETNCORE, SETREP2, SETUPCORE, TESTMODE, TESTNAMX, TESTREP2, TESTRPN2, TFCBCHECK, TOPFCB, TOPFCB2, TRACE, UP, UPPLUS, WHATBACK

OPENREL865.txt
22FL ...      SEG   OPENREL,85,JUDY BIDGOOD,OPEN
22^=    [   
23DW          SEGENTRY K1OPENREL,OPENRELX   
23YG          SEGENTRY K2OPENREL,OPENREL
24D6          SEGENTRY K3OPENREL,OPENCREX   
24XQ          SEGENTRY K5OPENREL,OPENEND
25CB ...      SEGENTRY K8OPENREL,(GEOERR)   
25X2 ...      SEGENTRY K9OPENREL,(GEOERR)   
26BL          SEGENTRY K10OPENREL,RESTORE   
26W=    [   
27*W    #     THIS ROUTINE IS ENTERED WITH A DIRECTORY OPEN AND A FLOCNB SET UP 
27TG    #      FILE UNDER THIS DIRECTORY WHICH IS BEING OPENED.THE DIRECTORY ENT
28*6    #      FOR THIS FILE IS FOUND,AND A FILE/FCB BLOCK IS SET UP FOR THIS FI
28SQ    #      IN THE ACTIVITY CHAIN. IF THIS FILE IS NOT ONLINE IT IS RESTORED 
29#B    #      NOWAIT IS NOT SET. ALL OPENING MODES ARE CHECKED FOR COMPATABILIT
29S2    #       IF THERE IS ANY REASON WHY THE FILE CANNOT BE OPENED, A REPY IS 
2=?L    #      GIVEN IF QUERY MODE IS SET, OTHERWISE A GEOERR IS OBEYED.
2=R=    #   
2?QG    #   
2#=6    XMON  #42014200 
2#PQ    [   
2#QB ...[ SUBROUTINE TO CLOSE DIR IN PREPARATION FOR MANDATORY B.S. REQUEST 
2#R2 ...XCLOSE  
2#RL ...      SBX   3  FX1  
2#S= ...      TOPFCB2 1 
2#SW ...#SKI  K6OPENREL>100-100 
2#TG ...      TRACE    BACK2(1),WAIT
2#W6 ...      LDX   4  FME1(1)  
2#WQ ...      LDX   5  FME2(1)             [REMEMBER USERNAME OF DIR
2#XB ...      LDX   6  FME3(1)  
2#Y2 ...      LDX   0  AWORK4(2)           [IF I SET UWB, MUST NOW UNSET IT 
2#YL ...      BZE   0  NOBS1
2#^= ...      MHUNTW   1,FILE,ENT   
2#^W ...      BC       1,BEUWB  
2*2G ...      NAME     1,FILE,FWB   
2*36 ...      REWRITE   
2*3Q ...      MHUNTW   1,FILE,FWB   
2*4B ...      NAME     1,FILE,ENT   
2*52 ...NOBS1   
2*5L ...      CLOSETOP                     [CLOSE DIR   
2*6W ...      MFREEW   FILE,FCB 
2*7G ...      ADX   3  FX1  
2*86 ...      EXIT  3  0
2*8Q ...[   
2*9B    OPENRELX
2*P2    [ENTRY FOR MACRO OPENRELX USED BY USEROPEN WHICH WILL HAVE LEFT THE 
2B8L    [DIRECTORY OPEN AS THOUGH A GDE HAS BEEN DONE AND A FILE/ENT IN CORE
2BN=          LDX   7  ACOMMUNE7(2)        [MODE
2C7W          STOZ     AWORK1(2)
2CCN ...      STOZ     AWORK4(2)
2CMG          BRN      OKGDE
2D76    [   
2DLQ    OPENCREX
2F6B          LDX   7  ACOMMUNE7(2)        [MODE
2FL2          STOZ     AWORK1(2)
2FP6 ...      STOZ     AWORK4(2)
2FS= ...      MHUNT 3,FILE,FLOCNB   
2G2G ...      JBC      TGDE2,3,BFABEXO     [J IF NOT CREATING AN EXOFILE ENTRANT
2G8Q ...      BRN      NFI                 [DON'T DO 2ND GETDIR SINCE DIR. ALREA
2GC2 ...                                   [  POSSIBILITY OF TO-BE-ERASED ENTRAN
2GK=    [   
2H4W    OPENREL 
2HJG    [ CHECK TYPE OF FILE AND ACCESIBLE & PICK UP MODE   
2J46          LDX   7  ACOMMUNE7(2)        [MODE
2JHQ    [   
2K3B    OPENEND 
2KH2    #SKI  K6OPENREL>399-399 
2L2L          TRACE    7,2OPENREL   
2LG=          STOZ     AWORK1(2)           [ZEROIZE 'FCB IN CORE' MARKER
2L^W    [THE FORMAT OF THE MODE WORD IS THUS
2MFG    [B  MODE       MEANING  
2M^6    [0  DIROPEN    LEAVE DIRECTORY OPEN 
2NDQ    [1  DIREPLY    REPLY CANT IF DIRECTORY CAN'T BE OPENED  
2NYB    [2  REPWAIT    GO UP IF DIRECTORY CLOSED DURING OPEN
2PD2    [3  CAREFUL    OPEN FILE CAREFULLY  
2PXL    [4  USERCLEAN  OPEN FILE CLEANLY (DA COMMUNE)   
2QC=    [5  HALFOPEN   WE ARE HALFOPENING FILE (SET WITHIN OPENREL) 
2QWW    [6  ERASING    OPEN EVEN IF TO-BE-ERASED
2RBG    [7  SYSTCOMM   OPEN IN SYSTEM COMMUNICATION MODE
2RW6    [8  THAW       REDUCE FREEZECOUNT BY 1 DURING OPEN  
2S*Q    [9  ERASE      SET TO-BE-ERASED & OPEN TO ERASING BITS IN FCB   
2STB    [10 GDESTR     OPEN IN GENERAL DESTRUCTIVE READ MODE                 MK7
2T*2    [11 REOPEN     REOPEN A SAVED FILE & REDUCE APPROPIATE SAVECT BY 1  
2TSL    [15 CREATE     CREATE A FILE
2W#=    [16 COMMUNE    OPEN FILE IN COMMUNICATION MODE  
2WRW    [17 REPLY      REPLY CANT IF FILE CAN'T BE OPENED   
2X?G    [18 NOWAIT     REPLY MAG IF FILE NEEDS RESTORING
2XR6    [19 QUERY      REPLY RATHER THAN GEOERR IN SOME ERROR CASES 
2Y=Q    [20 DESTRUCT   OPEN FILE IN DESTRUCTIVE COMMUNICATION MODE  
2YQB    [21 EMPTY      EMPTY FILE WHILST OPENING IT 
2^=2    [22 LEAVE      LEAVE FILE/ENT BLOCK IN CORE 
2^PL    [23 DIR        IMPLEMENTS OPENDIR - NOT USED IN OPENREL 
329=    [B12,13,14 CONTAIN THE MAIN MODE AS A VALUE RATHER THAN INDIVIDUAL BITS 
32NW    [ 1-READ, 2-READR, 3-APPEND, 4-WRITE, 5-GENERAL, 6-COPY, 7-CLEAN.   
338G    #SKI  K6OPENREL>199-199 
33N6    (   
347Q          TESTMODE 7,NODS,NOT,DESTRUCT [IF DESTRUCT MODE GIVEN  
34MB          TESTMODE 7,NODS,,COMMUNE     [COMMUNE SHO4LD ALSO BE PRESENT  
3572          GEOERR   1,DESMCOMM   
35LL    NODS
366=    )   
36KW    TGDE
36TN ...      STOZ     AWORK4(2)
375G          GETDIR   1
37K6    [THERE IS A COMPLETE LOCAL NAME IN A LOCAL NAME BLOCK IN THE
384Q    [ACTIVITY CHAIN.FIND ITS DIRECTORY ENTRY IN THE CURRENT FILE
38JB          TESTREP2 OK,OKGDE,VRYWRONG,QRWNG,DISAGREE,QRDIS,WRGEN,WRG,       -
3942                   NAME,QRNAM   
39HL          TESTRPN2 NOFILE,QUER  
3=3=    TGDE2   
3=GW          TESTMODE 7,NSC,NOT,SYSTCOMM   
3?2G          ADDMODE  7,COMMUNE           [ADD COMMUNE IF SYSTCOMM GIVEN   
3?G6    NSC 
3?^Q          GETDIR   3
3#FB          TESTREP2 OK,OKGDE,NOFILE,NFI  
3#^2          TESTRPN2 VRYWRONG,QUER       [TEST FOR CASE WHERE MT FILE OF SAME 
3*DL          READAGAIN                    [NAME EXISTS AND IS MARKED TO BE 
3*Y=          MHUNTW   3,FILE,FRB          [ERASED  
3BCW          NAME     3,FILE,ENT          [IF IT IS FOLLOW NORMAL  
3BXG          BRN      OKGDE               [WAITING FOR FILE TO BE ERASED PATH  
3CC6    NFI 
3CWQ    [IF IT IS THE CREATE CASE WE MUST SET UP A NEW DIRECTORY ENTRY  
3DBB          TESTMODE 7,QUERY,NOT,CREATE  [ERROR UNLESS CREATE GIVEN   
3DW2          ACROSS   MAKEFILE,1          [EXIT FOR CREATE CASE.   
3F*L    OKGDE   
3FT=    [IS THERE ANYTHING ELSE TO STOP US EVER OPENING THE FILE.   
3G#W          TESTMODE 7,NOSY,NOT,SYSTCOMM  
3GSG          ADDMODE  7,COMMUNE           [ADD COMMUNE IF SYSTCOMM GIVEN   
3H#6    NOSY
3HRQ          TESTMODE 7,NGDR,NOT,GDESTR
3J?B          TESTMAIN 7,QRWR,NOT,READ,APPEND                      [GDR MUST BE 
3JR2    NGDR
3K=L          MHUNTW   3,FILE,ENT   
3KQ=          JBC      NIND,3,BEINDEX   
3L24 ...      TESTMODE 7,OKEM,,ERASE
3L9W          TESTMODE 7,QRWR,,EMPTY       [INDEXED FILE MAY NOT BE EMPTIED 
3LFN ...OKEM                               [UNLESS ERASE MODE ALSO SPECIFIED.   
3LPG          TESTMAIN 7,QRWR,,APPEND,WRITE[OR OPENED IN TH THESE MODES 
3M96    NIND
3MNQ          LDX   0  ELAN(3)  
3N8B          BXU   0  XMON(1),NMON        [J IF NOT LANGUAGE B1B0  
3NN2          TESTMODE 7,NCAR,,SYSTCOMM    [J IF SYSTEM COMMUNE SINCE MONITORING
3P7L    NMON                               [FILES MUST NOT BE CAREFUL.  
3PM=          JBS      YCAR,3,BECARE
3QLG          TESTMAIN 7,NCAR,NOT,APPEND                      [APPEND IS CAREFUL
3R66          TESTMODE 7,NCAR,,REOPEN,GDESTR,EMPTY                 [UNLESS ONE O
3RKQ    YCAR
3S5B          TESTMODE 7,QRWR,,GDESTR      [GDR+CAREFUL IS ILLEGAL  
3SK2          ADDMODE  7,CAREFUL
3T4L    NCAR
3TJ=          JBC      NERAS,3,BEERASE  
3W3W          TESTMODE 7,NERAS,,THAW,ERASING
3WHG          TESTMODE 7,QUERY,NOT,CREATE   
3X36          TESTMODE 7,XRC,,REPLY 
3XGQ          LDX   6  ELOC1(3)            [KEEP NAME OF FILE   
3Y2B          DOWN     OPENWAIT,1          [GO DOWN TO WAIT FOR FILE TO BE ERASE
3YG2          UP                           [BREAKIN 
3Y^L          TESTREP2 DIRCLOSE,UPF 
3^F=                                       [DIRECTORY WAS CLOSED IN OPENWAIT
3^YW          TESTRPN2 OK,TRCLU            [IF OK CHECK GEN NO. 
42DG          HUNT     1,FILE,FLOCNB       [BEFORE DOING ANOTHER GETDIR 
42Y6          LDX   0  A1+4(1)  
43CQ          BNZ   0  TGDE                [IF NON ZERO GEN OK TO DO GETDIR 
43XB          LDCT  0  #100 
44C2          STO   0  A1+4(1)             [SET BIT2 OF GEN 
44WL          BRN      TGDE 
45B=    TRCLU   
45TW          TESTREP2 CLUDGE,UPCLD 
46*G          KEEPREP  4,NAME              [REPORT IF NOT   
46T6          ADDMODE  7,LEAVE,DIROPEN  
47#Q          BRN      QUERIES  
47SB    UPCLD   
48#2          KEEPREP  4,CLUDGE            [REPLY CLUDGE
48RL          BRN      QUERIES  
49?=    NERAS                              [AND IF SO RECREATE IT   
49QW          TESTMODE 7,QUERY1,,CREATE 
4==G    [   
4=Q6    [NOTE THAT RANDOM MODE IS FEASIBLE WITH ANY FILE & ANY MODE IS  
4?9Q    [FEASIBLE WITH A SERIAL FILE,BUT SERIAL MODE CANNOT BE USED ON A
4?PB    [RANDOM FILE BECAUSE OF RECORD HEADERS. 
4#92    [   
4#NL          TESTMAIN 7,NOQUERY2,,RANDOM  [OK IF MODE AND FILE SERIAL  
4*8=          JBS      NOQUERY2,3,BESERIAL  
4*MW    [THE NEXT SECTION DEALS WITH
4B7G    [CASES WHERE SOMETHING IS   
4BM6    [WRONG & A REPLY MUST BE GIVEN: 
4C6Q    QRWR
4CLB          KEEPREP  4,WRONG             [REPORT IF WRONG MODE
4D62          BRN      QUENT
4DKL    QRTEM KEEPREP  4,TEMPLOST   
4F5= ...      BRN      QRTLOS   
4FJW    QRNAM KEEPREP  4,NAME   
4G4G          BRN      QUENT
4GJ6    QRWNG KEEPREP  4,VRYWRONG          [REPORT IF WRONG TYPE
4H3Q          BRN      QUENT
4HHB    QRDIS KEEPREP  4,DISAGREE          [REPORT IF MAG TAPES DISAGREE WITH DI
4J32          BRN      QUENT
4JGL    QUERY1  
4K2=          KEEPREP  4,ALREADY           [REPORT IF CREATING ALREADY THERE.   
4KFW          BRN      QUERIES  
4K^G    WRG   KEEPREP  4,WRGEN             [REPORT IF WRONG GENERATION  
4LF6          BRN      QUENT
4LYQ    QUERY   
4MDB          KEEPREP  4,NOFILE            [REPORT IF WANTED AND NOT THERE. 
4MY2    QUENT ADDMODE  7,LEAVE  
4NCL    QUERIES 
4NX=          TESTMODE 7,REPLY,,QUERY   
4PBW    QUER  GEOERR   1,QUERIES           [ABSENCE OR PRESENCE OR FORMAT OR GDE
4PWG    REPLY   
4QB6          TESTMODE 7,TUP,,DIROPEN   
4QTQ          CLOSETOP                     [DO A LITTLE CLOSE ON THE DIRECTORY: 
4R*B    TUP 
4RT2          PUTREP   4                   [DEPOSIT REPLY   
4S#L    #SKI  K6OPENREL>399-399 
4SS=          TRACE    4,ANSOREL           [TRACE REPLY 
4T?W    UPF 
4TRG          HUNTW    1,FILE,ENT   
4W?6          BNG   1  UP                  [SEE IF THERE IS AN ENT BLOCK AROUND 
4WQQ          TESTMODE 7,UP,,LEAVE  
4X=B          FREECORE 1
4XQ2    UP    UPPLUS   1
4Y9L    NOQUERY2
4YP=    [   
4^8W    [THIS CODE WAS INCLUDED TO DEAL WITH BUG 2586. IT DEALS WITH THE
4^NG    [INTERLOCKS WHICH OCCURS WHEN A JOB DOES A LISTFILE THEN AN INPUT   
5286    [ON THE SAME FILE. IF MODE IS EMPTY & FILE IS FROZEN THEN THE ACTIVITY  
52MQ    [IS SET WAITING. MORE CHANGES ARE INSERTED IN OTHER OPEN SEGMENTS TO
537B    [WAKE UP ALL ACTIVITIES WAITING FOR THIS FILE AFTER IT HAS BEEN THAWED. 
53M2    [   
546L          LDEX  0  EAUTOCOUNT(3)
54L=          ORX   0  ESVCT(3)            [ADD IN READ & WRITE FROZEN COUNTS   
555W          BZE   0  NOQUERY3 
55KG          TESTMODE 7,NOQUERY3,NOT,EMPTY 
5656          TESTMODE 7,NREP,NOT,REPLY 
56JQ    XRC 
574B          KEEPREP  4,CANT   
57J2          BRN      REPLY
583L    NREP
58H=          LDX   6  ELOC1(3)            [PRESERVE PART OF LOCAL NAME FOR WAIT
592W          DOWN     OPENWAIT,4          [GO DOWN TO WAIT FOR FILE TO BE  
59GG          UP                           [THAWED  
5=26          TESTREP2 DIRCLOSE,UPF,OK,TGDE 
5=FQ          BRN      TRCLU
5=^B    NOQUERY3
5?F2    [THE DIRECTORY ENTRY FOR THE
5?YL    [FILE WANTED HAS BEEN FOUND.
5#D=    [EXCEPT IN THE EMPTY CASE, WE   
5#XW    [WANT TO CONSULT THE ON-LINE
5*CG    [COPY IF THERE IS ONE, OR TO
5*X6    [RESTORE IT IF THERE IS NOT.
5BBQ          LDN   4  0                   [ZEROISE EMPTY AND OFFLINE MARKER
5BWB    RETONL  
5CB2          LDEX  0  ECOPS(3) 
5CTL          BNZ   0  ONLINE              [SKIP UNLESS NEEDS RESTORING 
5D*=          LDX   0  EUSE1(3)            [ERROR IF A DIRECTORY
5DSW          BNZ   0  NONLD
5F#G          TESTMODE 7,TEMPT,NOT,EMPTY
5FS6          LDN   4  1
5G?Q          LDN   6  FBLKS-A1 
5GRB          BRN      NTHAW
5H?2    TEMPT   
5HQL          LDX   0  ECOPS(3)            [TEST FOR EMPTY FILE 
5J==          BNZ   0  REST                [RESTORE IF NOT  
5JPW    YRE 
5K9G          LDN   6  FBLKS-A1 
5KP6          BRN      ONLINE   
5L8Q    REST
5N7=          LDN   3  BFILE
5NLW          TOPFCB   2                   [FIND DIR  FCB   
5P6G          LDX   4  FME1(2)             [STORE USER NAME IN  
5PF* ...
5PS8 ...      HUNT 1,FILE,FLOCNB
5Q73 ...      BASEFCB 3,FILE,RESTA,6     [INITIALISE FOR FCB SEARCH 
5QFW ...      BRN      NOGO2
5QSP ...NOGO1   
5R7J ...      NEXTFCB 3,FILE,NOGO2,6
5RGC ...      BRN      RESTA
5RT= ...NOGO2   
5S85 ...      LDX   0  FME3(2)         [SET UP LOCAL NAME FOR COMPARISON
5SGY ...      LDX   5  FME2(2)  
5STR ...NOGO3   
5T8L ...      TXU   4  FUSER1-FCBRING(3)
5THF ...      BCC      SOFAROK         [FIRST WORD OK B TO TRY NEXT 
5TW# ...NOGO4                  [TRY NEXT FCB
5W97 ...      NEXTFCB 3,FILE,NOGO3,6
5WJ2 ...      BRN      RESTA         [FILE RING EXHAUSTED   
5WWT ...SOFAROK 
5X9N ...      TXU   5  FUSER2-FCBRING(3)
5XJH ...      TXU   0  FUSER3-FCBRING(3)         [TEST REST OF USER NAME
5XXB ...      BCS      NOGO4
5Y=9 ...      TESTNAMX 6,A1(1),FLOC1-FCBRING(3),NOGO1,5    [TEST COMPLLETE LOCAL
5YK4 ...      SBN   3  FCBRING         [FCB FOUND   
5YYG          LDX   2  FX2  
5^D6          LDN   6  1                   [SET MARKER IN AWORK1
5^XQ          STO   6  AWORK1(2)
62CB          LDX   6  BACK1(3) 
62X2          STO   6  AWORK2(2)           [KEEP BACKING STORE HOME 
63BL          LDX   6  BACK2(3)            [PAIR OF FCB IN AWORK WORDS  
63W=          STO   6  AWORK3(2)
64*W          LDN   0  1                   [ADD 1 TO COUNT OF WAITERS   
64TG          ADS   0  FWAITCOUNT(3)
65*6          HUNTW    3,FILE,ENT   
65SQ          LDN   4  0                   [RESET EMPTY & OFFLINE MARKER
66#B          BRN      ONLINE   
66S2    RESTA   
67?L          LDN   4  0                   [RESET EMPTY & OFFLINE MARKER
67R=          TESTMODE 7,RESTORE,NOT,NOWAIT[RESTORE FILE UNLESS EMPTY &OFFLINE  
68=W          KEEPREP  4,MAG
68QG          BRN      REPLY               [GIVE A REPLY IF NOWAIT  
69=6    RESTORE 
69C# ...      SMO      FX2  
69JG ...      STOZ     AWORK4   
69PQ          RESTFILE                     [DOWN TO THE RESTORE CHAPTER.
6=9B          UP
6=P2          TESTREP2 OK,RESTORED  
6?8L          ADDMODE  7,DIROPEN           [DIR HAS BEEN CLOSED IF NON-OK REPLY 
6?N=          TESTREP2 NAME,QRNAM,NOFILE,QUERY,TEMPLOST,QRTEM,LOST,QRLOS
6#7W          BRN      QUER 
6#MG    [THIS SECTION WAS PUT IN TO DEAL WITH LOST FILES WHICH CANNOT BE ERASED 
6*76    [IF FROZEN (BUG 1895)   
6*LQ    QRLOS   
6B6B          KEEPREP  4,LOST   
6BB8 ...QRTLOS  
6BL2          TESTMODE 7,TUP,NOT,THAW   
6C5L          HUNT     3,FILE,FABSNB
6CK=          BNG   3  TUP                 [CAN'T OPENDIR WHTHOUT FABSNB
6D4W          OPENDIR  TUP,GENERAL,ERASING [OPEN DIRECTORY TO REWRITE DIRENT
6DJG          TESTRPN2 OK,QUER  
6F46          MHUNTW   3,FILE,ENT   
6FHQ          LDN   0  1
6G3B          SBS   0  EAUTOCOUNT(3)       [SUBTRACT 1 FROM FREEZECOUNT 
6GH2          NAME     3,FILE,FWB   
6H2L          REWRITE                      [REWITE DIRENT   
6HG=          HUNT     1,FILE,FWB   
6H^W          NAME     1,FILE,ENT   
6JFG          TESTMODE 7,TUP,,DIROPEN   
6J^6          CLOSETOP                     [CLOSE DIRECTORY 
6KDQ          BRN      TUP                 [KEEP REPLY AND GO UP
6KYB    RESTORED
6LD2          TESTMODE 7,NREPW,NOT,REPWAIT  
6LXL          CLOSETOP                     [CLOSE DIRECTORY BEFORE GOING UP 
6MC=          SETREP2  DIRCLOSE 
6MWW          BRN      UPF  
6NBG    NREPW   
6NW6          MHUNTW   3,FILE,ENT   
6P*Q          BRN      RETONL   
6PTB    [ON EXIT FROM RESTORE, THE  
6Q*2    [DIRECTORY IS OPEN POSITIONED   
6QSL    [AFTER THE FRDE.
6R#=    [THE NEW DIRENT IS IN CORE. 
6RRW    ONLINE  
6S?G    [PUT A BEING-ALTERED BIT IN THE DIRECTORY ENTRY IF NEED BE. THEN GET
6SR6    [SOME CORE FOR A FILE CONTROL BLOCK:
6T=Q          TESTMODE 7,NTHAW,NOT,THAW 
6TQB          TESTMAIN 7,THERR,,UNCLEAN 
6W=2    [   
6WPL    [REPLY MODE MUST BE SPECIFIED BECAUSE IF SOMEONE ELSE HAS THE FILE  
6X9=    [OPEN THE 'OPENTHAW ACTIVITY' CANNOT WAIT, SINCE IT HAS THE FILES   
6XNW    [DIRECTORY OPEN 
6Y8G    [   
6YN6          TESTMODE 7,TDIROK,NOT,REPLY   
6^7Q    THERR GEOERR   1,THAW ERR          [ERROR IF UNCLEAN AND/OR REPLY NOT SE
6^MB    NTHAW   
6^X8 ...      TESTMAIN 7,TDIROK,,COPY   
7272          TESTMAIN 7,SUWB,,UNCLEAN  
72LL          TESTMODE 7,TDIROK,NOT,GDESTR [GDR IS UNCLEAN  
736=    SUWB
73KW          TESTMODE 7,TDIROK1,,CAREFUL   
745G          JBSS     TDIROK1,3,BEUWB     [SET UWB UNLESS ALREADY SET  
74K6    REWR  NAME     3,FILE,FWB   
754Q          REWRITE                      [REWRITE RECORD: 
75JB          MHUNTW   3,FILE,FWB   
7642          NAME     3,FILE,ENT   
7698 ...      LDN   0  1
76BB ...      STO   0  AWORK4(2)           [REMEMBER I SET UWB  
76HL    [MUST SOME DAY GET RID OF FURB TO BACKING STORE 
773=    TDIROK1 
77GW          BNZ   4  MAKEFCB             [IGNORE BLOCK NOS IF EMPTY AND NOT ON
782G    TDIROK  
78G6          LDX   2  FX2  
78^Q          LDX   0  AWORK1(2)
79FB          SBN   0  1
79^2          BNZ   0  NOFCB
7=DL          LDX   5  AWORK2(2)           [LOAM BS HOME PAIR READY 
7=Y=          LDX  6   AWORK3(2)           [FOR OELOCATING FCB  
7?CW          ACROSS   ORELMAIN,4   
7?XG    NOFCB   
7#C6          LDX   0  ECOPS(3)            [IF FILE IS EMPTY & OFFLINE OMIT CODE
7#WQ          BZE   0  MAKEFCB  
7*BB    NEO 
7*W2          READ                         [GET BEST ADDRESS BLOCK  
7B*L          HUNT     2,FILE,FRB          [FIND BLOCK  
7BT=          LDX   6  A1(2)               [NUMBER OF BLOCKS PLUS 2 
7C#W          ADN   6  FBLKS-A1-2            [CORE NEEDED FOR FCB   
7CSG          TESTMODE 7,MAKEFCB,NOT,EMPTY  
7D#6          BACKSPACE                    [REPOSITION ON BLOCKS RECORD IF EMPTY
7DRQ    MAKEFCB 
7F?B    [SET UP A FILE CONTROL BLOCK IN CASE THERE IS NOT ONE ALREADY:  
7FR2    [THE NAME IS NEEDED IN IT FOR COMPARISON AND THE OTHER WORDS CAN BE PUT 
7G=L    [IN FOR CONVENIENCE: X7=MODE ; X6=CORE NEEDED ; X5 MEANS ENTRY UNCHANGED
7H9W          SETUPCOR 6,3,FILE,FCB,,1  
7K8B          STO   6  FBLMOD(3)               [STORE RECORD HEADER IN FCB  
7KN2          STOZ     FBLMOD+1(3)  
7L7L          LDN   5  FBLMOD+1(3)  
7LM=          LDN   6  FBLMOD+2(3)  
7M6W          MOVE  5  BSPRE-FBLMOD-2   
7MLG          LDX   0  ALOGLEN(3)          [INITIALIZE WORD INDICATING NUMBER   
7N66          STO   0  FUSEBL(3)           [OF BLOCKS ALLOCATED TO FILE 
7NKQ          NGS   3  CMOD(3)             [RECORD MODIFIER NEGATIVE
7P5B          BNZ   4  SETNAME  
7PK2          MHUNTW   2,FILE,ENT   
7Q4L          LDX   0  ECOPS(2)            [IF FILE IS EMPTY & OFFLINE OMIT CODE
7QJ=          BZE   0  SETNAME  
7R3W          MHUNTW   2,FILE,FRB   
7RHG          LDN   6  BSPRE(3)            [POINTER TO BLOCKS ADRESS.   
7S36          LDN   5  A1+1(2)             [POINTER TO BLOCKS.  
7SGQ          SMO      A1(2)               [NUMBER OF WORDS TO MOVE PLUS ONE.   
7T2B          MOVE  5  511                 [MOVE ONE LESS   
7TG2    XFRFL   
7T^L          FREECORE 2                   [FREE FRB.   
7WF=    SETNAME 
7WYW          MHUNTW   1,FILE,ENT   
7X64 ...      LDX   0  EUSE1(1) 
7X?= ...      GETFCBN 3,0       [GET UNIQUE FCB NO  
7XDG          LDEX  0  EAUTOCOUNT(1)       [COPY THE FREEZECOUNT
7XY6          STO   0  FREEZECOUNT(3)   
7YCQ          LDX   0  ETM(1)   
7YXB          STO   0  FETM(3)  
7^C2          LDX   0  EENDBUCK(1)  
7^WL          STO   0  FENDBUCK(3)         [COPY ENDBUCK
82B=          LDX   0  EVERSION(1)  
82TW          STO   0  FVERSION(3)         [COPY VERSION
83*G          LDX   0  ESVCT(1)            [COPY READ- & WRITE-FREEZE COUNTS
83T6          STO   0  FSVCT(3) 
84#Q          LDX   0  EINF3(1) 
84SB          DLA   0  FSIZE(3)            [MAXIMUM ALLOWED FILE SIZE   
8548 ...      TESTMAIN 7,NBAL,,READING  
85#2          LDX   0  ECOPS(1) 
85RL          BZE   0  NONBAL              [SET BLOCKS ALT BIT IF EMPTY & OFFLIN
86?=          TESTMODE 7,NBAL,NOT,EMPTY 
86QW    NONBAL  
87=G          MBS      3,BFALTB,BFALTR  
87Q6    NBAL
889Q          JBC      NOUWB,1,BEUWB
88PB          BS       3,BFUWB             [TRANSFER BIT
8992    NOUWB   
89NL          LDN   4  0
8=8=          JBC      NOTS,1,BESERIAL     [TRANSFER BIT
8=MW          BS       3,BFSER  
8?7G    NOTS
8?M6          JBC      NOTM,1,BEMT  
8#6Q          BS       3,BFMT              [TRANSFER BIT
8#LB    NOTM
8*62          JBC      NINX,1,BEINDEX   
8*KL          LDX   0  EINDEX(1)
8B5=          STO   0  FINFC(3) 
8BJW    NINX
8BK4 ...      JBC   NPARES,1,BEPARTRES  
8BK6 ...      BS    3,BFPARTRES 
8BK8 ...NPARES  
8BL? ...      JBC      NCLOSEAB,1,BECLOSEAB 
8BLQ ...      TESTMODE 7,NCLEMPT,NOT,EMPTY  
8BM9 ...      BC       1,BECLOSEAB         [UNSET CLOSEABANDON MARKER   
8BMN ...      BRN      NCLOSEAB            [AS FILE BEING EMPTIED INSTEAD.  
8BN7 ...NCLEMPT 
8BNL ...      BS       3,BFCLOSEAB  
8BP5 ...NCLOSEAB
8BPQ ...      JBC   NDIBMOD,1,BEFHDIRMODE   
8BPS ...      BS    3,BFFHDIRMODE   
8BPW ...NDIBMOD 
8BQ^ ...      JBC      NUSERFREZ,1,BEUSERFREZ   
8BRD ...      BS       3,BFUSERFREZ 
8BRX ...NUSERFREZ   
8BS7 ...#UNS  ILOGACC   
8BSC ...(   
8BSM ...      JBC      NLOGACC,1,BELOGACC   
8BSX ...      BS       3,BFLOGACC                [MARK FCB LOGGED ACCESS IF ENT 
8BT7 ...NLOGACC 
8BTC ...)   
8BTR ...      LDX   0  EUSE1(1) 
8BW= ...      BZE   0  NOTADIR  
8BWP ...      MBC      3,BFDIRUPDATE,BFALLINCS,BFDUMP,BFDIRBELOW
8BX8 ...      JBC   NDUMPIN,1,BEDUMP
8BXM ...      BS       3,BFDUMP 
8BY6 ...NDUMPIN 
8BY9 ...      JBC NJ4AST,1,BEJOB4ASTR   
8BY# ...      BS 3,BFJOB4ASTR   
8BYC ...NJ4AST  
8BYK ...      JBC      NALLINC,1,BEALLINCS  
8B^4 ...      BS       3,BFALLINCS  
8B^H ...NALLINC 
8C22 ...      JBC      NDIRBLOW,1,BEDIRBELOW
8C2F ...      BS       3,BFDIRBELOW 
8C2Y ...NDIRBLOW
8C3C ...NOTADIR 
8C4G          LDX   0  EUSE1(1) 
8CJ6          BNZ   0  YPUB                [J IF DIR AS THIS PUBLIC FILE
8D3Q          LDX   0  EALLOC(1)
8DHB          ANDN  0  #77  
8DPL ...      SBN   0  1
8DXW ...      BZE   0  YPUB                [J IF 'ALLOCATE PUBLIC' FILE 
8F66 ...      SBN   0  47   
8F#B ...      BPZ   0  YPUB                [J IF ALLOCATED TO SPECIAL RESIDENCE 
8FGL          JBS      YPUB,1,BEONLINE  
8G2=          BS       3,BFCUBS            [ELSE MARK AS 'NON-PUBLIC'   
8GFW    YPUB
8G^G          TESTMODE 7,YEEM,,EMPTY
8HF6          JBC      YEEM,1,BEPURE       [TRANSFER PURE PROCEDURE BIT UNLESS E
8HYQ          BS       3,BFPP   
8JDB    YEEM
8JY2          LDX   4  EUSE1(1)            [LOOK AT USER NAME IN DIRENT.
8KCL          TFCBCHECK 2   
8KX=          TESTMODE 7,NDES,NOT,DESTRUCT  
8LBW          MBS      3,BFCORE,BFDCF      [DCF USAGE BLOCKS ARE LEFT IN CORE   
8LWG    NDES
8MB6          LDN   5  FME1(2)             [X5 -> SUPUSER NAME  
8MTQ          LDN   6  FUSER1(3)           [X6 -> TO NICHE FOR SAME 
8N*B          MOVE  5  3
8NT2          BNZ   4  NOTTERMINAL         [IF DIRECTORY JUMP   
8P#L          HUNT     2,FILE,FLOCNB       [FIND LOCAL NAME BLOCH   
8PS=          LDN   5  A1(2)               [X5 -> LOCAL NAME
8Q?W          LDN   6  FLOC1(3)            [X6 -> NICHE 
8QRG          MOVE  5  6                   [COPY LOCAL NAME 
8R?6          BRN      ORELMAIN            [ACROSS TO MAIN PART OF OPENREL. 
8RQQ    XALLOC  
8S=B          MHUNTW   1,FILE,ENT   
8SQ2          LDX   4  EALLOC(1)
8T9L          ANDN  4  #77  
8TP=          BZE   4  (6)                 [J IF FILE NOT ALLOCATED 
8X86          RESQUERY 4,(6)               [J IF SPECIAL RESIDENCE DOES NOT EXIS
8XMQ          EXIT  6  1                   [ALLOCATE EXIT   
8Y7B    YEMOF   
8YM2          MHUNTW   3,FILE,FCB   
8^6L          CALL  6  XALLOC              [TEST FOR ALLOCATE   
8^L=          BRN      NALL                [J NOT ALLOCATE  
925W          BZE   5  YRD                 [J IF READ MODE  
92KG    #SKI  K6OPENREL>100-100 
9356    (   
93JQ          TRACE    4,SPRES  
944B          TRACE    5,BLKS   
94J2    )   
95H=          HUNT     2,BSTB,FULLB 
962W          BNG   2  NFLB                [IF FULLB GIVEN & B.S. IS ON CORRECT 
96GG    #SKI  K6OPENREL>100-100 
9726          TRACE    2,FULLB  
97FQ    YALC
97^B          LDX   0  A1+1(2)             [RESIDENCE IT CAN BE USED ,OTHERWISE 
98F2          BXE   0  4,YMBS              [BS IN FULLB MUST BE FREED   
98YL          LDX   5  A1(2)               [AND NUMBER  OF BLOCKS IN FULLB MUST 
99D=          FREEBAX                      [BE REMEMBERED SO THAT SAME NUMBER   
99XW          MHUNTW   1,BSTB,EMPTYB
9=CG          BRN      SFB                 [CAN BE GOT ON SPECIAL RESIDENCE 
9=X6                                       [IF NO FULLB WAS GIVEN 8 BLOCKS ARE  
9?BQ                                       [GOT ON SPECIAL RESIDENCE
9?K2 ...NFLB                               [NO BLOCKS GIVEN 
9?R= ...      BNG   5  YRD                 [J IF EMPTY,OFFLINE DA   
9?^G ...    ADN   5  2  
9#7Q ...      SETUPCORE 5,1,BSTB,EMPTYB 
9#B2    SFB 
9#TL          STO   5  A1(1)               [SET UP AN EMPTYB, PUT IN SPECIAL
9**=          STO   4  A1+1(1)             [RESIDENCE NUMBER
9*SW          GETBAX   NSBS                [J IF NO B.S.
9B#G          BRN      YAL                 [OTHERWISE MOVE IT TO FCB
9BS6    NSBS
9C?Q          SETUPCOR 5,1,BSTB,EMPTYB  
9CRB          STO   5  A1(1)
9D?2          STO   4  A1+1(1)  
9DQL ...      CALL  3  XCLOSE            [CLOSE DIRECTORY   
9F== ...      MFREEW   FILE,ENT 
9K7=          GETBAX                       [GET B.S. WAITING IF NECESSARY   
9KLW    WGJN
9L6G          TESTMODE 7,NRWT,NOT,REPWAIT   
9LL6          SETREP2  DIRCLOSE 
9M5Q          BRN      UPF  
9MKB    NRWT
9N52          SETNCORE 4,1,FILE,FABSNB  
9NJL          LDN   0  4
9P4=          STO   0  A1(1)
9PHW          STO   4  A1+1(1)  
9Q3G          STO   5  A1+2(1)  
9QH6          STO   6  A1+3(1)  
9R2Q          OPEN     XBRN,GENERAL,QUERY  [REOPEN DIR  
9RGB          TESTRPN2 OK,TRCLU 
9S22          MFREE    FILE,FABSNB  
9SFL          BRN      TGDE                [J BACK TO START AGAIN   
9S^=    XBRN  GEOERR   1,DIRBRK 
9TDW    YRD   STO   4  BSPRE(3)            [STORE LFN IN FCB BUT NO BLOCKS  
9TYG          BRN      XACC 
9WD6    NALL
9WXQ          BZE   5  YZR                 [NO FULB IF READ 
9XCB          HUNT     2,BSTB,FULLB        [IF FULLB GIVEN THIS CAN BE USED AS  
9XX2          BPZ   2  YMBS                [IT IS NON-ALLOCATED CASE
9Y48 ...      BPZ   5  YZR                 [J IF NOT EMPTY,OFFLINE DA   
9Y9B ...      STOZ     5
9YBL    YZR 
9YW=    #SKI  K6OPENREL>100-100 
9^*W          TRACE    5,NOFULLB
9^D5 ...      MHUNTW   1,FILE,ENT   
9^G# ...      JMBAC    YAL2,1,BEONLINE,BECOOR   
9^JH ...[ IF A VITAL SYSTEM FILE TELL WHATBACK  
9^LQ ...      WHATBACK 2,5,NOBS,,VSF
9^N^ ...      BRN      YAL  
9^R8 ...YAL2
9^TG          WHATBACK 2,5,NOBS            [IF NO FULLB GET 8 BLOCKS, J IF NO BS
=2*6          BRN      YAL  
=2SQ    NOBS
=3#B ...      STO   5  AWORK2(2)
=3S2 ...      CALL  3  XCLOSE              [CLOSE DIRECTORY 
=4?L ...      LDX   3  AWORK2(2)
=4R= ...      MHUNTW   1,FILE,ENT   
=5=W ...      JMBAC    WGJN2,1,BEONLINE,BECOOR  
=5QG ...[ IF A VITAL SYSTEM FILE TELL WHATBACK  
=6=6 ...      WHATBACK 2,3,,,VSF
=6PQ ...      BRN      WGJN3
=79B ...WGJN2   
=88L          WHATBACK 2,3                 [GET B.S.   WAITING IF NONE  
=8DD ...WGJN3 MFREEW   FILE,ENT 
=8N=          BRN      WGJN 
=97W    YAL 
=9MG          HUNT     3,FILE,FCB   
==76          HUNT     2,BSTB,FULLB 
==LQ    YMBS
=?6B          TESTMODE 7,XACC,,EMPTY
=?L2          LDX   0  A1+1(2)             [IF EMPTY & OFFLINE FILE, SET UP 
=#5L          STO   0  BSPRE(3)            [BSPRE IN CASE THIS FCB USED 
=#K=          BNZ   5  XACC                [IF READ MODE FREE FULLB CONTAINING  
=*4W          FREECORE 2                   [LFN ONTY
=*JG          BRN      XACC 
=B46    NOTTERMINAL 
=BHQ    [IF THE FILE IS A DIRECTORY,GET ITS USERNAME FROM THE DIRENT.   
=C3B          HUNT     1,FILE,ENT   
=CH2          LDN   5  EUSE1(1)            [X5 -> USER NAME 
=D2L          LDN   6  FME1(3)             [X6 -> TO NICHE FOR SAME 
=DG=          MOVE  5  3
=D^W          LDN   5  ELOC1(1)            [X5 -> LOCAL NAME
=FFG          LDN   6  FLOC1(3) 
=F^6          MOVE  5  3
=GDQ          BS       3,BFDIR  
=GYB          TESTMODE 7,ORELMAIN,NOT,REPLY 
=HD2          TESTMODE 7,ORELMAIN,,DIREPLY  
=HXL          CLEARMOD 7,REPLY  
=JC=    ORELMAIN
=JWW          MHUNTW   1,FILE,ENT   
=KBG          JBC      NIX,1,BEINDEX
=KW6          READ  
=L*Q          MHUNTW   1,FILE,FRB   
=LTB          NAME     1,FI,FINDEXF 
=M*2          LDX   5  A1(1)
=MSL          SBN   5  INDEXREC-A1         [CHECK RECORD SAME AS NUMBER OF  
=N#=          MHUNTW   1,FILE,FCB   
=NRW          LDX   0  FBLMOD(1)
=P?G          SBN   0  FBLKS-A1 
=PR6          SBX   0  5
=Q=Q          BNZ   0  XIN  
=QQB          BACKSPACE                    [REPOSITOON DIRECTORY
=R=2    NIX 
=RPL          MHUNTW   1,FILE,ENT   
=S9=          TESTMODE 7,YEM,,EMPTY 
=SNW          LDX   0  ECOPS(1)            [IF NEITHER EMPTY MODE NOR EMPTY &   
=T8G          BNZ   0  XACC                [OFFLINE FILE EXIT FROM CHAPTER  
=TN6          MHUNTW   3,FILE,FCB   
=W7Q          LDN   5  8                   [SET DEFAULT NUMBER OF B.S. BLOCKS   
=WMB          TESTMAIN 7,YEMOF,NOT,READING  
=X72          LDN   5  0                   [READ CASE REQUIRES  B.S. RESIDENCE  
=XLL          BRN      YEMOF               [NUMBER FOR BSPRE
=Y6=    YEM 
=YKW          TESTMODE 7,XACC,,ERASING  
=^5G          LDEX  0  ECOPS(1) 
=^K6          LDN   5  8                   [SHOULD BE GOT UNLESS FILE ALLOCATED 
=^WG ...      BNZ   0  NOTEMOF  
?27W ...      JMBS     YEMOF,1,BESERIAL,BEMT
?2F= ...      NGN   5  1
?2QL ...      BRN      YEMOF
?342 ...NOTEMOF 
?3*B ...      CALL  6  XALLOC   
?3LQ ...      BRN      XACC                [IF NOT ALLOCATED,GET NO BS. 
?3Y6 ...#SKI  K6OPENREL>100-100 
?49G ...      TRACE    4,SRES   
?4GW          MHUNTW   2,BSTB,FULLB        [IF NO FULLB GIVEN NO B.S. REQUIRED  
?52G          BPZ   2  YALC 
?5G6    XACC
?5^Q          ACROSS   ORELMAIN,1   
?6FB    NONLD   
?6^2          GEOERR   1,DIRNONL
?7DL    XIN   GEOERR   1,WRINDEX
?Q^L ...RESTCH  
?RYW ...      UP
?SDG ...RESTN   
?SY6 ...      MHUNTW   3,FILE,FCB          [FCB IN ACT. CHAIN   
?TCQ ...      LDX   2  BFILE+1             [CHAIN AT END OF FILE CHAIN  
?TXB ...      CHAIN    3,2  
?WC2 ...      BRN      RESTCH   
?WWL ...STACK   
?XB= ...#HAL  FILE+FSTACK,0 
#78=    [   
#7MW          MENDAREA GAPOPEN,K99OPENREL   
#87G    #END
^^^^ ...30575700000400000000
  • Last modified: 17/01/2024 11:55
  • by 127.0.0.1