{{htmlmetatags>metatag-description:(ICL George 3 and George 4 source: WRITEFIP867)}}
====== WRITEFIP867 ======
(George Source)
**Macros used:** [[george:macro:ACROSS|ACROSS]], [[george:macro:BLOCK|BLOCK]], [[george:macro:CAFSINFO|CAFSINFO]], [[george:macro:CLOSEST|CLOSEST]], [[george:macro:CLOSEWR|CLOSEWR]], [[george:macro:EXCHOFE|EXCHOFE]], [[george:macro:EXMESS|EXMESS]], [[george:macro:EXOFILE|EXOFILE]], [[george:macro:GEOERR|GEOERR]], [[george:macro:KEEPMESS|KEEPMESS]], [[george:macro:MENDAREA|MENDAREA]], [[george:macro:MFINDEXOF|MFINDEXOF]], [[george:macro:MFINDSU|MFINDSU]], [[george:macro:MHUNTW|MHUNTW]], [[george:macro:MUSEST|MUSEST]], [[george:macro:OPENST|OPENST]], [[george:macro:OPTMESS|OPTMESS]], [[george:macro:PICKREP|PICKREP]], [[george:macro:PUTREP|PUTREP]], [[george:macro:READST|READST]], [[george:macro:RELST|RELST]], [[george:macro:SEG|SEG]], [[george:macro:SEGENTRY|SEGENTRY]], [[george:macro:SETREP|SETREP]], [[george:macro:TESTREP|TESTREP]], [[george:macro:TESTREP2|TESTREP2]], [[george:macro:TESTREPNOT|TESTREPNOT]], [[george:macro:TRACE|TRACE]], [[george:macro:UNLOCKSU|UNLOCKSU]], [[george:macro:UP|UP]], [[george:macro:USEST|USEST]], [[george:macro:USESTX|USESTX]]
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