#include "utils.igen" %% /* am((abs|zm)[xy]?) { if (am == zmx || am == absx) { idx = cpu->x; } else if (am == zmy || am == absy) { idx = cpu->y; } if (am == abs || am == absx || am == absy) { is_abs = 1; } size = ((prefix & 0xC) >> 1) | is_abs; addr = read(cpu->pc, size) + idx; value = read(addr, rs); } am((a)?ind([xy])?) { if (am == indx || am == aindx) { idx = cpu->x; pre_idx = 1; } else if (am == indy || am == aindy) { idx = cpu->y; } if (am == aind || am == aindx || am == aindy) { is_abs = 1; } size = ((prefix & 0xC) >> 1) | is_abs; if (pre_idx) { addr = read(read(cpu->pc + idx, size), 7); } else { addr = read(read(cpu->pc, size), 7) + idx; } value = read(addr, rs); } am(eind) { addr = cpu->e; value = read(addr, rs); } */ am(abs|zm([xy])?) { if (am == abs) { mem_type = ABS; } else { if (am == zmx) { idx = cpu->x; } else if (am == zmy) { idx = cpu->y; } mem_type = ZM; } addr = read_addr(prefix, mem_type) + idx; value = read(addr, rs); } am(ind([xy])?) { if (am == indx) { idx = cpu->x; pre_idx = 1; } else if (am == indy) { idx = cpu->y; } mem_type = ZM; addr = ind_idx_addr(prefix, mem_type, idx, pre_idx); value = read(addr, rs); } am(rel) { addr = rel_addr(prefix); } am(imm) { value = read(cpu->pc, rs); cpu->pc += rs+1; } am(breg) { value = cpu->b; } %%