mirror of
https://github.com/holub/mame
synced 2025-04-23 00:39:36 +03:00
Changed the ccpu disassembler to use 'std::ostream &' internally
This commit is contained in:
parent
dbd07cef38
commit
ca8e53ace9
@ -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;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user