Changed the ccpu disassembler to use 'std::ostream &' internally

This commit is contained in:
Nathan Woods 2016-11-11 15:18:05 -05:00
parent dbd07cef38
commit ca8e53ace9

View File

@ -14,7 +14,7 @@
#include "ccpu.h"
CPU_DISASSEMBLE( ccpu )
static offs_t internal_disasm_ccpu(cpu_device *device, std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, int options)
{
unsigned startpc = pc;
uint8_t opcode = oprom[pc++ - startpc];
@ -27,7 +27,7 @@ CPU_DISASSEMBLE( ccpu )
case 0x04: case 0x05: case 0x06: case 0x07:
case 0x08: case 0x09: case 0x0a: case 0x0b:
case 0x0c: case 0x0d: case 0x0e: case 0x0f:
sprintf(buffer, "LDAI $%X", opcode & 0x0f);
util::stream_format(stream, "LDAI $%X", opcode & 0x0f);
break;
/* INP */
@ -35,12 +35,12 @@ CPU_DISASSEMBLE( ccpu )
case 0x14: case 0x15: case 0x16: case 0x17:
case 0x18: case 0x19: case 0x1a: case 0x1b:
case 0x1c: case 0x1d: case 0x1e: case 0x1f:
sprintf(buffer, "INP $%X", opcode & 0x0f);
util::stream_format(stream, "INP $%X", opcode & 0x0f);
break;
/* A8I */
case 0x20:
sprintf(buffer, "A8I $%X", oprom[pc++ - startpc]);
util::stream_format(stream, "A8I $%X", oprom[pc++ - startpc]);
break;
/* A4I */
@ -48,12 +48,12 @@ CPU_DISASSEMBLE( ccpu )
case 0x24: case 0x25: case 0x26: case 0x27:
case 0x28: case 0x29: case 0x2a: case 0x2b:
case 0x2c: case 0x2d: case 0x2e: case 0x2f:
sprintf(buffer, "A4I $%X", opcode & 0x0f);
util::stream_format(stream, "A4I $%X", opcode & 0x0f);
break;
/* S8I */
case 0x30:
sprintf(buffer, "S8I $%X", oprom[pc++ - startpc]);
util::stream_format(stream, "S8I $%X", oprom[pc++ - startpc]);
break;
/* S4I */
@ -61,7 +61,7 @@ CPU_DISASSEMBLE( ccpu )
case 0x34: case 0x35: case 0x36: case 0x37:
case 0x38: case 0x39: case 0x3a: case 0x3b:
case 0x3c: case 0x3d: case 0x3e: case 0x3f:
sprintf(buffer, "S4I $%X", opcode & 0x0f);
util::stream_format(stream, "S4I $%X", opcode & 0x0f);
break;
/* LPAI */
@ -70,87 +70,87 @@ CPU_DISASSEMBLE( ccpu )
case 0x48: case 0x49: case 0x4a: case 0x4b:
case 0x4c: case 0x4d: case 0x4e: case 0x4f:
tempval = oprom[pc++ - startpc];
sprintf(buffer, "LPAI $%03X", (opcode & 0x0f) + (tempval & 0xf0) + ((tempval & 0x0f) << 8));
util::stream_format(stream, "LPAI $%03X", (opcode & 0x0f) + (tempval & 0xf0) + ((tempval & 0x0f) << 8));
break;
/* T4K */
case 0x50:
sprintf(buffer, "T4K");
util::stream_format(stream, "T4K");
break;
/* JMIB/JEHB */
case 0x51:
sprintf(buffer, "JMIB/JEHB");
util::stream_format(stream, "JMIB/JEHB");
break;
/* JVNB */
case 0x52:
sprintf(buffer, "JVNB");
util::stream_format(stream, "JVNB");
break;
/* JLTB */
case 0x53:
sprintf(buffer, "JLTB");
util::stream_format(stream, "JLTB");
break;
/* JEQB */
case 0x54:
sprintf(buffer, "JEQB");
util::stream_format(stream, "JEQB");
break;
/* JCZB */
case 0x55:
sprintf(buffer, "JCZB");
util::stream_format(stream, "JCZB");
break;
/* JOSB */
case 0x56:
sprintf(buffer, "JOSB");
util::stream_format(stream, "JOSB");
break;
/* SSA */
case 0x57:
sprintf(buffer, "SSA");
util::stream_format(stream, "SSA");
break;
/* JMP */
case 0x58:
sprintf(buffer, "JMP");
util::stream_format(stream, "JMP");
break;
/* JMI/JEH */
case 0x59:
sprintf(buffer, "JMI/JEH");
util::stream_format(stream, "JMI/JEH");
break;
/* JVN */
case 0x5a:
sprintf(buffer, "JVN");
util::stream_format(stream, "JVN");
break;
/* JLT */
case 0x5b:
sprintf(buffer, "JLT");
util::stream_format(stream, "JLT");
break;
/* JEQ */
case 0x5c:
sprintf(buffer, "JEQ");
util::stream_format(stream, "JEQ");
break;
/* JCZ */
case 0x5d:
sprintf(buffer, "JCZ");
util::stream_format(stream, "JCZ");
break;
/* JOS */
case 0x5e:
sprintf(buffer, "JOS");
util::stream_format(stream, "JOS");
break;
/* NOP */
case 0x5f:
sprintf(buffer, "NOP");
util::stream_format(stream, "NOP");
break;
/* ADD */
@ -158,7 +158,7 @@ CPU_DISASSEMBLE( ccpu )
case 0x64: case 0x65: case 0x66: case 0x67:
case 0x68: case 0x69: case 0x6a: case 0x6b:
case 0x6c: case 0x6d: case 0x6e: case 0x6f:
sprintf(buffer, "ADD $%X", opcode & 0x0f);
util::stream_format(stream, "ADD $%X", opcode & 0x0f);
break;
/* SUB n */
@ -166,7 +166,7 @@ CPU_DISASSEMBLE( ccpu )
case 0x74: case 0x75: case 0x76: case 0x77:
case 0x78: case 0x79: case 0x7a: case 0x7b:
case 0x7c: case 0x7d: case 0x7e: case 0x7f:
sprintf(buffer, "SUB $%X", opcode & 0x0f);
util::stream_format(stream, "SUB $%X", opcode & 0x0f);
break;
/* SETP n */
@ -174,7 +174,7 @@ CPU_DISASSEMBLE( ccpu )
case 0x84: case 0x85: case 0x86: case 0x87:
case 0x88: case 0x89: case 0x8a: case 0x8b:
case 0x8c: case 0x8d: case 0x8e: case 0x8f:
sprintf(buffer, "SETP $%X", opcode & 0x0f);
util::stream_format(stream, "SETP $%X", opcode & 0x0f);
break;
/* OUT */
@ -182,7 +182,7 @@ CPU_DISASSEMBLE( ccpu )
case 0x94: case 0x95: case 0x96: case 0x97:
case 0x98: case 0x99: case 0x9a: case 0x9b:
case 0x9c: case 0x9d: case 0x9e: case 0x9f:
sprintf(buffer, "OUT $%X", opcode & 0x0f);
util::stream_format(stream, "OUT $%X", opcode & 0x0f);
break;
/* LDA */
@ -190,7 +190,7 @@ CPU_DISASSEMBLE( ccpu )
case 0xa4: case 0xa5: case 0xa6: case 0xa7:
case 0xa8: case 0xa9: case 0xaa: case 0xab:
case 0xac: case 0xad: case 0xae: case 0xaf:
sprintf(buffer, "LDA $%X", opcode & 0x0f);
util::stream_format(stream, "LDA $%X", opcode & 0x0f);
break;
/* CMP */
@ -198,7 +198,7 @@ CPU_DISASSEMBLE( ccpu )
case 0xb4: case 0xb5: case 0xb6: case 0xb7:
case 0xb8: case 0xb9: case 0xba: case 0xbb:
case 0xbc: case 0xbd: case 0xbe: case 0xbf:
sprintf(buffer, "TST $%X", opcode & 0x0f);
util::stream_format(stream, "TST $%X", opcode & 0x0f);
break;
/* WS */
@ -206,7 +206,7 @@ CPU_DISASSEMBLE( ccpu )
case 0xc4: case 0xc5: case 0xc6: case 0xc7:
case 0xc8: case 0xc9: case 0xca: case 0xcb:
case 0xcc: case 0xcd: case 0xce: case 0xcf:
sprintf(buffer, "WS $%X", opcode & 0x0f);
util::stream_format(stream, "WS $%X", opcode & 0x0f);
break;
/* STA n */
@ -214,117 +214,127 @@ CPU_DISASSEMBLE( ccpu )
case 0xd4: case 0xd5: case 0xd6: case 0xd7:
case 0xd8: case 0xd9: case 0xda: case 0xdb:
case 0xdc: case 0xdd: case 0xde: case 0xdf:
sprintf(buffer, "STA $%X", opcode & 0x0f);
util::stream_format(stream, "STA $%X", opcode & 0x0f);
break;
/* DV */
case 0xe0:
sprintf(buffer, "DV");
util::stream_format(stream, "DV");
break;
/* LPAP */
case 0xe1:
sprintf(buffer, "LPAP");
util::stream_format(stream, "LPAP");
break;
/* WSP */
case 0xf1:
sprintf(buffer, "WSP");
util::stream_format(stream, "WSP");
break;
/* LKP */
case 0xe2:
case 0xf2:
sprintf(buffer, "LKP");
util::stream_format(stream, "LKP");
break;
/* MUL */
case 0xe3:
case 0xf3:
sprintf(buffer, "MUL");
util::stream_format(stream, "MUL");
break;
/* NV */
case 0xe4:
case 0xf4:
sprintf(buffer, "NV");
util::stream_format(stream, "NV");
break;
/* FRM */
case 0xe5:
case 0xf5:
sprintf(buffer, "FRM");
util::stream_format(stream, "FRM");
break;
/* STAP */
case 0xe6:
case 0xf6:
sprintf(buffer, "STAP");
util::stream_format(stream, "STAP");
break;
/* CST */
case 0xf7:
sprintf(buffer, "CST");
util::stream_format(stream, "CST");
break;
/* ADDP */
case 0xe7:
sprintf(buffer, "ADDP");
util::stream_format(stream, "ADDP");
break;
/* SUBP */
case 0xe8:
case 0xf8:
sprintf(buffer, "SUBP");
util::stream_format(stream, "SUBP");
break;
/* ANDP */
case 0xe9:
case 0xf9:
sprintf(buffer, "ANDP");
util::stream_format(stream, "ANDP");
break;
/* LDAP */
case 0xea:
case 0xfa:
sprintf(buffer, "LDAP");
util::stream_format(stream, "LDAP");
break;
/* SHR */
case 0xeb:
case 0xfb:
sprintf(buffer, "SHR");
util::stream_format(stream, "SHR");
break;
/* SHL */
case 0xec:
case 0xfc:
sprintf(buffer, "SHL");
util::stream_format(stream, "SHL");
break;
/* ASR */
case 0xed:
case 0xfd:
sprintf(buffer, "ASR");
util::stream_format(stream, "ASR");
break;
/* SHRB */
case 0xee:
case 0xfe:
sprintf(buffer, "SHRB");
util::stream_format(stream, "SHRB");
break;
/* SHLB */
case 0xef:
case 0xff:
sprintf(buffer, "SHLB");
util::stream_format(stream, "SHLB");
break;
/* IV */
case 0xf0:
sprintf(buffer, "IV");
util::stream_format(stream, "IV");
break;
}
return (pc - startpc) | DASMFLAG_SUPPORTED;
}
CPU_DISASSEMBLE(ccpu)
{
std::ostringstream stream;
offs_t result = internal_disasm_ccpu(device, stream, pc, oprom, opram, options);
std::string stream_str = stream.str();
strcpy(buffer, stream_str.c_str());
return result;
}