Advertisement
Guest User

Untitled

a guest
Oct 4th, 2015
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
D 6.07 KB | None | 0 0
  1. static const string[256] codes = [
  2.     `brk`, `ora`, `___`, `___`, `___`, `ora`, `asl`, `___`, `php`, `ora`, `asl`, `___`, `___`, `ora`, `asl`, `___`,
  3.     `bpl`, `ora`, `___`, `___`, `___`, `ora`, `asl`, `___`, `clc`, `ora`, `___`, `___`, `___`, `ora`, `asl`, `___`,
  4.     `jsr`, `and`, `___`, `___`, `bit`, `and`, `rol`, `___`, `plp`, `and`, `rol`, `___`, `bit`, `and`, `rol`, `___`,
  5.     `bmi`, `and`, `___`, `___`, `___`, `and`, `rol`, `___`, `sec`, `and`, `___`, `___`, `___`, `and`, `rol`, `___`,
  6.     `rti`, `eor`, `___`, `___`, `___`, `eor`, `lsr`, `___`, `pha`, `eor`, `lsr`, `___`, `jmp`, `eor`, `lsr`, `___`,
  7.     `bvc`, `eor`, `___`, `___`, `___`, `eor`, `lsr`, `___`, `cli`, `eor`, `___`, `___`, `___`, `eor`, `lsr`, `___`,
  8.     `rts`, `adc`, `___`, `___`, `___`, `adc`, `ror`, `___`, `pla`, `adc`, `ror`, `___`, `jmp`, `adc`, `ror`, `___`,
  9.     `bvs`, `adc`, `___`, `___`, `___`, `adc`, `ror`, `___`, `sei`, `adc`, `___`, `___`, `___`, `adc`, `ror`, `___`,
  10.     `___`, `sta`, `___`, `___`, `sty`, `sta`, `stx`, `___`, `dey`, `___`, `txa`, `___`, `sty`, `sta`, `stx`, `___`,
  11.     `bcc`, `sta`, `___`, `___`, `sty`, `sta`, `stx`, `___`, `tya`, `sta`, `txs`, `___`, `___`, `sta`, `___`, `___`,
  12.     `ldy`, `lda`, `ldx`, `___`, `ldy`, `lda`, `ldx`, `___`, `tay`, `lda`, `tax`, `___`, `ldy`, `lda`, `ldx`, `___`,
  13.     `bcs`, `lda`, `___`, `___`, `ldy`, `lda`, `ldx`, `___`, `clv`, `lda`, `tsx`, `___`, `ldy`, `lda`, `ldx`, `___`,
  14.     `cpy`, `cmp`, `___`, `___`, `cpy`, `cmp`, `dec`, `___`, `iny`, `cmp`, `dex`, `___`, `cpy`, `cmp`, `dec`, `___`,
  15.     `bne`, `cmp`, `___`, `___`, `___`, `cmp`, `dec`, `___`, `cld`, `cmp`, `___`, `___`, `___`, `cmp`, `dec`, `___`,
  16.     `cpx`, `sbc`, `___`, `___`, `cpx`, `sbc`, `inc`, `___`, `inx`, `sbc`, `nop`, `___`, `cpx`, `sbc`, `inc`, `___`,
  17.     `beq`, `sbc`, `___`, `___`, `___`, `sbc`, `inc`, `___`, `sed`, `sbc`, `___`, `___`, `___`, `sbc`, `inc`, `___`
  18. ];
  19.  
  20. static const string[256] modes = [
  21.     `imp`, `inx`, `___`, `___`, `___`, `zpg`, `zpg`, `___`, `imp`, `imm`, `imp`, `___`, `___`, `abs`, `abs`, `___`,
  22.     `imm`, `iny`, `___`, `___`, `___`, `zpx`, `zpx`, `___`, `imp`, `aby`, `___`, `___`, `___`, `abx`, `abx`, `___`,
  23.     `abs`, `inx`, `___`, `___`, `zpg`, `zpg`, `zpg`, `___`, `imp`, `imm`, `imp`, `___`, `abs`, `abs`, `abs`, `___`,
  24.     `imm`, `iny`, `___`, `___`, `___`, `zpx`, `zpx`, `___`, `imp`, `aby`, `___`, `___`, `___`, `abx`, `abx`, `___`,
  25.     `imp`, `inx`, `___`, `___`, `___`, `zpg`, `zpg`, `___`, `imp`, `imm`, `imp`, `___`, `abs`, `abs`, `abs`, `___`,
  26.     `imm`, `iny`, `___`, `___`, `___`, `zpx`, `zpx`, `___`, `imp`, `aby`, `___`, `___`, `___`, `abx`, `abx`, `___`,
  27.     `imp`, `inx`, `___`, `___`, `___`, `zpg`, `zpg`, `___`, `imp`, `imm`, `imp`, `___`, `ind`, `abs`, `abs`, `___`,
  28.     `imm`, `iny`, `___`, `___`, `___`, `zpx`, `zpx`, `___`, `imp`, `aby`, `___`, `___`, `___`, `abx`, `abx`, `___`,
  29.     `___`, `inx`, `___`, `___`, `zpg`, `zpg`, `zpg`, `___`, `imp`, `___`, `imp`, `___`, `abs`, `abs`, `abs`, `___`,
  30.     `imm`, `iny`, `___`, `___`, `zpx`, `zpx`, `zpy`, `___`, `imp`, `aby`, `imp`, `___`, `___`, `abx`, `___`, `___`,
  31.     `imm`, `inx`, `imm`, `___`, `zpg`, `zpg`, `zpg`, `___`, `imp`, `imm`, `imp`, `___`, `abs`, `abs`, `abs`, `___`,
  32.     `imm`, `iny`, `___`, `___`, `zpx`, `zpx`, `zpy`, `___`, `imp`, `aby`, `imp`, `___`, `abx`, `abx`, `aby`, `___`,
  33.     `imm`, `inx`, `___`, `___`, `zpg`, `zpg`, `zpg`, `___`, `imp`, `imm`, `imp`, `___`, `abs`, `abs`, `abs`, `___`,
  34.     `imm`, `iny`, `___`, `___`, `___`, `zpx`, `zpx`, `___`, `imp`, `aby`, `___`, `___`, `___`, `abx`, `abx`, `___`,
  35.     `imm`, `inx`, `___`, `___`, `zpg`, `zpg`, `zpg`, `___`, `imp`, `imm`, `imp`, `___`, `abs`, `abs`, `abs`, `___`,
  36.     `imm`, `iny`, `___`, `___`, `___`, `zpx`, `zpx`, `___`, `imp`, `aby`, `___`, `___`, `___`, `abx`, `abx`, `___`
  37. ];
  38.  
  39. static const string[256] types = [
  40.     `r`, `r`, `r`, `r`, `r`, `r`, `m`, `r`, `r`, `r`, `a`, `r`, `r`, `r`, `m`, `r`,
  41.     `r`, `r`, `r`, `r`, `r`, `r`, `m`, `r`, `r`, `r`, `r`, `r`, `r`, `r`, `m`, `r`,
  42.     `r`, `r`, `r`, `r`, `r`, `r`, `m`, `r`, `r`, `r`, `a`, `r`, `r`, `r`, `m`, `r`,
  43.     `r`, `r`, `r`, `r`, `r`, `r`, `m`, `r`, `r`, `r`, `r`, `r`, `r`, `r`, `m`, `r`,
  44.     `r`, `r`, `r`, `r`, `r`, `r`, `m`, `r`, `r`, `r`, `a`, `r`, `r`, `r`, `m`, `r`,
  45.     `r`, `r`, `r`, `r`, `r`, `r`, `m`, `r`, `r`, `r`, `r`, `r`, `r`, `r`, `m`, `r`,
  46.     `r`, `r`, `r`, `r`, `r`, `r`, `m`, `r`, `r`, `r`, `a`, `r`, `r`, `r`, `m`, `r`,
  47.     `r`, `r`, `r`, `r`, `r`, `r`, `m`, `r`, `r`, `r`, `r`, `r`, `r`, `r`, `m`, `r`,
  48.     `r`, `w`, `r`, `r`, `w`, `w`, `w`, `r`, `r`, `r`, `r`, `r`, `w`, `w`, `w`, `r`,
  49.     `r`, `w`, `r`, `r`, `w`, `w`, `w`, `r`, `r`, `w`, `r`, `r`, `r`, `w`, `r`, `r`,
  50.     `r`, `r`, `r`, `r`, `r`, `r`, `r`, `r`, `r`, `r`, `r`, `r`, `r`, `r`, `r`, `r`,
  51.     `r`, `r`, `r`, `r`, `r`, `r`, `r`, `r`, `r`, `r`, `r`, `r`, `r`, `r`, `r`, `r`,
  52.     `r`, `r`, `r`, `r`, `r`, `r`, `m`, `r`, `r`, `r`, `r`, `r`, `r`, `r`, `m`, `r`,
  53.     `r`, `r`, `r`, `r`, `r`, `r`, `m`, `r`, `r`, `r`, `r`, `r`, `r`, `r`, `m`, `r`,
  54.     `r`, `r`, `r`, `r`, `r`, `r`, `m`, `r`, `r`, `r`, `r`, `r`, `r`, `r`, `m`, `r`,
  55.     `r`, `r`, `r`, `r`, `r`, `r`, `m`, `r`, `r`, `r`, `r`, `r`, `r`, `r`, `m`, `r`
  56. ];
  57.  
  58. string create_table() {
  59.     auto tableString = "final switch (code) {";
  60.  
  61.     for (int i = 0; i < 256; i++) {
  62.         tableString ~= format("case 0x%02x: mixin(op_%s!(`%s`, `%s`)); break;",
  63.             i,
  64.             types[i],
  65.             codes[i],
  66.             modes[i]
  67.         );
  68.     }
  69.  
  70.     return tableString ~ "}";
  71. }
  72.  
  73. string op_a(string code, string mode)() {
  74.     return `
  75.    am_` ~ mode ~ `();
  76.  
  77.    data = a;
  78.  
  79.    op_` ~ code ~ `();
  80.  
  81.    a = data;
  82.    `;
  83. }
  84.  
  85. string op_r(string code, string mode)() {
  86.     return `
  87.    am_` ~ mode ~ `();
  88.  
  89.    data = bus.read(aa.w);
  90.  
  91.    op_` ~ code ~ `();
  92.    `;
  93. }
  94.  
  95. string op_m(string code, string mode)() {
  96.     return `
  97.    am_` ~ mode ~ `();
  98.  
  99.    data = bus.read(aa.w);
  100.    bus.write(aa.w, data);
  101.  
  102.    op_` ~ code ~ `();
  103.  
  104.    bus.write(aa.w, data);
  105.    `;
  106. }
  107.  
  108. string op_w(string code, string mode)() {
  109.     return `
  110.    am_` ~ mode ~ `();
  111.    op_` ~ code ~ `();
  112.  
  113.    bus.write(aa.w, data);
  114.    `;
  115. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement