{{htmlmetatags>metatag-description:(ICL George 3 and George 4 source: FHOBJBL860)}}
====== FHOBJBL860 ======
(George Source)
**Macros used:** [[george:macro:ACROSS|ACROSS]], [[george:macro:AUTFIN|AUTFIN]], [[george:macro:AUTSTART|AUTSTART]], [[george:macro:BC|BC]], [[george:macro:BITDEFS|BITDEFS]], [[george:macro:BS|BS]], [[george:macro:BWNZ|BWNZ]], [[george:macro:BXE|BXE]], [[george:macro:BXGE|BXGE]], [[george:macro:COMPQU|COMPQU]], [[george:macro:FINMOVE|FINMOVE]], [[george:macro:FOUTMOVE|FOUTMOVE]], [[george:macro:FREECORE|FREECORE]], [[george:macro:FRITE|FRITE]], [[george:macro:JBC|JBC]], [[george:macro:JBS|JBS]], [[george:macro:LOCKCA|LOCKCA]], [[george:macro:MENDAREA|MENDAREA]], [[george:macro:MFREEW|MFREEW]], [[george:macro:MHUNTW|MHUNTW]], [[george:macro:MTCHECK|MTCHECK]], [[george:macro:PAIR|PAIR]], [[george:macro:READB|READB]], [[george:macro:SEG|SEG]], [[george:macro:SEGENTRY|SEGENTRY]], [[george:macro:SETNCORE|SETNCORE]], [[george:macro:SETREP|SETREP]], [[george:macro:STEPWRITE|STEPWRITE]], [[george:macro:TESTREP2|TESTREP2]], [[george:macro:TESTRPN2|TESTRPN2]], [[george:macro:TOPCA|TOPCA]], [[george:macro:TOPCA1|TOPCA1]], [[george:macro:TOPFCAB2|TOPFCAB2]], [[george:macro:TOPFCB2|TOPFCB2]], [[george:macro:VFREE|VFREE]], [[george:macro:VFREEW|VFREEW]], [[george:macro:WRITEB|WRITEB]]
22FL SEG FHOBJBL,860,FILESTORE
22^= #
23DW # THIS SEGMENT DEALS WITH THE BLOCK MODES #21,#22, AND #23. IT IS
23YG # ENTERED ACROSS FROM MASTER SEGMENT FHOBJ WITH SOME BUT NOT ALL THE
24D6 # CHECKS COMPLETED. IN PARTICULAR THE 'END OF FILE VIOLATION' CHECKS
24XQ # HAVE NOT BEEN DONE AS THE MEANINGS OF POINTER VALUES FOR BLOCK
25CB # ACCESS DIFFER FROM THE MEANINGS FOR RECORD ACCESS, SO FHOBJ TESTS
25X2 # WOULD NOT BE APPROPRIATE.
26BL #
26W= SEGENTRY K21FHOBJBL,MODE21
27*W SEGENTRY K22FHOBJBL,MODE22
27TG SEGENTRY K23FHOBJBL,MODE23
28*6 #
28SQ # AWORK AND ACC CONVENTIONS ARE AS FOR FHOBJ.
29#B #
29S2 # BIT IDENTIFIERS:-
2=?L BITDEFS AWORK4,23,MFHEOFMULT [WE'VE RUN OFF THE END OF A
2=R= [MULTIFILE. NO FURTHER PERIS
2?=W [CAN BE IMPLEMENTED.
2?QG BITDEFS AWORK4,22,MFHDIRMOD [THIS IS A DIRECTORY MODE WE'RE
2#=6 [IMPLEMENTING
2#PQ BITDEFS AWORK4,21,MFHRECEOF [LAST READ PERI LEFT US
2*9B [AFTER EOF.
2*P2 BITDEFS AWORK4,20,MFHBLOCKEOF [SIMILAR BIT FOR BLOCK PERIS.
2B8L [HAS TO BE HANDLED SEPARATELY
2BN= [OWING TO DIFFERENT POINTER
2C7W [CONVENTIONS.
2CMG BITDEFS AWORK4,19,MFHNOT1ST [THIS IS NOT THE 1ST PERI.
2D76 BITDEFS AWORK4,18,MFHDIROWN [USER OWNS THE FILES IN
2DLQ [THIS DIRECTORY
2F6B BITDEFS AWORK4,17,MFHNONSER [THIS IS A DA,DR, OR MT FILE
2FL2 BITDEFS AWORK4,16,MFHCHUCKOFF [WE ARE THROWING THIS FILE
2G5L [OFFLINE (SET DURING MODE #33).
2GK= BITDEFS AWORK4,15,MFHTRAPSALT [WE ARE ALTERING THIS FILE'S
2H4W [TRAPS (SET DURING MODE #33).
2HJG BITDEFS AWORK4,14,MFHTABSSET [THE TAB SYSTEM HAS BEEN
2J46 [INITIALISED.
2JHQ #
2K3B #
2KH2 #
2L2L # SUBROUTINE TO CHECK THE COUNT FIELD.
2LG= #
2L^W VALIDCOUNT
2MFG LDX 0 ACA3(2)
2M^6 SBN 0 512
2NDQ BNZ 0 NILCOUNT [J IF COUNT NOT 512
2NYB EXIT 6 0
2PD2 #
2PXL # ********************
2QC= #
2QWW # SUBROUTINE TO SET UP A FILE/FWB, MOVE THE USER BUFFER OUT TO IT,
2RBG # AND VALIDATE THE RECORD HEADERS (UNLESS THE FILE IS NOT SERIAL).
2RW6 # CALLED ON X6 AND COORDINATES.
2S*Q #
2STB MOVEOUTBUF
2T*2 SBX 6 FX1 [RELATIVISE LINK
2TSL SETNCORE 512,3,FILE,FWB [X3->FWB
2W#= LDN 4 A1(3) [X4->DATA DESTINATION
2WRW LDX 3 AWORK2(2) [X3->DATA WITHIN PROG
2X?G LDN 5 512 [LENGTH OF MOVE
2XR6 FOUTMOVE APETADDR(2),3,4,5,HLOCK2,2 [DO MOVE
2Y=Q ... MHUNTW 3,FILE,FWB [X3->FWB CONTAINING DATA
2YQB ... JBS NONSERCHK,2,MFHNONSER [J TO NONSER CHECKS IF NONSER
2^=2 LDN 5 0 [OFFSET DOWN DATA
2^PL RECHDLOOP
2^SQ ... SMO 5
3259 ... LDX 0 A1(3) [NEXT RECORD HEADER
32*N ... LDX 4 MS15(1) [MS 15 BITS MUST NOT BE SET
32L7 ... ANDX 4 0 [IN A VALID USER-SUPPLIED RECORD
32WL ... BNZ 4 NILDATA [HEADER.
3375 ... BXE 0 ONE(1),NILDATA [1 WORD RECORD ILLEGAL
33CJ ... [(EVEN IN AN AMORPHOUS FILE).
33N6 BZE 0 NOTBAD [OK IF IT'S END OF BLOCK
33XY ... ADX 5 0 [UPDATE OFFSET
347Q BXGE 5 BSBS,NILDATA [DATA FORMAT ERROR IF OFF END OF BLOC
34MB BRN RECHDLOOP
3572 NOTBAD
35LL ADX 6 FX1
366= EXIT 6 0
366* ...MS15 #77777000
366D ...ONE 1
366K ...#
366Y ...# IF THE FILE IS NONSERIAL THE ONLY FORMAT CHECKS APPLIED ARE TO THE
367? ...# INDEX BLOCKS OF A *MT FILE. THIS CHECK IS DONE IN THE STANDARD
367L ...# 'MTCHECK' MACRO, WHICH REQUIRES DATA TO BE CARRIED FORWARD BETWEEN
367^ ...# CALLS. WE USE EUSE1 AND EUSE2 OF THE ENT BLOCK LEFT BY ASSIGN TO
368# ...# CARRY THIS DATA.
368M ...# WE ASSUME THAT EUSE1 IS ZERO FOR TERMINAL FILES.
3692 ...#
369* ...# EUSE1=0 (INITIALLY)
369N ...# 'BULK FILE ADDRESS' STATISTIC NEEDED BY MTCHECK.
36=3 ...#
36=B ...# EUSE2=NO OF INDEX BLOCKS LEFT TO CHECK.
36=P ...#
36?4 ...NONSERCHK
36?C ... MHUNTW 3,FILE,ENT [X3->ENT
36?Q ... JBC NOTBAD,3,BEMT [NO CHECK IF NOT *MT
36#5 ... BWNZ EUSE1(3),NOT1STBLK [J UNLESS FIRST BLOCK ACCEPTED
36#D ... TOPFCB2 1 [X1->FCB
36#R ... LDX 0 BULKMOD(1) [NO OF INDEX BLOCKS
36*6 ... STO 0 EUSE2(3) [INITIALISE EUSE2
36*F ... LDX 1 FX1
36*S ...NOT1STBLK
36B7 ... LDX 4 EUSE2(3) [PICK UP NO OF INDEX BLOCKS LEFT
36BG ... BZE 4 NOTBAD [J IF NONE
36BT ... MTCHECK FILE,FWB,EUSE1(3) [DO CHECK
36C8 ... TESTREP2 CORRUPT,NILDATA [ILLEGAL IF CORRUPT
36CH ... SBN 4 1 [DECR COUNT OF INDEX BLOCKS
36CW ... BNZ 4 MOREINDEX [J IF NOT THE LAST EXPECTED
36D9 ... TESTRPN2 ENDFILE,NILDATA [CORRUPT IF LASTBLOCK DID NOT END
36DJ ... [INDEX DATA PROPERLY
36DX ...STOREDATA
36F= ... MHUNTW 3,FILE,ENT
36FK ... STO 4 EUSE2(3) [UPDATE DATA
36FY ... LDX 0 ACOMMUNE1(2) [MTCHECK SENDS NUM BACK FOR STORAGE
36G? ... STO 0 EUSE1(3)
36GL ... BRN NOTBAD
36G^ ...MOREINDEX
36H# ... TESTREP2 ENDFILE,NILDATA [WE EXPECT MORE INDEX BLOCKS SO THAT
36HM ... [CAN'T HAVE BEEN THE LAST
36J2 ... BRN STOREDATA
36J* ...#
36KW #
375G # ********************
37K6 # SUBROUTINE TO CHECK WHETHER A MODE #22 WOULD READ END OF FILE.
384Q # IT EXITS 6 0 IF MODE #22 WOULD, OTHERWISE IT EXIT 6 1. EXPECTS
38JB # X1->FCA, X3->FCB.
3942 #
39HL WILLREADEOF
3=3= LDX 0 FREADBLOCK(1) [PICK UP BLOCK READ PTR
3=GW BPZ 0 NBOF [J UNLESS AT BEG FILE
3?2G LDX 0 FBLMOD(3) [BEG FILE IS STILL EOF IF FILE
3?G6 SBN 0 FBLKS-A1 [EMPTY
3?SH ... BZE 0 (6) [EXIT 6 0 IF EMPTY
3#6Y ... BRN NOTEOFNEXT
3#FB NBOF
3#^2 SBX 0 FBLMOD(3)
3*DL SBN 0 A1-1
3*Y= ... BPZ 0 (6) [EXIT 6 0 IF ABOUT TO READ EOF
3BCW ...NOTEOFNEXT
3BXG EXIT 6 1 [ELSE EXIT 6 1
3CC6 #
3CWQ # ********************************************************************
3DBB #
3DW2 # MODE #21 IS VERY SIMPLE. WE CHECK THE COUNT, MOVE OUT AND CHECK
3F*L # THE DATA, AND DO A WRITEB.
3FT= #
3G#W MODE21
3GSG CALL 6 VALIDCOUNT [CHECK COUNT
3H#6 CALL 6 MOVEOUTBUF [MOVE OUT BUFFER AND CHECK IT
3HRQ WRITEB ,ANSWER
3J?B TESTREP2 FILEFULL,XFILEFULL,GLUTTON,TOOMUCH
3JR2 BRN SETREP [JUMP TO WINDUP CODE
3K=L #
3KQ= # ********************************************************************
3L9W #
3LPG # MODE #22 IS NOT SO SIMPLE. FIRST WE CHECK THE COUNT WORD AND
3M96 # ESTABLISH WHETHER WE ARE ABOUT TO READ END OF FILE, JUMPING INTO
3MNQ # THE EXCEPTION SECTION IF WE ARE.
3N8B #
3NN2 MODE22
3P7L CALL 6 VALIDCOUNT [CHECK COUNT
3PM= TOPFCAB2 1,3 [X1->FCA,X3->FCB
3Q6W CALL 6 WILLREADEOF [ARE WE ABOUT TO READ EOF?
3QLG BRN MODE22EOF [J IF SO
3R66 BC 2,MFHBLOCKEOF [ENSURE EOF INDICATOR CLEAR
3RKQ #
3S5B # **********
3SK2 #
3T4L # HAVING REMOVED ALL POSSIBILITY OF FAILURE WE DO AN 'AUTSTART'WHICH
3TJ= # SETS THE PROGRAM RUNNING AUTONOMOUSLY.
3W3W #
3WHG AUTSTART
3X36 #
3XGQ # **********
3Y2B #
3YG2 # NOW WE HAVE GONE AUTONOMOUS WE READ THE DATA INTO A FRB
3Y^L #
3^F= READB
3^YW #
42DG # **********
42Y6 #
43CQ # WE NOW MOVE THE DATA INTO THE OBJECT PROGRAM. WE ARE NOT ALLOWED TO
43XB # MOVE IN THE RUBBISH AFTER THE END OF VALID DATA IN A BLOCK OF A SERIA
44C2 # FILE AS THIS MAY BE SENSITIVE DATA FROM A PREVIOUS USE OF THE BLOCK.
44WL # SO WE ESTABLISH WHERE THE END OF USEFUL DATA IS BY CHAINING DOWN THE
45B= # RECORD HEADERS TILL WE FIND THE ZERO WORD AND THEN MOVE THIS ZERO
45JG ...# THROUGH THE REMAINDER OF THE BLOCK.
45QQ ...# IT IS POSSIBLE THAT THE END OF THE BLOCK WILL BE INDICATED BY
45^2 ...# A DUMMY RECORD (B0 OF HEADER SET). IN THIS CASE WE ZEROISE IT AND
467= ...# PROCEED FOR A NORMAL BLOCK END.
46*G #
46T6 MHUNTW 3,FILE,FRB
47#Q JBS NOTSERM22,2,MFHNONSER [J IF NOT SERIAL FILE
47SB LDN 7 0 [OFFSET DOWN BLOCK
48#2 NEXTRHD
48RL SMO 7
48Y4 ... LDX 0 A1(3) [PICK UP RECHD
494G ... BPZ 0 NOTDUMMY [J UNLESS DUMMY RECORD.
498Y ... LDN 0 0 [TREAT DUMMY REC HEADER AS ZERO.
49*B ... SMO 7
49FS ... STOZ A1(3)
49L= ...NOTDUMMY
49QW ADX 7 0 [UPDATE OFFSET
4==G BNZ 0 NEXTRHD [LOOP IF NOT OF END OF BLOCK
4=Q6 LDN 6 511
4?9Q SBX 6 7 [X6 = NO OF WDS TO MOVE ZERO THRU
4?PB BZE 6 NOZEROMOVE [J IF NO MOVE NEEDED
4#92 SMO 7
4#NL LDN 4 A1(3) [X4->ZERO
4*8= LDX 5 4
4*MW ADN 5 1 [X5->WORD AFTER ZERO
4B7G SMO 6
4BM6 MOVE 4 0 [DO MOVE
4C6Q NOZEROMOVE
4CLB NOTSERM22
4D62 #
4DKL # **********
4F5= #
4FJW # WE MOVE THE DATA IN USING FINMOVE AND FREE THE BUFFER
4G4G #
4GJ6 LDN 3 A1(3) [DATA
4H3Q LDX 4 AWORK2(2) [BUFFER ADDR IN PROG
4HHB FINMOVE APETADDR(2),4,3,ACA3(2),HLOCK2,2
4J32 MFREEW FILE,FRB
4JGL #
4K2= # **********
4KFW #
4K^G # FINALLY WE COMPUTE THE REPLY AND DO AN 'AUTFIN' WHICH SETS THE REPLY,
4LF6 # CLEANS UP, AND SENDS THE OLPA TO SLEEP READY FORTHE NEXT PERI.ON
4LYQ # RETURN WE ENTER FHOBJ TO LOOK AT THE NEW PERI. WE CANNOT USE THE
4MDB # NORMAL WINDUP CODE IN THIS CASE SINCE WE HAVE GONE AUTONOMOUS AND
4MY2 # THIS INVALIDATES THE USE OF THE NORMAL MACROS.
4NCL #
4NX= LDX 7 AWORK2(2) [BUFFER ADDR
4PBW ADN 7 512 [PLUS DATA TRANSFERRED
4PWG ANDX 7 REPMASK(1) [AND OUT MS6 BITS
4QB6 AUTFIN 7 [SET REPLY AND GO WAITING
4QTQ BC 2,MFHNOT1ST [GO ACROSS TO ANALYSE PERI
4R*B ACROSS FHOBJ,1
4RT2 REPMASK #777777 [REPLY MASK
4S#L #
4SS= # ********************************************************************
4T?W #
4TRG # MODE #23 IS ONLY ALLOWED IF WE ARE NOT AT BEGINNING OF FILE AND IF
4W?6 # WE ARE NOT ABOUT TO READ EOF FOR THE SECOND TIME.
4WQQ #
4X=B MODE23
4XQ2 CALL 6 VALIDCOUNT [CHECK THE COUNT FIELD
4Y9L TOPFCAB2 1,3 [X1->FCA,X3->FCB
4YP= LDX 0 FREADBLOCK(1)
4^8W BNG 0 NILBOF [J IF AT BEG FILE
4^NG JBC NOTEOF23,2,MFHBLOCKEOF [J IF LAST MODE #22 DIDNT READ EOF
5286 CALL 6 WILLREADEOF [CHECK THAT MORE DATA HAS BEEN ADDED
52MQ BRN NILEOF [NO - ILLEGAL EOF
537B NOTEOF23
53M2 #
546L # **********
54L= #
555W # AL IS OK. WE SET FREADWORD TO A1 TO TRICK A LATER STEPWRITE INTO
55KG # GETTING A POINTER TO THE DATA DESTINATION AND DOING ALL THE CAREFUL
5656 # UPDATING FOR US. WE THEN CALL THE SUBROUTINE WHICH MOVES THE BUFFER
56JQ # OUT INTO A FWB AND VALIDATES IT.
574B LDN 0 A1
57J2 STO 0 FREADWORD(1) [FIDDLE FREADWORD
583L LDX 1 FX1 [RESTORE CORRUPTED ACC
58H= CALL 6 MOVEOUTBUF [MOVE OUT AND CHECK BUFFER
592W #
59GG # **********
5=26 #
5=FQ # A CALL TO STEPWRITE NOW GIVES US X3->DATA DESTINATION AND DOES THE
5=^B # CAREFUL UPDATING. WE MOVE THE DATA ACROSS, FREE THE BUFFER, AND
5?F2 # ENTER THE WINDUP ROUTINE.
5?YL STEPWRITE
5#D= MHUNTW 2,FILE,FWB
5#XW ... ADN 2 A1 [X2->DATA
5*CG MOVE 2 0 [DO 512 WD MOVE
5*X6 SBN 2 A1 [X2->FWB
5BBQ FREECORE 2 [FREE FWB
5BLJ ... FRITE ,AUT
5BWB #
5CB2 # ********************************************************************
5CTL #
5D*= # THE WINDUP CODE JUST GOES ACROSS TO FHOBJ ENTRY 2.
5DSW #
5F#G SETREP
5FS6 ACROSS FHOBJ,2 [RETURN TO FHOBJ
5G?Q #
5GRB # ********************************************************************
5H?2 #
5HQL # THIS SECTION DEALS WITH EXCEPTIONS.
5J== #
5JPW # SUBROUTINE TO SET X7=#05000000 (I.E. THE OWN MON EVENT BITS) IF
5K9G ...# OWN MONITORING WAS USED. OTHERWISE X7 IS ZEROISED.
5KP6 #
5L8Q MCHOWN
5LDJ ... LDN 7 0
5LNB LDX 0 ACA1(2) [MODE WORD
5M82 SRL 0 6
5MML ANDN 0 #777 [PICK UP ADDITIVE MODE BITS
5N7= SBN 0 #300
5NLW BNZ 0 (6) [EXIT IF NOT OWN MON
5P6G LDCT 7 #050 [SET UP OWN MON REPLY
5PL6 EXIT 6 0
5Q5Q #
5QKB # ********************
5R52 #
5RJL # SUBROUTINE TO RESET THE OLPA LINK TO ENTER K1FHOBJ AND TRANSFER TO
5S4= # THE PCA. THIS IS NECESSARY EVERY TIME WE ENTER OLPODD TO ILLEGAL OR
5SHW # TO DEAL WITH LOBS EXCEEDED.
5T3G #
5TH6 TOPCA
5W2Q TOPCA1 RESETLINK(1) [CARRY OUT RESET AND CHANGE
5WGB EXIT 6 0
5X22 RESETLINK
5XFL PAIR FHOBJ,1
5X^= #
5YDW # ********************
5YYG #
5^D6 # SUBROUTINE TO CHECK FOR AND IF POSSIBLE IMPLEMENT A SWITCH OF
5^XQ # MULTIFILE ELEMENTS. IF A SWITCH TAKES PLACE WE JUMP BACK TO FHOBJ
62CB # TO REPEAT THE PERI WITH THE NEW FILE. OTHERWISE WE EXIT. IF
62X2 # NECESSARY THE 'END OF MULTIFILE' MARKER WILL HAVE BEEN SET.
63BL #
63W= MULTSWITCH
64*W SBX 6 FX1
64TG COMPQU NOTAMULT [EXIT IF NOT A MULTIFILE
65*6 BRN TOFHOBJ [J TO REENTER FHOBJ IF SWITCH DONE
65SQ BS 2,MFHEOFMULT [SET SWITCH TO SHOW MF DEAD
66#B LDX 3 APETADDR(2)
66S2 LOCKCA 3,ACAP(2) [RESET LOCK ON CA (COMPQU CLEARS LOCK
67?L NOTAMULT
67R= ADX 6 FX1
68=W EXIT 6 0
68QG TOFHOBJ
69=6 ACROSS FHOBJ,1
69PQ #
6=9B # ********************
6=P2 #
6?8L # IF WE GET FILE FULL WHILE WRITING WE ATTEMPT A MULTELEM SWITCH.
6?N= # IF THIS FAILS WE EITHER SET AN OWN MON REPLY OR ILLEGAL AS
6#7W # APPROPRIATE.
6#MG #
6*76 XFILEFULL
6*## ... VFREE FILE,FWB [MAY BE LEFT BY WRITEB
6*FG ... LDX 1 FX1
6*LQ CALL 6 MULTSWITCH
6BL2 CALL 6 MCHOWN [CHECK IF OWN MON
6C5L BNZ 7 SETREP [J TO SET REPLY IF SO
6CK= LDN 3 FYOUTFULL [ILLEGAL TYPE
6D4W LDX 4 FTYPNO(2) [THIS ILLEGAL REQUIRES X4 AS WELL AS
6DJG #
6F46 # **********
6FHQ #
6G3B # ILLEGALING IS DONE IN OLPDD. WE TRANSFER TO THE PCA AND ENTER OLPODD.
6GH2 #
6H2L OUTILL
6HG= CALL 6 TOPCA
6H^W ACROSS OLPODD,4
6JFG #
6J^6 # **********
6KDQ #
6KYB # A MODE #22 HAS REALISED IT IS ABOUT TO READ EOF. IF BIT MFHBLOCKEOF
6LD2 # IS CLEAR THIS IS THE FIRST OCCURENCE SO WE ATTEMPT A MULTIFILE ELEM
6LXL # SWITCH. IF THIS FAILS WE SET BIT MFHBLOCKEOF AND SET UP A REPLY IN X7
6MC= # INDICATING END OF FILE, POSSIBLY WITH THE OWN MON EVENTS BIT SET
6MWW # AS WELL.
6NBG #
6NW6 MODE22EOF
6P*Q LDX 1 FX1 [CORRUPT ON ENTRY TO THIS CODE
6PTB JBS SECONDEOF,2,MFHBLOCKEOF [J IF SECOND TIME
6Q*2 CALL 6 MULTSWITCH [ATTEMPT MULTELEM SWITCH
6R#= CALL 6 MCHOWN [CHECK IF OWN MON AND SET BITS
6RRW [IN X7 IF APPROPRIATE.
6S?G LDX 0 AWORK2(2) [BUFFER ADDRESS
6SR6 ANDX 0 REPMASK(1) [MASK OUT MS 6 BITS
6T=Q ORX 7 0 [ASSEMBLE REPLY
6TQB BS 2,MFHBLOCKEOF [SET EOF SWITCH
6W=2 BRN SETREP [AND JUMP TO WINDUP CODE
6WPL #
6X9= # **********
6XNW #
6Y8G # IF EOF HAS BEEN DETECTED TWICE AN END OF FILE VIOLATION HAS OCCURRED
6YN6 # SO WE EITHER SET AN OWN MON REPLY OR ILLEGAL.
6^7Q #
6^MB SECONDEOF
72LL CALL 6 MCHOWN [SET OWN MON BITS IF OWN MON
736= BNZ 7 SETREP [ TO WIND UP IF REPLY SET
73KW NILEOF
745G LDX 1 FX1 [MODE #23 JOINS HERE WITH X1 CORRUPT
74K6 LDN 3 FYENDFILE [ILLEGAL END OF FILE
754Q BRN OUTILL
75JB #
7642 # **********
76HL #
773= # IF THE LIMIT ON ONLINE BS IS REACHED WE GO TO OLPODD
77GW #
782G TOOMUCH
78G6 CALL 6 TOPCA [TRANSFER TO PCA
78^Q ACROSS OLPODD,2
79FB #
79^2 # **********
7=DL #
7=Y= # OTHER ILLEGAL SITUATIONS ARE:-
7?CW #
7?XG # COUNT OUT OF RANGE
7#C6 #
7#WQ NILCOUNT
7*BB LDN 3 FYCOUNT
7*W2 BRN OUTILL
7B*L #
7BT= # ILLEGAL BEG FILE VIOLATION
7C#W #
7CSG NILBOF
7D#6 LDX 1 FX1 [CORRUPT ON JUMPING HERE
7DRQ LDN 3 FYBEGFILE
7F?B BRN OUTILL
7FR2 #
7G=L # ILLEGAL DATA FORMAT
7GQ= #
7H9W NILDATA
7HC4 ... VFREEW FILE,FWB
7HJ= ... LDX 1 FX1
7HPG LDN 3 FYDATAER
7J96 BRN OUTILL
7JNQ #
7K8B #
7KN2 #
7L7L #
7LM= MENDAREA 30,K99FHOBJBL
7M6W #
7MLG #END
^^^^ ...705514120016