Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- static const string[256] codes = [
- `brk`, `ora`, `___`, `___`, `___`, `ora`, `asl`, `___`, `php`, `ora`, `asl`, `___`, `___`, `ora`, `asl`, `___`,
- `bpl`, `ora`, `___`, `___`, `___`, `ora`, `asl`, `___`, `clc`, `ora`, `___`, `___`, `___`, `ora`, `asl`, `___`,
- `jsr`, `and`, `___`, `___`, `bit`, `and`, `rol`, `___`, `plp`, `and`, `rol`, `___`, `bit`, `and`, `rol`, `___`,
- `bmi`, `and`, `___`, `___`, `___`, `and`, `rol`, `___`, `sec`, `and`, `___`, `___`, `___`, `and`, `rol`, `___`,
- `rti`, `eor`, `___`, `___`, `___`, `eor`, `lsr`, `___`, `pha`, `eor`, `lsr`, `___`, `jmp`, `eor`, `lsr`, `___`,
- `bvc`, `eor`, `___`, `___`, `___`, `eor`, `lsr`, `___`, `cli`, `eor`, `___`, `___`, `___`, `eor`, `lsr`, `___`,
- `rts`, `adc`, `___`, `___`, `___`, `adc`, `ror`, `___`, `pla`, `adc`, `ror`, `___`, `jmp`, `adc`, `ror`, `___`,
- `bvs`, `adc`, `___`, `___`, `___`, `adc`, `ror`, `___`, `sei`, `adc`, `___`, `___`, `___`, `adc`, `ror`, `___`,
- `___`, `sta`, `___`, `___`, `sty`, `sta`, `stx`, `___`, `dey`, `___`, `txa`, `___`, `sty`, `sta`, `stx`, `___`,
- `bcc`, `sta`, `___`, `___`, `sty`, `sta`, `stx`, `___`, `tya`, `sta`, `txs`, `___`, `___`, `sta`, `___`, `___`,
- `ldy`, `lda`, `ldx`, `___`, `ldy`, `lda`, `ldx`, `___`, `tay`, `lda`, `tax`, `___`, `ldy`, `lda`, `ldx`, `___`,
- `bcs`, `lda`, `___`, `___`, `ldy`, `lda`, `ldx`, `___`, `clv`, `lda`, `tsx`, `___`, `ldy`, `lda`, `ldx`, `___`,
- `cpy`, `cmp`, `___`, `___`, `cpy`, `cmp`, `dec`, `___`, `iny`, `cmp`, `dex`, `___`, `cpy`, `cmp`, `dec`, `___`,
- `bne`, `cmp`, `___`, `___`, `___`, `cmp`, `dec`, `___`, `cld`, `cmp`, `___`, `___`, `___`, `cmp`, `dec`, `___`,
- `cpx`, `sbc`, `___`, `___`, `cpx`, `sbc`, `inc`, `___`, `inx`, `sbc`, `nop`, `___`, `cpx`, `sbc`, `inc`, `___`,
- `beq`, `sbc`, `___`, `___`, `___`, `sbc`, `inc`, `___`, `sed`, `sbc`, `___`, `___`, `___`, `sbc`, `inc`, `___`
- ];
- static const string[256] modes = [
- `imp`, `inx`, `___`, `___`, `___`, `zpg`, `zpg`, `___`, `imp`, `imm`, `imp`, `___`, `___`, `abs`, `abs`, `___`,
- `imm`, `iny`, `___`, `___`, `___`, `zpx`, `zpx`, `___`, `imp`, `aby`, `___`, `___`, `___`, `abx`, `abx`, `___`,
- `abs`, `inx`, `___`, `___`, `zpg`, `zpg`, `zpg`, `___`, `imp`, `imm`, `imp`, `___`, `abs`, `abs`, `abs`, `___`,
- `imm`, `iny`, `___`, `___`, `___`, `zpx`, `zpx`, `___`, `imp`, `aby`, `___`, `___`, `___`, `abx`, `abx`, `___`,
- `imp`, `inx`, `___`, `___`, `___`, `zpg`, `zpg`, `___`, `imp`, `imm`, `imp`, `___`, `abs`, `abs`, `abs`, `___`,
- `imm`, `iny`, `___`, `___`, `___`, `zpx`, `zpx`, `___`, `imp`, `aby`, `___`, `___`, `___`, `abx`, `abx`, `___`,
- `imp`, `inx`, `___`, `___`, `___`, `zpg`, `zpg`, `___`, `imp`, `imm`, `imp`, `___`, `ind`, `abs`, `abs`, `___`,
- `imm`, `iny`, `___`, `___`, `___`, `zpx`, `zpx`, `___`, `imp`, `aby`, `___`, `___`, `___`, `abx`, `abx`, `___`,
- `___`, `inx`, `___`, `___`, `zpg`, `zpg`, `zpg`, `___`, `imp`, `___`, `imp`, `___`, `abs`, `abs`, `abs`, `___`,
- `imm`, `iny`, `___`, `___`, `zpx`, `zpx`, `zpy`, `___`, `imp`, `aby`, `imp`, `___`, `___`, `abx`, `___`, `___`,
- `imm`, `inx`, `imm`, `___`, `zpg`, `zpg`, `zpg`, `___`, `imp`, `imm`, `imp`, `___`, `abs`, `abs`, `abs`, `___`,
- `imm`, `iny`, `___`, `___`, `zpx`, `zpx`, `zpy`, `___`, `imp`, `aby`, `imp`, `___`, `abx`, `abx`, `aby`, `___`,
- `imm`, `inx`, `___`, `___`, `zpg`, `zpg`, `zpg`, `___`, `imp`, `imm`, `imp`, `___`, `abs`, `abs`, `abs`, `___`,
- `imm`, `iny`, `___`, `___`, `___`, `zpx`, `zpx`, `___`, `imp`, `aby`, `___`, `___`, `___`, `abx`, `abx`, `___`,
- `imm`, `inx`, `___`, `___`, `zpg`, `zpg`, `zpg`, `___`, `imp`, `imm`, `imp`, `___`, `abs`, `abs`, `abs`, `___`,
- `imm`, `iny`, `___`, `___`, `___`, `zpx`, `zpx`, `___`, `imp`, `aby`, `___`, `___`, `___`, `abx`, `abx`, `___`
- ];
- static const string[256] types = [
- `r`, `r`, `r`, `r`, `r`, `r`, `m`, `r`, `r`, `r`, `a`, `r`, `r`, `r`, `m`, `r`,
- `r`, `r`, `r`, `r`, `r`, `r`, `m`, `r`, `r`, `r`, `r`, `r`, `r`, `r`, `m`, `r`,
- `r`, `r`, `r`, `r`, `r`, `r`, `m`, `r`, `r`, `r`, `a`, `r`, `r`, `r`, `m`, `r`,
- `r`, `r`, `r`, `r`, `r`, `r`, `m`, `r`, `r`, `r`, `r`, `r`, `r`, `r`, `m`, `r`,
- `r`, `r`, `r`, `r`, `r`, `r`, `m`, `r`, `r`, `r`, `a`, `r`, `r`, `r`, `m`, `r`,
- `r`, `r`, `r`, `r`, `r`, `r`, `m`, `r`, `r`, `r`, `r`, `r`, `r`, `r`, `m`, `r`,
- `r`, `r`, `r`, `r`, `r`, `r`, `m`, `r`, `r`, `r`, `a`, `r`, `r`, `r`, `m`, `r`,
- `r`, `r`, `r`, `r`, `r`, `r`, `m`, `r`, `r`, `r`, `r`, `r`, `r`, `r`, `m`, `r`,
- `r`, `w`, `r`, `r`, `w`, `w`, `w`, `r`, `r`, `r`, `r`, `r`, `w`, `w`, `w`, `r`,
- `r`, `w`, `r`, `r`, `w`, `w`, `w`, `r`, `r`, `w`, `r`, `r`, `r`, `w`, `r`, `r`,
- `r`, `r`, `r`, `r`, `r`, `r`, `r`, `r`, `r`, `r`, `r`, `r`, `r`, `r`, `r`, `r`,
- `r`, `r`, `r`, `r`, `r`, `r`, `r`, `r`, `r`, `r`, `r`, `r`, `r`, `r`, `r`, `r`,
- `r`, `r`, `r`, `r`, `r`, `r`, `m`, `r`, `r`, `r`, `r`, `r`, `r`, `r`, `m`, `r`,
- `r`, `r`, `r`, `r`, `r`, `r`, `m`, `r`, `r`, `r`, `r`, `r`, `r`, `r`, `m`, `r`,
- `r`, `r`, `r`, `r`, `r`, `r`, `m`, `r`, `r`, `r`, `r`, `r`, `r`, `r`, `m`, `r`,
- `r`, `r`, `r`, `r`, `r`, `r`, `m`, `r`, `r`, `r`, `r`, `r`, `r`, `r`, `m`, `r`
- ];
- string create_table() {
- auto tableString = "final switch (code) {";
- for (int i = 0; i < 256; i++) {
- tableString ~= format("case 0x%02x: mixin(op_%s!(`%s`, `%s`)); break;",
- i,
- types[i],
- codes[i],
- modes[i]
- );
- }
- return tableString ~ "}";
- }
- string op_a(string code, string mode)() {
- return `
- am_` ~ mode ~ `();
- data = a;
- op_` ~ code ~ `();
- a = data;
- `;
- }
- string op_r(string code, string mode)() {
- return `
- am_` ~ mode ~ `();
- data = bus.read(aa.w);
- op_` ~ code ~ `();
- `;
- }
- string op_m(string code, string mode)() {
- return `
- am_` ~ mode ~ `();
- data = bus.read(aa.w);
- bus.write(aa.w, data);
- op_` ~ code ~ `();
- bus.write(aa.w, data);
- `;
- }
- string op_w(string code, string mode)() {
- return `
- am_` ~ mode ~ `();
- op_` ~ code ~ `();
- bus.write(aa.w, data);
- `;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement