{{htmlmetatags>metatag-description:(ICL George 3 and George 4 source: OPENREL865)}}
====== OPENREL865 ======
(George Source)
**Macros used:** [[george:macro:ACROSS|ACROSS]], [[george:macro:ADDMODE|ADDMODE]], [[george:macro:BACKSPACE|BACKSPACE]], [[george:macro:BASEFCB|BASEFCB]], [[george:macro:BC|BC]], [[george:macro:BS|BS]], [[george:macro:BXE|BXE]], [[george:macro:BXU|BXU]], [[george:macro:CHAIN|CHAIN]], [[george:macro:CLOSETOP|CLOSETOP]], [[george:macro:DOWN|DOWN]], [[george:macro:FREEBAX|FREEBAX]], [[george:macro:FREECORE|FREECORE]], [[george:macro:GEOERR|GEOERR]], [[george:macro:GETBAX|GETBAX]], [[george:macro:GETDIR|GETDIR]], [[george:macro:GETFCBN|GETFCBN]], [[george:macro:HUNT|HUNT]], [[george:macro:HUNTW|HUNTW]], [[george:macro:JBC|JBC]], [[george:macro:JBS|JBS]], [[george:macro:JBSS|JBSS]], [[george:macro:JMBAC|JMBAC]], [[george:macro:JMBS|JMBS]], [[george:macro:KEEPREP|KEEPREP]], [[george:macro:MBC|MBC]], [[george:macro:MBS|MBS]], [[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:NEXTFCB|NEXTFCB]], [[george:macro:OPEN|OPEN]], [[george:macro:OPENCREX|OPENCREX]], [[george:macro:OPENDIR|OPENDIR]], [[george:macro:OPENEND|OPENEND]], [[george:macro:OPENREL|OPENREL]], [[george:macro:OPENRELX|OPENRELX]], [[george:macro:PUTREP|PUTREP]], [[george:macro:READ|READ]], [[george:macro:READAGAIN|READAGAIN]], [[george:macro:RESQUERY|RESQUERY]], [[george:macro:RESTFILE|RESTFILE]], [[george:macro:REWRITE|REWRITE]], [[george:macro:SEG|SEG]], [[george:macro:SEGENTRY|SEGENTRY]], [[george:macro:SETNCORE|SETNCORE]], [[george:macro:SETREP2|SETREP2]], [[george:macro:SETUPCORE|SETUPCORE]], [[george:macro:TESTMODE|TESTMODE]], [[george:macro:TESTNAMX|TESTNAMX]], [[george:macro:TESTREP2|TESTREP2]], [[george:macro:TESTRPN2|TESTRPN2]], [[george:macro:TFCBCHECK|TFCBCHECK]], [[george:macro:TOPFCB|TOPFCB]], [[george:macro:TOPFCB2|TOPFCB2]], [[george:macro:TRACE|TRACE]], [[george:macro:UP|UP]], [[george:macro:UPPLUS|UPPLUS]], [[george:macro:WHATBACK|WHATBACK]]
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