Subject: RE: [stella] A new version of an old assembler. From: "John Saeger" <john@xxxxxxxxxxx> Date: Wed, 8 Jul 1998 18:00:47 -0700 |
> -----Original Message----- > From: owner-stella@xxxxxxxxxxx [mailto:owner-stella@xxxxxxxxxxx]On > Behalf Of Eckhard Stolberg > Sent: Wednesday, July 08, 1998 11:59 AM > To: stella@xxxxxxxxxxx > Subject: RE: [stella] A new version of an old assembler. > > If you can't distribute a modified DASM, would it be possible to > post the altered processor definiton code, so that other can compile > their own improver version of it. I suppose that was the only part, > that needed to be modified to get the undocumented opcodes done, right? Well, I guess it's O.K. to republish a small excerpt ;-) I also had to comment out a variable called _fmode in main.c. I'm not sure why, but things seemed to work O.K. without it. Maybe your compiler won't complain about it. If you try to assemble undoc.asm with DASM, be sure to add an org statement. DASM needs one. This version of mne6502.c is slightly different than one I've already sent to Bob Colbert. I made some more slight modifications to bring it into compliance with what Distella would output if it were modified to treat the undocumented instructions as code instead of data. I think all you would need to do to Distella is to remove the leading dots from the undocumented opcodes in table.c. But I haven't tried it. Any volunteers to get Distella to disassemble the undocumented opcodes? Of course Bob is still more than welcome to include this file in the official release of DASM. John
/* #include "asm.h" */ #define ASTD AF_BYTEADR|AF_BYTEADRX|AF_WORDADR|AF_WORDADRX|\ AF_WORDADRY|AF_INDBYTEX|AF_INDBYTEY MNE Mne6502[] = { { NULL, v_mnemonic, "adc", 0, AF_IMM8|ASTD, { 0x69, 0x65, 0x75, 0x6D, 0x7D, 0x79, 0x61, 0x71 } }, { NULL, v_mnemonic, "anc", 0, AF_IMM8, { 0x0b } }, { NULL, v_mnemonic, "and", 0, AF_IMM8|ASTD, { 0x29, 0x25, 0x35, 0x2D, 0x3D, 0x39, 0x21, 0x31 } }, { NULL, v_mnemonic, "ane", 0, AF_IMM8, { 0x8b } }, { NULL, v_mnemonic, "arr", 0, AF_IMM8, { 0x6b } }, { NULL, v_mnemonic, "asl", 0, AF_IMP|AF_BYTEADR|AF_BYTEADRX|AF_WORDADR|AF_WORDADRX, { 0x0A, 0x06, 0x16, 0x0E, 0x1E } }, { NULL, v_mnemonic, "asr", 0, AF_IMM8, { 0x4b } }, { NULL, v_mnemonic, "bcc", 0, AF_REL, { 0x90 } }, { NULL, v_mnemonic, "bcs", 0, AF_REL, { 0xB0 } }, { NULL, v_mnemonic, "beq", 0, AF_REL, { 0xF0 } }, { NULL, v_mnemonic, "bit", 0, AF_BYTEADR|AF_WORDADR, { 0x24, 0x2C } }, { NULL, v_mnemonic, "bmi", 0, AF_REL, { 0x30 } }, { NULL, v_mnemonic, "bne", 0, AF_REL, { 0xD0 } }, { NULL, v_mnemonic, "bpl", 0, AF_REL, { 0x10 } }, { NULL, v_mnemonic, "brk", 0, AF_IMP, { 0x00 } }, { NULL, v_mnemonic, "bvc", 0, AF_REL, { 0x50 } }, { NULL, v_mnemonic, "bvs", 0, AF_REL, { 0x70 } }, { NULL, v_mnemonic, "clc", 0, AF_IMP, { 0x18 } }, { NULL, v_mnemonic, "cld", 0, AF_IMP, { 0xD8 } }, { NULL, v_mnemonic, "cli", 0, AF_IMP, { 0x58 } }, { NULL, v_mnemonic, "clv", 0, AF_IMP, { 0xB8 } }, { NULL, v_mnemonic, "cmp", 0, AF_IMM8|ASTD, { 0xC9, 0xC5, 0xD5, 0xCD, 0xDD, 0xD9, 0xC1, 0xD1 } }, { NULL, v_mnemonic, "cpx", 0, AF_IMM8|AF_BYTEADR|AF_WORDADR, { 0xE0, 0xE4, 0xEC } }, { NULL, v_mnemonic, "cpy", 0, AF_IMM8|AF_BYTEADR|AF_WORDADR, { 0xC0, 0xC4, 0xCC } }, { NULL, v_mnemonic, "dcp", 0, AF_BYTEADR|AF_BYTEADRX|AF_WORDADR|AF_WORDADRX|AF_WORDADRY|AF_INDBYTEX|AF_INDBYTEY, { 0xc7, 0xd7, 0xcf, 0xdf, 0xdb, 0xc3, 0xd3 } }, { NULL, v_mnemonic, "dec", 0, AF_BYTEADR|AF_BYTEADRX|AF_WORDADR|AF_WORDADRX, { 0xC6, 0xD6, 0xCE, 0xDE } }, { NULL, v_mnemonic, "dex", 0, AF_IMP, { 0xCA } }, { NULL, v_mnemonic, "dey", 0, AF_IMP, { 0x88 } }, { NULL, v_mnemonic, "eor", 0, AF_IMM8|ASTD, { 0x49, 0x45, 0x55, 0x4D, 0x5D, 0x59, 0x41,0x51 } }, { NULL, v_mnemonic, "inc", 0, AF_BYTEADR|AF_BYTEADRX|AF_WORDADR|AF_WORDADRX, { 0xE6, 0xF6, 0xEE, 0xFE } }, { NULL, v_mnemonic, "inx", 0, AF_IMP, { 0xE8 } }, { NULL, v_mnemonic, "iny", 0, AF_IMP, { 0xC8 } }, { NULL, v_mnemonic, "jam", 0, AF_IMP, { 0x02 } }, { NULL, v_mnemonic, "isb", 0, AF_BYTEADR|AF_BYTEADRX|AF_WORDADR|AF_WORDADRX|AF_WORDADRY|AF_INDBYTEX|AF_INDBYTEY, { 0xe7, 0xf7, 0xef, 0xff, 0xfb, 0xe3, 0xf3 } }, { NULL, v_mnemonic, "jmp", 0, AF_WORDADR|AF_INDWORD, { 0x4C, 0x6C } }, { NULL, v_mnemonic, "jsr", 0, AF_WORDADR, { 0x20 } }, { NULL, v_mnemonic, "las", 0, AF_WORDADRY, { 0xbb } }, { NULL, v_mnemonic, "lax", 0, AF_BYTEADR|AF_BYTEADRY|AF_WORDADR|AF_WORDADRY|AF_INDBYTEX|AF_INDBYTEY, { 0xa7, 0xb7, 0xaf, 0xbf, 0xa3, 0xb3 } }, { NULL, v_mnemonic, "lda", 0, AF_IMM8|ASTD, { 0xA9, 0xA5, 0xB5, 0xAD, 0xBD, 0xB9, 0xA1, 0xB1 } }, { NULL, v_mnemonic, "ldx", 0, AF_IMM8|AF_BYTEADR|AF_BYTEADRY|AF_WORDADR|AF_WORDADRY, { 0xA2, 0xA6, 0xB6, 0xAE, 0xBE } }, { NULL, v_mnemonic, "ldy", 0, AF_IMM8|AF_BYTEADR|AF_BYTEADRX|AF_WORDADR|AF_WORDADRX, { 0xA0, 0xA4, 0xB4, 0xAC, 0xBC } }, { NULL, v_mnemonic, "lsr", 0, AF_IMP|AF_BYTEADR|AF_BYTEADRX|AF_WORDADR|AF_WORDADRX, { 0x4A, 0x46, 0x56, 0x4E, 0x5E } }, { NULL, v_mnemonic, "lxa", 0, AF_IMM8, { 0xab } }, { NULL, v_mnemonic, "noop", 0, AF_IMM8|AF_BYTEADR|AF_BYTEADRX|AF_WORDADR|AF_WORDADRX, { 0x80, 0x04, 0x14, 0x0c, 0x1c } }, { NULL, v_mnemonic, "nop", 0, AF_IMP, { 0xEA } }, { NULL, v_mnemonic, "ora", 0, AF_IMM8|ASTD, { 0x09, 0x05, 0x15, 0x0D, 0x1D, 0x19, 0x01, 0x11 } }, { NULL, v_mnemonic, "pha", 0, AF_IMP, { 0x48 } }, { NULL, v_mnemonic, "php", 0, AF_IMP, { 0x08 } }, { NULL, v_mnemonic, "pla", 0, AF_IMP, { 0x68 } }, { NULL, v_mnemonic, "plp", 0, AF_IMP, { 0x28 } }, { NULL, v_mnemonic, "rla", 0, AF_BYTEADR|AF_BYTEADRX|AF_WORDADR|AF_WORDADRX|AF_WORDADRY|AF_INDBYTEX|AF_INDBYTEY, { 0x27, 0x37, 0x2f, 0x3f, 0x3b, 0x23, 0x33 } }, { NULL, v_mnemonic, "rol", 0, AF_IMP|AF_BYTEADR|AF_BYTEADRX|AF_WORDADR|AF_WORDADRX, { 0x2A, 0x26, 0x36, 0x2E, 0x3E } }, { NULL, v_mnemonic, "ror", 0, AF_IMP|AF_BYTEADR|AF_BYTEADRX|AF_WORDADR|AF_WORDADRX, { 0x6A, 0x66, 0x76, 0x6E, 0x7E } }, { NULL, v_mnemonic, "rra", 0, AF_BYTEADR|AF_BYTEADRX|AF_WORDADR|AF_WORDADRX|AF_WORDADRY|AF_INDBYTEX|AF_INDBYTEY, { 0x67, 0x77, 0x6f, 0x7f, 0x7b, 0x63, 0x73 } }, { NULL, v_mnemonic, "rti", 0, AF_IMP, { 0x40 } }, { NULL, v_mnemonic, "rts", 0, AF_IMP, { 0x60 } }, { NULL, v_mnemonic, "sax", 0, AF_BYTEADR|AF_BYTEADRY|AF_WORDADR|AF_INDBYTEX, { 0x87, 0x97, 0x8f, 0x83 } }, { NULL, v_mnemonic, "sbc", 0, AF_IMM8|ASTD, { 0xE9, 0xE5, 0xF5, 0xED, 0xFD, 0xF9, 0xE1, 0xF1 } }, { NULL, v_mnemonic, "sbx", 0, AF_IMM8, { 0xcb } }, { NULL, v_mnemonic, "sec", 0, AF_IMP, { 0x38 } }, { NULL, v_mnemonic, "sed", 0, AF_IMP, { 0xF8 } }, { NULL, v_mnemonic, "sei", 0, AF_IMP, { 0x78 } }, { NULL, v_mnemonic, "sha", 0, AF_WORDADRY|AF_INDBYTEY, { 0x9f, 0x93 } }, { NULL, v_mnemonic, "shs", 0, AF_WORDADRY, { 0x9b } }, { NULL, v_mnemonic, "shx", 0, AF_WORDADRY, { 0x9e } }, { NULL, v_mnemonic, "shy", 0, AF_WORDADRX, { 0x9c } }, { NULL, v_mnemonic, "slo", 0, AF_BYTEADR|AF_BYTEADRX|AF_WORDADR|AF_WORDADRX|AF_WORDADRY|AF_INDBYTEX|AF_INDBYTEY, { 0x07, 0x17, 0x0f, 0x1f, 0x1b, 0x03, 0x13 } }, { NULL, v_mnemonic, "sre", 0, AF_BYTEADR|AF_BYTEADRX|AF_WORDADR|AF_WORDADRX|AF_WORDADRY|AF_INDBYTEX|AF_INDBYTEY, { 0x47, 0x57, 0x4f, 0x5f, 0x5b, 0x43, 0x53 } }, { NULL, v_mnemonic, "sta", 0, ASTD, { 0x85, 0x95, 0x8D, 0x9D, 0x99, 0x81, 0x91 } }, { NULL, v_mnemonic, "stx", 0, AF_BYTEADR|AF_BYTEADRY|AF_WORDADR, { 0x86, 0x96, 0x8E } }, { NULL, v_mnemonic, "sty", 0, AF_BYTEADR|AF_BYTEADRX|AF_WORDADR, { 0x84, 0x94, 0x8C } }, { NULL, v_mnemonic, "tax", 0, AF_IMP, { 0xAA } }, { NULL, v_mnemonic, "tay", 0, AF_IMP, { 0xA8 } }, { NULL, v_mnemonic, "tsx", 0, AF_IMP, { 0xBA } }, { NULL, v_mnemonic, "txa", 0, AF_IMP, { 0x8A } }, { NULL, v_mnemonic, "txs", 0, AF_IMP, { 0x9A } }, { NULL, v_mnemonic, "tya", 0, AF_IMP, { 0x98 } }, { NULL, v_mnemonic, "usbc", 0, AF_IMM8, { 0xeb } }, { NULL, } };
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [stella] A new version of an ol, Eckhard Stolberg | Thread | RE: [stella] A new version of an ol, Bob Colbert |
RE: [stella] A new version of an ol, John Saeger | Date | Re: [stella] Is the list dead? I ha, kickass |
Month |