Further cleanups to the TLCS900 disassemlber; fixed some paren spacing, converted a char[] buffer to std::string

This commit is contained in:
Nathan Woods 2016-10-29 22:44:18 -04:00
parent 06613b3dd1
commit a05f144d1e

View File

@ -1436,7 +1436,7 @@ static const char *const s_cond[16] =
static offs_t internal_disasm_tlcs900(cpu_device *device, std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, int options) static offs_t internal_disasm_tlcs900(cpu_device *device, std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, int options)
{ {
const tlcs900inst *dasm; const tlcs900inst *dasm;
char buf[32]; std::string buf;
uint8_t op, op1; uint8_t op, op1;
uint32_t imm; uint32_t imm;
int flags = 0; int flags = 0;
@ -1449,56 +1449,57 @@ static offs_t internal_disasm_tlcs900(cpu_device *device, std::ostream &stream,
/* Check for extended addressing modes */ /* Check for extended addressing modes */
switch( dasm->mnemonic ) switch( dasm->mnemonic )
{ {
default: default:
break; break;
case M_80: case M_80:
sprintf( buf, "%s", s_reg32[op & 0x07] ); buf = string_format("%s", s_reg32[op & 0x07]);
op = oprom[ pos++ ]; op = oprom[ pos++ ];
dasm = &mnemonic_80[ op ]; dasm = &mnemonic_80[ op ];
break; break;
case M_88: case M_88:
imm = oprom[ pos++ ]; imm = oprom[ pos++ ];
sprintf( buf, "%s+0x%02x", s_reg32[op & 0x07], imm ); buf = string_format("%s+0x%02x", s_reg32[op & 0x07], imm);
op = oprom[ pos++ ]; op = oprom[ pos++ ];
dasm = &mnemonic_88[ op ]; dasm = &mnemonic_88[ op ];
break; break;
case M_90: case M_90:
sprintf( buf, "%s", s_reg32[op & 0x07] ); buf = string_format("%s", s_reg32[op & 0x07]);
op = oprom[ pos++ ]; op = oprom[ pos++ ];
dasm = &mnemonic_90[ op ]; dasm = &mnemonic_90[ op ];
break; break;
case M_98: case M_98:
imm = oprom[ pos++ ]; imm = oprom[ pos++ ];
sprintf( buf, "%s+0x%02x", s_reg32[op & 0x07], imm ); buf = string_format("%s+0x%02x", s_reg32[op & 0x07], imm);
op = oprom[ pos++ ]; op = oprom[ pos++ ];
dasm = &mnemonic_98[ op ]; dasm = &mnemonic_98[ op ];
break; break;
case M_A0: case M_A0:
sprintf( buf, "%s", s_reg32[op & 0x07] ); buf = string_format("%s", s_reg32[op & 0x07]);
op = oprom[ pos++ ]; op = oprom[ pos++ ];
dasm = &mnemonic_a0[ op ]; dasm = &mnemonic_a0[ op ];
break; break;
case M_A8: case M_A8:
imm = oprom[ pos++ ]; imm = oprom[ pos++ ];
sprintf( buf, "%s+0x%02x", s_reg32[op & 0x07], imm ); buf = string_format("%s+0x%02x", s_reg32[op & 0x07], imm);
op = oprom[ pos++ ]; op = oprom[ pos++ ];
dasm = &mnemonic_a0[ op ]; dasm = &mnemonic_a0[ op ];
break; break;
case M_B0: case M_B0:
sprintf( buf, "%s", s_reg32[op & 0x07] ); buf = string_format("%s", s_reg32[op & 0x07]);
op = oprom[ pos++ ]; op = oprom[ pos++ ];
dasm = &mnemonic_b0[ op ]; dasm = &mnemonic_b0[ op ];
break; break;
case M_B8: case M_B8:
imm = oprom[ pos++ ]; imm = oprom[ pos++ ];
sprintf( buf, "%s+0x%02x", s_reg32[op & 0x07], imm ); buf = string_format("%s+0x%02x", s_reg32[op & 0x07], imm);
op = oprom[ pos++ ]; op = oprom[ pos++ ];
dasm = &mnemonic_b8[ op ]; dasm = &mnemonic_b8[ op ];
break; break;
@ -1508,20 +1509,20 @@ static offs_t internal_disasm_tlcs900(cpu_device *device, std::ostream &stream,
{ {
case 0x00: /* 0xC0 */ case 0x00: /* 0xC0 */
imm = oprom[ pos++ ]; imm = oprom[ pos++ ];
sprintf( buf, "0x%02x", imm ); buf = string_format("0x%02x", imm);
break; break;
case 0x01: /* 0xC1 */ case 0x01: /* 0xC1 */
imm = oprom[ pos++ ]; imm = oprom[ pos++ ];
imm = imm | ( oprom[ pos++ ] << 8 ); imm = imm | ( oprom[ pos++ ] << 8);
sprintf( buf, "0x%04x", imm ); buf = string_format("0x%04x", imm);
break; break;
case 0x02: /* 0xC2 */ case 0x02: /* 0xC2 */
imm = oprom[ pos++ ]; imm = oprom[ pos++ ];
imm = imm | ( oprom[ pos++ ] << 8 ); imm = imm | ( oprom[ pos++ ] << 8);
imm = imm | ( oprom[ pos++ ] << 16 ); imm = imm | ( oprom[ pos++ ] << 16);
sprintf( buf, "0x%06x", imm ); buf = string_format("0x%06x", imm);
break; break;
case 0x03: /* 0xC3 */ case 0x03: /* 0xC3 */
@ -1529,18 +1530,18 @@ static offs_t internal_disasm_tlcs900(cpu_device *device, std::ostream &stream,
switch( imm & 0x03 ) switch( imm & 0x03 )
{ {
case 0x00: case 0x00:
sprintf( buf, "%s", s_allreg32[imm] ); buf = string_format("%s", s_allreg32[imm]);
break; break;
case 0x01: case 0x01:
op = imm; op = imm;
imm = oprom[ pos++ ]; imm = oprom[ pos++ ];
imm = imm | ( oprom[ pos++ ] << 8 ); imm = imm | ( oprom[ pos++ ] << 8);
sprintf( buf, "%s+0x%04x", s_allreg32[op], imm ); buf = string_format("%s+0x%04x", s_allreg32[op], imm);
break; break;
case 0x02: case 0x02:
sprintf( buf, "unknown" ); buf = string_format("unknown");
break; break;
case 0x03: case 0x03:
@ -1549,19 +1550,19 @@ static offs_t internal_disasm_tlcs900(cpu_device *device, std::ostream &stream,
case 0x03: case 0x03:
op = oprom[ pos++ ]; op = oprom[ pos++ ];
op1 = oprom[ pos++ ]; op1 = oprom[ pos++ ];
sprintf( buf, "%s+%s", s_allreg32[op], s_allreg8[op1] ); buf = string_format("%s+%s", s_allreg32[op], s_allreg8[op1]);
break; break;
case 0x07: case 0x07:
op = oprom[ pos++ ]; op = oprom[ pos++ ];
op1 = oprom[ pos++ ]; op1 = oprom[ pos++ ];
sprintf( buf, "%s+%s", s_allreg32[op], s_allreg16[op1] ); buf = string_format("%s+%s", s_allreg32[op], s_allreg16[op1]);
break; break;
case 0x13: case 0x13:
imm = oprom[ pos++ ]; imm = oprom[ pos++ ];
imm = imm | ( oprom[ pos++ ] << 8 ); imm = imm | ( oprom[ pos++ ] << 8);
sprintf( buf, "0x%06x", pc + pos + (int16_t)imm ); buf = string_format("0x%06x", pc + pos + (int16_t)imm);
break; break;
} }
break; break;
@ -1570,12 +1571,12 @@ static offs_t internal_disasm_tlcs900(cpu_device *device, std::ostream &stream,
case 0x04: /* 0xC4 */ case 0x04: /* 0xC4 */
imm = oprom[ pos++ ]; imm = oprom[ pos++ ];
sprintf( buf, "-%s", s_allreg32[imm] ); buf = string_format("-%s", s_allreg32[imm]);
break; break;
case 0x05: /* 0xC5 */ case 0x05: /* 0xC5 */
imm = oprom[ pos++ ]; imm = oprom[ pos++ ];
sprintf( buf, "%s+", s_allreg32[imm] ); buf = string_format("%s+", s_allreg32[imm]);
break; break;
} }
op = oprom[ pos++ ]; op = oprom[ pos++ ];
@ -1585,12 +1586,12 @@ static offs_t internal_disasm_tlcs900(cpu_device *device, std::ostream &stream,
case oC8: case oC8:
if ( op & 0x08 ) if ( op & 0x08 )
{ {
sprintf( buf, "%s", s_reg8[ op & 0x07 ] ); buf = string_format("%s", s_reg8[ op & 0x07 ]);
} }
else else
{ {
imm = oprom[ pos++ ]; imm = oprom[ pos++ ];
sprintf( buf, "%s", s_allreg8[imm] ); buf = string_format("%s", s_allreg8[imm]);
} }
op = oprom[ pos++ ]; op = oprom[ pos++ ];
dasm = &mnemonic_c8[ op ]; dasm = &mnemonic_c8[ op ];
@ -1601,20 +1602,20 @@ static offs_t internal_disasm_tlcs900(cpu_device *device, std::ostream &stream,
{ {
case 0x00: /* 0xD0 */ case 0x00: /* 0xD0 */
imm = oprom[ pos++ ]; imm = oprom[ pos++ ];
sprintf( buf, "0x%02x", imm ); buf = string_format("0x%02x", imm);
break; break;
case 0x01: /* 0xD1 */ case 0x01: /* 0xD1 */
imm = oprom[ pos++ ]; imm = oprom[ pos++ ];
imm = imm | ( oprom[ pos++ ] << 8 ); imm = imm | ( oprom[ pos++ ] << 8);
sprintf( buf, "0x%04x", imm ); buf = string_format("0x%04x", imm);
break; break;
case 0x02: /* 0xD2 */ case 0x02: /* 0xD2 */
imm = oprom[ pos++ ]; imm = oprom[ pos++ ];
imm = imm | ( oprom[ pos++ ] << 8 ); imm = imm | ( oprom[ pos++ ] << 8);
imm = imm | ( oprom[ pos++ ] << 16 ); imm = imm | ( oprom[ pos++ ] << 16);
sprintf( buf, "0x%06x", imm ); buf = string_format("0x%06x", imm);
break; break;
case 0x03: /* 0xD3 */ case 0x03: /* 0xD3 */
@ -1622,18 +1623,18 @@ static offs_t internal_disasm_tlcs900(cpu_device *device, std::ostream &stream,
switch( imm & 0x03 ) switch( imm & 0x03 )
{ {
case 0x00: case 0x00:
sprintf( buf, "%s", s_allreg32[imm] ); buf = string_format("%s", s_allreg32[imm]);
break; break;
case 0x01: case 0x01:
op = imm; op = imm;
imm = oprom[ pos++ ]; imm = oprom[ pos++ ];
imm = imm | ( oprom[ pos++ ] << 8 ); imm = imm | ( oprom[ pos++ ] << 8);
sprintf( buf, "%s+0x%04x", s_allreg32[op], imm ); buf = string_format("%s+0x%04x", s_allreg32[op], imm);
break; break;
case 0x02: case 0x02:
sprintf( buf, "unknown" ); buf = string_format("unknown");
break; break;
case 0x03: case 0x03:
@ -1642,19 +1643,19 @@ static offs_t internal_disasm_tlcs900(cpu_device *device, std::ostream &stream,
case 0x03: case 0x03:
op = oprom[ pos++ ]; op = oprom[ pos++ ];
op1 = oprom[ pos++ ]; op1 = oprom[ pos++ ];
sprintf( buf, "%s+%s", s_allreg32[op], s_allreg8[op1] ); buf = string_format("%s+%s", s_allreg32[op], s_allreg8[op1]);
break; break;
case 0x07: case 0x07:
op = oprom[ pos++ ]; op = oprom[ pos++ ];
op1 = oprom[ pos++ ]; op1 = oprom[ pos++ ];
sprintf( buf, "%s+%s", s_allreg32[op], s_allreg16[op1] ); buf = string_format("%s+%s", s_allreg32[op], s_allreg16[op1]);
break; break;
case 0x13: case 0x13:
imm = oprom[ pos++ ]; imm = oprom[ pos++ ];
imm = imm | ( oprom[ pos++ ] << 8 ); imm = imm | ( oprom[ pos++ ] << 8);
sprintf( buf, "0x%06x", pc + pos + (int16_t)imm ); buf = string_format("0x%06x", pc + pos + (int16_t)imm);
break; break;
} }
break; break;
@ -1663,12 +1664,12 @@ static offs_t internal_disasm_tlcs900(cpu_device *device, std::ostream &stream,
case 0x04: /* 0xD4 */ case 0x04: /* 0xD4 */
imm = oprom[ pos++ ]; imm = oprom[ pos++ ];
sprintf( buf, "-%s", s_allreg32[imm] ); buf = string_format("-%s", s_allreg32[imm]);
break; break;
case 0x05: /* 0xD5 */ case 0x05: /* 0xD5 */
imm = oprom[ pos++ ]; imm = oprom[ pos++ ];
sprintf( buf, "%s+", s_allreg32[imm] ); buf = string_format("%s+", s_allreg32[imm]);
break; break;
} }
op = oprom[ pos++ ]; op = oprom[ pos++ ];
@ -1678,12 +1679,12 @@ static offs_t internal_disasm_tlcs900(cpu_device *device, std::ostream &stream,
case oD8: case oD8:
if ( op & 0x08 ) if ( op & 0x08 )
{ {
sprintf( buf, "%s", s_reg16[ op & 0x07 ] ); buf = string_format("%s", s_reg16[ op & 0x07 ]);
} }
else else
{ {
imm = oprom[ pos++ ]; imm = oprom[ pos++ ];
sprintf( buf, "%s", s_allreg16[imm] ); buf = string_format("%s", s_allreg16[imm]);
} }
op = oprom[ pos++ ]; op = oprom[ pos++ ];
@ -1695,20 +1696,20 @@ static offs_t internal_disasm_tlcs900(cpu_device *device, std::ostream &stream,
{ {
case 0x00: /* 0xE0 */ case 0x00: /* 0xE0 */
imm = oprom[ pos++ ]; imm = oprom[ pos++ ];
sprintf( buf, "0x%02x", imm ); buf = string_format("0x%02x", imm);
break; break;
case 0x01: /* 0xE1 */ case 0x01: /* 0xE1 */
imm = oprom[ pos++ ]; imm = oprom[ pos++ ];
imm = imm | ( oprom[ pos++ ] << 8 ); imm = imm | ( oprom[ pos++ ] << 8);
sprintf( buf, "0x%04x", imm ); buf = string_format("0x%04x", imm);
break; break;
case 0x02: /* 0xE2 */ case 0x02: /* 0xE2 */
imm = oprom[ pos++ ]; imm = oprom[ pos++ ];
imm = imm | ( oprom[ pos++ ] << 8 ); imm = imm | ( oprom[ pos++ ] << 8);
imm = imm | ( oprom[ pos++ ] << 16 ); imm = imm | ( oprom[ pos++ ] << 16);
sprintf( buf, "0x%06x", imm ); buf = string_format("0x%06x", imm);
break; break;
case 0x03: /* 0xE3 */ case 0x03: /* 0xE3 */
@ -1716,18 +1717,18 @@ static offs_t internal_disasm_tlcs900(cpu_device *device, std::ostream &stream,
switch( imm & 0x03 ) switch( imm & 0x03 )
{ {
case 0x00: case 0x00:
sprintf( buf, "%s", s_allreg32[imm] ); buf = string_format("%s", s_allreg32[imm]);
break; break;
case 0x01: case 0x01:
op = imm; op = imm;
imm = oprom[ pos++ ]; imm = oprom[ pos++ ];
imm = imm | ( oprom[ pos++ ] << 8 ); imm = imm | ( oprom[ pos++ ] << 8);
sprintf( buf, "%s+0x%04x", s_allreg32[op], imm ); buf = string_format("%s+0x%04x", s_allreg32[op], imm);
break; break;
case 0x02: case 0x02:
sprintf( buf, "unknown" ); buf = string_format("unknown");
break; break;
case 0x03: case 0x03:
@ -1736,19 +1737,19 @@ static offs_t internal_disasm_tlcs900(cpu_device *device, std::ostream &stream,
case 0x03: case 0x03:
op = oprom[ pos++ ]; op = oprom[ pos++ ];
op1 = oprom[ pos++ ]; op1 = oprom[ pos++ ];
sprintf( buf, "%s+%s", s_allreg32[op], s_allreg8[op1] ); buf = string_format("%s+%s", s_allreg32[op], s_allreg8[op1]);
break; break;
case 0x07: case 0x07:
op = oprom[ pos++ ]; op = oprom[ pos++ ];
op1 = oprom[ pos++ ]; op1 = oprom[ pos++ ];
sprintf( buf, "%s+%s", s_allreg32[op], s_allreg16[op1] ); buf = string_format("%s+%s", s_allreg32[op], s_allreg16[op1]);
break; break;
case 0x13: case 0x13:
imm = oprom[ pos++ ]; imm = oprom[ pos++ ];
imm = imm | ( oprom[ pos++ ] << 8 ); imm = imm | ( oprom[ pos++ ] << 8);
sprintf( buf, "0x%06x", pc + pos + (int16_t)imm ); buf = string_format("0x%06x", pc + pos + (int16_t)imm);
break; break;
} }
break; break;
@ -1757,12 +1758,12 @@ static offs_t internal_disasm_tlcs900(cpu_device *device, std::ostream &stream,
case 0x04: /* 0xE4 */ case 0x04: /* 0xE4 */
imm = oprom[ pos++ ]; imm = oprom[ pos++ ];
sprintf( buf, "-%s", s_allreg32[imm] ); buf = string_format("-%s", s_allreg32[imm]);
break; break;
case 0x05: /* 0xE5 */ case 0x05: /* 0xE5 */
imm = oprom[ pos++ ]; imm = oprom[ pos++ ];
sprintf( buf, "%s+", s_allreg32[imm] ); buf = string_format("%s+", s_allreg32[imm]);
break; break;
} }
op = oprom[ pos++ ]; op = oprom[ pos++ ];
@ -1772,12 +1773,12 @@ static offs_t internal_disasm_tlcs900(cpu_device *device, std::ostream &stream,
case M_E8: case M_E8:
if ( op & 0x08 ) if ( op & 0x08 )
{ {
sprintf( buf, "%s", s_reg32[ op & 0x07 ] ); buf = string_format("%s", s_reg32[ op & 0x07 ]);
} }
else else
{ {
imm = oprom[ pos++ ]; imm = oprom[ pos++ ];
sprintf( buf, "%s", s_allreg32[imm] ); buf = string_format("%s", s_allreg32[imm]);
} }
op = oprom[ pos++ ]; op = oprom[ pos++ ];
dasm = &mnemonic_e8[ op ]; dasm = &mnemonic_e8[ op ];
@ -1788,20 +1789,20 @@ static offs_t internal_disasm_tlcs900(cpu_device *device, std::ostream &stream,
{ {
case 0x00: /* 0xF0 */ case 0x00: /* 0xF0 */
imm = oprom[ pos++ ]; imm = oprom[ pos++ ];
sprintf( buf, "0x%02x", imm ); buf = string_format("0x%02x", imm);
break; break;
case 0x01: /* 0xF1 */ case 0x01: /* 0xF1 */
imm = oprom[ pos++ ]; imm = oprom[ pos++ ];
imm = imm | ( oprom[ pos++ ] << 8 ); imm = imm | ( oprom[ pos++ ] << 8);
sprintf( buf, "0x%04x", imm ); buf = string_format("0x%04x", imm);
break; break;
case 0x02: /* 0xF2 */ case 0x02: /* 0xF2 */
imm = oprom[ pos++ ]; imm = oprom[ pos++ ];
imm = imm | ( oprom[ pos++ ] << 8 ); imm = imm | ( oprom[ pos++ ] << 8);
imm = imm | ( oprom[ pos++ ] << 16 ); imm = imm | ( oprom[ pos++ ] << 16);
sprintf( buf, "0x%06x", imm ); buf = string_format("0x%06x", imm);
break; break;
case 0x03: /* 0xF3 */ case 0x03: /* 0xF3 */
@ -1809,18 +1810,18 @@ static offs_t internal_disasm_tlcs900(cpu_device *device, std::ostream &stream,
switch( imm & 0x03 ) switch( imm & 0x03 )
{ {
case 0x00: case 0x00:
sprintf( buf, "%s", s_allreg32[imm] ); buf = string_format("%s", s_allreg32[imm]);
break; break;
case 0x01: case 0x01:
op = imm; op = imm;
imm = oprom[ pos++ ]; imm = oprom[ pos++ ];
imm = imm | ( oprom[ pos++ ] << 8 ); imm = imm | ( oprom[ pos++ ] << 8);
sprintf( buf, "%s+0x%04x", s_allreg32[op], imm ); buf = string_format("%s+0x%04x", s_allreg32[op], imm);
break; break;
case 0x02: case 0x02:
sprintf( buf, "unknown" ); buf = string_format("unknown");
break; break;
case 0x03: case 0x03:
@ -1829,19 +1830,19 @@ static offs_t internal_disasm_tlcs900(cpu_device *device, std::ostream &stream,
case 0x03: case 0x03:
op = oprom[ pos++ ]; op = oprom[ pos++ ];
op1 = oprom[ pos++ ]; op1 = oprom[ pos++ ];
sprintf( buf, "%s+%s", s_allreg32[op], s_allreg8[op1] ); buf = string_format("%s+%s", s_allreg32[op], s_allreg8[op1]);
break; break;
case 0x07: case 0x07:
op = oprom[ pos++ ]; op = oprom[ pos++ ];
op1 = oprom[ pos++ ]; op1 = oprom[ pos++ ];
sprintf( buf, "%s+%s", s_allreg32[op], s_allreg16[op1] ); buf = string_format("%s+%s", s_allreg32[op], s_allreg16[op1]);
break; break;
case 0x13: case 0x13:
imm = oprom[ pos++ ]; imm = oprom[ pos++ ];
imm = imm | ( oprom[ pos++ ] << 8 ); imm = imm | ( oprom[ pos++ ] << 8);
sprintf( buf, "0x%06x", pc + pos + (int16_t)imm ); buf = string_format("0x%06x", pc + pos + (int16_t)imm);
break; break;
} }
break; break;
@ -1850,12 +1851,12 @@ static offs_t internal_disasm_tlcs900(cpu_device *device, std::ostream &stream,
case 0x04: /* 0xF4 */ case 0x04: /* 0xF4 */
imm = oprom[ pos++ ]; imm = oprom[ pos++ ];
sprintf( buf, "-%s", s_allreg32[imm] ); buf = string_format("-%s", s_allreg32[imm]);
break; break;
case 0x05: /* 0xF5 */ case 0x05: /* 0xF5 */
imm = oprom[ pos++ ]; imm = oprom[ pos++ ];
sprintf( buf, "%s+", s_allreg32[imm] ); buf = string_format("%s+", s_allreg32[imm]);
break; break;
} }
op = oprom[ pos++ ]; op = oprom[ pos++ ];
@ -1863,13 +1864,13 @@ static offs_t internal_disasm_tlcs900(cpu_device *device, std::ostream &stream,
break; break;
} }
util::stream_format(stream, "%s", s_mnemonic[ dasm->mnemonic ] ); util::stream_format(stream, "%s", s_mnemonic[ dasm->mnemonic ]);
switch( dasm->mnemonic ) switch( dasm->mnemonic )
{ {
default: default:
/* maybe assert */ /* maybe assert */
break; break;
case M_CALL: case M_CALL:
case M_CALR: case M_CALR:
flags = DASMFLAG_STEP_OVER; flags = DASMFLAG_STEP_OVER;
@ -1887,27 +1888,27 @@ static offs_t internal_disasm_tlcs900(cpu_device *device, std::ostream &stream,
break; break;
case O_A: case O_A:
util::stream_format(stream, " A" ); util::stream_format(stream, " A");
break; break;
case O_C8: case O_C8:
util::stream_format(stream, " %s", s_reg8[op & 0x07] ); util::stream_format(stream, " %s", s_reg8[op & 0x07]);
break; break;
case O_C16: case O_C16:
util::stream_format(stream, " %s", s_reg16[op & 0x07] ); util::stream_format(stream, " %s", s_reg16[op & 0x07]);
break; break;
case O_C32: case O_C32:
util::stream_format(stream, " %s", s_reg32[op & 0x07] ); util::stream_format(stream, " %s", s_reg32[op & 0x07]);
break; break;
case O_MC16: case O_MC16:
util::stream_format(stream, " %s", s_mulreg16[op & 0x07] ); util::stream_format(stream, " %s", s_mulreg16[op & 0x07]);
break; break;
case O_CC: case O_CC:
util::stream_format(stream, " %s", s_cond[op & 0x0F] ); util::stream_format(stream, " %s", s_cond[op & 0x0F]);
break; break;
case O_CR8: case O_CR8:
@ -1915,19 +1916,19 @@ static offs_t internal_disasm_tlcs900(cpu_device *device, std::ostream &stream,
switch( imm ) switch( imm )
{ {
case 0x22: case 0x22:
util::stream_format(stream, " DMAM0" ); util::stream_format(stream, " DMAM0");
break; break;
case 0x26: case 0x26:
util::stream_format(stream, " DMAM1" ); util::stream_format(stream, " DMAM1");
break; break;
case 0x2a: case 0x2a:
util::stream_format(stream, " DMAM2" ); util::stream_format(stream, " DMAM2");
break; break;
case 0x2e: case 0x2e:
util::stream_format(stream, " DMAM3" ); util::stream_format(stream, " DMAM3");
break; break;
default: default:
util::stream_format(stream, " unknown" ); util::stream_format(stream, " unknown");
break; break;
} }
break; break;
@ -1937,19 +1938,19 @@ static offs_t internal_disasm_tlcs900(cpu_device *device, std::ostream &stream,
switch( imm ) switch( imm )
{ {
case 0x20: case 0x20:
util::stream_format(stream, " DMAC0" ); util::stream_format(stream, " DMAC0");
break; break;
case 0x24: case 0x24:
util::stream_format(stream, " DMAC1" ); util::stream_format(stream, " DMAC1");
break; break;
case 0x28: case 0x28:
util::stream_format(stream, " DMAC2" ); util::stream_format(stream, " DMAC2");
break; break;
case 0x2c: case 0x2c:
util::stream_format(stream, " DMAC3" ); util::stream_format(stream, " DMAC3");
break; break;
default: default:
util::stream_format(stream, " unknown" ); util::stream_format(stream, " unknown");
break; break;
} }
break; break;
@ -1959,78 +1960,78 @@ static offs_t internal_disasm_tlcs900(cpu_device *device, std::ostream &stream,
switch( imm ) switch( imm )
{ {
case 0x00: case 0x00:
util::stream_format(stream, " DMAS0" ); util::stream_format(stream, " DMAS0");
break; break;
case 0x04: case 0x04:
util::stream_format(stream, " DMAS1" ); util::stream_format(stream, " DMAS1");
break; break;
case 0x08: case 0x08:
util::stream_format(stream, " DMAS2" ); util::stream_format(stream, " DMAS2");
break; break;
case 0x0c: case 0x0c:
util::stream_format(stream, " DMAS3" ); util::stream_format(stream, " DMAS3");
break; break;
case 0x10: case 0x10:
util::stream_format(stream, " DMAD0" ); util::stream_format(stream, " DMAD0");
break; break;
case 0x14: case 0x14:
util::stream_format(stream, " DMAD1" ); util::stream_format(stream, " DMAD1");
break; break;
case 0x18: case 0x18:
util::stream_format(stream, " DMAD2" ); util::stream_format(stream, " DMAD2");
break; break;
case 0x1c: case 0x1c:
util::stream_format(stream, " DMAD3" ); util::stream_format(stream, " DMAD3");
break; break;
default: default:
util::stream_format(stream, " unknown" ); util::stream_format(stream, " unknown");
break; break;
} }
break; break;
case O_D8: case O_D8:
imm = oprom[ pos++ ]; imm = oprom[ pos++ ];
util::stream_format(stream, " 0x%06x", ( pc + pos + (int8_t)imm ) & 0xFFFFFF ); util::stream_format(stream, " 0x%06x", ( pc + pos + (int8_t)imm ) & 0xFFFFFF);
break; break;
case O_D16: case O_D16:
imm = oprom[ pos++ ]; imm = oprom[ pos++ ];
imm = imm | ( oprom[ pos++ ] << 8 ); imm = imm | ( oprom[ pos++ ] << 8);
util::stream_format(stream, " 0x%06x", ( pc + pos + (int16_t)imm ) & 0xFFFFFF ); util::stream_format(stream, " 0x%06x", ( pc + pos + (int16_t)imm ) & 0xFFFFFF);
break; break;
case O_F: case O_F:
util::stream_format(stream, " F" ); util::stream_format(stream, " F");
break; break;
case O_I3: case O_I3:
util::stream_format(stream, " %d", op & 0x07 ); util::stream_format(stream, " %d", op & 0x07);
break; break;
case O_I8: case O_I8:
imm = oprom[ pos++ ]; imm = oprom[ pos++ ];
util::stream_format(stream, " 0x%02x", imm ); util::stream_format(stream, " 0x%02x", imm);
break; break;
case O_I16: case O_I16:
imm = oprom[ pos++ ]; imm = oprom[ pos++ ];
imm = imm | ( oprom[ pos++ ] << 8 ); imm = imm | ( oprom[ pos++ ] << 8);
util::stream_format(stream, " 0x%04x", imm ); util::stream_format(stream, " 0x%04x", imm);
break; break;
case O_I24: case O_I24:
imm = oprom[ pos++ ]; imm = oprom[ pos++ ];
imm = imm | ( oprom[ pos++ ] << 8 ); imm = imm | ( oprom[ pos++ ] << 8);
imm = imm | ( oprom[ pos++ ] << 16 ); imm = imm | ( oprom[ pos++ ] << 16);
util::stream_format(stream, " 0x%06x", imm ); util::stream_format(stream, " 0x%06x", imm);
break; break;
case O_I32: case O_I32:
imm = oprom[ pos++ ]; imm = oprom[ pos++ ];
imm = imm | ( oprom[ pos++ ] << 8 ); imm = imm | ( oprom[ pos++ ] << 8);
imm = imm | ( oprom[ pos++ ] << 16 ); imm = imm | ( oprom[ pos++ ] << 16);
imm = imm | ( oprom[ pos++ ] << 24 ); imm = imm | ( oprom[ pos++ ] << 24);
util::stream_format(stream, "0x%08x", imm ); util::stream_format(stream, "0x%08x", imm);
break; break;
case O_M: case O_M:
@ -2039,31 +2040,31 @@ static offs_t internal_disasm_tlcs900(cpu_device *device, std::ostream &stream,
case M_CALL: case M_CALL:
case M_JP: case M_JP:
case M_LDA: case M_LDA:
util::stream_format(stream, " %s", buf ); util::stream_format(stream, " %s", buf);
break; break;
default: default:
util::stream_format(stream, " (%s)", buf ); util::stream_format(stream, " (%s)", buf);
break; break;
} }
break; break;
case O_M8: case O_M8:
imm = oprom[ pos++ ]; imm = oprom[ pos++ ];
util::stream_format(stream, " (0x%02x)", imm ); util::stream_format(stream, " (0x%02x)", imm);
break; break;
case O_M16: case O_M16:
imm = oprom[ pos++ ]; imm = oprom[ pos++ ];
imm = imm | ( oprom[ pos++ ] << 8 ); imm = imm | ( oprom[ pos++ ] << 8);
util::stream_format(stream, " (0x%04x)", imm ); util::stream_format(stream, " (0x%04x)", imm);
break; break;
case O_R: case O_R:
util::stream_format(stream, " %s", buf ); util::stream_format(stream, " %s", buf);
break; break;
case O_SR: case O_SR:
util::stream_format(stream, " SR" ); util::stream_format(stream, " SR");
break; break;
} }
@ -2073,27 +2074,27 @@ static offs_t internal_disasm_tlcs900(cpu_device *device, std::ostream &stream,
break; break;
case O_A: case O_A:
util::stream_format(stream, ",A" ); util::stream_format(stream, ",A");
break; break;
case O_C8: case O_C8:
util::stream_format(stream, ",%s", s_reg8[op & 0x07] ); util::stream_format(stream, ",%s", s_reg8[op & 0x07]);
break; break;
case O_C16: case O_C16:
util::stream_format(stream, ",%s", s_reg16[op & 0x07] ); util::stream_format(stream, ",%s", s_reg16[op & 0x07]);
break; break;
case O_C32: case O_C32:
util::stream_format(stream, ",%s", s_reg32[op & 0x07] ); util::stream_format(stream, ",%s", s_reg32[op & 0x07]);
break; break;
case O_MC16: case O_MC16:
util::stream_format(stream, ",%s", s_mulreg16[op & 0x07] ); util::stream_format(stream, ",%s", s_mulreg16[op & 0x07]);
break; break;
case O_CC: case O_CC:
util::stream_format(stream, ",%s", s_cond[op & 0x0F] ); util::stream_format(stream, ",%s", s_cond[op & 0x0F]);
break; break;
case O_CR8: case O_CR8:
@ -2101,19 +2102,19 @@ static offs_t internal_disasm_tlcs900(cpu_device *device, std::ostream &stream,
switch( imm ) switch( imm )
{ {
case 0x22: case 0x22:
util::stream_format(stream, ",DMAM0" ); util::stream_format(stream, ",DMAM0");
break; break;
case 0x26: case 0x26:
util::stream_format(stream, ",DMAM1" ); util::stream_format(stream, ",DMAM1");
break; break;
case 0x2a: case 0x2a:
util::stream_format(stream, ",DMAM2" ); util::stream_format(stream, ",DMAM2");
break; break;
case 0x2e: case 0x2e:
util::stream_format(stream, ",DMAM3" ); util::stream_format(stream, ",DMAM3");
break; break;
default: default:
util::stream_format(stream, ",unknown" ); util::stream_format(stream, ",unknown");
break; break;
} }
break; break;
@ -2123,19 +2124,19 @@ static offs_t internal_disasm_tlcs900(cpu_device *device, std::ostream &stream,
switch( imm ) switch( imm )
{ {
case 0x20: case 0x20:
util::stream_format(stream, ",DMAC0" ); util::stream_format(stream, ",DMAC0");
break; break;
case 0x24: case 0x24:
util::stream_format(stream, ",DMAC1" ); util::stream_format(stream, ",DMAC1");
break; break;
case 0x28: case 0x28:
util::stream_format(stream, ",DMAC2" ); util::stream_format(stream, ",DMAC2");
break; break;
case 0x2c: case 0x2c:
util::stream_format(stream, ",DMAC3" ); util::stream_format(stream, ",DMAC3");
break; break;
default: default:
util::stream_format(stream, ",unknown" ); util::stream_format(stream, ",unknown");
break; break;
} }
break; break;
@ -2145,78 +2146,78 @@ static offs_t internal_disasm_tlcs900(cpu_device *device, std::ostream &stream,
switch( imm ) switch( imm )
{ {
case 0x00: case 0x00:
util::stream_format(stream, ",DMAS0" ); util::stream_format(stream, ",DMAS0");
break; break;
case 0x04: case 0x04:
util::stream_format(stream, ",DMAS1" ); util::stream_format(stream, ",DMAS1");
break; break;
case 0x08: case 0x08:
util::stream_format(stream, ",DMAS2" ); util::stream_format(stream, ",DMAS2");
break; break;
case 0x0c: case 0x0c:
util::stream_format(stream, ",DMAS3" ); util::stream_format(stream, ",DMAS3");
break; break;
case 0x10: case 0x10:
util::stream_format(stream, ",DMAD0" ); util::stream_format(stream, ",DMAD0");
break; break;
case 0x14: case 0x14:
util::stream_format(stream, ",DMAD1" ); util::stream_format(stream, ",DMAD1");
break; break;
case 0x18: case 0x18:
util::stream_format(stream, ",DMAD2" ); util::stream_format(stream, ",DMAD2");
break; break;
case 0x1c: case 0x1c:
util::stream_format(stream, ",DMAD3" ); util::stream_format(stream, ",DMAD3");
break; break;
default: default:
util::stream_format(stream, ",unknown" ); util::stream_format(stream, ",unknown");
break; break;
} }
break; break;
case O_D8: case O_D8:
imm = oprom[ pos++ ]; imm = oprom[ pos++ ];
util::stream_format(stream, ",0x%06x", ( pc + pos + (int8_t)imm ) & 0xFFFFFF ); util::stream_format(stream, ",0x%06x", ( pc + pos + (int8_t)imm ) & 0xFFFFFF);
break; break;
case O_D16: case O_D16:
imm = oprom[ pos++ ]; imm = oprom[ pos++ ];
imm = imm | ( oprom[ pos++ ] << 8 ); imm = imm | ( oprom[ pos++ ] << 8);
util::stream_format(stream, ",0x%06x", ( pc + pos + (int16_t)imm ) & 0xFFFFFF ); util::stream_format(stream, ",0x%06x", ( pc + pos + (int16_t)imm ) & 0xFFFFFF);
break; break;
case O_F: case O_F:
util::stream_format(stream, ",F'" ); util::stream_format(stream, ",F'");
break; break;
case O_I3: case O_I3:
util::stream_format(stream, ",%d", op & 0x07 ); util::stream_format(stream, ",%d", op & 0x07);
break; break;
case O_I8: case O_I8:
imm = oprom[ pos++ ]; imm = oprom[ pos++ ];
util::stream_format(stream, ",0x%02x", imm ); util::stream_format(stream, ",0x%02x", imm);
break; break;
case O_I16: case O_I16:
imm = oprom[ pos++ ]; imm = oprom[ pos++ ];
imm = imm | ( oprom[ pos++ ] << 8 ); imm = imm | ( oprom[ pos++ ] << 8);
util::stream_format(stream, ",0x%04x", imm ); util::stream_format(stream, ",0x%04x", imm);
break; break;
case O_I24: case O_I24:
imm = oprom[ pos++ ]; imm = oprom[ pos++ ];
imm = imm | ( oprom[ pos++ ] << 8 ); imm = imm | ( oprom[ pos++ ] << 8);
imm = imm | ( oprom[ pos++ ] << 16 ); imm = imm | ( oprom[ pos++ ] << 16);
util::stream_format(stream, ",0x%06x", imm ); util::stream_format(stream, ",0x%06x", imm);
break; break;
case O_I32: case O_I32:
imm = oprom[ pos++ ]; imm = oprom[ pos++ ];
imm = imm | ( oprom[ pos++ ] << 8 ); imm = imm | ( oprom[ pos++ ] << 8);
imm = imm | ( oprom[ pos++ ] << 16 ); imm = imm | ( oprom[ pos++ ] << 16);
imm = imm | ( oprom[ pos++ ] << 24 ); imm = imm | ( oprom[ pos++ ] << 24);
util::stream_format(stream, ",0x%08x", imm ); util::stream_format(stream, ",0x%08x", imm);
break; break;
case O_M: case O_M:
@ -2225,31 +2226,31 @@ static offs_t internal_disasm_tlcs900(cpu_device *device, std::ostream &stream,
case M_CALL: case M_CALL:
case M_JP: case M_JP:
case M_LDA: case M_LDA:
util::stream_format(stream, ",%s", buf ); util::stream_format(stream, ",%s", buf);
break; break;
default: default:
util::stream_format(stream, ",(%s)", buf ); util::stream_format(stream, ",(%s)", buf);
break; break;
} }
break; break;
case O_M8: case O_M8:
imm = oprom[ pos++ ]; imm = oprom[ pos++ ];
util::stream_format(stream, ",(0x%02x)", imm ); util::stream_format(stream, ",(0x%02x)", imm);
break; break;
case O_M16: case O_M16:
imm = oprom[ pos++ ]; imm = oprom[ pos++ ];
imm = imm | ( oprom[ pos++ ] << 8 ); imm = imm | ( oprom[ pos++ ] << 8);
util::stream_format(stream, ",(0x%04x)", imm ); util::stream_format(stream, ",(0x%04x)", imm);
break; break;
case O_R: case O_R:
util::stream_format(stream, ",%s", buf ); util::stream_format(stream, ",%s", buf);
break; break;
case O_SR: case O_SR:
util::stream_format(stream, ",SR" ); util::stream_format(stream, ",SR");
break; break;
} }