;XENOVOUS DISASSEMBLER USR ROUTINES›;WRITTEN BY MIKE BAYER›;THIS CODE WRITTEN FOR THE MACRO›;ASSEMBLER (AMAC)›;ACTUAL PROGRAM IS STORED IN DATA›;STATEMENTS IN BASIC PROGRAM›;BUT THIS LISTING CAN BE HELPFUL IF›;YOU WANT TO MAKE ANY IMPROVEMENTS›;›;PLEASE EXCUSE MY LOUSY ASSEMBLY›;LANGUAGE TECHNIQUES!!!›;›;›TABLO EQU 212 ;USR LOCATIONS›TABHI EQU 213›CODE EQU 1536 ;TEMPORARY› ORG 20000›;THIS SUBROUTINE TAKES THE OPCODE AND›;RETURNS THE MNEMONIC, ADDRESSING ›;MODE, AND NUMBER OF ARGUMENT BYTES›› PLA ;NUMBER OF ARGUMENTS› LDA #LOW TABLE ;LO AND HI LOCATION› STA TABLO ;OF DATA TABLE› LDA #HIGH TABLE› STA TABHI› PLA ;OTHER USR DATA (OPCODE)› PLA› STA CODE› LDY #0›LOOP LDA (TABLO),Y ;LOOPS THRU ALL› CMP CODE ;THE OPCODES TO FIND› BEQ DONE ;THE RIGHT ONE› CMP #255 ;UNKNOWN CODE?› BEQ DONE› LDA #6› CLC› ADC TABLO› STA TABLO ;STORE ADDRESS OF CORRECT› LDA #0 ;CODE IN USR LOCATIONS› ADC TABHI› STA TABHI› JMP LOOP›DONE RTS››;THIS SUBROUTINE CALCULATES THE›;ABSOLUTE ADDRESS FROM A RELATIVE›;BRANCH INSTRUCTION›› PLA ;# OF ARG› PLA ;HI BYTE OF USR› PLA ;LO BYTE OF USR-BRANCH OFFSET› STA CODE› PLA› STA TABHI ;TABLO AND HI USED TO› PLA ;STORE ADDRESS› STA TABLO› LDA CODE› BPL POS›NEG LDA CODE ;NEGATIVE BRANCH› EOR #255› STA CODE› INC CODE ;GET THE ACTUAL OFFSET› LDA TABLO› SEC› SBC CODE› STA TABLO› LDA TABHI› SBC #0› STA TABHI ;SUBTRACT IT› RTS ;GOODBYE›POS LDA TABLO ;POSITIVE BRANCH› CLC› ADC CODE› STA TABLO› LDA TABHI› ADC #0› STA TABHI ;ADD OFFSET› RTS ;GOODBYE››; THIS IS OBVIOUSLY THE DATA›;OPCODE/MNEMONIC/ADDRESSING MODE/BYTES;(SEE THE BASIC PROG. FOR ADDRESSING›;CODE TRANSLATION)›TABLE DB $69,'ADC',1,1› DB $6D,'ADC',2,2› DB $65,'ADC',2,1› DB $61,'ADC',4,1› DB $71,'ADC',3,1› DB $75,'ADC',6,1› DB $7D,'ADC',6,2› DB $79,'ADC',5,2› DB $29,'AND',1,1› DB $2D,'AND',2,2› DB $25,'AND',2,1› DB $21,'AND',4,1› DB $31,'AND',3,1› DB $35,'AND',6,1› DB $3D,'AND',6,2› DB $39,'AND',5,2› DB $0E,'ASL',2,2› DB $06,'ASL',2,1› DB $0A,'ASL',7,0› DB $16,'ASL',6,1› DB $1E,'ASL',6,2› DB $90,'BCC',2,1› DB $B0,'BCS',2,1› DB $F0,'BEQ',2,1› DB $2C,'BIT',2,2› DB $24,'BIT',2,1› DB $30,'BMI',2,1› DB $D0,'BNE',2,1› DB $10,'BPL',2,1› DB $00,'BRK',2,0› DB $50,'BVC',2,1› DB $70,'BVS',2,1› DB $18,'CLC',2,0› DB $D8,'CLD',2,0› DB $58,'CLI',2,0› DB $B8,'CLV',2,0› DB $C9,'CMP',1,1› DB $CD,'CMP',2,2› DB $C5,'CMP',2,1› DB $C1,'CMP',4,1› DB $D1,'CMP',3,1› DB $D5,'CMP',6,1› DB $DD,'CMP',6,2› DB $D9,'CMP',5,2› DB $E0,'CPX',1,1› DB $EC,'CPX',2,2› DB $E4,'CPX',2,1› DB $C0,'CPY',1,1› DB $CC,'CPY',2,2› DB $C4,'CPY',2,1› DB $CE,'DEC',2,2› DB $C6,'DEC',2,1› DB $D6,'DEC',6,1› DB $DE,'DEC',6,2› DB $CA,'DEX',2,0› DB $88,'DEY',2,0› DB $49,'EOR',1,1› DB $4D,'EOR',2,2› DB $45,'EOR',2,1› DB $41,'EOR',4,1› DB $51,'EOR',3,1› DB $55,'EOR',6,1› DB $5D,'EOR',6,2› DB $59,'EOR',5,2› DB $EE,'INC',2,2› DB $E6,'INC',2,1› DB $F6,'INC',6,1› DB $FE,'INC',6,2› DB $E8,'INX',2,0› DB $C8,'INY',2,0› DB $4C,'JMP',2,2› DB $6C,'JMP',8,2› DB $20,'JSR',2,2› DB $A9,'LDA',1,1› DB $AD,'LDA',2,2› DB $A5,'LDA',2,1› DB $A1,'LDA',4,1› DB $B1,'LDA',3,1› DB $B5,'LDA',6,1› DB $BD,'LDA',6,2› DB $B9,'LDA',5,2› DB $A2,'LDX',1,1› DB $AE,'LDX',2,2› DB $A6,'LDX',2,1› DB $BE,'LDX',5,2› DB $B6,'LDX',5,1› DB $A0,'LDY',1,1› DB $AC,'LDY',2,2› DB $A4,'LDY',2,1› DB $B4,'LDY',6,1› DB $BC,'LDY',6,2› DB $4E,'LSR',2,2› DB $46,'LSR',2,1› DB $4A,'LSR',7,0› DB $56,'LSR',6,1› DB $5E,'LSR',6,2› DB $EA,'NOP',2,0› DB $09,'ORA',1,1› DB $0D,'ORA',2,2› DB $05,'ORA',2,1› DB $01,'ORA',4,1› DB $11,'ORA',3,1› DB $15,'ORA',6,1› DB $1D,'ORA',6,2› DB $19,'ORA',5,2› DB $48,'PHA',2,0› DB $08,'PHP',2,0› DB $68,'PLA',2,0› DB $28,'PLP',2,0› DB $2E,'ROL',2,2› DB $26,'ROL',2,1› DB $2A,'ROL',7,0› DB $36,'ROL',6,1› DB $3E,'ROL',6,2› DB $6E,'ROR',2,2› DB $66,'ROR',2,1› DB $6A,'ROR',7,0› DB $76,'ROR',6,1› DB $7E,'ROR',6,2› DB $40,'RTI',2,0› DB $60,'RTS',2,0› DB $E9,'SBC',1,1› DB $ED,'SBC',2,2› DB $E5,'SBC',2,1› DB $E1,'SBC',4,1› DB $F1,'SBC',3,1› DB $F5,'SBC',6,1› DB $FD,'SBC',6,2› DB $F9,'SBC',5,2› DB $38,'SEC',2,0› DB $F8,'SED',2,0› DB $78,'SEI',2,0› DB $8D,'STA',2,2› DB $85,'STA',2,1› DB $81,'STA',4,1› DB $91,'STA',3,1› DB $95,'STA',6,1› DB $9D,'STA',6,2› DB $99,'STA',5,2› DB $8E,'STX',2,2› DB $86,'STX',2,1› DB $96,'STX',5,1› DB $8C,'STY',2,2› DB $84,'STY',2,1› DB $94,'STY',6,1› DB $AA,'TAX',2,0› DB $A8,'TAY',2,0› DB $BA,'TSX',2,0› DB $8A,'TXA',2,0› DB $9A,'TXS',2,0› DB $98,'TYA',2,0› DB $FF,'???',2,0›