22FL SEG FHOBJ,860,FILE 22^= # 23DW # THIS SEGMENT IS THE MAIN PATH OF FILEHANDLER. IT DOES THE INITIAL 23YG # ANALYSIS AND BASIC CHECKING OF ALL PERIS, AND ACTUALLY IMPLEMENTS 24D6 # THE MOST COMMON MODES. 24XQ # SEGMENTS FHOBJDIR, FHOBJBL AND FHOBJIND HANDLE THE REST. 25CB # 25X2 # 26BL SEGENTRY K1FHOBJ,PERI [ENTRY TO DEAL WITH A PERI. 26W= SEGENTRY K2FHOBJ,SETREP [REENTRY FROM OTHER CODE TO SET 27*W [A REPLY AND WIND UP THE TRANSFER. 27TG SEGENTRY K3FHOBJ,M0FOUND [OK RETURN FROM MODE #0 CODE IN 28*6 [FHOBJIND 28SQ SEGENTRY K4FHOBJ,NOTFOUND ['NOT FOUND' RETURN FROM MODE #0 CODE 29#B SEGENTRY K5FHOBJ,NOTINDMODE3 [OK RETURN FROM MODE #3 INDEXING 29S2 [CHECKS IN FHOBJIND 2=?L SEGENTRY K56FHOBJ,OKINDMODE4 [OK RETURN FROM FHOBJIND MODE #4 2=R= [INDEXING CODE IF RECORD IS KEYED. 2?=W [WOULD BE K6 BUT THID IS RESERVED 2?QG [FOR TRACING LEVELS 2#=6 SEGENTRY K7FHOBJ,NOTINDMODE4 [DITTO: BUT THE RECORD IS NOT KEYED 2#PQ [AND A BEGINNING OF FILE CHECK IS 2*9B [NEEDED 2*P2 SEGENTRY K8FHOBJ,YESOL3 [RETURN FROM MODE #12 CODE 2B8L SEGENTRY K9FHOBJ,NILDATA [VARIOUS ILLEGAL RETURNS 2BN= SEGENTRY K10FHOBJ,NILCOUNT 2C7W SEGENTRY K11FHOBJ,OUTILLBOF 2CMG SEGENTRY K12FHOBJ,OUTILLEOF 2D76 # 2DLQ # AWORK AND ACC CONVENTIONS:- 2F6B # 2FL2 # AWORK1 IS SET UP WITH BIT 0 SHIFTED RIGHT N PLACES WHERE N IS 2G5L # THE MODE. THIS IS DONE BY THE INITIAL ANALYSIS CODE, AND MAKES 2GK= # IT POSSIBLE TO ESTABLISH IF THE MODE FALLS INTO A GIVEN SET BY 2H4W # SIMPLY 'AND'ING AWORK1 AGAINST A SUITABLE BIT MASK. 2HJG # THE DIRECTORY MODES #30 ETC ARE TREATED AS THEIR CORRSP RECORD 2J46 # MODES FOR THIS PURPOSE. 2JHQ # 2K3B # AWORK2 IS SET UP BY THE INITIAL ANALYSIS CODE TO CONTAIN THE 2KH2 # ADDRESS OF THE BUFFER WITHIN THE PROGRAM. 2L2L # 2LG= # AWORK3 IS SET UP BY ASSIGN AS A MASK OF FORBIDDEN MODES WITH THE 2L^W # TYPE OF FILE IN USE. THIS IS ANDXED AGAINST AWORK1 DURING 2MFG # INITIAL ANALYSIS AND CHECKING. 2M^6 # 2NDQ # AWORK4 IS A BIT WORD. THE DEFINITIONS ARE:- 2NYB # 2PD2 BITDEFS AWORK4,23,MFHEOFMULT [WE'VE RUN OFF THE END OF A 2PXL [MULTIFILE. NO FURTHER PERIS 2QC= [CAN BE IMPLEMENTED. 2QWW BITDEFS AWORK4,22,MFHDIRMOD [THIS IS A DIRECTORY MODE WE'RE 2RBG [IMPLEMENTING 2RW6 BITDEFS AWORK4,21,MFHRECEOF [LAST READ PERI LEFT US 2S*Q [AFTER EOF. 2STB BITDEFS AWORK4,20,MFHBLOCKEOF [SIMILAR BIT FOR BLOCK PERIS. 2T*2 [HAS TO BE HANDLED SEPARATELY 2TSL [OWING TO DIFFERENT POINTER 2W#= [CONVENTIONS. 2WRW BITDEFS AWORK4,19,MFHNOT1ST [THIS IS NOT THE 1ST PERI. 2X?G BITDEFS AWORK4,18,MFHDIROWN [USER OWNS THE FILES IN 2XR6 [THIS DIRECTORY 2Y=Q BITDEFS AWORK4,17,MFHNONSER [THIS IS A DA,DR, OR MT FILE 2YQB BITDEFS AWORK4,16,MFHCHUCKOFF [WE ARE THROWING THIS FILE 2^=2 [OFFLINE (SET DURING MODE #33). 2^PL BITDEFS AWORK4,15,MFHTRAPSALT [WE ARE ALTERING THIS FILE'S 329= [TRAPS (SET DURING MODE #33). 32NW BITDEFS AWORK4,14,MFHTABSSET [THE TAB SYSTEM HAS BEEN 338G [INITIALISED. 33N6 # 347Q # AWORK4 IS INITIALISED BY ASSIGN. ALL SWITCHES ARE CLEAR ON 34MB ...# ENTRY WITH THE POSSIBLE EXCEPTION OF MFHDIROWN AND MFHNONSER 3572 # 35LL # X7 IS ZEROISED BY THE INITIAL ANALYSIS CODE AND IS USED TO 366= # ACCUMULATE THE FINAL REPLY WORD. 36KW # 375G # X6 IS THE USUAL SUBROUTINE LINK. 37K6 # 384Q # X1=FX1 AND X2=FX2. ANY CODE WHICH ALTERS THESE MUST ALTER THEM 38C7 ...# BACK BEFORE PROCEEDING. IF THIS RULE IS NOT FOLLOWED THE 38PJ ...# FACT MUST BE DOCUMENTED IN THE COMMENTS. 3942 # 39HL # SUNDRY PRESET CONSTANTS:- 3=3= # 3=8D ... SEGENTRY K98FHOBJ [LABEL TO ALLOW MENDIG OF NEXT 3=*L ... [LOCATION BY RESTORE TIME MACRO. 3=GW VALIDMODDIR #56200000 [AWORK1 TYPE MASK OF DEFINED 3?2G [DIRECTORY MODES. 3?G6 VALIDMOD #77660160 [DITTO: NORMAL MODES 3?^Q MCHAPP #20060100 [DITTO: ACCEPTABLE MODES WHEN 3#FB ... [APPENDING. 3#^2 ...MCHNSWRITE #00040100 [DITTO: NONSERIAL FILE WRITING. 3*DL MCHREAD #50220040 [DITTO : READ MODES 3*Y= # 3BCW # 3BXG # A SUBROUTINE TO LOCK THE CONTROL AREA DOWN. 3CC6 # CALLED ON X6, LEAVES X3->APET 3CWQ # 3DBB MCALOCK 3DW2 LDX 3 APETADDR(2) 3F*L LOCKCA 3,ACAP(2) 3FT= EXIT 6 0 3G#W # 3GSG # 3H#6 # A SUBROUTINE TO CHECK FILE IS NOT POSITIONED AT BEGINNING OF FILE. 3HRQ # IF IT IS WE JUMP INTO THE EXCEPTION CODE. CALLED ON X6. USES X3. 3J?B # 3JR2 TESTBOF 3K=L TOPFCA2 3 3KQ= LDX 0 FREADBLOCK(3) [PICK UP READ BLOCK PTR 3L9W BNG 0 NILBOF [-VE=> BEGINNING OF FILE 3LPG SBN 0 FBLKS [IF IT POINTS TO 1ST BLOCK 3M96 BNZ 0 NOTBOF [THEN WORD PTR -VE=> BEG OF FILE 3MNQ LDX 0 FREADWORD(3) 3N8B BNG 0 NILBOF 3NN2 NOTBOF 3P7L EXIT 6 0 3PM= # 3Q6W # 3QLG # ********************************************************************* 3R66 # ********************************************************************* 3RKQ # 3S5B # MAIN PATH STARTS HERE 3SK2 # 3T4L # ********************************************************************* 3TJ= # ********************************************************************* 3W3W # 3WHG PERI 3X36 LDN 7 0 [X7 IS BASIS FOR THE ASSEMBLED 3XGQ [REPLY WORD. INDIVIDUAL IMPLEMENTATIO 3Y2B [SECTIONS WILL ADD ADDRESSES AND 3YG2 [BITS INTO IT AS NECESSARY 3Y^L # 3^F= # WE LOCK AND THEN COPY THE CONTROL AREA ACROSS TO THE AOLPT. 3^YW # 42DG CALL 6 MCALOCK [LOCK CONTROL AREA 42Y6 [LEAVING X3->APET 43CQ LDN 6 4 [LENGTH OF CA 43XB LDX 4 ACAP(2) [SOURCE OF MOVE 44C2 LDN 5 ACA1(2) [DESTINATION OF MOVE 44WL FOUTMOVE 3,4,5,6,HLOCK1,2 [MOVE 45B= # 45TW # ********** 46*G # 46T6 # IF ONCE WE ENCOUNTER EOF/FILEFULL ON A MULTIFILE NO FURTHER PERIS 47#Q # CAN BE ACCEPTED. WE MAKE THIS CHECK IMMEDIATELY, WHILE AWORK1 IS 47SB # STILL SET UP TO INDICATE THE MODE WHICH CAUSED THE CONDITION. 48#2 # 48RL JBS MEOF1,2,MFHEOFMULT 49?= # 49QW # ********** 4==G # 4=Q6 # THE MODE MUST BE RECOGNISABLE AND MUST BE ACCEPTABLE WITH THIS 4?9Q # TYPE OF FILE. WE CHECK THIS AND SET UP AWORK1 IN THE PROCESS. 4?PB # IF THE MODE IS A DIRECTORY MODE WE SET AWORK1 AS FOR THE CORRSP 4#92 # RECORD MODE AND SET THE DIRMODE SWITCH. 4#NL # 4*8= LDX 4 ACA1(2) 4*MW ANDN 4 #7777 [X4=MODE 4B7G SBN 4 #30 4BM6 BNG 4 NDIRMOD [J IF NOT DIRECTORY MODE 4C6Q 4CLB SBN 4 #10 [CHECK A VALID DIRECTORY MODE 4D62 BPZ 4 NMODNR [J IF OUT OF RANGE 4DKL ADN 4 #10 4F5= TOPFCB2 3 4FJW JBC NILLTYPE,3,BFDIR [UNACCEPTABLE IF FILE NOT A DIR 4G4G BS 2,MFHDIRMOD [SET DIRECTORY MODE SWITCH 4GJ6 LDX 5 VALIDMODDIR(1) [PICK UP MASK OF RECOG DIR MODES 4H3Q BRN YDIRMOD 4HHB 4J32 NDIRMOD 4JGL BC 2,MFHDIRMOD [CLEAR DIRECTORY MODE SWITCH 4K2= ADN 4 #30 4KFW LDX 5 VALIDMOD(1) [MASK OF RECOG MODES 4K^G 4LF6 YDIRMOD 4LYQ LDCT 0 #400 4MDB SMO 4 4MY2 SRL 0 0 [AWORK1 SET UP 4NCL STO 0 AWORK1(2) 4NX= ANDX 5 0 [CHECK MODE RECOGNISED 4PBW BZE 5 NMODNR [J IF NOT 4PWG JBS NOTFBD,2,MFHDIRMOD [NEXT CHECK NOT NEEDED IF DIRMOD 4QB6 ANDX 5 AWORK3(2) [CHECK MODE NOT FORBIDDEN WITH FILE 4QTQ BNZ 5 NILLTYPE [J IF FORBIDDEN 4R*B NOTFBD 4RT2 # 4S#L # ********** 4SS= # 4T?W # WE ALSO HAVE TO CHECK WHETHER THE MODE IS CONSISTENT WITH THE WAY 4TRG # THE FILE IS OPEN. WHILE WE CHECK THIS WE ALSO CHECK THAT THE 4W?6 # CURRENT PERI COUNT (UPDATED BY EXEC) HASNT EXCEEDED THE LIMIT 4WQQ # QUALIFIER IN THE WRITE CASE. 4X=B # 4XQ2 WHICHMOP NOTOL1 [CHECK INVALID IF ONLINED FILEHANDLER 4Y9L BRN YESOL1 4YP= NOTOL1 4^8W TOPFCA2 3 [X3->FCA 4^NG ... JMBS MCHREM,3,BAMREAD,BAMREADR[J IF READ MODES ONLY 5286 LDX 0 ACOUNT(2) [CURRENT PERI COUNT 52MQ BXGE 0 ALIMEY(2),NILLIMIT [J IF OUTPUT LIMIT EXCEEDED 537B JBS YESOL1,3,BAMGEN [J IF GEN MODE (NO FURTHER CHECKS) 53C8 ... JBS MCHNONSERWR,2,MFHNONSER [J IF WRITING TO NONSER FILE 53M2 LDX 0 MCHAPP(1) [MASK OF MODES ALLOWED IN APPEND CASE 546L BRN YRESTRICTS 549Q ...MCHNONSERWR 54#W ... LDX 0 MCHNSWRITE(1) [MASK OF MODES ALLOWED WHEN 54D2 ... [OVERWRITING NONSERIAL FILES. 54H6 ... BRN YRESTRICTS 54L= MCHREM 555W LDX 0 MCHREAD(1) [MASK OF MODES ALLOWED FOR READ CASE 55KG YRESTRICTS 5656 ANDX 0 AWORK1(2) 56JQ BZE 0 NILLAC [J IF NOT AN ACCEPTED MODE 574B YESOL1 57J2 # 583L # ********** 58H= # 592W # WE NOW CHECK AND LOCK THE DATA BUFFER (EXCEPT FOR MODES 5,6,7,#37 59GG # WHICH DO NOT TRANSFER DATA) 5=26 # 5=FQ LDCT 0 #016 [BITS 5,6 AND 7 5=^B ANDX 0 AWORK1(2) 5?F2 BNZ 0 NODATAAREA [J IF NON DATA MODE 5?YL LDX 3 APETADDR(2) [X3->APET 5#D= LDX 5 ACA4(2) [BUFFER ADDR WITHIN PROGRAM 5#XW ANDX 5 BITS22LS [AT MOST WE WANT ONLY LS 22 BITS 5*CG PMODES 0,3 [ (X0=PROGRAM MODES) 5*X6 ANDN 0 #10 [ 5BBQ BNZ 0 P22AM [ (J IF 22AM PROG) 5BWB ANDX 5 BSP16 [AND ONLY LS 15 IF 15AM PROGRAM. 5CB2 P22AM 5CTL STO 5 AWORK2(2) [KEEP BUFFER ADDRESS 5D*= CHECKB 5,ACA3(2),RESVIOL,3,W,NODATAAREA,HLOCK2,,PERI 5DSW [SEE PRM 6.CHECKB FOR EXPLANATION 5F#G [DATA AREA IS NOW CHECKED AND LOCKED 5FS6 NODATAAREA 5G?Q # 5GRB # ********** 5H?2 # 5HQL # WE NOW CARRY OUT SOME FILE POSITIONING CHECKS FOR THE RECORD AND 5J== # DIRECTORY MODES. THE BLOCK MODE CHECKS ARE INCOMPATIBLE AND ARE 5JPW # THEREFORE HANDLED IN FHOBJBL (THIS ARISES FROM A DIFFERENT F'BLOCK 5K9G # CONVENTION WITH READB AND WRITEB). 5KP6 # FOR MODES 3,5,#33 AND #37 WE CHECK THAT WE ARE NOT AT BEGINNING OF 5L8Q # FILE. (THE BOF CHECK FOR MODE #7 IS SAVED UNTIL WE IMPLEMENT IT 5LNB # AS THE DIRECTION OF SKIP IS AS YET UNKNOWN. THE SAME APPLIES TO MODE 5M82 # SINCE THE RECORD TO BE INSERTED MAY BE A KEYED RECORD OF AN INDEXED 5MML # FILE IN WHICH CASE WE WILL POSITION THE FILE FOR INDEXING FIRST.) 5N7= 5NLW # 5P6G WHICHMOP MBOFCHECK [THIS AND FOLLOWING SECTION NOT 5PL6 BRN NOTEOF [APPLICABLE TO OL *FH 5Q5Q MBOFCHECK 5QKB LDCT 0 #052 [MODES 3,#33,5,7,AND #37 5R52 ANDX 0 AWORK1(2) 5RJL BZE 0 NOTATBOF [J IF NOT ONE OF THOSE MODES 5S4= LDCT 4 #050 [IF ITS MODE 7 OR #37 WE HAVE TO 5SHW ANDX 0 4 [ENSURE WE ONLY MAKE THE CHECK FOR 5T3G BNZ 0 NOTM737 [MODE #37 5TH6 JBC NOTATBOF,2,MFHDIRMOD 5W2Q NOTM737 5WGB CALL 6 TESTBOF [ENSURE NOT BEGINNING OF FILE 5X22 NOTATBOF 5XFL # 5X^= # ********** 5YDW # 5YYG # MORE CHECKS ARE NECESSARY ON REC AND DIR MODES ILLEGAL AFTER END 5^D6 # OF FILE AND ALSO ON MODES 4 AND 7 WHICH MAY NEED SPECIAL ACTION 5^XQ # IF WE WERE PREVIOUSLY AT EOF BUT ARE NO LONGER. 62CB # FIRST WE CHECK WHETHER THE LAST PERI TO USE THE READ POINTERS LEFT 62X2 # THEM SET HAVING JUST READ EOF (THE SWITCH MFHRECEOF WILL BE SET 63BL # IF THIS IS SO). IF IT DIDNT THE PERI PROCEEDS. OTHERWISE WE CHECK 63W= # TO SEE WHETHER THE END OF FILE CONDITION STILL HOLDS. IF MORE DATA 64*W # HAS NOT BEEN ADDED WE EITHER PROCEED (MODES 4 AND 7) OR ILLEGAL. 64TG # IF MORE DATA HAS BEEN ADDED WE DO A BACKSPACE TO RESET THE POINTERS 65*6 # TO HAVING JUST READ THE RECORD LAST READ AND LOOP BACK TO THE START 65SQ # OF THE PREVIOUS SECTION TO ENSURE THAT WE ARE NOT NOW ILLEGALLY AT 66#B # BEGINNING OF FILE 66S2 # 67?L LDCT 0 #172 [MODES 2,3,4,5,7 67R= ANDX 0 AWORK1(2) [TEST IF ONE OF THESE 68=W BZE 0 NOTEOF [J IF NOT NO CHECK NEEDED 68QG JBC NOTEOF,2,MFHRECEOF [J IF READ PTRS NOT LEFT AFTER EOF 69=6 STEPAGAIN [CHECK IF THEY STILL ARE 69PQ BZE 3 STILLEOF [J IF SO 6=9B BC 2,MFHRECEOF [OTHERWISE CLEAR EOF SWITCH 6=P2 BACKSPACE [RESET READ POINTERS. 6?8L [OTHERWISE PERI WOULD BE OBEYED 6?N= [AS IF WE HAD JUST READ 1ST NEW 6#7W [RECORD 6#MG BRN MBOFCHECK [REPEAT BOF CHECK IF NEC 6*76 STILLEOF 6*LQ LDCT 0 #22 [OK IF MODE 4 OR 7 OTHERWISE 6B6B ANDX 0 AWORK1(2) [POTENTIALLY ILLEGAL 6BL2 BZE 0 NILEOF 6C5L NOTEOF 6CK= # 6D4W # ********** 6DJG # 6F46 # NOW WE ENTER THE INDIVIDUAL MODE IMPLEMENTATION SECTIONS 6FHQ # 6G3B JBC NOTDIR2,2,MFHDIRMOD [FURTHER CHECKS AND IMPLEMENTATION 6GH2 ACROSS FHOBJDIR,1 [IN FHOBJDIR FOR DIRECTORY MODES 6H2L NOTDIR2 6HG= LDN 4 #7777 6H^W ANDX 4 ACA1(2) [EXTRACT MODE 6JFG ADX 4 1 [SWITCH TO INDIVIDUAL CODE 6J^6 EXIT 4 1+0? 6KDQ BRN MODE0 6KYB BRN MODE1 6LD2 BRN MODE2 6LXL BRN MODE3 6MC= BRN MODE4 6MWW BRN MODE5 6NBG BRN MODE6 6NW6 BRN MODE7 6P*Q BRN NMODNR 6PTB BRN MODE11 6Q*2 BRN MODE12 6QSL BRN NMODNR 6R#= BRN NMODNR 6RRW BRN NMODNR 6S?G BRN NMODNR 6SR6 BRN NMODNR 6T=Q BRN NMODNR 6TQB BRN MODE21 6W=2 BRN MODE22 6WPL BRN MODE23 6X9= # 6XNW # 6Y8G # ********************************************************************* 6YN6 # 6^7Q # THIS SECTION LOOKS AFTER THE MODES 0 ,2 ,#12. THEY SHARE THE CODE 6^MB # WHICH CHECKS THE COUNT AND WHICH MOVES THE DATA INTO THE PROGRAM. 7272 # 72LL # SUBROUTINE TO CHECK THE COUNT. CALLED ON X6 736= # 73KW READCOUNT 745G NGX 0 ACA3(2) [NEGATE COUNT FIELD 74K6 BPZ 0 NILCOUNT [J IF COUNT ZERO OR NEG 754Q ADN 0 512 75JB BNG 0 NILCOUNT [J IF COUNT > 511 7642 EXIT 6 0 76HL # 773= # MODE 0 CALLS FHOBJIND TO PERFORM THE COMPLEX AND BULKY INDEXING 77GW # ROUTINES. IT THEN MERGES WITH MODE 2. IF THE RECORD IS NOT FOUND 782G # THEN A NULL RECORD IS TRANSFERRED TO THE PROGRAM. IF THE FILE IS 78G6 # NOW POSITIONED AFTER EOF WE JUMP TO THE APPROPRIATE EXCEPTION CODE 78^Q # 79FB MODE0 79^2 CALL 6 READCOUNT [PERFORM COUNT CHECK 7=DL ACROSS FHOBJIND,1 [DO INDEXED SEARCH IGNORING SUBKEYS 7=Y= 7?CW M0FOUND [RETURNS HERE IF FOUND 7?XG STEPAGAIN [X3->RECORD 7#C6 BRN READMOVE 7#WQ NOTFOUND 7*BB JBS READEOF,2,MFHRECEOF [J IF INDEXING ROUTINES LEFT US 7*W2 [POSITIONED AFTER EOF. 7B*L BRN NULLREC [OTHERWISE JUST GIVE PROGRAM NULL 7BT= [RECORD 7C#W # 7CSG # ********** 7D#6 # 7DRQ # MODE2 IS QUITE COMPLICATED. FIRST WE CHECK FOR AN ONLINED *FH. 7F?B # IF THIS IS THE CASE THE MOP ROUTINES ARE INVOKED TO READ THE DATA 7FR2 # INTO A FILE FRB AND WE JUMP AHEAD TO DEAL WITH IT. 7G=L # 7GQ= MODE2 7H9W CALL 6 READCOUNT [PERFORM COUNT CHECK 7HPG INMOP PERI,YESOL3 [IF OL BRN TO YESOL3 WITH FRB. 7J96 # 7JNQ # ********** 7K8B # 7KN2 # HAVING ESTABLISHED THAT ITS A NORMAL ASSIGNED FILEHANDLER WE READ 7L7L # THE DATA FROM THE FILE 7LM= # 7M6W STEP 7MLG TESTREP2 STEPWAIT,STEPWAIT [REPLY GIVEN IN COMMUNE MODE WHEN 7N66 [AT EOF WITH APPENDERS 7NKQ BZE 3 READEOF [J IF READ OFF END OF FILE 7P5B # 7PK2 # ********** 7Q4L # 7QJ= # NEXT WE CARRY OUT THE COMMON 'MOVE IN DATA' PATH OF MODES 0,2,#12 7R3W # X3->DATA 7RHG # 7S36 READMOVE 7SGQ LDEX 6 FRH(3) [RECORD LENGTH 7T2B SBN 6 1 [LESS 1 FOR RECHEAD WE DONT TRANSFER 7TG2 [=AMOUNT OF DATA TO MOVE. 7T^L LDX 0 ACA3(2) [SIZE OF BUFFER 7WF= BXGE 0 6,READNOUGH [J IF BUFFER BIG ENOUGH 7WYW LDX 6 0 [OTHERWISE SET X6=BUFFER SIZE 7XDG LDCT 7 #200 [AND SET LONG BLOCK MARKER IN REPLY 7XY6 READNOUGH 7YCQ ADN 3 1 [X3->FIRST WORD TO BE MOVED 7YXB LDX 4 AWORK2(2) [X4=ADDR OF BUFFER IN PROGRAM 7^C2 FINMOVE APETADDR(2),4,3,6,HLOCK2,2[MOVE DATA INTO PROGRAM 7^WL # 82B= # ********** 82TW # 83*G # THIS SUBSECTION SETS UP THE REPLY WORD AND JUMPS TO THE WINDING 83T6 # UP ROUTINE. IT EXPECTS X6=AMOUNT OF DATA TRANSFERRED 84#Q # 84SB READREP 85#2 ADX 6 AWORK2(2) [WORD IN PROGRAM AFTER LAST WORD 85RL [TRANSFERRED 86?= ANDX 6 MASKREPADDR(1) [MASK OUT ALL BUT LS 18 BITS 86QW ORX 7 6 ['OR' ADDRESS INTO REPLY 87=G VFREE FILE,FRB [SOME OF THE READ MODES LEAVE A FRB 87Q6 BRN SETREP [SET REPLY AND WIND UP 889Q MASKREPADDR #777777 [MASK OF LS 18 BITS 88PB # 8992 # ********** 89NL # 8=8= # A LOOSE END FROM IMPLEMENTATION OF MODE 0 - WE MUST TRANSFER A 8=MW # NULL RECORD IF WE COULDNT FIND THE RECORD REQUIRED. THIS IS ALSO 8?7G # USED BY ANY ROUTINE WHICH HITS END OF FILE WHILE READING. 8?M6 # 8#6Q NULLREC 8#LB LDN 6 0 [ZERO LENGTH TRANSFER 8*62 BRN READREP [GO TO SET UP REPLY 8*KL # 8B5= # ********** 8BJW # 8C4G # MODE #12 IS ONLY PERMITTED AS THE FIRST PERI ON A CHANNEL. AFTER 8CJ6 # THAT WE DO NOT RECOGNISE IT. IT IS SUBJECT TO THE SAME COUNT 8D3Q # CHECK AS MODES 0 AND 2. IT IS ACTUALLY IMPLEMENTED IN FHOBJIND AS 8DHB # IT IS NOT STRAIGHTFORWARD AND IS RELATIVELY RARE. FHOBJIND RETURNS 8F32 # WITH THE DATA IN A FRB. 8FGL # 8G2= MODE12 8GFW JBS NMODNR,2,MFHNOT1ST [ILLEGAL IF NOT 1ST PERI 8G^G CALL 6 READCOUNT [PERFORM COUNT CHECK 8HF6 ACROSS FHOBJIND,12 [SETS UP A FRB CONTAINING THE DATA 8HYQ [AND RETURNS TO YESOL3 8JDB # 8JY2 # ********** 8KCL # 8KX= # MODE 2 ONLINE CASE SETS UP A FRB AND JUMPS HERE 8LBW # 8LWG YESOL3 8MB6 MHUNTW 3,FILE,FRB 8MH# ... LDX 0 A1(3) 8MNG ... BZE 0 READEOF 8MTQ ADN 3 A1 [X3->DATA 8N*B BRN READMOVE [HAVING GOT A PTR TO THE DATA 8NT2 [REJOIN MAIN PATH 8P#L # 8PS= # ******************************************************************** 8Q?W # 8QRG # THE FOLLOWING SECTION DEALS WITH MODES 1,3,AND 4. 8R?6 # 8RQQ # SUBROUTINE TO PERFORM COUNT CHECKS. CALLED ON X6. 8S=B # 8SQ2 WRITECOUNT 8T9L NGX 0 ACA3(2) [NEGATE COUNT 8TP= BPZ 0 NILCOUNT [ILLEGAL IF COUNT NEG OR ZERO 8W8W ADN 0 501 [AND ALSO IF COUNT>501 8WNG BNG 0 NILCOUNT 8X86 EXIT 6 0 [OTHERWISE EXIT 8XMQ # 8Y7B # SUBROUTINE TO MOVE DATA OUT OF PROGRAM TO AREA POINTED AT BY X4. 8YM2 # CALLED ON X6,DESTROYS X3 AND X4. 8^6L # 8^L= WRITEMOVE 925W LDX 3 AWORK2(2) [X3->DATA IN PROG 92KG FOUTMOVE APETADDR(2),3,4,ACA3(2),HLOCK2,2 9356 EXIT 6 0 93JQ # 944B # SUBROUTINE TO SET UP A FWB AND MOVE BUFFER INTO IT ADDING RECORD 94J2 # HEADER. CALLED ON X6,USES X3,4. COORDINATES. 953L # 95H= WRITEFWB 962W SBX 6 FX1 96GG LDX 4 ACA3(2) [COUNT 9726 ADN 4 1 [PLUS 1 ROR RECORD HEADER. 97FQ SETUPCORE 4,3,FILE,FWB [SET UP BLOCK 97^B STO 4 A1(3) [STORE RECORD HEADER 98F2 STO 6 ACOMMUNE1(2) [SAVE LINK 98YL LDN 4 A1+1(3) [ADDR TO WHICH TO MOVE DATA 99D= CALL 6 WRITEMOVE [MOVE DATA INTO BLOCK 99XW LDX 6 ACOMMUNE1(2) [RESTORE LINK AND EXIT 9=CG ADX 6 FX1 9=X6 EXIT 6 0 9?BQ # 9?WB # ********** 9#B2 # 9#TL # MODE 1 IS IMPLEMENTED DIFFERENTLY FOR THE ONLINE AND NORMAL CASES. 9**= # WE TAKE THE ONLINE CASE FIRST. THE DATA IS MOVED INTO A FWB. IT 9*SW # IS THEN SUBJECTED TO AN INTEGRITY CHECK FORCED BY THE MOP ROUTINES 9B#G # AND NAMED AN FRB. THE MOP ROUTINES ARE THEN CALLED TO DEAL WITH IT. 9BS6 # 9C?Q MODE1 9CRB CALL 6 WRITECOUNT [CHECK COUNT 9D?2 WHICHMOP NOTOLMODE1 [J IF NORMAL CASE 9DQL CALL 6 WRITEFWB [SET UP FWB WITH DATA 9F== MHUNTW 3,FILE,FWB 9FPW NAME 3,FILE,FRB [MOP ROUTINES WANT A FRB. 9G9G LDX 0 A1(3) [THEY ALSO CANNOT COPE IF B0 AND 1 9GP6 SBN 0 2 [OF THE PFCC WORD ARE SET FOR A 9H8Q BNZ 0 NOTNULLREC [BLANK LINE. 9HNB LDX 0 A1+1(3) 9J82 SLL 0 2 9JML SRL 0 2 9K7= STO 0 A1+1(3) 9KLW NOTNULLREC 9L6G OUTMOP SETREP,PERI [OUTPUT LINE 9LL6 BRN SETREP [J TO WIND UP CODE 9M5Q # 9MKB # ********** 9N52 # 9NJL # IN THE NORMAL CASE WE MOVE THE DATA DIRECT FROM PROGRAM TO FILE 9P4= # AND EXIT TO WIND UP CODE 9PHW # 9Q3G NOTOLMODE1 9QH6 LDX 2 ACA3(2) [COUNT 9R2Q STEP ,1(2),ANSWER [SET UP [2]+1 WORD RECORD 9RGB TESTREP2 APPWAIT,XAPPWAIT,FILEFULL,XFILEFULL,GLUTTON,TOOMUCH 9S22 LDX 0 ACA3(2) [SET UP RECORD HEADER 9SFL ADN 0 1 9S^= STO 0 FRH(3) 9TDW LDN 4 FRH+1(3) [X4->DESTINATION OF DATA 9TYG CALL 6 WRITEMOVE [MOVE DATA 9WD6 BRN SETREP [J TO WINDUP CODE 9WXQ # 9XCB # ********** 9XX2 # 9YBL # MODE3 IS SIMPLE IF THE FILE IS NOT INDEXED. WE SIMPLY MOVE THE 9YW= # DATA OUT TO A FWB AND DO A REPLACE. THE CHECKS FOR AN INDEXED FILE 9^*W # ARE IMPLEMENTED ELSEWHERE. 9^TG # =2*6 MODE3 =2SQ CALL 6 WRITECOUNT [CARRY OUT COUNT CHECK =3#B CALL 6 WRITEFWB [SET UP THE FWB =3S2 TOPFCB2 3 =4?L LDN 6 #77 =4R= ANDX 6 FINFC(3) =5=W BZE 6 NOTINDMODE3 [J IF NOT AN INDEXED FILE =5QG ACROSS FHOBJIND,3 [PERFORM CHECKS =6=6 NOTINDMODE3 [RETURNS HERE IF OK =6PQ REPLACE [REWRITE THE RECORD =79B # =7P2 # ********** =88L # =8N= # AFTER A MODE 3 OR 4 WE JUST CHECK THAT FILEFULL HASNT OCCURRED =97W # FREE THE FWB AND JUMP TO THE WINDUP CODE =9MG # ==76 MODE34END ==LQ MFREEW FILE,FWB =?6B TESTREP2 FILEFULL,XFILEFULL,GLUTTON,TOOMUCH =?L2 BRN SETREP [JUMP TO WINDUP CODE =#5L # =#K= # ********** =*4W # =*JG # MODE 4 IS LIKE MODE 3 EXCEPT THAT WE DO AN INSERT INSTEAD OF A =B46 # REPLACE AND A DIFFERENT PIECE OF INDEXED FILE CODE IS OBEYED. =BHQ # =C3B MODE4 =CH2 CALL 6 WRITECOUNT [CARRY OUT COUNT CHECK =D2L CALL 6 WRITEFWB [SET UP BUFFER =DG= TOPFCB2 3 =D^W LDN 6 #77 =FFG ANDX 6 FINFC(3) [NON ZERO IF INDEXED =F^6 BZE 6 NOTINDMODE4 =GDQ ACROSS FHOBJIND,4 [PERFORM SPECIAL INDEXED ACTION =GYB NOTINDMODE4 [RETURNS HERE IF UNKEYED RECORD =HD2 CALL 6 TESTBOF [ENSURE NOT BEGINNING OF FILE =HXL OKINDMODE4 [RETURNS HERE IF OK AND KEYED RECORD =JC= INSERT =JWW BRN MODE34END =KBG # =KW6 # ******************************************************************** =L*Q # =LTB # THIS SECTION DEALS WITH THE OTHER MODES, MOST OF WHICH ARE =M*2 # IMPLEMENTED ELSEWHERE. =MSL # =N#= # MODE 5 IS THE SIMPLEST OF THE LOT AND NEEDS NO EXPLANATION. =NRW # =P?G MODE5 =PR6 DELETE =Q=Q BRN SETREP [J TO WIND UP CODE =QQB # =R=2 # ********** =RPL # =S9= # MODE 6 INVOKES THE HUGE 'CURTAIL' MACRO, AND IS THE RAREST OF THE =SNW # LOT SO WE IMPLEMENT IT IN FHOBJIND. =T8G # =TN6 MODE6 =W7Q ACROSS FHOBJIND,56 =WMB # =X72 # ********** =XLL # =Y6= # MODE 7 IS RELATIVELY RARE AND ISN'T THAT SIMPLE SO IT TOO IS =YKW # BANISHED. =^5G # =^K6 MODE7 ?24Q ACROSS FHOBJIND,7 ?2JB # ********** ?342 # ?3HL # MODE #11 IS PROBABLY AS RARE AS CURTAIL - IT IS ALLOWED AS THE FIRST ?43= # PERI ON DA,DR AND MT FILES ONLY, SO IT ALSO GOES TO FHOBJIND. ?4GW # ?52G MODE11 ?5G6 JBS NMODNR,2,MFHNOT1ST [ILLEGAL IF NOT 1ST PERI ?5^Q ACROSS FHOBJIND,11 ?6FB # ?6^2 # ********** ?7DL # ?7Y= # THE REMAINING BLOCK MODES ARE NATURALLY IMPLEMENTED IN FHOBJBL. ?8CW # ?8XG MODE21 ?9C6 ACROSS FHOBJBL,21 ?9WQ MODE22 ?=BB ACROSS FHOBJBL,22 ?=W2 MODE23 ??*L ACROSS FHOBJBL,23 ??T= # ?##W # ******************************************************************** ?#SG # ?*#6 # THIS SECTION, THE WIND UP CODE, IS USED BY ALL PERIS EXCEPT FOR MODE ?*RQ # #22 WHICH GOES AUTONOMOUS AND PERIS WHICH GO ILLEGAL. WE PUT THE REPL ?B?B # FROM X7 INTO THE PROGRAM AND DO AN OLPEND WHICH SENDS US WAITING ?BR2 # FOR THE NEXT PERI. ?BY8 ...# SOME PATHS TRANSFER HERE WITH X1 NOT FX1. CURRENTLY SETREP ?C5B ...# DOES NOT NEED X1=FX1 SO WE TAKE NO STEPS TO CORRECT IT. ?C=L # ?CQ= SETREP ?D9W BS 2,MFHNOT1ST [SHOW A PERI HAS BEEN DONE ?DPG LDX 3 ACAP(2) [X3->CONTROL AREA IN PROGRAM ?F96 ADN 3 1 [X3->REPLY WORD IN PROGRAM ?FNQ FADDRESS APETADDR(2),3,HLOCK1,2 [X3->REPLY IN GEORGE CORE ?G8B STO 7 0(3) [STORE REPLY ?GN2 OLPEND [KICK PROG AND WAIT FOR NEXT PERI. ?H7L BRN PERI [LOOP BACK TO START OF SEGMENT ?HM= # ?J6W # ******************************************************************** ?JLG # ?K66 # THIS IS THE EXCEPTION PART OF THE SEGMENT, WHICH CONTAINS ALL ?KKQ # ILLEGAL, EOF ,LIMIT ETC CODE. ?L5B # ?LK2 # SUBROUTINE TO SET BITS 3+5 OF X7 IF PROGRAM IS USING OWN MONITORING ?M4L # CALLED ON X6 ?MJ= # ?N3W MCHOWN ?NHG LDX 0 ACA1(2) [MODE WORD ?P36 SRL 0 6 ?PGQ ANDN 0 #777 [EXTRACT ADDITIVE MODE ?Q2B SBN 0 #300 ?QG2 BNZ 0 (6) [EXIT IF NOT OWN MON ?Q^L LDCT 7 #050 [ELSE SET OWN MON BITS IN REPLY ?RF= EXIT 6 0 ?RYW # ?SDG # SUBROUTINE TO CHECK FOR AND IF NECESSARY IMPLEMENT A SWITCH OF ?SY6 # MULTIFILE ELEMENTS. IF THIS CAN BE DONE WE DO IT AND JUMP TO ?TCQ # THE BEGINNING OF THE SEG TO REPEAT THE PERI WITH THE NEW ELEMENT. ?TXB # OTHERWISE WE EXIT. IF NECESSARY THE 'END OF MULTIFILE' BIT WILL ?WC2 # HAVE BEEN SET. ?WWL # ?XB= MULTSWITCH ?XTW SBX 6 FX1 [RELATIVISE LINK ?Y*G LDX 5 6 [AND SAVE IT IN X5 ?YT6 COMPQU NOTAMULT [EXIT IF NOT A MULTIFILE ?^#Q BRN PERI [REPEAT PERI IF SWITCH SUCCESSFUL ?^SB BS 2,MFHEOFMULT [OTHERWISE SET 'EOF MULT ' BIT #2#2 CALL 6 MCALOCK [RELOCK CONTROL AREA (COMPQU #2RL [CLEARS ALL LOCKS) #3?= NOTAMULT #3QW ADX 5 FX1 [RESTORE LINK #4=G EXIT 5 0 #4Q6 # #59Q # SUBROUTINE TO RESET OLPA LINK TO START OF SEGMENT AND TRANSFER TO #5PB # THE PCA. THIS IS ALWAYS DONE BEFORE GOING ACROSS TO OLPODD FOR #692 # SOME REASON (E.G. TO ISSUE AN ILLEGAL). #6NL # #78= TOPCA #7MW TOPCA1 RESETLINK(1) #87G EXIT 6 0 #8M6 RESETLINK #96Q PAIR FHOBJ,1 [REENTRY POINT WHEN OLPA REACTIVATED #9LB # #=62 # SUBROUTINE TO CARRY OUT THE DRM CODE FOR READING COMMUNAL FILES. #=KL # IT EXITS 0 IF DRM NOT IN USE. OTHERWISE IT EXIT 1 WITH ALL DRM #?5= # UPDATING DONE. #?JW # ##4G READDRM ##J6 FDRMTEST STEPWAIT,RDNDRM [CHECK IF DRM AND DO UPDATING IF SO #*3Q ADN 6 1 [FALLS THRU IF TWAS DRM #*HB RDNDRM #B32 LDX 1 FX1 #BGL EXIT 6 0 [EXIT +0 OR +1 AS REQUIRED #C2= # #CFW # DITTO: FOR APPENDING TO A FILE. #C^G # #DF6 WRITEDRM #DYQ FDRMTEST APPWAIT,WRNDRM [AS BEFORE. #FDB ADN 6 1 #FY2 WRNDRM #GCL LDX 1 FX1 #GX= EXIT 6 0 #HBW # #HWG # ********** #JB6 # #JTQ # END OF FILE WHILE READING A FILE. WE FIRST CARRY OUT THE DRM CHECK #K*B # AND UPDATING. IF THE CHECK PROVES POSITIVE WE BACKSPACE AND SET #KT2 # A 'REJECTED, INOPERABLE' REPLY. ( THE CORRECT REPLY WHEN THERE ARE #L#L # NO APPENDERS. IF THERE HAD BEEN APPENDERS STEP WOULD HAVE SET THE #LS= # STEPWAIT REPLY WHICH IS DEALT WITH BELOW.) #M?W # #MRG READEOF #N?6 CALL 6 READDRM [DO DRM CHECKS #NQQ BRN READNODRM [J IF NOT DRM #P=B BACKSPACE [RESET READ POINTERS #PQ2 LDCT 7 #410 [REJECTED INOPERABLE #Q9L BRN SETREP [J TO WINDUP CODE #QP= # #R8W # IT'S NOT DRM. WE CHECK TO SEE IF THIS IS A MULTIFILE WITH FURTHER #RNG # ELEMENTS, DOING A SWITCH AND BRANCHING BACK TO THE START IF IT IS. #S86 # OTHERWISE WE SET THE END OF FILE MARKER AND JUMP BACK TO GIVE A NULL #SMQ # TRANSFER. IF OWN MONITORING IS BEING USED WE FIRST SET THE OWN MON #T7B # BITS IN THE REPLY. #TM2 # #W6L READNODRM #W=H ... WHICHMOP READMULTQ [JUMP IF NOT OL *FH #WBD ... BRN READJDFEND [JDF CANNOT BE A MULTIFILE #WG* ...READMULTQ #WL= CALL 6 MULTSWITCH [IS IT A MULTIFILE WITH MORE ELEMS #WW4 ...READJDFEND #X5W CALL 6 MCHOWN [NO. SET OWN MON BITS IF APPLICABLE. #XKG BS 2,MFHRECEOF [SET EOF MARKER. #Y56 BRN NULLREC [JUMP BACK INTO READ SECTION TO #YJQ [SIMULATE A ZERO LENGTH RECORD #^4B # #^J2 # ******** *23L # *2H= # IF A STEPWAIT REPLY IS GIVEN WHILE READING END OF FILE HAS BEEN *32W # REACHED BUT THERE IS AN APPENDER. IF ITS DRM WE SET A 'REJECTED, *3GG # OPERABLE' REPLY. THERE IS NO NEED TO BACKSPACE SINCE STEP HASNT *426 # ADVANCED THE READ POINTERS IN THIS CASE. *4FQ # *4^B STEPWAIT *5F2 CALL 6 READDRM [DO DRM CHECKS. *5YL BRN WAITCOMMUNE [J IF NOT DRM *6D= LDCT 7 #420 [REJECTED OPERABLE *6XW BRN SETREP [J TO WIND UP CODE *7CG # *7X6 # IF ITS NOT DRM WE GO ACROSS TO OLPODD TO WAIT FOR THE OTHERS TO DO *8BQ # SOMETHING. (THIS IS ALSO USED IN THE WRITE CASE) *8WB # *9B2 WAITCOMMUNE *9TL CALL 6 TOPCA [TRANSFER TO THE PCA *=*= ACROSS OLPODD,1 *=SW # *?#G # ********** *?S6 # *#?Q # HERE WE DEAL WITH THE FILEFULL CONDITION ON WRITING.THIS IS SIMILAR *#RB # TO THE END OF FILE CONDITION WHILE READING. FIRST WE CHECK FOR DRM **?2 # AND SET A 'REJECTED,INOPERABLE' REPLY IT IT IS. **QL # *B== XFILEFULL *BPW CALL 6 WRITEDRM [CARRY OUT DRM CHECKS. *C9G BRN WRITENOTDRM [J IF NOT DRM *CP6 LDCT 7 #410 [REJECTED INOPERABLE *D8Q ... BRN SETREP [J TO WINDUP CODE *DNB # *F82 # IF ITS NOT DRM WE MUST SWITCH M/F ELEMENTS , SET AN OWN-MON REPLY, *FML # OR ILLEGAL AS APPROPRIATE. *G7= # *GLW WRITENOTDRM *H6G CALL 6 MULTSWITCH [SWITCH M/F ELEM IF POSSIBLE *HL6 NILOUTFULL *J5Q CALL 6 MCHOWN [OTHERWISE SET OWNMON REPLY IF *JKB [OWN MON. X7 WILL STILL BE ZERO IF *K52 [NOT. *KJL BNZ 7 SETREP [J TO WINDUP IF TWAS OWNMON. *L4= LDN 3 FYOUTFULL [SET ILLEGAL AND JUMP TO THE CODE *LHW BRN PARAMILL [WHICH DEALS WITH ILLEGALS WITH A *M3G [A PERIPHERAL TYPE/NO PARAMETER *MH6 [(LIKE THIS ONE). *N2Q # *NGB # ********** *P22 # *PFL # IF WE GET AN APPWAIT REPLY FROM STEP(APPEND) WE HAVE FILLED A FILE *P^= # WITH GDR READERS. AS BEFORE WE DO A DRM CHECK, SETTING 'REJECTED, *QDW # OPERABLE' IF IT IS DRM, JOINING THE READ CODE AS IT GOES TO OLPODD *QYG # IF IT ISN'T. *RD6 # *RXQ XAPPWAIT *SCB CALL 6 WRITEDRM [DO DRM CHECK *SX2 BRN WAITCOMMUNE [J IF IT ISN'T *TBL LDCT 7 #420 [REJECTED OPERABLE. *TW= BRN SETREP [J TO WINDUP CODE *W*W # *WTG # ********** *X*6 # *XSQ # A FURTHER PERI HAS BEEN ISSUED FOR A MULTIFILE WHICH IS FULL OR *Y#B # EXHAUSTED. WE TREAT IT AS FILE FULL OR END OF FILE DEPENDING ON THE *YS2 # SETTING OF AWORK1 WHICH HAS NOT BEEN DISTURBED SINCE THE CONDITION *^?L # ORIGINALLY AROSE. *^R= # B2=W MEOF1 B2QG LDCT 0 #200 [MASK FOR WRITE PERI B3=6 ORN 0 #0100 B3PQ ANDX 0 AWORK1(2) B49B BNZ 0 NILOUTFULL [J IF FILE FULL B4P2 # B58L # B5N= # ********** B67W # B6MG # WE HAVE RECEIVED A FURTHER READ ON A FILE WHICH IS EXHAUSTED. B776 # WE EITHER ILLEGAL OR GIVE AN OWN MON REPLY AS APPROPRIATE. B7LQ # B86B NILEOF B8L2 CALL 6 MCHOWN [SET REPLY IN X7 IF OWNMON B95L BNZ 7 SETREP [IF REPLY SET J TO WINDUP CODE B9K= OUTILLEOF B=4W LDN 3 FYENDFILE [ILLEGAL B=JG # B?46 # ********** B?HQ # B#3B # WE ARE ISSUING AN ILLEGAL WITH A PERIPHERAL TYPE/NUMBER PARAMETER. B#H2 # BEFORE GOING TO OLPODD WE SET THIS PARAMETER IN X4 B*2L # B*G= PARAMILL B*^W LDX 4 FTYPNO(2) BBFG # BB^6 # ********** BCDQ # BCYB # ILLEGALS ARE DONE BY OLPODD. BDD2 # BDXL OUTILL BFC= CALL 6 TOPCA [CHANGE TO PCA BFWW ACROSS OLPODD,4 BGBG # BGW6 # ********** BH*Q # BHTB # WE HAVE TRIED A MODE WHICH IS ILLEGAL AT BEGINNING OF FILE. BJ*2 # AS USUAL ILLEGAL OR GIVE OWN MONITORING REPLY BJSL # BK#= NILBOF BKRW VFREEW FILE,FWB [MAY BE A FWB IF MODE #4 BL?G LDX 1 FX1 [CORRUPTED BY VFREE BLR6 CALL 6 MCHOWN [IF OWNMON SET OWNMON REPLY BM=Q BNZ 7 SETREP [IF REPLY SET J TO WINDUP CODE BMQB OUTILLBOF BN=2 LDN 3 FYBEGFILE BNPL BRN OUTILL BP9= # BPNW # ********** BQ8G # BQN6 # ILLEGAL MODE WITH GIVEN FILE TYPE. BR7Q # BRMB NILLTYPE BS72 LDN 3 FYILLMOD BSLL BRN OUTILL BT6= # BTKW # ********** BW5G # BWK6 # ILLEGAL MODE WITH GIVEN ACCESS MODE. BX4Q # BXJB NILLAC BY42 LDN 3 FYILLAC BYHL BRN OUTILL B^3= # B^GW # ********** C22G # C2G6 # LIMIT EXCEEDED C2^Q # C3FB NILLIMIT C3^2 LDN 3 FYOUTPUT C4DL BRN PARAMILL C4Y= # C5CW # ********** C5XG # C6C6 # RESERVATION VIOLATION C6WQ # C7BB RESVIOL C7W2 LDX 1 FX1 C8*L LDX 2 FX2 [NOT RESET BY CHECKB ON RES VIOL. C8T= LDN 3 FYNOBUF C9#W BRN OUTILL C9SG # C=#6 # ********** C=RQ # C??B # COUNT OUT OF RANGE. C?R2 # C#=L NILCOUNT C#Q= LDN 3 FYCOUNT C*9W BRN OUTILL C*PG # CB96 # ********** CBNQ # CC8B # MODE NOT RECOGNISED CCN2 # CD7L NMODNR CDM= LDN 3 FYMODE CF6W BRN OUTILL CFLG # CG66 # ********** CGKQ # CH5B # DATA FORMAT ERROR CHK2 # CJ4L NILDATA CJJ= LDN 3 FYDATAER CK3W BRN OUTILL CKHG # CL36 # ********** CLGQ # CM2B # CMG2 # BACKING STORE LIMIT EXCEEDED. DEALT WITH BY OLPODD. CM^L # CNF= TOOMUCH CNYW CALL 6 TOPCA [CHANGE TO PCA CPDG ACROSS OLPODD,2 CPY6 # CQCQ # CQXB # CRC2 MENDAREA 30,K99FHOBJ CRWL # CSB= #END ^^^^ ...621402200009