Example #1
0
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;
}
Example #2
0
void tms9900_disassembler::print_arg (std::ostream &stream, int mode, int arg, const data_buffer &params, 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;
	}
}