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