X-Git-Url: http://shamusworld.gotdns.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fdis65c02.cpp;h=2721d056c1f1cb3a916b385215080e4af64be753;hb=f36d026c7b8b398b88765ec5b67a3c767fe5fbad;hp=aa3981af2da9674f9c62f9cb44f454454fbc66bc;hpb=ce9f31494277a11aa9cfcbdb5fe5c303627e626e;p=apple2 diff --git a/src/dis65c02.cpp b/src/dis65c02.cpp old mode 100755 new mode 100644 index aa3981a..2721d05 --- a/src/dis65c02.cpp +++ b/src/dis65c02.cpp @@ -1,26 +1,24 @@ // // 65C02 disassembler // -// by James L. Hammons +// by James Hammons // (c) 2005 Underground Software // -#include -#include #include "dis65c02.h" -//#include "types.h" +#include +#include #include "v65c02.h" #include "log.h" -using namespace std; // External shit -extern V65C02REGS mainCPU;//Hm. Shouldn't we pass this shit in? +extern V65C02REGS mainCPU;//Hm. Shouldn't we pass this shit in? ANSWER: YES. !!! FIX !!! // Private globals variables -static uint8 op_mat[256] = { +static uint8_t op_mat[256] = { 14, 6, 0, 0, 2, 2, 2, 2, 14, 1, 14, 0, 8, 8, 8, 13, 13, 7, 5, 0, 2, 3, 3, 2, 14, 10, 14, 0, 8, 9, 9, 13, 8, 6, 0, 0, 2, 2, 2, 2, 14, 1, 14, 0, 8, 8, 8, 13, @@ -36,143 +34,141 @@ static uint8 op_mat[256] = { 1, 6, 0, 0, 2, 2, 2, 2, 14, 1, 14, 0, 8, 8, 8, 13, 13, 7, 5, 0, 0, 3, 3, 2, 14, 10, 14, 0, 0, 9, 9, 13, 1, 6, 0, 0, 2, 2, 2, 2, 14, 1, 14, 0, 8, 8, 8, 13, - 13, 7, 5, 0, 0, 3, 3, 2, 14, 10, 14, 0, 0, 9, 9, 13 }; - -static uint8 mnemonics[256][6] = { - "BRK ","ORA ","??? ","??? ","TSB ","ORA ","ASL ","RMB0 ", - "PHP ","ORA ","ASL ","??? ","TSB ","ORA ","ASL ","BBR0 ", - "BPL ","ORA ","ORA ","??? ","TRB ","ORA ","ASL ","RMB1 ", - "CLC ","ORA ","INC ","??? ","TRB ","ORA ","ASL ","BBR1 ", - "JSR ","AND ","??? ","??? ","BIT ","AND ","ROL ","RMB2 ", - "PLP ","AND ","ROL ","??? ","BIT ","AND ","ROL ","BBR2 ", - "BMI ","AND ","AND ","??? ","BIT ","AND ","ROL ","RMB3 ", - "SEC ","AND ","DEC ","??? ","BIT ","AND ","ROL ","BBR3 ", - "RTI ","EOR ","??? ","??? ","??? ","EOR ","LSR ","RMB4 ", - "PHA ","EOR ","LSR ","??? ","JMP ","EOR ","LSR ","BBR4 ", - "BVC ","EOR ","EOR ","??? ","??? ","EOR ","LSR ","RMB5 ", - "CLI ","EOR ","PHY ","??? ","??? ","EOR ","LSR ","BBR5 ", - "RTS ","ADC ","??? ","??? ","STZ ","ADC ","ROR ","RMB6 ", - "PLA ","ADC ","ROR ","??? ","JMP ","ADC ","ROR ","BBR6 ", - "BVS ","ADC ","ADC ","??? ","STZ ","ADC ","ROR ","RMB7 ", - "SEI ","ADC ","PLY ","??? ","JMP ","ADC ","ROR ","BBR7 ", - "BRA ","STA ","??? ","??? ","STY ","STA ","STX ","SMB0 ", - "DEY ","BIT ","TXA ","??? ","STY ","STA ","STX ","BBS0 ", - "BCC ","STA ","STA ","??? ","STY ","STA ","STX ","SMB1 ", - "TYA ","STA ","TXS ","??? ","STZ ","STA ","STZ ","BBS1 ", - "LDY ","LDA ","LDX ","??? ","LDY ","LDA ","LDX ","SMB2 ", - "TAY ","LDA ","TAX ","??? ","LDY ","LDA ","LDX ","BBS2 ", - "BCS ","LDA ","LDA ","??? ","LDY ","LDA ","LDX ","SMB3 ", - "CLV ","LDA ","TSX ","??? ","LDY ","LDA ","LDX ","BBS3 ", - "CPY ","CMP ","??? ","??? ","CPY ","CMP ","DEC ","SMB4 ", - "INY ","CMP ","DEX ","??? ","CPY ","CMP ","DEC ","BBS4 ", - "BNE ","CMP ","CMP ","??? ","??? ","CMP ","DEC ","SMB5 ", - "CLD ","CMP ","PHX ","??? ","??? ","CMP ","DEC ","BBS5 ", - "CPX ","SBC ","??? ","??? ","CPX ","SBC ","INC ","SMB6 ", - "INX ","SBC ","NOP ","??? ","CPX ","SBC ","INC ","BBS6 ", - "BEQ ","SBC ","SBC ","??? ","??? ","SBC ","INC ","SMB7 ", - "SED ","SBC ","PLX ","??? ","??? ","SBC ","INC ","BBS7 " }; + 13, 7, 5, 0, 0, 3, 3, 2, 14, 10, 14, 0, 0, 9, 9, 13 +}; + +static uint8_t mnemonics[256][5] = { + "BRK ","ORA ","??? ","??? ","TSB ","ORA ","ASL ","RMB0", + "PHP ","ORA ","ASL ","??? ","TSB ","ORA ","ASL ","BBR0", + "BPL ","ORA ","ORA ","??? ","TRB ","ORA ","ASL ","RMB1", + "CLC ","ORA ","INC ","??? ","TRB ","ORA ","ASL ","BBR1", + "JSR ","AND ","??? ","??? ","BIT ","AND ","ROL ","RMB2", + "PLP ","AND ","ROL ","??? ","BIT ","AND ","ROL ","BBR2", + "BMI ","AND ","AND ","??? ","BIT ","AND ","ROL ","RMB3", + "SEC ","AND ","DEC ","??? ","BIT ","AND ","ROL ","BBR3", + "RTI ","EOR ","??? ","??? ","??? ","EOR ","LSR ","RMB4", + "PHA ","EOR ","LSR ","??? ","JMP ","EOR ","LSR ","BBR4", + "BVC ","EOR ","EOR ","??? ","??? ","EOR ","LSR ","RMB5", + "CLI ","EOR ","PHY ","??? ","??? ","EOR ","LSR ","BBR5", + "RTS ","ADC ","??? ","??? ","STZ ","ADC ","ROR ","RMB6", + "PLA ","ADC ","ROR ","??? ","JMP ","ADC ","ROR ","BBR6", + "BVS ","ADC ","ADC ","??? ","STZ ","ADC ","ROR ","RMB7", + "SEI ","ADC ","PLY ","??? ","JMP ","ADC ","ROR ","BBR7", + "BRA ","STA ","??? ","??? ","STY ","STA ","STX ","SMB0", + "DEY ","BIT ","TXA ","??? ","STY ","STA ","STX ","BBS0", + "BCC ","STA ","STA ","??? ","STY ","STA ","STX ","SMB1", + "TYA ","STA ","TXS ","??? ","STZ ","STA ","STZ ","BBS1", + "LDY ","LDA ","LDX ","??? ","LDY ","LDA ","LDX ","SMB2", + "TAY ","LDA ","TAX ","??? ","LDY ","LDA ","LDX ","BBS2", + "BCS ","LDA ","LDA ","??? ","LDY ","LDA ","LDX ","SMB3", + "CLV ","LDA ","TSX ","??? ","LDY ","LDA ","LDX ","BBS3", + "CPY ","CMP ","??? ","??? ","CPY ","CMP ","DEC ","SMB4", + "INY ","CMP ","DEX ","??? ","CPY ","CMP ","DEC ","BBS4", + "BNE ","CMP ","CMP ","??? ","??? ","CMP ","DEC ","SMB5", + "CLD ","CMP ","PHX ","??? ","??? ","CMP ","DEC ","BBS5", + "CPX ","SBC ","??? ","??? ","CPX ","SBC ","INC ","SMB6", + "INX ","SBC ","NOP ","??? ","CPX ","SBC ","INC ","BBS6", + "BEQ ","SBC ","SBC ","??? ","??? ","SBC ","INC ","SMB7", + "SED ","SBC ","PLX ","??? ","??? ","SBC ","INC ","BBS7" +}; + // // Display bytes in mem in hex // -static void DisplayBytes(uint16 src, uint32 dst) +static void DisplayBytes(char * outbuf, uint16_t src, uint32_t dst) { - WriteLog("%04X: ", src); - uint8 cnt = 0; // Init counter... + char buf[32]; +// WriteLog("%04X: ", src); + sprintf(outbuf, "%04X: ", src); + uint8_t cnt = 0; + // That should fix the $FFFF bug... if (src > dst) - dst += 0x10000; // That should fix the FFFF bug... + dst += 0x10000; - for(uint32 i=src; i