{{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