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