WRITEFIP867

(George Source)

Macros used: ACROSS, BLOCK, CAFSINFO, CLOSEST, CLOSEWR, EXCHOFE, EXMESS, EXOFILE, GEOERR, KEEPMESS, MENDAREA, MFINDEXOF, MFINDSU, MHUNTW, MUSEST, OPENST, OPTMESS, PICKREP, PUTREP, READST, RELST, SEG, SEGENTRY, SETREP, TESTREP, TESTREP2, TESTREPNOT, TRACE, UNLOCKSU, UP, USEST, USESTX

WRITEFIP867.txt
22FL ...      SEG      WRITEFIP,867 
22^=    #   
23DW    #   COPYRIGHT INTERNATIONAL COMPUTERS LTD   1982
23YG    #   
25CB    #   
25X2    # SEGMENT TO REWRITE OR CREATE FIP  
26BL    # ACTION  DETERMINED BY MARKERS IN EXMARK OF EXOF BLOCK 
26W=    #     ENTERED VIA DOWN FROM CLOSBAC/RENAMEX TO REWRITE FIP -WITH
27*W    #     PARAMS BRITE+BSERL+BSPEC+BLOCK,   
27TG    #     OR VIA ACROSS FROM SOUP TO CREATE FIP -WITH PARAMS
28*6    #     BCREATE+BSPEC+(OPTIONALLY)BSERL+(OPTIONALLY)BSUPP 
28SQ    # OUTPUT IS REPLY OK OR EXFAIL ,IF EXFAIL MARKERS FOR REASON SET IN 
29#B    # EMARK OF GEXD BLOCK AS FOLLOWS:   
29S2    #      ABREAK = BREAK-IN WHILST WAITING FOR SU TO BE LOADED 
2=?L    #               OR SCALO TO BE CLAIMED  
2=R=    #      AFAIL  = TRANSFER FAIL WHILST READING FIP CELLS  
2?=W    #               OR EXOFILE SECURITY CHECK FAILURE   
2?QG    #      APLINKF= IPB FAILURE - SCALO NOT AVAILABLE   
2#=6    #      ANONL  = UNIT NOT ONLINE(PLEASE LOAD MESS SUPPRESSED)
2#PQ    #      ARITE  = CD REPLY TO PLEASE LOAD REQUEST 
2*9B    #      ANFOUND= FILE NOT FOUND(BRITE ONLY)  
2*P2    #      ANOROOM= NO ROOM TO CREATE FIP   
2B8L    #      ANINUSE= FILE ALREADY EXISTS(BCREATE ONLY)   
2BN=    #   
2C7W    #   
2CMG          SEGENTRY K1WRITEFIP,QK1WRITEFIP  [REWRITE FIP (VIA DOWN)  
2D76          SEGENTRY K2WRITEFIP,QK2WRITEFIP  [CREATE FIP (ACROSS FROM SOUP)   
2DLQ    #   
2F6B    #   
2FL2    XEWR           +EWFULS  
2G5L    XEWN           +EWNOL              [UNIT NOT ONLINE 
2GK=    XEWI           +EWINUSE 
2H4W    XEWCS          +EWCONSEC           [CANT CREATE ON SECURE SU
2HJG    XEWCI          +EWCONINS           [CANT CREATE ON INSECURE SU  
2J46    XEWTC          +EWTCEE             [TRAPS CLOSED FOR EXOFILE ENTRY  
2JHQ    XEWNE          +EWSUNE             [SU UNSUITABLE - NO EXOF ENTRY   
2K3B    XEWNT          +EWSUTC             [SU UNSUITABLE - TRAPS CLOSED
2KH2    #   
2L2L    NX5            #37777777
2LG=    #   
2L^W    XER1  GEOERR   1,EXOTRAN
2MFG    #   
2M^6    #     S/R TO SET X2 POINTING TO EWDAS/EXOF  
2NDQ    #            AND X3 POINTING TO EWDAS/GEXD  
2NYB    #   
2PD2    XHUNT MHUNTW   2,EWDAS,EXOF 
2PXL          MHUNTW   3,EWDAS,GEXD 
2QC=          EXIT  5  0
2QWW    #   
2RBG    #   
2RW6    #              S/R TO FIND AND GET NEXT S.U.
2S*Q    #              LINK X7  
2STB    #              ON  ENTRY AND EXIT   X1  POINTS TO CURRENT SU  ASTUC 
2T*2    #                                   X2  EXOF BLOCK  
2TSL    #                                   X3  GEXD BLOCK  
2W#=    #   
2WRW    #              USES X4,X5   
2X?G    #   
2XR6    NEXTSU  
2Y=Q          SBX   7  FX1  
2YQB          LDN   4  0
2^=2    NX2   LDX   1  FPTR(1)  
2^PL          TXU   1  CXCC 
329=          BCC      NX1                 [JUMP IF END OF CHAIN
32NW          LDX   0  BACK1(1) 
338G          BZE   0  NX1                 [JUMP IF NO MORE ASTUCS  
33N6          BNG   0  NX2                 [JUMP IF DEAD ASTUC  
347Q          LDCT  0  #200 
34MB          ANDX  0  ASMARK(1)
3572          BNZ   0  NX2                 [OR DISENGAGED   
35LL          LDX   0  EXMARK(2)
366=          ANDN  0  BCREATE  
36KW          BZE   0  NX3                 [JUMP IF NOT CREATING FILE   
375G          LDCT  0  #100                [CHECK SCRATCH INHIBIT BIT   
37K6          ANDX  0  HSTUN(1) 
384Q          BNZ   0  NX2                 [JUMP IF SCRATCH INHIBIT 
38JB    NX3   LDX   5  BACK1(1)            [SAVE SERIAL NO  
3942          USESTX   5,NX9,,TBREAK,NX9   [ADD ONE TO COUNT OF USERS AND GET SC
39HL          MHUNTW   3,EWDAS,EXOF 
3=3=          LDX   0  EXMARK(3)
3=GW          ANDN  0  BCREATE  
3?2G          BZE   0  NXES9               [J IF FILE NOT BEING CREATED 
3?G6          LDN   0  CAPPEND             [APPEND  
3?^Q          STO   0  AWORK2(2)           [TRAPS TO BE CHECKED FOR 
3#FB          EXCHOFE  ICL,5,AWORK2(2),NXES9   [DETERMINE IF EXOF ENTRY HAS TRAP
3#^2          PICKREP  6                   [PRESERVE REPLY  
3*DL          TESTREP2 OK,NXES1,NOFILE,NXES2,NOTRAP,NXES3   
3*Y=          BRN      XER1 
3BCW    NXES2   
3BXG          LDX   0  EDSQ 
3CC6          BNG   0  NXES7               [J IF FULL SECURITY IN USE   
3CWQ    NXES1   
3DBB          LDN   0  CWRITE              [WRITE   
3DW2          STO   0  AWORK2(2)           [TRAPS TO BE CHECKED FOR 
3F*L          EXCHOFE  EXOF,5,AWORK2(2),NXES9  [DETERMINE IF EXOF ENTRY HAS 
3FT=          TESTREP2 OK,NXES4,NOFILE,NXES5,NOTRAP,NXES6  [CORRECT TRAPS   
3G#W          BRN      XER1 
3GSG    NXES4   
3H#6          PUTREP   6                   [OLD REPLY   
3HRQ          TESTREP2 OK,NXES4A           [OK+OK MEANS OK TO GO ON 
3J?B          LDX   6  XEWCI(1)            [CANT CREATE SECURE ON INSECURE SU   
3JR2          BRN      NXES8
3K=L    NXES4A  
3KQ=          EXCHOFE  ICL,5,,NXES9,AW     [D&T WRITTEN+ACCESSED FOR ICLSCAFILE 
3L9W          EXCHOFE  EXOF,5,,NXES9,AW    [ "     "   "   "      "  EXOF ENTRY 
3LPG          BRN      NXES9
3M96    NXES5   
3MNQ          PUTREP   6
3N8B          TESTREP2 NOFILE,NXES9        [NOFILE+NOFILE MEANS OK TO GO ON 
3NN2          LDX   6  XEWCS(1)            [CANT CREATE INSECURE ON SECURE SU   
3P7L          BRN      NXES8
3PM=    NXES6   
3Q6W          LDX   6  XEWTC(1)            [EXOFILE ENTRY'S TRAPS CLOSED
3QLG          BRN      NXES8
3R66    NXES3   
3RKQ          LDX   6  XEWNT(1)            [SU UNSUITABLE - TRAPS CLOSED
3S5B          BRN      NXES8
3SK2    NXES7   
3T4L          LDX   6  XEWNE(1)            [SU UNSUITABLE - NO EXOF ENTRY   
3TJ=    NXES8   
3W3W          OPTMESS  6,5  
3WHG          UNLOCKSU 5                   [UNLOCK THIS ONE 
3X36          BRN      NX9  
3XGQ    NXES9   
3Y2B          ADN   7  1                   [UPDATE LINK TO EXIT OK  
3YG2          MHUNTW   3,EWDAS,GEXD 
3Y^L          STO   5  ESERL(3)            [SAVE SERIAL NUMBER OF THIS UNIT 
3^F=    NX1   BZE   4  NX10                [JUMP IF NO UNIT SAVED   
3^YW          RELST    4                   [OTHERWISE RELEASE IT
42DG    NX10  CALL  5  XHUNT
42Y6          ADX   7  FX1  
43CQ          EXIT  7  0
43XB    #   
44C2    #     SCALO NOT AVAILABLE OR IN USE BY S-TRUSTED
44WL    #   
45B=    NX9   BZE   4  NX11                [JUMP IF NO UNIT SAVED   
45TW          RELST    4
46*G    NX11  LDX   4  5                   [SAVE NEW UNIT SERIAL NO.
46T6          MFINDSU  1,4                 [REFIND ASTUC
47#Q          CALL  5  XHUNT
47SB          BRN      NX2                 [JUMP TO GET NEXT UNIT   
48#2    #   
48RL    #     BREAKIN WHILE WAITING FOR LOCK-OUT FROM OTHER PROCESSOR   
49?=    #   
49QW    TBREAK  
4==G          CALL  5  XHUNT
4=Q6          LDN   0  ABREAK   
4?9Q          ORS   0  EMARK(3)            [SET BREAK IN MARKER 
4?PB          BRN      NX1  
4#92    #   
4#NL    #   
4*8=    #   
4*MW    #     READ  S/R LINK X5 ADDRESS X1  
4B7G    #   
4BM6    XREAD   
4C6Q          SBX   5  FX1                 [READ S/R
4CLB          READST   1,XRD1   
4D62          TESTREPNOT   OK,XRD2  
4DKL          LDX   1  ECOR(3)  
4F5=    XRD1  MHUNTW   2,EWDAS,EXOF 
4FJW          ADX   5  FX1  
4G4G          EXIT  5  1
4GJ6    XRD2  TESTREPNOT   EXFAIL,XER1  
4H3Q          ADX   5  FX1  
4HHB          EXIT  5  0
4J32    #   
4JGL    #   
4K2=    #     UNLOCK UNIT S/R   LINK X7  SERIAL NUMBER X1   
4KFW    #   
4K^G    XUNLOCK 
4LF6          SBX   7  FX1  
4LYQ          UNLOCKSU 1
4MDB          CALL  5  XHUNT
4MY2          ADX   7  FX1  
4NCL          EXIT  7  0
4NX=    #   
4PBW    #     OPEN  UNIT  S/R   LINK X7 SERIAL NO. ESERL(3) 
4PWG    #   
4QB6    XOPEN   
4QTQ          OPENST
4R*B          EXIT  7  0
4RT2    #   
4S#L    #   
4SS=    #     START HERE
4T?W    #     THROUGHOUT X2 POINTS TO EXOF BLOCK
4TRG    #                X3 POINTS TO GEXD BLOCK
4W?6    #   
4WQQ    QK2WRITEFIP 
4X=B          NGNC  0  1
4XQ2    QK1WRITEFIP 
4Y9L          LDN   0  0
4YP=          STO   0  AWORK1(2)
4^8W          CALL  5  XHUNT
4^NG          STOZ     EMARK(3)            [ZEROISE RESULT MARKER   
5286 ...      TRACE    EXMARK(2),EXOPEN 
52MQ ...      TRACE    ASUSN(2),
537B    #   
53M2    #     CHECK VALID ENTRY PARAMS  
546L    #   
54L=          LDX   0  EXMARK(2)
555W          LDN   4  BRITE+BSPEC+BSERL+BLOCK   [CHECK SENSIBLE
55KG          ANDX  0  4                         [COMBINATION OF BRITE PARAMS   
5656          TXU   0  4
56JQ          BCC      XROK                      [^ IF OK   
574B          LDX   0  EXMARK(2)
57J2          LDN   4  BCREATE+BSPEC             [CHECK SENSIBLE
583L          ANDX  0  4                         [COMBINATION OF BCREATE PARAMS 
58H=          TXU   0  4
592W          BCC      XROK 
59GG    XMARK GEOERR   1,MARKERR                 [OTHERWISE ERROR   
5=26    XROK  LDX   0  EXMARK(2)
5=FQ          ANDX  0  BOPEN+BANY+BHIGH+BREPQUAL [CHECK NO OTHER INVALID MARKERS
5=^B          BNZ   0  XMARK
5?F2    #   
5?YL          LDX   0  EXMARK(2)
5#D=          ANDN  0  BRITE
5#XW          BNZ   0  XRITE               [JUMP IF FIP TO BE REWRITTEN 
5*CG          LDX   0  EXMARK(2)
5*X6          ANDN  0  BSERL
5BBQ          BZE   0  SERCH               [JUMP IF SERIAL NUMBER NOT SPECIFIED 
5BWB    #   
5CB2    #     SERIAL NUMBER SPECIFIED   
5CTL    #     GET UNIT ON LINE IF NECCESSARY
5D*=    #   
5DSW          LDX   0  EXMARK(2)
5F#G          ANDN  0  BCREATE  
5FS6          BZE   0  PES10               [J IF EXOFILE NOT BEING CREATED  
5G?Q          LDX   7  ASUSN(2) 
5GRB          LDN   5  CAPPEND             [APPEND  
5H?2          EXCHOFE  ICL,7,5,PES10       [TRAPS TO BE CHECKED FOR 
5HQL          PICKREP  6                   [PRESERVE REPLY  
5J==          TESTREP2 OK,PES1,NOFILE,PES2,NOTRAP,PES3  
5JPW          BRN      XER1 
5K9G    PES2
5KP6          LDX   0  EDSQ 
5L8Q          BNG   0  PES7                [J IF FULL SECURITY IN USE   
5LNB    PES1
5M82          LDN   5  CWRITE              [CHECK FOR WRITE TRAPS   
5MML          EXCHOFE  EXOF,,5,PES9        [TO EXOFILE ENTRY
5N7=          TESTREP2 OK,PES4,NOFILE,PES5,NOTRAP,PES6  
5NLW          BRN      XER1 
5P6G    PES4
5PL6          PUTREP   6
5Q5Q          TESTREP  OK,PES4A            [OK+OK MEANS OK TO,GO ON 
5QKB          LDX   5  XEWCI(1)            [CANT CREATE ON INSECURE SU  
5R52          BRN      PES8 
5RJL    PES4A   
5S4=          EXCHOFE  ICL,7,,PES9,AW      [D&T WRITTEN+ACESSED FOR ICLSCAFILE  
5SHW          EXCHOFE  EXOF,,,PES9,AW      [ "     "   "   "      "  EXOF ENTRY 
5T3G          BRN      PES9 
5TH6    PES5
5W2Q          PUTREP   6
5WGB          TESTREP  NOFILE,PES9         [NOFILE+NOFILE MEANS OK TO GO ON 
5X22          LDX   5  XEWCS(1)            [CANT CREATE ON SECURE SU
5XFL          BRN      PES8 
5X^=    PES6
5YDW          LDX   5  XEWTC(1)            [TRAPS CLOSED FOR EXOFILE ENTRY  
5YYG          BRN      PES8 
5^D6    PES7
5^XQ          LDX   5  XEWNE(1)            [SU UNSUITABLE - NO EXOFILE ENTRY
62CB          BRN      PES8 
62X2    PES3
63BL          LDX   5  XEWNT(1)            [SU UNSUITABLE - TRAPS CLOSED
63W=    PES8
64*W          KEEPMESS 5,7  
64TG          LDN   4  AFAIL               [SUPPRESS FURTHER MESSAGE +  
65*6          BRN      P2D                 [IT GIVES OL *DA0 FAIL IN CHINERR
65SQ    PES9
66#B          CALL  5  XHUNT
66S2    PES10   
67?L          USEST    ASUSN(2),P2A,,P2F,P2H
67R=    #   
68=W    #     UNIT NOW MARKED "TO BE KEPT ONLINE" + SCALO CLAIMED   
68QG    #   
69=6    P2G   CALL  5  XHUNT
69PQ          LDX   0  ASUSN(2) 
6=9B          STO   0  ESERL(3)            [PUT SERIAL NUMBER IN GEXD   
6=P2          BRN      PS1            [GO TO SEARCH FIP CELLS   
6?8L    #   
6?N=    #     UNIT NOT ONLINE OR IN USE BY S-TRUSTED
6#7W    #   
6#MG    P2A   CALL  5  XHUNT
6*76          LDX   0  EXMARK(2)
6*LQ          ANDN  0  BSUPP               [CHECK IF TO SUPPRESS LOAD MESSAGE   
6B6B          BZE   0  P2C                 [JUMP IF NOT 
6BL2          KEEPMESS XEWN(1),ASUSN(2)    [UNIT NOT ONLINE 
6C5L          LDN   4  ANONL
6CK=          BRN      P2D  
6D4W    #   
6DJG    #     SCALO NOT AVAILABLE - IPB FAILURE 
6F46    #   
6FHQ    P2H   LDN   4  APLINKF             [IPB FAIL
6G3B          BRN      P2D  
6GH2    #   
6H2L    #     OUTPUT REQUEST FOR UNIT TO BE PUT ONLINE  
6HG=    #   
6H^W    P2C   MUSEST   ASUSN(2),P2E,P2F,,P2H
6JFG          BRN      P2G  
6J^6    #   
6KDQ    #     CANTDO TO REQUEST 
6KYB    #   
6LD2    P2E   LDN   4  ARITE
6LXL          BRN      P2D  
6MC=    #   
6MWW    #     BREAK-IN WHILST WAITING FOR UNIT TO BE PUT ONLINE 
6NBG    #   
6NW6    P2F   LDN   4  ABREAK              [BREAKIN 
6P*Q    P2D   CALL  5  XHUNT
6PTB          ORS   4  EMARK(3) 
6Q*2          BRN      XERR 
6QSL    #   
6R#=    #     BSERL NOT SPECIFIED - START SEARCH OF ALL ONLINE UNITS
6RRW    #   
6S?G    SERCH STOZ     ASUSN(2) 
6SR6          LDN   1  BCCB 
6T=Q          CALL  7  NEXTSU              [GET NEXT UNIT ONLINE
6TQB          BRN      TF4                 [NO SUITABLE UNIT FOUND  
6W=2    #   
6WPL    #     SEARCH FIP CELLS OF SPECIFIED OR CURRENT UNIT 
6X9=    #   
6XNW    PS1   CALL  7  XOPEN               [OPEN UNIT   
6Y8G    PS1A  LDN   0  147  
6YN6          STO   0  HOME(2)             [START OF FIP CELLS  
6^7Q    PS1B  LDX   1  HOME(2)  
6^MB          CALL  5  XREAD               [READ NEXT CELL  
7272          BRN      TF1                 [TRANSFER ERROR  
72LL    PS1C  LDX   0  0(1) 
736=          BNG   0  US1                 [CHECK IF CELL UNUSED
73KW          LDX   5  2(1) 
745G          LDX   6  3(1) 
74K6          LDX   7  4(1)                [CHECK FILENAMES 
754Q          TXU   5  FIP(2)   
75JB          TXU   6  FIP+1(2) 
7642          TXU   7  FIP+2(2) 
76HL          BCS      P5                  [JUMP IF DIFFERENT   
773=          LDX   0  6(1)                [GEN NUMBER CHECK
77GW          SRL   0  12   
782G          LDX   4  FIP+4(2) 
78G6          SRL   4  12   
78^Q          TXU   0  4
79FB          BCS      P5                  [JUMP IF DIFFERENT   
79^2          LDX   0  EXMARK(2)
7=DL          ANDN  0  BCREATE  
7=Y=          BNZ   0  TF5                 [JUMP IF CREATING FIP
7?CW    #   
7?XG    #   
7#C6    #     EXISTING FIP FOUND
7#WQ    #   
7*BB          LDX   4  HOME(2)  
7*W2          LDX   5  BACK2(2) 
7B*L          MFINDEXOF 2,5                [FIND EXOF IN CCB CHAIN  
7BT=          STO   4  HOME(2)             [RESET B S HOME  
7C#W          BRN      XUPDF               [JUMP TO REWRITE 
7CSG    #   
7D#6    #     FILENAME OR GEN DIFFERENT 
7DRQ    #     GET NEXT FIP CELL 
7F?B    #   
7FR2    P5    LDX   0  0(1)                [POINTER TO NEXT CELL
7G=L          BNZ   0  P5A                 [JUMP IF NEXT CELL NOT CONSECUTIVE   
7GQ=          LDN   1  17   
7H9W          ADS   1  ECOR(3)             [UPDATE CORE POINTER 
7HPG          ADS   1  HOME(2)             [ UPDATE B.S HOME
7J96          LDX   1  ECOR(3)  
7JNQ          BRN      PS1C 
7K8B    P5A   SMO      FX1  
7KN2          TXU   0  NX5                 [CHECK IF END OF CHAIN   
7L7L          BCC      TF6                 [JUMP IF IT IS   
7LM=          STO   0  HOME(2)  
7M6W          BRN      PS1B                [CONTINUE SEARCH 
7MLG    #   
7N66    #     NO MORE USED CELLS
7NKQ    #   
7P5B    US1   LDX   0  EXMARK(2)
7PK2          ANDN  0  BCREATE  
7Q4L          BNZ   0  XCRE 
7QJ=          LDN   0  ANFOUND              [FILE NOT FOUND 
7R3W          ORS   0  EMARK(3) 
7RHG          CLOSEST  XERR                [GO TO SEARCH FIP CELLS  
7S36          BRN      XERR 
7SGQ    #   
7T2B    #     ROOM FOUND TO CREATE FILE 
7TG2    #   
7T^L    XCRE  NGNC  0  1
7WF=          ANDS  0  0(1)                [UNSET UNUSED BIT
7WYW          STOZ     1(1)                [FDCELL POINTER  
7XDG          LDN   0  1
7XY6          STO   0  FBUK(2)  
7YCQ          LDX   0  ESERL(3) 
7YXB          STO   0  ASUSN(2)            [PUT SERIAL NO IN EXOF   
7^C2          BRN      XUPDF
7^WL    #   
82B=    #   
82TW    #     REWRITE FIP.  
83*G    #   
83T6    XRITE CALL  7  XOPEN               [OPEN UNIT   
84#Q          LDX   1  HOME(2)  
84SB          CALL  5  XREAD
85#2          BRN      TF2                 [TRANSFER ERROR  
85RL          LDX   5  2(1)                [CHECK FILENAME  
86?=          LDX   6  3(1) 
86QW          LDX   7  4(1) 
87=G          TXU   5  FIP(2)   
87Q6          TXU   6  FIP+1(2) 
889Q          TXU   7  FIP+2(2) 
88PB          BCS      PS1A                [JUMP IF NOT THE SAME
8992          LDX   4  6(1)                [CHECK GEN NUMBER
89NL          SRL   4  12   
8=8=          LDX   0  FIP+4(2) 
8=MW          SRL   0  12   
8?7G          TXU   0  4
8?M6          BCS      PS1A                [JUMP IF NOT THE SAME
8#6Q          LDX   4  BACK2(2) 
8#LB          MFINDEXOF 2,4 
8*62    #   
8*KL    #     HERE TO UPDATE FIP
8B5=    #   
8BJW    XUPDF ADN   1  2
8C4G          LDN   0  FIP(2)   
8CJ6          MOVE  0  15   
8D3Q          CLOSEWR  W,HOME(2)
8DHB          TESTREPNOT   OK,TF3   
8F32          CALL  5  XHUNT
8FGL          STOZ     EMARK(3) 
8G2=    #   
8GFW    XEND  SETREP   OK   
8G^G          SMO      FX2  
8HF6          LDX   0  AWORK1   
8HYQ          BNZ   0  XEND1
8JDB          UP
8JY2    #   
8KCL    #     FIP SUCCESSFULLY CREATED - PREPARE TO OPEN FILE   
8KX=    #   
8LBW    XEND1   
8LWG          STOZ     COPEN(2)            [CLEAR COPEN AND BACK2   
8MB6          STOZ     BACK2(2) 
8MTQ          LDN   0  #7777
8N*B          ANDS  0  EXMARK(2)           [ALSO B0-11 OF EXMARK
8NT2          LDN   0  1                   [CREATE:-
8P#L          STO   0  COPEN(2)            [COUNT OF OPENS=1
8PS=          LDCT  0  #400 
8Q?W          STO   0  EXMARK(2)           [SET WRITE MARKER
8QRG          LDX   7  2
8R?6          EXOFILE  7                   [CHAIN IN EXOF & GIVE IT A NUMBER
8RQQ          LDX   2  7
8S=B          LDX   7  BACK2(2) 
8SQ2          STO   7  CEFN(3)             [SAVE EFN
8T9L          LDX   6  ASUSN(2)            [PICK UP SERIAL NO   
8TP=    #     AS THE FILE IS BEING OPENED FOR WRITING WE HAVE TO INFORM 
8W8W    #     THE CAFS SUBSYSTEM OF THE EVENT   
8WNG          CAFSINFO OPENFILE,CEFN(3) 
8X86          EXMESS
8XMQ          ACROSS   ANTIC,1             [CONNECT FILE
8Y7B    #   
8YM2    #   
8^6L    #     FAILURE CASES 
8^L=    #   
925W    #     TRANSFER FAIL WHILE READING FIP CELLS 
92KG    #   
9356    TF1   LDN   4  AFAIL
93JQ    TF1C  CALL  5  XHUNT
944B    TF1B  ORS   4  EMARK(3)            [SET FAIL BIT
94J2          LDX   0  EXMARK(2)
953L          ANDN  0  BSERL
95H=          BZE   0  TF1A                [^ IF SERIAL NUMBER NOT SPECIFIED
962W          LDN   0  BLOCK
96GG          ANDX  0  EXMARK(2)
9726          BNZ   0  XERR                [^ IF LOCKED ON ENTRY
97FQ          BRN      XREL 
97^B    TF1A  LDX   6  ESERL(3)            [OTHERWISE (BCREATE ONLY) ATTEMPT
98F2          SMO      FX2                 [TO SEARCH NEXT ONLINE UNIT  
98YL          STO   6  AWORK4              [PRESERVE X6 
99D=          MFINDSU  1,6  
99XW          CALL  7  NEXTSU              [GET NEXT S.U,IF ANY 
9=CG          BRN      XREL                [JUMP IF NO MORE 
9=X6          SMO      FX2  
9?BQ          LDX   6  AWORK4   
9?WB          LDCT  0  #400 
9#B2          ANDX  0  EMARK(3) 
9#TL          ERS   0  EMARK(3)            [UNSET   
9**=          BNZ   0  PS1                 [J IF NOT TO UNLOCK PREVIOUS UNIT
9*SW          LDX   1  6
9B#G          CALL  7  XUNLOCK             [UNLOCK UNIT 
9BS6          RELST    6
9C?Q          CALL  5  XHUNT
9CRB          BRN      PS1                 [BACK TO SEARCH NEXT UNIT
9D?2    #   
9DQL    #   
9F==    #     READ FAIL FOR FIP REWRITE 
9FPW    #   
9G9G    TF2   LDN   4  AFAIL
9GP6          BRN      TF1C 
9H8Q    #   
9HNB    #     TRANSFER FAIL WHILST WRITING FIP  
9J82    #   
9JML    TF3   LDN   4  ARITE
9K7=          BRN      TF1C 
9KLW    #   
9L6G    #   
9LL6    #     NO SUITABLE UNIT FOUND (CREATE ONLY)  
9M5Q    #   
9MKB    TF4   CALL  5  XHUNT
9N52          LDX   0  EMARK(3) 
9NJL          ANDN  0  ABREAK   
9P4=          BNZ   0  XERR 
9PHW          LDN   0  ANONL
9Q3G          ORS   0  EMARK(3) 
9QH6          BRN      XERR 
9R2Q    #   
9RGB    #   
9S22    #     FILE FOUND WHILST CREATING.   
9SFL    #   
9S^=    TF5   LDX   1  FX1  
9TDW          OPTMESS  XEWI(1),ESERL(3)    [FILENAME IN USE 
9TYG          CALL  5  XHUNT
9WD6          LDN   0  AINUSE   
9WXQ          ORS   0  EMARK(3) 
9XCB          CLOSEST  TF5A 
9XX2          TESTREPNOT   OK,XER1  
9YBL          CALL  5  XHUNT
9YW=    TF5A  LDN   0  BSERL
9^*W          ANDX  0  EXMARK(2)
9^TG          BNZ   0  XREL 
=2*6          BRN      TF1A 
=2SQ    #   
=3#B    #   
=3S2    #     NO ROOM TO CREATE FIP ON THIS SU  
=4?L    #   
=4R=    #   
=5=W    TF6   LDX   1  FX1  
=5QG          OPTMESS  XEWR(1),ESERL(3)    [OPTIONALLY OUTPUT NO ROOM   
=6=6          LDN   4  ANOROOM  
=6PQ          BRN      TF1C 
=79B    #   
=7P2    #     IN SOME FAILURE CASES UNIT MUST BE UNLOCKED + RELEASED
=88L    #   
=8N=    XREL  LDX   1  ESERL(3) 
=97W          CALL  7  XUNLOCK  
=9MG          RELST    ESERL(3) 
==76    #   
==LQ    #     FAILURE CASE TERMINATION IS UP OR ACROSS TO K1CHINERR 
=?6B    #   
=?L2    XERR  SETREP   EXFAIL   
=#5L          SMO      FX2  
=#K=          LDX   0  AWORK1   
=*4W          BZE   0  XERR1
=*JG          ACROSS   CHINERR,1
=B46    XERR1 UP
=BHQ    #   
=C3B          MENDAREA 30,K99WRITEFIP   
=CH2    #END
^^^^ ...321744250003