ALTINST60

(George Source)

Macros used: BXL, BXU, CHNUMCO1, COMBRKIN, COMERR, ENDCOM, ERROR, FREECORE, GETWORDX, MENDAREA, MFREE, MHUNT, MOCH, PARANEXT, PARANOT, PARANUMB, PARAPASS, SEGENTRY, TESTREP, TESTREP2, TESTREPNOT, WORDFIN

ALTINST60.txt
22FL    #SEG  ALTINST60                    [E WILLIAMS  
22^=                   8HALTINST
23DW          SEGENTRY K1ALTINST,XENT1  
23YG    #OPT  K0ALTINST=0   
24D6    #OPT  K6ALTINST=K6ALLGEO>K6GREATGEO 
24XQ    #LIS  K0ALTINST>K0ALLGEO>K0GREATGEO 
25CB    #     THE ALTINST COMMAND   
25X2    #     THIS ALLOWS AN OBJECT PROGRAM LOCATION TO BE ALTERED TO   
26BL    #     THE INSTRUCTION SPECIFIED AS THE SECOND COMMAND PARAMETER 
26W=    #   
27*W    #   
27TG    MSK1           #777777             [TO LOSE TOP CHAR.   
28*6    MSK2           #37777              [14-BIT MASK 
28SQ    TWB            +4096               [TWELVE BITS+1   
29#B    FIFB           +32768              [FIFTEEN BITS+1  
29S2    TENB           +1024               [TEN BITS+1  
2=?L    MIN8192        #77760000
2=R=    XBIT9          #00040000
2?=W    XACCESS        +GWRITE+CHNSHARED
2?QG    XACCESS1       +CHWRITE 
2#=6    #   
2#PQ    PERTAB                             [PERIPHERAL FOR SUSSB,REL,DIS ETC.   
2*9B          #00006462                    [TR  
2*P2          #00016460                    [TP  
2B8L          #00025460                    [LP  
2BN=          #00034362                    [CR  
2C7W          #00044360                    [CP  
2CMG          #00055564                    [MT  
2D76          #00064544                    [ED  
2DLQ          #00075543                    [MC  
2F6B          #00114462                    [DR  
2FL2          #00125164                    [IT  
2G5L          #00135570                    [MX  
2GK=          #00144364                    [CT  
2H4W          #00154644                    [FD  
2HJG          #00244760                    [GP  
2J46          #00000000                    [END OF TABLE
2JHQ    #   
2K3B    #   
2KH2    PARGET  
2L2L          SBX   6  FX1  
2LG=          PARAPASS 5
2L^W          MHUNT    3,CPB,CUNI   
2MFG          ADX   6  FX1  
2M^6          EXIT  6  0
2NDQ    #   
2NYB    #   
2PD2    XGET
2PXL          SBX   7  FX1  
2QC=          LDN   5  1                   [GET ACCUMULATOR FIELD   
2QWW          CALL  6  PARGET   
2RBG          LDCH  5  APARA(3) 
2RW6          ADX   7  FX1  
2S*Q          LDX   6  ANUM(3)  
2STB          ANDN  6  #7777
2T*2          LDX   0  APARA(3) 
2TSL          SRL   0  12   
2W#=          BCT   6  Q2                  [J IF NOT JUST 1 CHAR
2WRW          ANDN  0  #7000
2X?G          BNZ   0  XERR5               [ERROR IF CHAR NOT IN RANGE  
2XR6          EXIT  7  1                   [EXIT FOR 1 CHAR 
2Y=Q    Q2    BCT   6  XERR5               [ERROR IF NOT 1 OR 2 CHARS   
2YQB          ANDN  0  #7070
2^=2          BNZ   0  XERR5               [ERROR IF CHARS NOT IN RANGE 
2^PL          EXIT  7  0                   [EXIT FOR 2 CHARS
329=    #   
32NW    MOCH
338G          SBX   7  FX1  
33N6          LDN   5  1
347Q          CALL  6  PARGET   
34MB          ADX   7  FX1  
3572          NGX   5  ANUM(3)  
35LL          BPZ   5  XFR2 
366=          NGX   5  5
36KW          SRL   5  12   
375G          SBN   5  3
37K6          EXIT  7  1
384Q    XFR2
38JB          EXIT  7  0
3942    #   
39HL    MGET
3=3=          SBX   7  FX1  
3=GW          LDX   5  AWORK2(2)
3?2G          ANDX  5  BITS22LS 
3?G6          LDN   6  1
3?^Q          PARANEXT  ,6,5               [DPLIT PARAM.
3#FB          TESTREP  UNPAIR,XERR9 
3#LJ ...#UNS ANSTOOMANY 
3#RQ ...      TESTREP2 TOOMANY,XERRA
3#^2          LDN   5  2
3*DL          CALL  6  PARGET   
3*Y=          LDX   5  ANUM(3)             [GET M-FIELD 
3BCW          BZE   5  XERR9               [ERROR IF NULL   
3BXG          LDN   6  4
3CC6          BCHX  3  £
3CWQ          LDCH  5  APARA(3)            [GET MOD. CHAR.  
3DBB          ANDX  3  BITS22LS 
3DW2          TXL   5  6                   [ILLEGAL IF M>3  
3F*L          BCC      XERR9
3FT=          BZE   5  XERR9               [ILLEGAL IF M=0  
3G#W          SLL   5  12   
3GSG          ORX   4  5                   [SET M-FIELD 
3H#6          FREECORE 3
3HRQ          MHUNT    3,CPB,CUNI          [GET N-FIELD BLOCK   
3J?B          ADX   7  FX1  
3JR2          EXIT  7  0
3K=L    #   
3KQ=    NGET
3L9W          SBX   7  FX1  
3LPG          MHUNT    3,CPB,CUNI   
3M96          NGX   5  ANUM(3)  
3MNQ          BPZ   5  XERR6               [ERROR IF NO PARAM.  
3N8B          CALL  6  XCON 
3NN2          ADX   7  FX1  
3P7L          LDX   5  ACOMMUNE1(2) 
3PM=    NCHL
3Q6W          LDX   6  AWORK1(2)
3QLG          LDX   0  AWORK2(2)
3R66          SLL   0  1
3RKQ          BPZ   0  NFC                 [J AS MNEMONIC PARAMETER FOR SHIFT   
3S5B          ERN   6  #140                [SET 12-BIT N-RANGE AS FN. CODE  
3SK2    NFC   ANDN  6  #160                [[MASK NQRANGE   
3T4L          LDN   0  #40  
3TJ=          TXU   0  6
3W3W          BCS      N12                 [BRANCH IF NOT 12-BIT LIMIT  
3WHG          TXL   5  TWB(1)   
3X36          BCC      XERR7               [BRANCH IF NOT IN RANGE  
3XGQ          BRN      PQR5 
3Y2B    N12   LDN   0  #20  
3YG2          TXU   0  6
3Y^L          BCS      N15                 [BRANCH IF NOT 15-BIT LIMIT  
3^F=          TXL   5  FIFB(1)  
3^YW          BCC      XERR7               [BRANCH IF NOT IN RANGE  
42DG          BRN      PQR5 
42Y6    N15   TXL   5  TENB(1)  
43CQ          BCC      XERR7               [J IF NOT IN RANGE   
43XB          EXIT  7  0
44C2    #   
44WL    #   
45B=    XCON
45TW          SBX   6  FX1  
46*G    #SKI  ADELO 
46T6          CHNUMCO1 1,ZBRKN  
47#Q    #SKI  ADELO<1$1 
47SB          CHNUMCO1 1
48#2          TESTREP  CHNUMERR,XERR7   
48RL          ADX   6  FX1  
49?=          EXIT  6  0
49QW    #   
4==G    XDUB           [CHECKS IF 2* LENGTH ACC FIELD LEGAL & CORRECT FORMAT
4=Q6          LDX   0  AWORK1(2)
4?9Q          ANDN  0  #10  
4?PB          BZE   0  XERR5               [ERROR IF 2* LENGTH ACC FIELD ILLEGAL
4#92          LDX   0  APARA(3) 
4#NL          SRL   0  12   
4*8=          SBN   0  1
4*MW          ANDN  0  7
4B7G          BXU   0  5,XERR5             [ERROR IF NOT 01,12 ETC OR 70
4BM6          ORX   4  XBIT9(1)            [INSERT '2* LENGTH' BIT IN INSR WORD 
4C6Q          EXIT  7  0
4CLB    #   
4D62    XENT1   
4DKL          LDN   5  1
4F5=          PARANUMB 7,5                 [NO. OF PARAMS. INTO X7  
4FJW          ORS   7  AWORK2(2)
4G4G          SMO      6
4GJ6          BRN      ROUTS               [BRANCH TO APPROPRIATE ROUTINE   
4H3Q    ROUTS BRN      ROUT0               [NORMAL ROUTINE  
4HHB          BRN      ROUT1               [BRANCH ROUTINE  
4J32          BRN      ROUT2               [DEFINED ACCUMULATOR ROUTINE 
4JGL          BRN      ROUT3               [SHIFT ROUTINE   
4K2=          BRN      ROUT4               [PERIPHERAL ROUTINE  
4KFW          BRN      ROUT5               [SPECIAL ROUTINE 
4K^G          BRN      ROUT6               [ACCUMULATOR BRANCH ROUTINE  
4LF6    #   
4LYQ    OUT 
4MDB          MFREE    CPB,CUNI 
4MY2          LDX   5  AWORK4(2)           [GET CONVERSION  
4NCL    #SKI  G4
4NX=    (   
4PBW          LDN   3  0
4PWG          PARANOT  1,3  
4QB6          MHUNT    3,CPB,CUNI   
4QTQ          LDCH  0  APARA(3) 
4R*B          SBN   0  #60  
4RT2          BNZ   0  NPURE
4S#L          LDX   3  XACCESS(1)   
4SS=          BRN      PURE 
4T?W    NPURE   
4TRG    )   
4W?6          LDX   3  XACCESS1(1)  
4WQQ    PURE
4X=B    #SKI  ADELO<1$1 
4XQ2          GETWORDX 5,6,3
4Y9L    #SKI  ADELO 
4YP=    (   
4^8W          GETWORDX 5,6,3,,,ZBRKN
4^NG          TESTREP  LOADERR,XERR2
5286    )   
52MQ          TESTREPNOT NOCORE,XNEX
537B          ERROR    GWERNO   
53M2          BRN      XUP  
546L    XNEX  TESTREPNOT RESVIOL,XOK
54L=          ERROR    GWERRES  
555W          BRN      XWF  
55KG    XOK   SMO      6
5656          STO   4  0                   [CHANGE WORD 
56JQ    XWF   WORDFIN                      [TIDY UP OBJ. PROG.  
574B    XUP   ENDCOM
57J2    #   
583L    #   
58H=    #     ERROR IF NUMBER FORMAT ERROR OR RES. VIOC.
592W    XERR8 WORDFIN   
59GG    XERR2 ENDCOM
5=26    #   
5=^B    #     ERROR FOR INVALID ACCUMULATOR FIELD   
5?F2    XERR5   
5?YL          COMERR   JINVACC  
5#D=    #     INSTRUCTION FORMAT ERROR  
5#XW    XERR6   
5*CG          COMERR   JINSFERR 
5*X6    #     ERROR FOR INVALID OPERAND FIELDS  
5BBQ    XERR7   
5BWB          COMERR   JINVOP   
5CB2    #     ERROR FOR INVALID MODIFIER FIELD  
5CTL    XERR9   
5D*=          COMERR   JINVMOD  
5DCT ...#UNS ANSTOOMANY 
5DGD ...(   
5DK3 ...XERRA   
5DML ...      COMERR   JMAXPAR  
5DQ9 ...)   
5DSW    #SKI  ADELO 
5F#G ...ZBRKN COMBRKIN  
5FS6    #   
5G?Q    #   
5GRB    ROUT0   
5H?2          SBN   7  4
5HQL          BPZ   7  XERR6               [ERROR IF 4 PARAMS.  
5J==          ADN   7  4
5JPW          LDX   6  AWORK1(2)
5K9G          ANDN  6  5
5KP6          SBN   6  5
5L8Q          BZE   6  PQR1                [J IF 3 FIELDS REQD. 
5LNB          SBN   7  3
5M82          BZE   7  XERR6               [J IF THREE FIELDS   
5MML          ADN   6  4
5N7=          BNZ   6  PQR8                [J IF OMLY N-FIELD   
5NLW          ADN   7  4                   [DROP THROUGH AS ONLY X-FIELD
5P6G    PQR1  SBN   7  3
5PL6          BNZ   7  XERR6               [J IF ONLY 2 FIELDS  
5Q5Q          CALL  7  XGET 
5QKB          CALL  7  XDUB                [2* LENGTH OK FOR NORM INSTR 
5R52    PQR2  SRC   5  3                   [PLACE X-FIELD   
5RJL          ORX   4  5                   [PLACE X-FIELD   
5S4=    PQR6  FREECORE 3
5SHW    PQR8  CALL  7  MOCH 
5T3G          BRN      PQR3 
5TH6          ADN   5  1
5W2Q          BZE   5  XERR7               [ERROR IF M-FIELD WITHOUT N-FIELD
5WGB          BNG   5  PQR4                [BRANCH IF NO M-FIELD
5X22    PQR7  LDX   7  AWORK1(2)
5XFL          ANDN  7  2
5X^=          BZE   7  XERR6               [J IF NO M-FIELD ALLOWED 
5YDW          CALL  7  MGET 
5YYG    PQR3  LDX   2  AWORK1(2)
5^D6          ANDN  2  4
5^XQ          BNZ   2  PQR4                [J IF N-FIELD NECESSARY  
62CB          STOZ     5
62X2          BRN      PQR5                [BRANCH AS NO N-FIELD
63BL    PQR4  CALL  7  NGET 
63W=    PQR5  MFREE    CPB,CUNI 
64*W          ORX   4  5                   [SET N-FIELD 
64TG          BRN      OUT                 [EXIT TO MAIN ROUTINE
65*6    #   
65SQ    ROUT1   
66#B          SBN   7  3
66S2          BNZ   7  XERR6               [ERROR IF NOT 3 FIELDS   
67?L          CALL  7  XGET 
67R=          BRN      XERR5               [ERROR IF >1 CHAR.   
68=W          SRC   5  3
68QG          ORX   4  5                   [SET X-FIELD 
69=6    RST6  FREECORE 3
69PQ    RST4  CALL  7  MOCH 
6=9B          BRN      XERR6
6=P2          BZE   5  XERR6
6?8L          ADN   5  1
6?N=          BNZ   5  RST1                [J AS NOT REPLACED   
6#7W    RST5  LDX   0  AWORK1(2)
6#MG          ANDN  0  #200 
6*76          BZE   0  XERR7               [ERROR IF REPLACED BRANCH NOT ALLOWED
6*LQ          CALL  6  XCON                [REPLACED JUMP OPERAND STILL VALID   
6B6B                                       [ FOR CHNUMCO1 THOUGH ENCLOSED IN () 
6BL2          LDX   5  ACOMMUNE1(2) 
6C5L          LDCT  6  1
6CK=          SRL   6  1
6D4W          ORX   5  6                   [SET REPLACED BIT
6DJG          BRN      RST3 
6F46    RST1  LDCH  7  APARA(3) 
6FHQ          SBN   7  #32  
6G3B          BNZ   7  RST2                [IF 1ST CHAR NOT A *,BRANCH  
6GH2          LDX   0  MSK1(1)             [ OTHERWISE OVERWRITE BY 0   
6H2L          ANDS  0  APARA(3) 
6HG=    RST2  CALL  6  XCON                [CONVERTED NUMBER
6H^W          LDX   5  ACOMMUNE1(2)        [ TO X5  
6JFG          MFREE    CPB,CUNI 
6J^6          BNZ   7  RST10               [IF 1ST CHAR NOT A *,BRANCH  
6KDQ          ADX   5  AWORK4(2)           [ OTHERWISE MAKE RELATIVE BRANCH ABS.
6KYB    RST10 BPZ   5  RST3 
6LD2          BXL   5  MIN8192(1),XERR7    [REL BRN OF OVER -8192 ILLEGAL   
6LXL          ANDX  5  MSK2(1)  
6MC=    RST3  CALL  7  NCHL 
6MWW          BRN      OUT                 [EXIT
6NBG    #   
6NW6    ROUT2   
6P*Q          LDN   0  PQR8                [SET EXIT ADDRESS
6PTB    OPQ2  LDX   6  AWORK2(2)
6Q*2          STO   0  AWORK3(2)           [[STORE EXIT POINT   
6QSL          BPZ   6  XMN                 [J IF MNEMONIC PARAMETER 
6R#=          CALL  7  XGET                [OTHERWISE ASSUME FN. CODE   
6RRW          BRN      XERR5               [J IF ILLEGAL ACCUMULATOR
6S?G          SRC   5  3
6SR6          ORX   4  5                   [SET ACCUMULATOR FIELD   
6T=Q          FREECORE 3
6TQB          BRN      OPQ1 
6W=2    XMN   SBN   7  2
6WPL          BNZ   7  XERR6               [ERROR IF F,X, AND N SPECIFIED   
6X9=          LDX   6  AWORK1(2)
6XNW          LDCT  7  #700                [MASK ACCUMULATOR FIELD  
6Y8G          ANDS  7  6
6YN6          ORX   4  6                   [SET XQFIELD 
6^7Q    OPQ1  LDX   7  AWORK3(2)           [GET EXIT ADDRESS
6^MB          ADX   7  FX1  
7272          EXIT  7  0
72LL    #   
736=    ROUT3   
73KW          SBN   7  3
745G          BNZ   7  XERR6               [ERROR IF NOT X,F,N FIELDS PRESENT   
74K6          LDX   2  FX2  
754Q          LDX   7  AWORK2(2)
75JB          BNG   7  UVW4                [J IF FN. CODE PARAMETER 
7642          LDX   6  AWORK1(2)           [GET BIT-PATTERN 
76HL          SRL   6  11   
773=          ANDN  6  #6000               [MASK OUT UNWANTED BITS  
77GW          ORX   4  6                   [SET IN SHIFT DEFINITION FIELD   
782G    UVW4  CALL  7  XGET 
78G6          CALL  7  XDUB                [CHECK FOR 2* LENGTH SHIFT   
78^Q          SRC   5  3                   [SHIFT X-FIELD   
79FB          ORX   4  5                   [SET IN WORD 
79^2          LDX   6  AWORK2(2)
7=DL          BPZ   6  UVW3                [J IF NOT FN. CODE PARAMETER 
7=Y=          LDCT  6  #200 
7?CW          ORS   6  AWORK2(2)           [SET BIT TO SHOW FN. CODE SHIFT  
7?XG    UVW3  BRN      PQR6                [J TO SET N-FIELD
7#C6    #   
7#WQ    ROUT4   
7*BB          LDX   0  7
7*W2          SBN   0  3
7B*L          BZE   0  ROUT0
7BT=          LDN   5  1
7C#W          CALL  6  PARGET              [GET FIRST PARAM 
7CSG          LDCH  6  APARA(3) 
7D#6          SBN   6  #41  
7DRQ          BNG   6  XERR6               [ERROR IF NOT PERIPH. TYPE   
7F?B          LDX   5  APARA(3) 
7FR2          SRL   5  12                  [TYPE IN X5  
7G=L          LDN   1  PERTAB(1)           [START OF TABLE  
7GQ=    XYZ4  LDX   6  0(1) 
7H9W          BZE   6  XERR6               [ERROR IF END OF TABLE   
7HPG          ANDN  6  #7777               [TYPE IN X6  
7J96          SBX   6  5
7JNQ          BZE   6  XYZ3                [J IF TYPE FOUND 
7K8B          ADN   1  1
7KN2          BRN      XYZ4                [LOOP
7L7L    XYZ3  LDX   5  0(1)                [GET PERIPH TYPE 
7LM=          SRL   5  12   
7M6W          ORX   4  5                   [SET IN X4   
7MLG          LDX   6  ANUM(3)  
7N66          ANDN  6  #77  
7NKQ          SBN   6  3
7P5B          BNZ   6  XERR6               [ERROR IF NOT 3 CHARS.   
7PK2          LDX   6  APARA(3)            [GET PARAM.  
7Q4L          SRL   6  6
7QJ=          ANDN  6  #77  
7R3W          SBN   6  8
7RHG          BPZ   6  XERR7
7S36          ADN   6  8
7SGQ          SRC   6  3                   [POSITION UNIT NO.   
7T2B          ORX   4  6                   [SET UNIT NUMBER 
7TG2          FREECORE 3
7T^L          BRN      OUT                 [EXIT
7WF=    #   
7WYW    ROUT5   
7XDG          SBN   7  1
7XY6          BZE   7  SINP                [J IF ONE
7YCQ          SBN   7  1
7YXB          BZE   7  TWOP                [J IF TWO
7^C2          SBN   7  1
7^WL          BNZ   7  XERR6               [J IF >3 
82B=          CALL  7  XGET                [GET X-FIELD 
82TW ...      BRN      XERR5
83*G          LDX   6  4
83T6          SRC   6  12   
84#Q          LDN   7  PQR6                [SET EXIT LOCN.  
84SB          SBN   6  #714 
85#2          BNZ   6  VOK1                [J IF NOT AUTO   
85RL    XAUT  SBN   5  4
86?=          BNG   5  VOK1 
86QW          BRN      XERR5               [ERROR IF X>4
87=G    VOK1  LDCH  5  APARA(3) 
87Q6          SRC   5  3
889Q          ORX   4  5
88PB          ADX   7  FX1  
8992          EXIT  7  0                   [J TO NEXT ROUTINE   
89NL    SINP
8=8=          LDX   6  4
8=MW          SRC   6  15   
8?7G          SBN   6  #57  
8?M6          BNZ   6  XERR6               [ERROR IF NOT LFPZ   
8#6Q          LDCT  6  #100 
8#LB          ORX   4  6
8*62          BRN      PQR8 
8*KL    TWOP
8B5=          LDX   6  4
8BJW          SRC   6  12   
8C4G          SBN   6  #474 
8CJ6          BZE   6  VOX  
8D3Q          SBN   6  #100 
8DHB          BNZ   6  XERR6               [ERROR IF NOT SMO OR SFPZ
8F32    VOX   BRN      PQR8 
8FGL    #   
8G2=    #   
8GFW    ROUT6   
8G^G          LDN   0  RST4                [SET ECIT POINT  
8HF6          BRN      OPQ2 
8HYQ    #   
8JDB    #   
8JY2 ...      MENDAREA 30,K100ALTINST   
8KX=    #END
^^^^ ...12321524000400000000