;MACRO DISASSEMBLER SUBROUTINE .TITLE DISASS .IDENT /12N/ ;FORTRAN CALLING CONDITIONS: ;CALL DISASS(IARR,OPT,OPND1,OPND2,ICNT,IPC) ; ;WHERE: ; ;IARR= ADDRESS OF (UP TO) 3 WORD CODE TO BE DISASSEMBLED ;OPT= ADDRESS OF LOGICAL*1 ARRAY FOR OPERATOR CODE (ASCII) ;OPND1= ADDRESS OF LOGICAL*1 ARRAY FOR POSSIBLE 1ST OPERAND (ASCII) ;OPND2= ADDRESS OF LOGICAL*1 ARRAY FOR POSSIBLE 2ND OPERAND (ASCII) ;ICNT= COUNT OF NUMBER OF WORDS DECODED ;IPC= CURRENT PC ; ; DISASS:: MOV 2(R5),BUFCUR ;STORE INPUT DATA ADDRESS MOV 4(R5),OUTPT1 ;SAVE FIRST OUTPUT POINTER MOV 6(R5),OUTPT2 ;SAVE 2ND OUTPUT POINTER MOV 10(R5),OUTPT3 ;AND 3RD ALSO MOV 12(R5),OUTCNT ;AND POINTER TO RETURN COUNTER CLR @12(R5) ;CLEAR COUNT FOR NOW MOV @14(R5),L.ADR ;SET UP PC MOV 14(R5),CURADD ;SAVE LOC OF PC IN MAIN PROGRAM CLR SPFLAG ;CLEAR SPECIAL FLAG CLR MODE1 ;CLEAR PRINT MODE JSR PC,L.GWRD ;GET A CODE MOV #170000,R0 ;BIT MASK TO R0 XOR R0,R4 ;DIDDLE TOP FOUR BITS OF CODE CLR FPFLAG ;CLEAR FLAG BIT R0,R4 ;ALL BITS NOW ZERO ? BNE 1$ ;NO IT ISN'T A FLOATING POINT INST. INC FPFLAG ;YES SET FLOATING POINT FLAG 1$: XOR R0,R4 ;PUT BITS BACK TO WHAT THEY WERE MOV R4,SAVE1 ;SAVE IT FOR LATER USE ADD #2,L.ADR ;BUMP ADDRESS COUNTER MOV OUTPT1,R2 ;OUTPUT BUFFER POINTER TO R2 JSR R5,CINSTR ;1ST GROUP FULL WORDS .WORD 0 ;MASK .WORD LIST1 ;ADDRESS OF CODE .WORD /2 ;LENGTH TABLE .WORD TABL1-LIST1-2 ;RELATIVE DIFF BR C5 JMP RESUME C5: JSR R5,CINSTR ;5TH GROUP RTS .WORD 7 .WORD LIST5 .WORD /2 .WORD TABL5-LIST5-2 BR C2 CMP #76020,R4 ;IS IT L2DR BEQ C5C CMP #76060,R4 ; OR L3DR? BNE C5B C5C: MOV SAVE1,R4 BIC #177770,R4 BISB R4,-(R2) JMP RESUME C5B: MOV OUTPT2,R2 ;POINT 2 2ND ASCII BUFFER CMP #230,R4 ;IS IT SPL? BEQ C5A ;IF EQ, YES MOVB #'R,(R2)+ ;ASCII R TO BUFFER MOV SAVE1,R0 JSR PC,REGLFT JMP RESUME C5A: MOV SAVE1,R4 BIC #177770,R4 BR C3A C2: JSR R5,CINSTR ;2ND GROUP SINGLE OP .WORD 77 .WORD LIST2 .WORD /2 .WORD TABL2-LIST2-2 BR C3 MOV OUTPT2,R2 ;POINT TO SECOND ASCII BUFFER CMP #6400,R4 ;IS IT MARK? BEQ C2B C2A: JSR PC,MODE ;CHECK 1 MODE JMP RESUME C2B: MOV SAVE1,R4 BIC #177700,R4 BR C3A C3: JSR R5,CINSTR ;3RD GROUP BRANCHES .WORD 377 .WORD LIST3 .WORD /2 .WORD TABL3-LIST3-2 BR C4A MOV OUTPT2,R2 ;POINT TO SECOND ASCII BUFFER MOV SAVE1,R4 ;TEMP USE BIC #177400,R4 ;STRIP BRANCH ASL R4 ;MULT BY 2 ADD L.ADR,R4 ;CALCULATE ADDRESS C3A: JSR PC,PRINT ;BRANCHED TO JMP RESUME C4A: JSR R5,CINSTR ;GROUP 3.5,TRAPS .WORD 377 .WORD LIST4A .WORD /2 .WORD TABL4A-LIST4A-2 BR C4 MOV OUTPT2,R2 ;POINT TO SECOND ASCII BUFFER MOVB SAVE1,R4 ;8 FREE BITS BIC #177400,R4 ;CLEAR OUT POSSIBLE CARRY OF SIGN BIT BR C3A C4: JSR R5,CINSTR ;4TH GROUP JSR .WORD 777 .WORD LIST4 .WORD /2 .WORD TABL4-LIST4-2 BR C4B MOV OUTPT2,R2 ;POINT TO SECOND ASCII BUFFER MOVB #'R,(R2)+ ;ASCII R IN BUFFER MOV SAVE1,R0 ASH #-6,R0 ;SHIFT REGISTER INTO POSITION JSR PC,REGLFT ;CALLING REGISTER MOV OUTPT3,R2 ;POINT TO 3RD ASCII BUFFER BR C2A C4B: JSR R5,CINSTR ;MUL,DIV,ETC. .WORD 777 ;MASK .WORD LIST4B ;LIST POINTER .WORD /2;NUMBER TO CHECK .WORD TABL4B-LIST4B-2 ;OFFSET BR C6 ;BRANCH IF CHECK FAILS MOV OUTPT2,R2 ;POINT TO SECOND ASCII BUFFER CMP #77000,R4 ;IS IT A SOB COMMAND ? BEQ C4C ;YES INC SPFLAG ;INDICATE PRINT DEST, THEN REGISTER BR C2A C4C: MOV SAVE1,R0 ;GET COMMAND ASH #-6,R0 ;CONVERT TO OCTAL # MOVB #'R,(R2)+ ;'R' TO ASCII BUFFER JSR PC,REGLFT ;PRINT REG MOV OUTPT3,R2 ;POINT TO 3RD ASCII BUFFER MOV SAVE1,R0 ;GET CODE AGAIN BIC #177700,R0 ;GET OFFSET ASL R0 ;CONVERT IT TO A BYTE OFFSET MOV L.ADR,R4 ;ADDRESS TO R4 SUB R0,R4 ;SUBTRACT BRANCH OFFSET BR C8A C6: JSR R5,CINSTR ;6TH GROUP DOUBLE OP .WORD 7777 .WORD LIST6 .WORD /2 .WORD TABL6-LIST6-2 BR C7 MOV OUTPT2,R2 ;POINT TO SECOND ASCII BUFFER INC MODE1 BR C7B C7: MOV SAVE1,R4 ;RESTORE FN CODE JSR R5,CINSTR ;7TH GROUP, MOST FLOATING POINT CODES .WORD 377 .WORD LIST7 .WORD /2 .WORD TABL7-LIST7-2 BR C8 MOV OUTPT2,R2 ;POINT TO 2ND OUTPUT BUFFER CMP #174000,R4 ;STF CODE ? BEQ C7A ;BR IF YES CMP #175000,R4 ;STEXP ? BEQ C7A CMP #175400,R4 ;STCFI ? BEQ C7A CMP #176000,R4 ;STCFD ? BEQ C7A ;MUST DECODE DEST FIRST, THEN FP REG BIC #400,R4 ;CLEAR BIT SO AC REG DECODES RIGHT BIC #400,SAVE1 ;AND AT STORED LOCATION TOO INC SPFLAG ;SET SPECIAL MODE FLAG BR C7B C7A: ;HERE IF MUST PRINT ACX, THEN DEST MODE MOV SAVE1,R0 ;GET OP CODE TO R0 BIC #177477,R0 ;CLEAR TO FL ACC REG NUMBER ASH #-6,R0 ;ROTATE DOWN TO 2 BOTTOM BITS MOVB #'A,(R2)+ ;PUT ASCII 'AC' INTO SECOND BUFFER MOVB #'C,(R2)+ ADD #'0,R0 ;CONVERT R0 TO ASCII DIGIT MOVB R0,(R2)+ ;AND PUT IN BUFFER MOV OUTPT3,R2 ;POINT TO 3RD BUFFER C7B: JSR PC,MODE ;DO YOUR THING BR RESUME ;AND TRY AGAIN C8: MOV #NAME71,R1 ;".WORD" ALL OTHERS JSR PC,MESS MOV SAVE1,R4 MOV OUTPT2,R2 ;POINT TO SECOND ASCII BUFFER C8A: JSR PC,PRINT RESUME: MOV L.ADR,@CURADD ;UPDATE PC IN MAIN PROGRAM RTS PC ;RETURN TO MAIN PROGRAM ;ROUTINE TO INSERT ASCII STRING TERMINATED BY A @ BYTE ;INTO ASCII BUFFER ;ENTER WITH R1 POINTING TO TEXT TO BE INSERTED ;R2 POINTING TO CURRENT POSITION IN ASCII BUFFER ; MESS: MOVB (R1)+,(R2) ;XFER A CHARACTER CMPB (R2)+,#100 ;TERMINATOR ? BEQ 10$ ;YES BR MESS ;AND DO ANOTHER 10$: MOVB #' ,-(R2) ;CHANGE TERM TO SPACE RTS PC ;AND RETURN L.GWRD: MOVB @BUFCUR,R4 ;GET NEXT BYTE IN R4 INC BUFCUR ;STEP TO NEXT BYTE BIC #177400,R4 ;CLEAR OUT SIGN EXTENSION MOV R4,-(SP) ;SAVE LOW BYTE MOVB @BUFCUR,R4 ;GET HIGH BYTE INC BUFCUR ;STEP TO NEXT WORD SWAB R4 ;POSITION HIGH BYTE BIC #377,R4 ;CLEAR OUT SIGN EXTENSION BIS (SP)+,R4 ;MERGE IN LOW BYTE INC @OUTCNT ;COUNT ONE WORD DECODED RTS PC ;AND RETURN PRINT: ;PRINT THE NUMBER IN R4 WITH LEADING ZERO SUPPRESSION ;ENTER WITH: ; R4 CONTAINING NUMBER TO BE CONVERTED AND INSERTED INTO ; ASCII BUFFER ; R2 CONTAINING POINTER TO NEXT BYTE IN ASCII BUFFER ; ;ON RETURN R2 POINTS TO NEXT AVAILABLE BYTE IN BUFFER ; MOV R0,-(SP) ;SAVE USED REGISTERS MOV R1,-(SP) MOV R2,R0 ;BUFFER POINTER TO R0 MOV R4,R1 ;NUMBER TO R1 CLR R2 ;INDICATE LEADING ZERO SUPPRESS JSR PC,$CBOMG ;CALL SYSTEM ROUTINE MOV R0,R2 ;ON RETURN UPDATE BUFFER POINTER MOV (SP)+,R1 ;RESTORE REGISTERS MOV (SP)+,R0 RTS PC ;AND RETURN ;SUBROUTINE TO FIND INSTRUCTIONS ;FORMAT: ;JSR R5,CINSTR ;.WORD MASK ;.WORD LIST CODES ;.WORD LIST LENGTH ;.WORD LIST NAME-LIST CODES-2 ;POSSIBLE INSTRUCTION IN R4 CINSTR: BIC (R5)+,R4 ;MASK 1ST ARG MOV (R5)+,R3 ;TABLE LOC MOV (R5)+,R0 ;TABLE LENGTH MOV (R5)+,INDX ;RELATIVE DIFF CHINST: CMP R4,(R3)+ ;CHECK TABLE BNE NOTONE MOV 0(R3),R1 ;INDEX ON R3 INDX=.-2 JSR PC,MESS ;PRINT NAME TST (R5)+ ;BUMP RETURN RTS R5 ;RETURN WITH INSTRUCTION NOTONE: SOB R0,CHINST ;END LIST? RTS R5 ;RETURN,NONE FOUND MODE1: .WORD 0 ;COUNTER SPFLAG: .WORD 0 ;SPECIAL MODE FLAG MODE: MOV SAVE1,R4 ;RESTORE WORD TST MODE1 ;CHECK FOR # BEQ MODECK ;ONLY ONE ASH #-6,R4 ;GET REGISTER INTO POSITION MODECK: DEC MODE1 ;RESET FOR NEXT TIME MOV R4,R0 ;SAVE ROTATED R4 BIC #177700,R4 ;MASK JUNK CMP #27,R4 ;IMMEDIATE BEQ EQ27 CMP #37,R4 ;ABSOLUTE BEQ EQ37 CMP #67,R4 ;RELATIVE BEQ EQ67 CMP #77,R4 ;REL DEFERRED BEQ EQ77 BIC #7,R4 ;MODE ONLY CMP #0,R4 ;REGISTER BEQ EQ0 CMP #10,R4 ;DEFERRED BEQ EQ1 CMP #20,R4 ;AUTO-INC BEQ EQ2 CMP #30,R4 ;AUTO-INC DEF BEQ EQ3 CMP #40,R4 ;AUTO-DEC BEQ EQ4 CMP #50,R4 ;AUTO-DEC DEF BEQ EQ5 CMP #60,R4 ;INDEXED BEQ EQ6 BR EQ7 ;ONLY ONE LEFT EQ0: TST FPFLAG ;FLOATING POINT INSTRUCTION ? BEQ 10$ ;NO MOVB #'A,(R2)+ ;YES, ADD 'AC' MOVB #'C,(R2)+ ;INSTEAD OF 'R' BR 20$ 10$: MOVB #'R,(R2)+ ;REGISTER MODE 20$: JSR PC,REGLFT BR HOUSKP EQ3: MOVB #'@,(R2)+ ;AUTO-INC DEF EQ2: JSR PC,REGPAR ;AUTO-INC MOVB #'+,(R2)+ BR HOUSKP EQ5: MOVB #'@,(R2)+ ;AUTO-DEC DEF EQ4: MOVB #'-,(R2)+ ;AUTO-DEC EQ1: JSR PC,REGPAR ;DEFERRED BR HOUSKP EQ7: MOVB #'@,(R2)+ ;INDEX DEFERRED EQ6: JSR PC,GDATA ;AN INDEX WORD JSR PC,PRINT ;INDEX JSR PC,REGPAR ;REGISTER BR HOUSKP EQ37: MOVB #'@,(R2)+ ;ABSOLUTE ADDRESS EQ27: MOVB #'#,(R2)+ ;IMMEDIATE JSR PC,GDATA ;WORD JSR PC,PRINT BR HOUSKP EQ77: MOVB #'@,(R2)+ ;RELATIVE DEF EQ67: JSR PC,GDATA ;RELATIVE ADDRESS ADD L.ADR,R4 ;ACTUAL " JSR PC,PRINT BR HOUSKP REGLFT: BIC #177770,R0 CMP #6,R0 ;IS IT SP ? BNE 10$ ;NO DEC R2 ;YES, DECREMENT POINTER MOVB #'S,(R2)+ ;PUT SP INTO ASCII BUFFER MOVB #'P,(R2)+ RTS PC ;AND RETURN 10$: CMP #7,R0 ;MAYBE IT'S PC ? BNE 20$ ;NO DEC R2 ;YES, DEC POINTER MOVB #'P,(R2)+ ;PUT PC INTO ASCII BUFFER MOVB #'C,(R2)+ RTS PC ;AND RETURN 20$: ADD #'0,R0 ;ITS REG 0 TO 5 MOVB R0,(R2)+ RTS PC REGPAR: MOVB #'(,(R2)+ ;STORE "(R" MOVB #'R,(R2)+ JSR PC,REGLFT ;WHICH REG? MOVB #'),(R2)+ ;STORE ")" RTS PC HOUSKP: TST MODE1 ;HOUSKEEPING BMI 10$ ;IS THERE ANOTHER MODE? MOV OUTPT3,R2 ;YES POINT TO 3RD ASCII BUFFER JMP MODE 10$: TST SPFLAG ;PRINT REG FIRST ? BEQ 30$ ;NO MOV SAVE1,R0 ;GET CODE AGAIN BIC #177077,R0 ;MASK OUT OTHER BITS ASH #-6,R0 ;MAKE IT AN OCTAL DIGIT MOV OUTPT3,R2 ;POINT TO 3RD ASCII BUFFER TST FPFLAG ;FLOATING POINT INSTRUCTION ? BEQ 15$ ;BR IF NOT MOVB #'A,(R2)+ ;YES PUT ASCII 'AC' INTO MOVB #'C,(R2)+ ;INTO BUFFER BR 20$ 15$: MOVB #'R,(R2)+ ;INSERT "R" INTO ASCII BUFFER 20$: JSR PC,REGLFT ;PRINT REGISTER 30$: RTS PC GDATA: JSR PC,L.GWRD ;A WORD ADD #2,L.ADR ;CORRECT ADDRESS RTS PC ;1ST RETURN LIST1: .WORD 241 ;CLC .WORD 261 ;SEC .WORD 242 ;CLV .WORD 262 ;SEV .WORD 244 ;CLZ .WORD 264 ;SEZ .WORD 250 ;CLN .WORD 270 ;SEN .WORD 254 ;CNZ .WORD 257 ;CCC .WORD 277 ;SCC .WORD 170000 ;CFCC .WORD 170001 ;SETF .WORD 170002 ;SETI .WORD 170011 ;SETD .WORD 170012 ;SETL .WORD 0 ;HALT .WORD 1 ;WAIT .WORD 2 ;RTI .WORD 3 ;BPT .WORD 4 ;IOT .WORD 5 ;RESET .WORD 6 ;RTT .WORD 7 ;MFPT .WORD 240 ;NOP .WORD 76600 ;MED .WORD 170003 ;LDUB .WORD 170004 ;MNS .WORD 170005 ;MPP .WORD 76050 ;ADDN .WORD 76070 ;ADDP .WORD 76150 ;ADDNI .WORD 76170 ;ADDPI .WORD 76056 ;ASHN .WORD 76076 ;ASHP .WORD 76156 ;ASHNI .WORD 76176 ;ASHPI .WORD 76044 ;CMPC .WORD 76144 ;CMPCI .WORD 76052 ;CMPN .WORD 76072 ;CMPP .WORD 76152 ;CMPNI .WORD 76172 ;CMPPI .WORD 76057 ;CVTLN .WORD 76077 ;CVTLP .WORD 76157 ;CVTLNI .WORD 76177 ;CVTLPI .WORD 76053 ;CVTNL .WORD 76073 ;CVTPL .WORD 76153 ;CVTNLI .WORD 76173 ;CVTPLI .WORD 76055 ;CVTNP .WORD 76054 ;CVTPN .WORD 76155 ;CVTNPI .WORD 76154 ;CVTPNI .WORD 76075 ;DIVP .WORD 76175 ;DIVPI .WORD 76040 ;LOCC .WORD 76140 ;LOCCI .WORD 76045 ;MATC .WORD 76145 ;MATCI .WORD 76030 ;MOVC .WORD 76130 ;MOVCI .WORD 76031 ;MOVRC .WORD 76131 ;MOVRCI .WORD 76032 ;MOVTC .WORD 76132 ;MOVTCI .WORD 76074 ;MULP .WORD 76174 ;MULPI .WORD 76042 ;SCANC .WORD 76142 ;SCANCI .WORD 76041 ;SKPC .WORD 76141 ;SKPCI .WORD 76043 ;SPANC .WORD 76143 ;SPANCI .WORD 76051 ;SUBN .WORD 76071 ;SUBP .WORD 76151 ;SUBNI .WORD 76171 ;SUBPI LIST2: .WORD 5000 ;CLR .WORD 105000 ;CLRB .WORD 5100 ;COM .WORD 105100 ;COMB .WORD 5200 ;INC .WORD 105200 ;INCB .WORD 5300 ;DEC .WORD 105300 ;DECB .WORD 5400 ;NEG .WORD 105400 ;NEGB .WORD 5500 ;ADC .WORD 105500 ;ADCB .WORD 5600 ;SBC .WORD 105600 ;SBCB .WORD 5700 ;TST .WORD 105700 ;TSTB .WORD 6000 ;ROR .WORD 106000 ;RORB .WORD 6100 ;ROL .WORD 106100 ;ROLB .WORD 6200 ;ASR .WORD 106200 ;ASRB .WORD 6300 ;ASL .WORD 106300 ;ASLB .WORD 100 ;JMP .WORD 300 ;SWAB .WORD 6600 ;MTPI .WORD 106600 ;MTPD .WORD 6500 ;MFPI .WORD 106500 ;MFPD .WORD 170100 ;LDFPS .WORD 170200 ;STFPS .WORD 170300 ;STST .WORD 170400 ;CLRF/D .WORD 170500 ;TSTF/D .WORD 170600 ;ABSF/D .WORD 170700 ;NEGF/D .WORD 6700 ;SXT .WORD 106700 ;MFPS .WORD 106400 ;MTPS .WORD 6400 ;MARK .WORD 7000 ;CSM LIST3: .WORD 400 ;BR .WORD 1000 ;BNE .WORD 1400 ;BEQ .WORD 2000 ;BGE .WORD 2400 ;BLT .WORD 3000 ;BGT .WORD 3400 ;BLE .WORD 100000 ;BPL .WORD 100400 ;BMI .WORD 101000 ;BHI .WORD 101400 ;BLOS .WORD 102000 ;BVC .WORD 102400 ;BVS .WORD 103000 ;BCC .WORD 103400 ;BCS LIST4A: .WORD 104000 ;EMT .WORD 104400 ;TRAP LIST4: .WORD 4000 ;JSR .WORD 74000 ;XOR LIST4B: .WORD 70000 ;MUL .WORD 71000 ;DIV .WORD 72000 ;ASH .WORD 73000 ;ASHC .WORD 77000 ;SOB LIST5: .WORD 200 ;RTS .WORD 230 ;SPL .WORD 76020 ;L2DR .WORD 76060 ;L3DR LIST6: .WORD 10000 ;MOV .WORD 110000 ;MOVB .WORD 020000 ;CMP .WORD 120000 ;CMPB .WORD 030000 ;BIT .WORD 130000 ;BITB .WORD 040000 ;BIC .WORD 140000 ;BICB .WORD 050000 ;BIS .WORD 150000 ;BISB .WORD 060000 ;ADD .WORD 160000 ;SUB LIST7: .WORD 171000 ;MULF .WORD 171400 ;MODF .WORD 172000 ;ADDF .WORD 172400 ;LDF .WORD 173000 ;SUBF .WORD 173400 ;CMPF .WORD 174000 ;STF .WORD 174400 ;DIVF .WORD 175000 ;STEXP .WORD 175400 ;STCFI .WORD 176000 ;STCFD .WORD 176400 ;LDEXP .WORD 177000 ;LDCIF .WORD 177400 ;LDCDF TABL1: .WORD NAM07,NAM08,NAM09 .WORD NAM10,NAM11,NAM12 .WORD NAM13,NAM14,NAM15 .WORD NAM16,NAM17,NAM74 .WORD NAM75,NAM76,NAM77 .WORD NAM78,NAM103,NAM104 .WORD NAM105,NAM106,NAM107 .WORD NAM108,NAM109,NAM110 .WORD NAM111,NAM112,NAM113 .WORD NAM114,NAM115,NAM116 .WORD NAM117,NAM118,NAM119 .WORD NAM120,NAM121,NAM122 .WORD NAM123,NAM124,NAM125 .WORD NAM126,NAM127,NAM128 .WORD NAM129,NAM130,NAM131 .WORD NAM132,NAM133,NAM134 .WORD NAM135,NAM136,NAM137 .WORD NAM138,NAM139,NAM140 .WORD NAM141,NAM142,NAM143 .WORD NAM144,NAM145,NAM146 .WORD NAM147,NAM148,NAM149 .WORD NAM150,NAM151,NAM152 .WORD NAM153,NAM154,NAM155 .WORD NAM156,NAM157,NAM158 .WORD NAM159,NAM160,NAM161 .WORD NAM162,NAM163,NAM164 .WORD NAM165 TABL2: .WORD NAM18,NAM19,NAM20 .WORD NAM21,NAM22,NAM23 .WORD NAM24,NAM25,NAM26 .WORD NAM27,NAM28,NAM27A .WORD NAM28A,NAM29 .WORD NAM30,NAM31,NAM32 .WORD NAM33,NAM34,NAM35 .WORD NAM36,NAM37,NAM38 .WORD NAM39,NAM40,NAM41 .WORD NAM41A,NAM41B,NAM41C .WORD NAM41D .WORD NAM79,NAM80,NAM81 .WORD NAM82,NAM83,NAM84 .WORD NAM85 .WORD NAM100,NAM101,NAM102 .WORD NAM166,NAM167 TABL3: .WORD NAM42,NAM43,NAM44 .WORD NAM45,NAM46,NAM47 .WORD NAM48,NAM49,NAM50 .WORD NAM51,NAM52,NAM53 .WORD NAM54,NAM55,NAM56 TABL4A: .WORD NAM72,NAM73 TABL4: .WORD NAM57,NAM57A TABL4B: .WORD NAM00,NAM01,NAM02 .WORD NAM03,NAM04 TABL5: .WORD NAM58,NAM170,NAM168 .WORD NAM169 TABL6: .WORD NAM59,NAM60,NAM61 .WORD NAM62,NAM63,NAM64 .WORD NAM65,NAM66,NAM67 .WORD NAM68,NAM69,NAM70 TABL7: .WORD NAM86,NAM87,NAM88 .WORD NAM89,NAM90,NAM91 .WORD NAM92,NAM93,NAM94 .WORD NAM95,NAM96,NAM97 .WORD NAM98,NAM99 .NLIST BEX NAM00: .ASCII "MUL@" NAM01: .ASCII "DIV@" NAM02: .ASCII "ASH@" NAM03: .ASCII "ASHC@" NAM04: .ASCII "SOB@" NAM07: .ASCII "CLC@" NAM08: .ASCII "SEC@" NAM09: .ASCII "CLV@" NAM10: .ASCII "SEV@" NAM11: .ASCII "CLZ@" NAM12: .ASCII "SEZ@" NAM13: .ASCII "CLN@" NAM14: .ASCII "SEN@" NAM15: .ASCII "CNZ@" NAM16: .ASCII "CCC@" NAM17: .ASCII "SCC@" NAM18: .ASCII "CLR@" NAM19: .ASCII "CLRB@" NAM20: .ASCII "COM@" NAM21: .ASCII "COMB@" NAM22: .ASCII "INC@" NAM23: .ASCII "INCB@" NAM24: .ASCII "DEC@" NAM25: .ASCII "DECB@" NAM26: .ASCII "NEG@" NAM27: .ASCII "NEGB@" NAM28: .ASCII "ADC@" NAM27A: .ASCII "ADCB@" NAM28A: .ASCII "SBC@" NAM29: .ASCII "SBCB@" NAM30: .ASCII "TST@" NAM31: .ASCII "TSTB@" NAM32: .ASCII "ROR@" NAM33: .ASCII "RORB@" NAM34: .ASCII "ROL@" NAM35: .ASCII "ROLB@" NAM36: .ASCII "ASR@" NAM37: .ASCII "ASRB@" NAM38: .ASCII "ASL@" NAM39: .ASCII "ASLB@" NAM40: .ASCII "JMP@" NAM41: .ASCII "SWAB@" NAM41A: .ASCII "MTPI@" NAM41B: .ASCII "MTPD@" NAM41C: .ASCII "MFPI@" NAM41D: .ASCII "MFPD@" NAM42: .ASCII "BR@" NAM43: .ASCII "BNE@" NAM44: .ASCII "BEQ@" NAM45: .ASCII "BGE@" NAM46: .ASCII "BLT@" NAM47: .ASCII "BGT@" NAM48: .ASCII "BLE@" NAM49: .ASCII "BPL@" NAM50: .ASCII "BMI@" NAM51: .ASCII "BHI@" NAM52: .ASCII "BLOS@" NAM53: .ASCII "BVC@" NAM54: .ASCII "BVS@" NAM55: .ASCII "BCC@" NAM56: .ASCII "BCS@" NAM57: .ASCII "JSR@" NAM57A: .ASCII "XOR@" NAM58: .ASCII "RTS@" NAM59: .ASCII "MOV@" NAM60: .ASCII "MOVB@" NAM61: .ASCII "CMP@" NAM62: .ASCII "CMPB@" NAM63: .ASCII "BIT@" NAM64: .ASCII "BITB@" NAM65: .ASCII "BIC@" NAM66: .ASCII "BICB@" NAM67: .ASCII "BIS@" NAM68: .ASCII "BISB@" NAM69: .ASCII "ADD@" NAM70: .ASCII "SUB@" NAME71: .ASCII ".WORD@" NAM72: .ASCII "EMT@" NAM73: .ASCII "TRAP@" NAM74: .ASCII "CFCC@" NAM75: .ASCII "SETF@" NAM76: .ASCII "SETI@" NAM77: .ASCII "SETD@" NAM78: .ASCII "SETL@" NAM79: .ASCII "LDFPS@" NAM80: .ASCII "STFPS@" NAM81: .ASCII "STST@" NAM82: .ASCII "CLRF@" NAM83: .ASCII "TSTF@" NAM84: .ASCII "ABSF@" NAM85: .ASCII "NEGF@" NAM86: .ASCII "MULF@" NAM87: .ASCII "MODF@" NAM88: .ASCII "ADDF@" NAM89: .ASCII "LDF@" NAM90: .ASCII "SUBF@" NAM91: .ASCII "CMPF@" NAM92: .ASCII "STF@" NAM93: .ASCII "DIVF@" NAM94: .ASCII "STEXP@" NAM95: .ASCII "STCFI@" NAM96: .ASCII "STCFD@" NAM97: .ASCII "LDEXP@" NAM98: .ASCII "LDCIF@" NAM99: .ASCII "LDCDF@" NAM100: .ASCII "SXT@" NAM101: .ASCII "MFPS@" NAM102: .ASCII "MTPS@" NAM103: .ASCII "HALT@" NAM104: .ASCII "WAIT@" NAM105: .ASCII "RTI@" NAM106: .ASCII "BPT@" NAM107: .ASCII "IOT@" NAM108: .ASCII "RESET@" NAM109: .ASCII "RTT@" NAM110: .ASCII "MFPT@" NAM111: .ASCII "NOP@" NAM112: .ASCII "MED@" NAM113: .ASCII "LDUB@" NAM114: .ASCII "MNS@" NAM115: .ASCII "MPP@" NAM116: .ASCII "ADDN@" NAM117: .ASCII "ADDP@" NAM118: .ASCII "ADDNI@" NAM119: .ASCII "ADDPI@" NAM120: .ASCII "ASHN@" NAM121: .ASCII "ASHP@" NAM122: .ASCII "ASHNI@" NAM123: .ASCII "ASHPI@" NAM124: .ASCII "CMPC@" NAM125: .ASCII "CMPCI@" NAM126: .ASCII "CMPN@" NAM127: .ASCII "CMPP@" NAM128: .ASCII "CMPNI@" NAM129: .ASCII "CMPPI@" NAM130: .ASCII "CVTLN@" NAM131: .ASCII "CVTLP@" NAM132: .ASCII "CVTLNI@" NAM133: .ASCII "CVTLPI@" NAM134: .ASCII "CVTNL@" NAM135: .ASCII "CVTPL@" NAM136: .ASCII "CVTNLI@" NAM137: .ASCII "CVTPLI@" NAM138: .ASCII "CVTNP@" NAM139: .ASCII "CVTPN@" NAM140: .ASCII "CVTNPI@" NAM141: .ASCII "CVTPNI@" NAM142: .ASCII "DIVP@" NAM143: .ASCII "DIVPI@" NAM144: .ASCII "LOCC@" NAM145: .ASCII "LOCCI@" NAM146: .ASCII "MATC@" NAM147: .ASCII "MATCI@" NAM148: .ASCII "MOVC@" NAM149: .ASCII "MOVCI@" NAM150: .ASCII "MOVRC@" NAM151: .ASCII "MOVRCI@" NAM152: .ASCII "MOVTC@" NAM153: .ASCII "MOVTCI@" NAM154: .ASCII "MULP@" NAM155: .ASCII "MULPI@" NAM156: .ASCII "SCANC@" NAM157: .ASCII "SCANCI@" NAM158: .ASCII "SKPC@" NAM159: .ASCII "SKPCI@" NAM160: .ASCII "SPANC@" NAM161: .ASCII "SPANCI@" NAM162: .ASCII "SUBN@" NAM163: .ASCII "SUBP@" NAM164: .ASCII "SUBNI@" NAM165: .ASCII "SUBPI@" NAM166: .ASCII "MARK@" NAM167: .ASCII "CSM@" NAM168: .ASCII "L2D0@" NAM169: .ASCII "L3D0@" NAM170: .ASCII "SPL@" .EVEN SAVE1: .WORD 0 ;CURRENT CODE BUFCUR: .WORD 0 ;ADDRESS OF CURRENT CODE IN BUFFER OUTPT1: .WORD 0 ;ADDRESS OF FIRST ASCII OUTPUT BUFFER OUTPT2: .WORD 0 ;ADDRESS OF SECOND ASCII BUFFER OUTPT3: .WORD 0 ;ADDRESS OF 3RD ASCII BUFFER OUTCNT: .WORD 0 ;ADDRESS OF VAR TO RECEIVE # OF WORDS DECODED CURADD: .WORD 0 ;ADDRESS OF CURRENT ADDRESS VAR IN MAIN PROGRAM FPFLAG: .WORD 0 ;FLOATING POINT INSTRUCTION FLAG L.ADR: .WORD 0 ;CURRENT PC VALUE .END