14 22FL ... SEG ADJCHECK,85,PETER CAMPBELL :FILE 21 23YG # THIS SEGMENT CHECKS INFORMATION IN FILE/ADJUNCTS BLOCK 4 24D6 # 14 24XQ # IT CHECKS FOR ILLEGAL MODES 20 25CB # ILLEGAL FILE ORGANISATION QUALIFIERS 16 25X2 # ILLEGAL SIZE QUALIFIERS 20 26BL # AND ILLEGAL COMBINATIONS OF THOSE ALLOWED. THE SIZE 20 26W= # OF THE QUALIFIERS IS VALIDATED,SEE COMMENTS BY STORED 21 27*W # WORD SIZES ETC IN SEGMENT ADJUNCTS (ALSO GDM 3.6.3.7 ) 4 27TG [ 12 28*6 SEGENTRY K1ADJCHECK,X1ADJCHECK 4 28SQ [ 9 29#B MASK3 #10000000 5 29S2 ON +1 8 2=?L THRE +3 8 2=R= TFOUR +4 8 2?=W SIX +6 8 2?QG SEVEN +7 8 2#=6 NINE +9 8 2#PQ THIR +13 4 2*9B [ 6 2*P2 X1ADJCHECK 4 2B8L [ 10 2BN= HUNT 3,FILE,ADJUNCTS 10 2C7W STOZ ACOMMUNE1(2) 10 2CMG LDN 0 ACOMMUNE1(2) 10 2D76 LDN 1 ACOMMUNE2(2) 7 2DLQ MOVE 0 6 9 2F6B STOZ AWORK1(2) 16 2FL2 LDX 4 A1+1(3) [LOAD MODE WORD 9 2G5L #SKI K6NORMALUS>599-599 10 2GK= TRACE 4,MODEWORD 8 2H4W LDX 1 FX1 7 2HJG STO 4 5 18 2J46 SRC 4 9 [SHIFT TO OBTAIN B12-B14 16 2JHQ ANDN 4 7 [BOTTOM 3 BRTS 18 2K3B BXE 4 THRE(1),TNT [TEST IF MAIN MODE 17 2KH2 BXE 4 TFOUR(1),TNT [IS EQUAL TO 3,4,OR 7 19 2L2L BXE 4 SIX(1),TNT [I.E.APPEND,WRITE OR OVERLAY 17 2LG= BXE 4 ON(1),TNT [READ ALSO ALLOWED 16 2L_W BNZ 4 MES11 [OR NOT PRESENT 4 2MFG TNT 17 2M_6 T1 LDX 4 5 [ADDITIVE MODE TESTS 7 2NDQ SRC 4 2 7 2NYB STO 4 6 7 2PD2 ANDN 4 1 8 2PXL BZE 4 MODE1 7 2QC= LDX 4 5 8 2QWW SRC 4 12 7 2RBG ANDN 4 1 18 2RW6 BNZ 4 MES10 [EMPTY AND OFFSET ILLEGAL 5 2S*Q MODE1 8 2STB LDX 0 BIT10 9 2T*2 ANDX 0 A1+4(3) 15 2TSL BZE 0 NOGDR [J IF NOT GDR 11 2W#= SETMODE 0,WRITE,OFFSET 7 2WRW ANDX 0 5 17 2X?G BNZ 0 MES10 [J IF ILLEGAL MODES 8 2XR6 LDX 4 A1(3) 9 2Y=Q SBN 4 ADPAIR-A1 17 2YQB BZE 4 NOGDR [J IF NO SIZE QUALS 9 2_=2 LDN 1 ADPAIR(3) 5 2_PL XDESTL 16 329= LDX 0 0(1) [NUMBER OF QUAL 18 32NW SBN 0 14 [J TO ERROR IF DESTCOMM 8 338G BZE 0 MES10 7 33N6 ADN 1 2 7 347Q BCT 4 / 9 34MB BCT 4 XDESTL 5 3572 NOGDR 11 375G HUNT 3,FILE,ADJUNCTS 16 37K6 LDX 5 A1(3) [GET BLOCK SIZE 9 384Q SBN 5 ADPAIR-A1 20 38JB LDN 1 0 [WORD PAIR COUNT -INITIALLY ZERO 15 3942 LDN 7 0 [SWITCH WORD 18 39HL BZE 5 THP [BRANCH IF NO QUALIFIERS 7 3=3= QENT SMO 1 16 3=GW LDX 4 ADPAIR(3) [LOAD NEW TYPE 9 3?2G #SKI K6NORMALUS>599-599 10 3?G6 TRACE 4,WORDPAIR 7 3?_Q SBN 4 1 17 3#FB BNZ 4 T2 [BRANCH IF NOT KWORDS 21 3#_2 CALL 0 TWORD [TEST SWITCH SET IF NOT SET B23 X7 15 3*DL LDX 6 A1+2(3) [DEVICE TYPE 7 3*Y= SLC 6 9 8 3BCW SMO FX1 15 3BXG BXE 6 NINE,TT [TEST = 9 *DR 18 3CC6 CALL 0 TTEST [TEST = 6 *ED,OR 13 *FD 7 3CWQ TT SMO 1 17 3DBB LDX 6 ADPAIR+1(3) [TEST SIZE OF KWORDS 12 3DW2 LDN 0 FILESIZE*GSBS/1024+1 21 3F*L BXGE 6 0,MES12 [ERROR IF GREATER THEN MAX. (245) 7 3FT= T2 SRC 7 1 7 3G#W SBN 4 1 17 3GSG BNZ 4 T3 [BRANCH IF NOT BUCKET 15 3H#6 CALL 0 TWORD [SET B22 X7 16 3HRQ CALL 0 TTEST [TEST DEVICE TYPE 7 3J?B SMO 1 17 3JR2 LDX 6 ADPAIR+1(3) [RETAIN BUCKET SIZE 16 3K=L STO 6 ACOMMUNE6(2) [FOR CHECK 7 3KQ= T3 SRC 7 1 7 3L9W SBN 4 1 18 3LPG BNZ 4 T4 [BRANCH IF NOT INTEGRITY 15 3M96 CALL 0 TWORD [SET B21 X7 16 3MNQ CALL 0 TTEST [TEST DEVICE TYPE 7 3N8B SMO 1 18 3NN2 LDX 6 ADPAIR+1(3) [RETAIN INTEGRITY SIZE 16 3P7L STO 6 ACOMMUNE1(2) [FOR CHECK 7 3PM= T4 SRC 7 1 7 3Q6W SBN 4 1 17 3QLG BNZ 4 T5 [BRANCH IF NOT RECORD 15 3R66 CALL 0 TWORD [SET B20 X7 16 3RKQ CALL 0 TTEST [TEST DEVICE TYPE 7 3S5B SMO 1 17 3SK2 LDX 6 ADPAIR+1(3) [RETAIN RECORD SIZE 16 3T4L STO 6 ACOMMUNE7(2) [FOR CHECK 7 3TJ= T5 SRC 7 1 7 3W3W SBN 4 1 18 3WHG BNZ 4 T6 [BRANCH IF NOT KEYLENGTH 15 3X36 CALL 0 TWORD [SET B19 X7 16 3XGQ CALL 0 TTEST [TEST DEVICE TYPE 7 3Y2B SMO 1 18 3YG2 LDX 6 ADPAIR+1(3) [RETAIN KEYLENGTH SIZE 10 3Y_L STO 6 ACOMMUNE2(2) 7 3_F= T6 SRC 7 1 7 3_YW SBN 4 1 18 42DG BNZ 4 T7 [BRANCH IF NOT KEYPLACE 15 42Y6 CALL 0 TWORD [SET B18 X7 16 43CQ CALL 0 TTEST [TEST DEVICE TYPE 7 43XB SMO 1 17 44C2 LDX 6 ADPAIR+1(3) [RETAIN KEYPLACE SIZE 16 44WL STO 6 ACOMMUNE3(2) [FOR CHECK 7 45B= T7 SRC 7 1 7 45TW SBN 4 1 18 46*G BNZ 4 T8 [BRANCH IF NOT RECHEADLEN 15 46T6 CALL 0 TWORD [SET B17 X7 16 47#Q CALL 0 TTEST [TEST DEVICE TYPE 7 47SB SMO 1 18 48#2 LDX 6 ADPAIR+1(3) [RETAIN RECHEADLEN SIZE 16 48RL STO 6 ACOMMUNE4(2) [FOR CHECK 7 49?= T8 SRC 7 1 7 49QW SBN 4 1 21 4==G BNG 4 TOP [BRANCH IF QUALIFIER IS ONE OF 1-7 21 4=Q6 BNZ 4 STEPLIM [J TO SEE IF(STEP)OR LIMIT ADJUNCT 17 4?9Q CALL 0 TWORD [SET B16 IF ODDBITS 8 4?PB CALL 0 TTEST 7 4#92 SMO 1 17 4#NL LDX 6 ADPAIR+1(3) [RETAIN ODDBITS SIZE 16 4*8= STO 6 ACOMMUNE5(2) [FOR CHECK 7 4*MW TOP SLC 7 7 4 4B7G TOP1 18 4BM6 ADN 1 2 [UPDATE WORD PAIR COUNT 9 4C6Q BXL 1 5,QENT 11 4CLB HUNT 3,FILE,ADJUNCTS 9 4D62 #SKI K6NORMALUS>599-599 9 4DKL TRACE 7,QSWITCH 8 4F5= BRN THR 21 4FJW STEPLIM [TO DEAL WITH MK2(EXOTIC)QUALIFIERS 7 4G4G SBN 4 6 18 4GJ6 BZE 4 PDEST [J.IF 'DESTCOMM' GIVEN 7 4H3Q SBN 4 1 17 4HHB BZE 4 OMODE [J IF 'MODE' GIVEN 7 4J32 SBN 4 1 16 4JGL BZE 4 OFLO [OVERFLOW ADJUNCT 7 4K2= SBN 4 2 17 4KFW BZE 4 QLIM [J IF 'LIMIT' GIVEN 7 4K_G SBN 4 2 17 4LF6 BZE 4 REVGEN [J IF 'REVGEN' GIVEN 17 4LYQ BNG 4 TOP [J IF 'WBHEAD' GIVEN 7 4M2_ ...#UNS JWPHASE4 4 4M58 ...( 7 4M7C ... SBN 4 1 8 4M9L ... BZE 4 TOP 14 4M?T ...# JUMP IF 7JOBNUM7 GIVEN 4 4MB4 ...) 8 4MDB BRN MES11 5 4MY2 REVGEN 8 4NCL SRC 7 12 20 4NX= CALL 0 TWORD [CHECK FOR PREVIOUS OCCURRENCE 7 4PBW SMO 1 10 4PWG LDX 6 ADPAIR+1(3) 8 4QB6 TXL 6 BIT11 16 4QTQ BCC MES19 [J IF NOT < 4096 18 4R*B SLC 7 19 [RESET 'OCCURRED' WORD 17 4RT2 BRN TOP1 [J TO CHECK NEXT PAIR 4 4S#L QLIM 8 4SS= SRC 7 10 7 4TRG SMO 1 10 4W?6 NGX 6 ADPAIR+1(3) 21 4WQQ BPZ 6 MES18 [ERROR IF LIMIT ADJUNCT NOT GREATER 8 4X=B SLC 7 17 8 4XQ2 BRN TOP1 4 4Y9L OFLO 7 4YP= SRC 7 8 14 4_8W CALL 0 TWORD [SET BIT 7 4_NG SLC 7 8 17 5286 CALL 0 TTEST [CHECK DEVICE TYPE 8 52MQ BRN TOP 5 537B OMODE 7 53M2 SRC 7 7 14 546L CALL 0 TWORD [SET BIT 7 54L= SLC 7 7 7 555W SMO 1 15 55KG LDX 0 ADPAIR+1(3) [SIZE OF MODE 8 5656 BZE 0 TOP1 16 56JQ ORN 0 #74 [PERMISSIBLE BITS 8 574B ERN 0 #74 17 57J2 BNZ 0 MES19 [SIZE QUAL INCORRECT 7 583L SMO 1 15 58H= LDX 0 ADPAIR+1(3) [SIZE AGAIN 21 592W SBN 0 #45 [CAN ONLY BE #0,#4,#10,#14,#20,#24, 16 59GG BPZ 0 MES19 [#30,#34,#40,#44. 8 5=26 ADN 0 #45 7 5*X6 SMO 1 10 5BBQ STO 0 ADPAIR+1(3) 8 5BWB BRN TOP1 5 5CB2 PDEST 7 5CTL SRC 7 6 14 5D*= CALL 0 TWORD [SET BIT 7 5DSW SLC 7 6 12 5F#G SMO 1 [ 10 5FS6 NGX 0 ADPAIR+1(3) 8 5G?Q BNZ 0 Y3Q 9 5GRB LDN 0 COMDBUFF 7 5H?2 SMO 1 10 5HQL STO 0 ADPAIR+1(3) 8 5J== BRN TOP 4 5JPW Y3Q 8 5K9G BPZ 0 MES20 9 5KP6 ADX 0 BUFFSIZE 8 5L8Q BNG 0 MES20 8 5LNB BRN TOP 4 5W2Q # 21 5WGB # THIS SECTION CONTAINS ALL THE SUBROUTINES 4 5X22 # 21 5XFL # THIS ROUTINE SETS APPROPRIATE BIT IN X7 19 5X_= # TO SHOW THAT QUALIFIER PRESENT 4 5YDW # 5 5YYG TWORD 15 5_D6 LDX 6 7 [LOAD QSWITCH 15 5_XQ ANDN 6 1 [TEST BIT SET 15 62CB BNZ 6 MES13 [YES-ERROR 14 62X2 ORN 7 1 [SET BIT 13 63BL EXIT 0 0 [EXIT 4 63W= # 21 64*W # THIS ROUTINE TESTS THAT THE DEVICE TYPE 21 64TG # IS EITHER *ED OR *FD,IF NOT,ERROR GIVEN 4 65*6 # 5 65SQ TTEST 15 66#B LDX 6 A1+2(3) [DEVICE TYPE 7 66S2 SLC 6 9 8 67?L SMO FX1 13 67R= BXE 6 SIX,TEND [TEST=6 8 68=W SMO FX1 16 68QG BXU 6 THIR,NDEVERR [=13,IF NOT ERROR 4 69=6 TEND 7 69PQ EXIT 0 0 4 6=9B # 21 6=P2 # THIS ROUTINE TESTS THE GIVEN QUALIFIER 19 6?8L # SIZE IN X5 WITH THE NUMBERS OF A 19 6?N= # DESCENDING ARITHMETIC PROGRESSION 21 6#7W # STARTING WITH THE NUMBER IN X6 AND ENDING 21 6#MG # WITH ZERO,IF NONE OF THESE,ERROR GIVEN 4 6*76 # 8 6*LQ SIZT SBX 0 FX1 19 6B6B BZE 5 TSOK [X5 CONTAINS QUALIFIER SIZE 20 6BL2 BNG 5 TSOK [IF X5 ZERO OR NEGATIVE,NO TEST 18 6C5L SIZTT BXE 5 6,TSOK [X6 CONTAINS ALLOWED SIZE 8 6CK= BZE 6 MES14 19 6D4W SBN 6 1 [REDUCE ALLOWED SIZE BY ONE 8 6DJG BRN SIZTT 8 6F46 TSOK ADX 0 FX1 7 6FHQ EXIT 0 0 4 6G3B # 21 6GH2 # THIS ROUTINE TESTS THAT THE SIZE GIVEN 20 6H2L # IN X6 IS LESS THAN THE RECORD SIZE IN 18 6HG= # CHARACTERS,IF NOT,ERROR GIVEN 4 6H_W # 8 6JFG SRCH SBX 0 FX1 8 6J_6 BZE 6 STOK 17 6KDQ LDX 5 ACOMMUNE7(2) [TEST SIZE GIVEN 16 6KYB SLL 5 2 [LESS THAN RECORD 8 6LD2 BZE 5 STOK 16 6LXL BXGE 6 5,MES17 [SIZE IN CHARS 8 6MC= STOK ADX 0 FX1 7 6MWW EXIT 0 0 4 6NBG # 16 6NW6 # END OF SUBROUTINES 4 6P*Q # 4 6PTB THR 10 6Q*2 LDX 1 ACOMMUNE6(2) 17 6QSL BBUS 22,7,TBUCK [ BUCK 0 NOW FLAGGED 8 6R#= SMO FX1 10 6RRW BXGE 1 NINE,MES15 15 6S?G LDN 0 #213 [BUCKET EQUAL 14 6SR6 SMO 1 [ 1/2/4/8 7 6T=Q SRC 0 0 8 6TQB BPZ 0 MES15 17 6W=2 LDX 6 ACOMMUNE6(2) [LOAD BUCKET SIZE 16 6WPL SLC 6 7 [AND MULT BY 128 8 6X9= BRN TREC 5 6XNW TBUCK 16 6Y8G LDN 6 1 [NO BUCKET- SET 14 6YN6 SLC 6 9 [X6 = 512 10 6_7Q TREC LDX 1 ACOMMUNE7(2) 16 6_MB BZE 1 TST [J IF NO RECORD 7 7272 SBX 6 1 18 72LL BNG 6 MES16 [IF NOT COMPATIBLE-ERROR 9 736= #SKI K6NORMALUS>599-599 9 73KW TRACE 6,RECSIZE 17 745G TST LDX 5 ACOMMUNE1(2) [TEST INTEGRITY 8 74K6 SMO FX1 14 754Q LDX 6 THRE [ 0/1/2/3 8 75JB CALL 0 SIZT 17 7642 LDX 5 ACOMMUNE4(2) [TEST RECHEADLEN 14 76HL SBN 5 2 [ 2/3 7 773= LDN 6 1 8 77GW CALL 0 SIZT 16 782G LDX 5 ACOMMUNE5(2) [TEST ODDBITS 8 78G6 SMO FX1 14 78_Q LDX 6 THRE [ 0/1/2/3 8 79FB CALL 0 SIZT 21 79_2 LDX 6 ACOMMUNE2(2) [TEST KEYLENGTH < REC IN CHARS 8 7=DL CALL 0 SRCH 21 7=Y= LDX 6 ACOMMUNE3(2) [TEST KEYPLACE < REC IN CHARS 8 7?CW CALL 0 SRCH 18 7?XG THP LDX 6 A1+3(3) [RANDOM,FIXED,OR SERIAL 7 7#C6 SLC 6 4 7 7#WQ STO 6 5 17 7*BB ANDN 6 1 [TEST SERIAL PRESENT 16 7*W2 BZE 6 ORG [BRANCH IF NOT 7 7B*L STO 5 6 7 7BT= SRC 5 2 17 7C#W ANDN 5 1 [TEST RANDOM PRESENT 19 7CSG BNZ 5 MES10 [SERIAL AND RANDOM ILLEGAL 8 7D#6 BRN TDEV 4 7DRQ ORG 17 7F?B ANDN 6 1 [TEST IF ANY PRESENT 17 7FR2 BZE 6 RPLY [BRANCH IF NOT SET 21 7G=L TDEV CALL 0 TTEST [OTHERWISE TEST DEVICE TYPE *ED,*FD 9 7GQ= #SKI K6NORMALUS>599-599 9 7H9W TRACE 6,TYPEDEV 15 7HPG RPLY SETREP OK [SET REPLY OK 4 7J96 XIT 9 7JNQ #SKI K6NORMALUS>599-599 4 7K8B ( 8 7KN2 LDX 2 FX2 9 7L7L LDX 4 EXEC3(2) 9 7LM= TRACE 4,REPLYWD 4 7M6W ) 5 7MLG UP 5 7N66 MES10 9 7NKQ ACROSS NORMERR,37 5 7P5B MDERR 5 7PK2 MES11 9 7Q4L ACROSS NORMERR,38 5 7QJ= MES12 9 7R3W ACROSS NORMERR,39 5 7RHG MES13 9 7S36 ACROSS NORMERR,40 5 7SGQ MES14 9 7T2B ACROSS NORMERR,41 5 7TG2 MES15 9 7T_L ACROSS NORMERR,42 5 7WF= MES16 9 7WYW ACROSS NORMERR,43 5 7XDG MES17 9 7XY6 ACROSS NORMERR,44 5 7YCQ MES18 9 7YXB ACROSS NORMERR,45 5 7_C2 NDEVERR 9 7_WL ACROSS NORMERR,36 5 82B= MES19 10 82TW ACROSS NORMERR,29 5 83*G MES20 10 83T6 ACROSS NORMERR,46 4 84#Q [ 11 84SB MENDAREA 25,K99ADJCHECK 4 85#2 #END 8 ____ ...16232207000200000000