[plug] Cross-assembler IDE
Leon Brooks
leonb at brooks.fdns.net
Fri Jul 13 09:51:10 WST 2001
Simon.Scott at flexiplan.com wrote:
> Im looking for a good cross-assembler/disassembler IDE for linux, preferably for
> the 6502 processor.
> Ive found a few assemblers, no disassemblers, and nothing that even resembles an
> IDE.
And how hard can a 6502 disassembler be to write? It only has 1-byte
opcodes - which are highly systematic - and a very simple set of
addressing schemes.
char * opcodes [256] = {
"BRK", "ORA", "=error=", "SLO", ...
};
enum {
NONE, IMPLIED, IMMEDIATE, RELATIVE,
INDIRX, INDIRY, ZEROPX, ZEROPY, ... } mode;
#define UNDOC 0x80;
short modes [256] = {
NONE, INDIRX, NONE, INDIRX|UNDOC, ...
};
char * operands (unsigned * pc, mode thismode) {
char retval [30];
switch (thismode & ~UNDOC) {
case NONE:
retval [0] = '\0';
break;
case DIRECT:
sprintf (retval, "\t#%02X", getchar () & 0xFF);
break;
case ...
}
}
void main (void) {
int opcode;
unsigned address;
address = 0U;
while ((opcode = getchar ()) != EOF) {
printf ("%04x\t%s%s\n", address ++, opcodes [opcode & 0xFF],
operands (& address, modes [opcode & 0xFF]));
}
}
Give me an opcode table and it's yours in under an hour. (-:
http://pmwww.cs.vu.nl/home/ipoorten/Atari.8bit.Homepage/texts/c64.65xx.85xx.document
More information about the plug
mailing list