; ; ;MACRO DISSAMBLER SUBROUTINE ; ; ;F. BORGER ;MICHAEL REESE HOSPITAL, DEPT OF MEDICAL PHYSICS ;CHICAGO, IL ;NOV 10,1975 ; ; ;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:: ;MAIN ENTRY IS HERE FROM FORTRAN CALL 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 INITFL ;AND CLEAR FLAG JSR PC,L.GWRD ;GET A CODE MOV R4,SAVE1 ;SAVE IT FOR LATER USE MOV #170000,R0 ;BIT MASK TO R0 XOR R0,SAVE1 ;DIDDLE TOP FOUR BITS OF CODE CLR FPFLAG ;CLEAR FLAG BIT R0,SAVE1 ;ALL BITS NOW ZERO ? BNE 1$ ;NO IT ISN'T A FLOATING POINT INST. INC FPFLAG ;YES SET FLOATING POINT FLAG 1$: XOR R0,SAVE1 ;PUT BITS BACK TO WHAT THEY WERE ADD #2,L.ADR ;BUMP ADDRESS COUNTER MOV OUTPT1,R2 ;OUTPUT BUFFER POINTER TO R2 C1: JSR R5,CINSTR ;1ST GROUP FULL WORDS .WORD 0 ;MASK .WORD LIST1 ;ADDRESS OF CODE .WORD 16. ;LENGTH TABLE .WORD TABL1-LIST1-2 ;RELATIVE DIFF BR C5 JMP RESUME C5: JSR R5,CINSTR ;5TH GROUP RTS .WORD 7 .WORD LIST5 .WORD 1 .WORD TABL5-LIST5-2 BR C2 MOV OUTPT2,R2 ;POINT 2 2ND ASCII BUFFER MOVB #122,(R2)+ ;ASCII R TO BUFFER MOV SAVE1,R0 JSR PC,REGLFT+4 JMP RESUME C2: JSR R5,CINSTR ;2ND GROUP SINGLE OP .WORD 77 .WORD LIST2 .WORD 37. .WORD TABL2-LIST2-2 BR C3 MOV OUTPT2,R2 ;POINT TO SECOND ASCII BUFFER CLR MODE1 JSR PC,MODE ;CHECK 1 MODE JMP RESUME C3: JSR R5,CINSTR ;3RD GROUP BRANCHES .WORD 377 .WORD LIST3 .WORD 15. .WORD TABL3-LIST3-2 BR C4A MOV OUTPT2,R2 ;POINT TO SECOND ASCII BUFFER MOV SAVE1,L.BYT ;TEMP USE BIC #177400,L.BYT ;STRIP BRANCH MOVB L.BYT,R4 ;SIGN EXTENSION MOVB ASL R4 ;MULT BY 2 ADD L.ADR,R4 ;CALCULATE ADDRESS 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 JSR PC,PRBYTE ;ARGUMENT JMP RESUME 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 #122,(R2)+ ;ASCII R IN BUFFER MOV SAVE1,R0 ROR R0 ;ROTATE ROR R0 ;INTO ROR R0 ;POSITION ROR R0 ROR R0 ROR R0 JSR PC,REGLF1 ;CALLING REGISTER MOV OUTPT3,R2 ;POINT TO 3RD ASCII BUFFER CLR MODE1 JSR PC,MODE JMP RESUME ; ; C4B: JSR R5,CINSTR ;MUL,DIV,ETC. .WORD 777 ;MASK .WORD LIST4B ;LIST POINTER .WORD 5 ;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 SOBPRT ;YES MOV #1,SPFLAG ;INDICATE PRINT DEST, THEN REGISTER CLR MODE1 ;INDICATE SINGLE OP JSR PC,MODE ;PRINT DEST MODE JMP RESUME ;AND GO AGAIN SOBPRT: MOV SAVE1,R0 ;GET COMMAND BIC #177077,R0 ;REDUCE TO REGISTER ASH #-6,R0 ;CONVERT TO OCTAL # MOVB #'R,(R2)+ ;'R' TO ASCII BUFFER JSR PC,REGLF1 ;PRINT REG MOV OUTPT3,R2 ;POINT TO 3RD ASCII BUFFER MOV SAVE1,R0 ;GET CODE AGAIN BIC #177700,R0 ;GET OFFSET ASH #1,R0 ;CONVERT IT TO A BYTE OFFSET MOV L.ADR,R4 ;ADDRESS TO R4 SUB R0,R4 ;SUBTRACT BRANCH OFFSET JSR PC,PRINT ;PRINT ADDRESS JMP RESUME ;AND GO AGAIN C6: JSR R5,CINSTR ;6TH GROUP DOUBLE OP .WORD 7777 .WORD LIST6 .WORD 12. .WORD TABL6-LIST6-2 BR C7 MOV OUTPT2,R2 ;POINT TO SECOND ASCII BUFFER MOV #1,MODE1 JSR PC,MODE JMP RESUME C7: MOV SAVE1,R4 ;RESTORE FN CODE JSR R5,CINSTR ;7TH GROUP, MOST FLOATING POINT CODES .WORD 377 .WORD LIST7 .WORD 14. .WORD TABLE7-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 MOV #1,SPFLAG ;SET SPECIAL MODE FLAG CLR MODE1 ;IND SINGLE OP INSTRUCTION JSR PC,MODE ;PRINT DEST MODE,THEN AC REG CLR SPFLAG ;CLEAR SPECIAL FLAG JMP RESUME ;AND TRY AGAIN 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 #60,R0 ;CONVERT R0 TO ASCII DIGIT MOVB R0,(R2)+ ;AND PUT IN BUFFER MOV OUTPT3,R2 ;POINT TO 3RD BUFFER CLR MODE1 ;INDICATE SINGLE OP CODE JSR PC,MODE ;DO YOUR THING JMP RESUME ;AND TRY AGAIN C8: MOV #NAME71,R1 ;".WORD " ALL OTHERS CLR R5 ;NO CAR CTL JSR PC,MESSA1 MOV SAVE1,R4 MOV OUTPT2,R2 ;POINT TO SECOND ASCII BUFFER JSR PC,PRINT JMP RESUME ;AND RETURN LAST: .WORD 0 ; 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 PONTING TO CURRENT POSITION IN ASCII BUFFER ; MESSA1: MOVB (R1)+,(R2) ;XFER A CHARACTER CMPB (R2),#100 ;TERMINATOR ? BEQ MESOK ;YES INC R2 ;GOOD CHARACTER, INCREMENT POINTER BR MESSA1 ;AND DO ANOTHER MESOK: MOVB #40,(R2) ;CHANGE TERM TO SPACE RTS PC ;AND RETURN ; ; ; ;NOW THE VARIABLES AND DUMMY DATA BLOCK ; BYTECT: .WORD 0 ;STORAGE OF BYTE COUNT CARCTL: .WORD 0 ;STORAGE OF CARRIAGE CONTROL DUMMY: .WORD 0 ;DUMMY VARIABLE .WORD BYTECT ;ADDRESS OF BYTE COUNT VARIABLE .WORD CARCTL ;ADDRESS OF CAR CONTROL VAR. DUMMY1: .WORD 0 ;ADDRESS OF BUFFER START BUFFER: .BLKW 40. ;80 BYTE BUFFER BUFFE1: .BLKW 40. ;SPECIAL ASCII BUFFER L.GWRD: MOV @BUFCUR,R4 ;GET NEXT WORD IN R4 ADD #2,BUFCUR ;BUMP TO NEXT WORD INC @OUTCNT ;COUNT ONE WORD DECODED RTS PC ;AND RETURN ; ; PRINT: PRBYTE: ;CHANGED TO USE SYSTEM SUBROUTINE WHICH WILL ;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)+,%3 ;TABLE LOC MOV (R5)+,R0 ;TABLE LENGTH MOV (R5)+,INDX ;RELATIVE DIFF CHINST: CMP R4,(%3)+ ;CHECK TABLE BNE NOTONE MOV 0(%3),R1 ;INDEX ON R3 INDX=.-2 MOV R5,-(SP) ;SAVE R5 CLR R5 ;NULL CARRIAGE CONTROL JSR PC,MESSA1 ;PRINT NAME MOV (SP)+,R5 ;RESTORE R5 TST (R5)+ ;BUMP RETURN RTS R5 ;RETURN WITH INSTRUCTION NOTONE: DEC R0 ;END LIST? BNE CHINST RTS R5 ;RETURN,NONE FOUND SAVEMD: .WORD 0 MODE1: .WORD 0 ;COUNTER SPFLAG: .WORD 0 ;SPECIAL MODE FLAG MODE: CLR SFLAG1 CLR SFLAG2 MODEX: MOV SAVE1,R4 ;RESTORE WORD TST MODE1 ;CHECK FOR # BEQ MODECK ;ONLY ONE ROR R4 ;ROTATE 6 RIGHT ROR R4 ROR R4 ROR R4 ROR R4 ROR R4 MODECK: DEC MODE1 ;RESET FOR NEXT TIME MOV R4,SAVEMD ;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 EQ27: JMP EQ27A EQ37: JMP EQ37A EQ67: JMP EQ67A EQ77: JMP EQ77A EQ0: JMP EQ0A EQ1: JMP EQ1A EQ2: JMP EQ2A EQ3: JMP EQ3A EQ4: JMP EQ4A EQ5: JMP EQ5A EQ6: JMP EQ6A EQ7: JMP EQ7A EQ0A: TST FPFLAG ;FLOATING POINT INSTRUCTION ? BEQ EQ0A1 ;NO MOVB #'A,(R2)+ ;YES, ADD 'AC' MOVB #'C,(R2)+ ;INSTEAD OF 'R' BR EQ0A2 EQ0A1: MOVB #'R,(R2)+ ;REGISTER MODE EQ0A2: JSR PC,REGLFT JMP HOUSKP EQ1A: JSR PC,REGPAR ;DEFERRED MODE JMP HOUSKP EQ2A: JSR PC,REGPAR ;AUTO-INC MOVB #'+,(R2)+ JMP HOUSKP EQ3A: MOVB #'@,(R2)+ ;AUTO-INC DEF JSR PC,REGPAR MOVB #'+,(R2)+ JMP HOUSKP EQ4A: MOVB #'-,(R2)+ ;AUTO-DEC JSR PC,REGPAR JMP HOUSKP EQ5A: MOVB #'@,(R2)+ ;AUTO-DEC DEF MOVB #'-,(R2)+ JSR PC,REGPAR JMP HOUSKP EQ6A: JSR PC,GDATA ;AN INDEX WORD CLR R5 ;NO CARR CTL JSR PC,PRINT ;INDEX JSR PC,REGPAR ;REGISTER JMP HOUSKP EQ7A: MOVB #'@,(R2)+ ;INDEX DEF BR EQ6A ;REST AS IN EQ6A EQ27A: MOVB #'#,(R2)+ ;IMMEDIATE JSR PC,GDATA ;WORD CLR R5 ;NO CARR CONTROL JSR PC,PRINT JMP HOUSKP EQ37A: MOVB #'@,(R2)+ ;ABSOLUTE ADDRESS BR EQ27A EQ67A: JSR PC,GDATA ;RELATIVE ADDRESS ADD L.ADR,R4 ;ACTUAL " CLR R5 ;NO CARR CTL JSR PC,PRINT JMP HOUSKP EQ77A: MOVB #'@,(R2)+ ;RELATIVE DEF BR EQ67A ;REST AS IN EQ67A SFLAG1: .WORD 0 SAV1ST: .WORD 0 SFLAG2: .WORD 0 SAV2ND: .WORD 0 REGLFT: MOV SAVEMD,R0 ;PRINT REGISTER REGLF1: BIC #177770,R0 CMP #6,R0 ;IS IT SP / BNE RTEST2 ;NO DEC R2 ;YES DECREMENT POINTER MOVB #'S,(R2)+ ;PUT SP INTO ASCII BUFFER MOVB #'P,(R2)+ RTS PC ;AND RETURN RTEST2: CMP #7,R0 ;MAYBE IT'S PC ? BNE RTEST3 ;NO DEC R2 ;YES, DEC POINTER MOVB #'P,(R2)+ ;PUT PC INTO ASCII BUFFER MOVB #'C,(R2)+ RTS PC ;AND RETURN RTEST3: 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 NOMOR ;IS THERE ANOTHER MODE ? MOV OUTPT3,R2 ;YES POINT TO 3RD ASCII BUFFER JMP MODEX NOMOR: TST SPFLAG ;PRINT REG FIRST ? BEQ HOUSRT ;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 1$ ;BR IF NOT MOVB #'A,(R2)+ ;YES PUT ASCII 'AC' INTO MOVB #'C,(R2)+ ;INTO BUFFER BR 2$ 1$: MOVB #'R,(R2)+ ;INSERT "R" INTO ASCII BUFFER 2$: JSR PC,REGLF1 ;PRINT REGISTER CLR SPFLAG ;CLEAR FLAG HOUSRT: RTS PC GDATA: JSR PC,L.GWRD ;A WORD ADD #2,L.ADR ;CORRECT ADDRESS TST MODE1 ;1 OR 2 WORDS BMI NSAVE MOV R4,SAV1ST ;1ST DATA WORD INC SFLAG1 RTS PC ;1ST RETURN NSAVE: MOV R4,SAV2ND ;2ND DATA INC SFLAG2 RTS PC ;2ND RETURN ;2ND TIME MODE1=0 DOUBLE OP ; =-1 SINGLE OP ;3RD TIME MODE1=-1 DOUBLE OP MUST 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 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 LIST3: .WORD 400 ;BR .WORD 1000 ;BNE .WORD 1400 ;BEQ .WORD 2000 ;BGE .WORD 2400 ;BLT .WORD 3000 ;BGT .WORD 3400 ;BE .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 TRAP .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 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 ; ; 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 ; ; 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,NAM03,NAM04 TABL5: .WORD NAM58 TABL6: .WORD NAM59,NAM60,NAM61 .WORD NAM62,NAM63,NAM64 .WORD NAM65,NAM66,NAM67 .WORD NAM68,NAM69,NAM70 TABLE7: .WORD NAM86,NAM87,NAM88 .WORD NAM89,NAM90,NAM91 .WORD NAM92,NAM93,NAM94 .WORD NAM95,NAM96,NAM97 .WORD NAM98,NAM99 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@" .EVEN SAVE1: .WORD 0 ;CURRENT CODE BUFCUR: .WORD 0 ;ADDRSS 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 INITFL: .WORD 1 ;FLAG FOR INITIAL DECODE FPFLAG: .WORD 0;FLOATING POINT INSTRUCTION FLAG L.BYT: .WORD 0 L.ADR: .WORD 0 .END