static int print_arg (char *dest, int mode, int arg, const uint8_t *opram, unsigned pc) { int base; switch (mode) { case 0x0: /* workspace register */ return sprintf (dest, "R%d", arg); case 0x1: /* workspace register indirect */ return sprintf (dest, "*R%d", arg); case 0x2: /* symbolic|indexed */ base = readop_arg(opram, pc); if (arg) /* indexed */ return sprintf (dest, "@>%04x(R%d)", base, arg); else /* symbolic (direct) */ return sprintf (dest, "@>%04x", base); case 0x3: /* workspace register indirect auto increment */ return sprintf (dest, "*R%d+", arg); } return 0; }
void tms9900_disassembler::print_arg (std::ostream &stream, int mode, int arg, const data_buffer ¶ms, offs_t &PC) { int base; switch (mode) { case 0x0: /* workspace register */ util::stream_format(stream, "R%d", arg); break; case 0x1: /* workspace register indirect */ util::stream_format(stream, "*R%d", arg); break; case 0x2: /* symbolic|indexed */ base = readop_arg(params, PC); if (arg) /* indexed */ util::stream_format(stream, "@>%04x(R%d)", base, arg); else /* symbolic (direct) */ util::stream_format(stream, "@>%04x", base); break; case 0x3: /* workspace register indirect auto increment */ util::stream_format(stream, "*R%d+", arg); break; } }