ADJCHECK85

(George Source)

Macros used: ACROSS, BBUS, BXE, BXGE, BXL, BXU, HUNT, MENDAREA, ON, SEG, SEGENTRY, SETMODE, SETREP, SIX, TRACE, UP

ADJCHECK85.txt
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
  • Last modified: 17/01/2024 11:55
  • by 127.0.0.1