mirror of
https://github.com/holub/mame
synced 2025-07-04 17:38:08 +03:00
Merge pull request #1692 from npwoods/dasmstream_hcd62121
Changed the hcd62121 disassembler to use 'std::ostream &' internally
This commit is contained in:
commit
755e515b7d
@ -129,7 +129,7 @@ static const hcd62121_dasm hcd62121_ops[256] =
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
CPU_DISASSEMBLE( hcd62121 )
|
static offs_t internal_disasm_hcd62121(cpu_device *device, std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, int options)
|
||||||
{
|
{
|
||||||
uint8_t op;
|
uint8_t op;
|
||||||
uint8_t op1;
|
uint8_t op1;
|
||||||
@ -143,9 +143,9 @@ CPU_DISASSEMBLE( hcd62121 )
|
|||||||
|
|
||||||
/* Special case for nibble shift instruction */
|
/* Special case for nibble shift instruction */
|
||||||
if ( inst->arg2 == _4 )
|
if ( inst->arg2 == _4 )
|
||||||
buffer += sprintf(buffer,"sh%c%c ", ( oprom[pos] & 0x80 ) ? 'l' : 'r', inst->str[3]);
|
util::stream_format(stream, "sh%c%c ", ( oprom[pos] & 0x80 ) ? 'l' : 'r', inst->str[3]);
|
||||||
else
|
else
|
||||||
buffer += sprintf(buffer,"%-8s", inst->str);
|
util::stream_format(stream, "%-8s", inst->str);
|
||||||
|
|
||||||
switch( inst->arg1 )
|
switch( inst->arg1 )
|
||||||
{
|
{
|
||||||
@ -154,18 +154,18 @@ CPU_DISASSEMBLE( hcd62121 )
|
|||||||
op2 = oprom[pos++];
|
op2 = oprom[pos++];
|
||||||
if ( op1 & 0x80 )
|
if ( op1 & 0x80 )
|
||||||
{
|
{
|
||||||
buffer += sprintf( buffer, "r%02x,0x%02x", op1 & 0x7f, op2 );
|
util::stream_format( stream, "r%02x,0x%02x", op1 & 0x7f, op2 );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if ( op2 & 0x80 )
|
if ( op2 & 0x80 )
|
||||||
buffer += sprintf( buffer, "r%02x,r%02x", op1 & 0x7f, op2 & 0x7f );
|
util::stream_format( stream, "r%02x,r%02x", op1 & 0x7f, op2 & 0x7f );
|
||||||
else
|
else
|
||||||
buffer += sprintf( buffer, "r%02x,r%02x", op2 & 0x7f, op1 & 0x7f );
|
util::stream_format( stream, "r%02x,r%02x", op2 & 0x7f, op1 & 0x7f );
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case _REG:
|
case _REG:
|
||||||
buffer += sprintf( buffer, "r%02x", oprom[pos++] & 0x7f );
|
util::stream_format( stream, "r%02x", oprom[pos++] & 0x7f );
|
||||||
break;
|
break;
|
||||||
case _IRGREG:
|
case _IRGREG:
|
||||||
/* bit 6 = direction. 0 - regular, 1 - reverse */
|
/* bit 6 = direction. 0 - regular, 1 - reverse */
|
||||||
@ -173,73 +173,73 @@ CPU_DISASSEMBLE( hcd62121 )
|
|||||||
op2 = oprom[pos++];
|
op2 = oprom[pos++];
|
||||||
if ( op1 & 0x80 )
|
if ( op1 & 0x80 )
|
||||||
{
|
{
|
||||||
buffer += sprintf( buffer, "(r%02x),0x%02x", 0x40 | ( op1 & 0x3f ), op2 );
|
util::stream_format( stream, "(r%02x),0x%02x", 0x40 | ( op1 & 0x3f ), op2 );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if ( op2 & 0x80 )
|
if ( op2 & 0x80 )
|
||||||
buffer += sprintf( buffer, "(r%02x%s),r%02x", 0x40 | ( op1 & 0x3f ), (op1 & 0x40) ? ".r" : "", op2 & 0x7f );
|
util::stream_format( stream, "(r%02x%s),r%02x", 0x40 | ( op1 & 0x3f ), (op1 & 0x40) ? ".r" : "", op2 & 0x7f );
|
||||||
else
|
else
|
||||||
buffer += sprintf( buffer, "r%02x,(r%02x%s)", op2 & 0x7f, 0x40 | ( op1 & 0x3f ), (op1 & 0x40) ? ".r" : "" );
|
util::stream_format( stream, "r%02x,(r%02x%s)", op2 & 0x7f, 0x40 | ( op1 & 0x3f ), (op1 & 0x40) ? ".r" : "" );
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case _IRG:
|
case _IRG:
|
||||||
/* bit 6 = direction. 0 - regular, 1 - reverse */
|
/* bit 6 = direction. 0 - regular, 1 - reverse */
|
||||||
op1 = oprom[pos++];
|
op1 = oprom[pos++];
|
||||||
buffer += sprintf( buffer, "(r%02x%s)", 0x40 | ( op1 & 0x3f ), (op1 & 0x40) ? ".r" : "" );
|
util::stream_format( stream, "(r%02x%s)", 0x40 | ( op1 & 0x3f ), (op1 & 0x40) ? ".r" : "" );
|
||||||
break;
|
break;
|
||||||
case _F:
|
case _F:
|
||||||
buffer += sprintf( buffer, "F" );
|
util::stream_format( stream, "F" );
|
||||||
break;
|
break;
|
||||||
case _CS:
|
case _CS:
|
||||||
buffer += sprintf( buffer, "CS" );
|
util::stream_format( stream, "CS" );
|
||||||
break;
|
break;
|
||||||
case _DS:
|
case _DS:
|
||||||
buffer += sprintf( buffer, "DS" );
|
util::stream_format( stream, "DS" );
|
||||||
break;
|
break;
|
||||||
case _SS:
|
case _SS:
|
||||||
buffer += sprintf( buffer, "SS" );
|
util::stream_format( stream, "SS" );
|
||||||
break;
|
break;
|
||||||
case _PC:
|
case _PC:
|
||||||
buffer += sprintf( buffer, "PC" );
|
util::stream_format( stream, "PC" );
|
||||||
break;
|
break;
|
||||||
case _SP:
|
case _SP:
|
||||||
buffer += sprintf( buffer, "SP" );
|
util::stream_format( stream, "SP" );
|
||||||
break;
|
break;
|
||||||
case _I8:
|
case _I8:
|
||||||
buffer += sprintf( buffer, "0x%02x", oprom[pos++] );
|
util::stream_format( stream, "0x%02x", oprom[pos++] );
|
||||||
break;
|
break;
|
||||||
case _I16:
|
case _I16:
|
||||||
case _A16:
|
case _A16:
|
||||||
buffer += sprintf( buffer, "0x%02x", oprom[pos++] );
|
util::stream_format( stream, "0x%02x", oprom[pos++] );
|
||||||
buffer += sprintf( buffer, "%02x", oprom[pos++] );
|
util::stream_format( stream, "%02x", oprom[pos++] );
|
||||||
break;
|
break;
|
||||||
case _I64:
|
case _I64:
|
||||||
buffer += sprintf( buffer, "0x%02x", oprom[pos++] );
|
util::stream_format( stream, "0x%02x", oprom[pos++] );
|
||||||
buffer += sprintf( buffer, "%02x", oprom[pos++] );
|
util::stream_format( stream, "%02x", oprom[pos++] );
|
||||||
buffer += sprintf( buffer, "%02x", oprom[pos++] );
|
util::stream_format( stream, "%02x", oprom[pos++] );
|
||||||
buffer += sprintf( buffer, "%02x", oprom[pos++] );
|
util::stream_format( stream, "%02x", oprom[pos++] );
|
||||||
buffer += sprintf( buffer, "%02x", oprom[pos++] );
|
util::stream_format( stream, "%02x", oprom[pos++] );
|
||||||
buffer += sprintf( buffer, "%02x", oprom[pos++] );
|
util::stream_format( stream, "%02x", oprom[pos++] );
|
||||||
buffer += sprintf( buffer, "%02x", oprom[pos++] );
|
util::stream_format( stream, "%02x", oprom[pos++] );
|
||||||
buffer += sprintf( buffer, "%02x", oprom[pos++] );
|
util::stream_format( stream, "%02x", oprom[pos++] );
|
||||||
break;
|
break;
|
||||||
case _I80:
|
case _I80:
|
||||||
buffer += sprintf( buffer, "0x%02x", oprom[pos++] );
|
util::stream_format( stream, "0x%02x", oprom[pos++] );
|
||||||
buffer += sprintf( buffer, "%02x", oprom[pos++] );
|
util::stream_format( stream, "%02x", oprom[pos++] );
|
||||||
buffer += sprintf( buffer, "%02x", oprom[pos++] );
|
util::stream_format( stream, "%02x", oprom[pos++] );
|
||||||
buffer += sprintf( buffer, "%02x", oprom[pos++] );
|
util::stream_format( stream, "%02x", oprom[pos++] );
|
||||||
buffer += sprintf( buffer, "%02x", oprom[pos++] );
|
util::stream_format( stream, "%02x", oprom[pos++] );
|
||||||
buffer += sprintf( buffer, "%02x", oprom[pos++] );
|
util::stream_format( stream, "%02x", oprom[pos++] );
|
||||||
buffer += sprintf( buffer, "%02x", oprom[pos++] );
|
util::stream_format( stream, "%02x", oprom[pos++] );
|
||||||
buffer += sprintf( buffer, "%02x", oprom[pos++] );
|
util::stream_format( stream, "%02x", oprom[pos++] );
|
||||||
buffer += sprintf( buffer, "%02x", oprom[pos++] );
|
util::stream_format( stream, "%02x", oprom[pos++] );
|
||||||
buffer += sprintf( buffer, "%02x", oprom[pos++] );
|
util::stream_format( stream, "%02x", oprom[pos++] );
|
||||||
break;
|
break;
|
||||||
case _A24:
|
case _A24:
|
||||||
buffer += sprintf( buffer, "0x%02x:", oprom[pos++] );
|
util::stream_format( stream, "0x%02x:", oprom[pos++] );
|
||||||
buffer += sprintf( buffer, "0x%02x", oprom[pos++] );
|
util::stream_format( stream, "0x%02x", oprom[pos++] );
|
||||||
buffer += sprintf( buffer, "%02x", oprom[pos++] );
|
util::stream_format( stream, "%02x", oprom[pos++] );
|
||||||
break;
|
break;
|
||||||
case _ILR:
|
case _ILR:
|
||||||
op1 = oprom[pos++];
|
op1 = oprom[pos++];
|
||||||
@ -247,28 +247,28 @@ CPU_DISASSEMBLE( hcd62121 )
|
|||||||
if ( ( op1 & 0x80 ) || ( op2 & 0x80 ) )
|
if ( ( op1 & 0x80 ) || ( op2 & 0x80 ) )
|
||||||
{
|
{
|
||||||
/* (lar),reg */
|
/* (lar),reg */
|
||||||
buffer += sprintf( buffer, "(%slar%s),r%02x", (op1 & 0x20) ? ( (op1 & 0x40) ? "--" : "++" ) : "", (op1 & 0x20) ? "" : ( (op1 & 0x40) ? "--" : "++" ), op2 & 0x7f );
|
util::stream_format( stream, "(%slar%s),r%02x", (op1 & 0x20) ? ( (op1 & 0x40) ? "--" : "++" ) : "", (op1 & 0x20) ? "" : ( (op1 & 0x40) ? "--" : "++" ), op2 & 0x7f );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* reg,(lar) */
|
/* reg,(lar) */
|
||||||
buffer += sprintf( buffer, "r%02x,(%slar%s)", op2 & 0x7f, (op1 & 0x20) ? ( (op1 & 0x40) ? "--" : "++" ) : "", (op1 & 0x20) ? "" : ( (op1 & 0x40) ? "--" : "++" ) );
|
util::stream_format( stream, "r%02x,(%slar%s)", op2 & 0x7f, (op1 & 0x20) ? ( (op1 & 0x40) ? "--" : "++" ) : "", (op1 & 0x20) ? "" : ( (op1 & 0x40) ? "--" : "++" ) );
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case _LAR:
|
case _LAR:
|
||||||
buffer += sprintf( buffer, "lar" );
|
util::stream_format( stream, "lar" );
|
||||||
break;
|
break;
|
||||||
case _DSZ:
|
case _DSZ:
|
||||||
buffer += sprintf( buffer, "dsize" );
|
util::stream_format( stream, "dsize" );
|
||||||
break;
|
break;
|
||||||
case _TIM:
|
case _TIM:
|
||||||
buffer += sprintf( buffer, "TIM?" );
|
util::stream_format( stream, "TIM?" );
|
||||||
break;
|
break;
|
||||||
case _KLO:
|
case _KLO:
|
||||||
buffer += sprintf( buffer, "KOL" );
|
util::stream_format( stream, "KOL" );
|
||||||
break;
|
break;
|
||||||
case _KHI:
|
case _KHI:
|
||||||
buffer += sprintf( buffer, "KOH" );
|
util::stream_format( stream, "KOH" );
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
@ -277,78 +277,78 @@ CPU_DISASSEMBLE( hcd62121 )
|
|||||||
switch( inst->arg2 )
|
switch( inst->arg2 )
|
||||||
{
|
{
|
||||||
case _REG:
|
case _REG:
|
||||||
buffer += sprintf( buffer, ",r%02x", oprom[pos++] & 0x7f );
|
util::stream_format( stream, ",r%02x", oprom[pos++] & 0x7f );
|
||||||
break;
|
break;
|
||||||
case _F:
|
case _F:
|
||||||
buffer += sprintf( buffer, ",F" );
|
util::stream_format( stream, ",F" );
|
||||||
break;
|
break;
|
||||||
case _CS:
|
case _CS:
|
||||||
buffer += sprintf( buffer, ",CS" );
|
util::stream_format( stream, ",CS" );
|
||||||
break;
|
break;
|
||||||
case _DS:
|
case _DS:
|
||||||
buffer += sprintf( buffer, ",DS" );
|
util::stream_format( stream, ",DS" );
|
||||||
break;
|
break;
|
||||||
case _SS:
|
case _SS:
|
||||||
buffer += sprintf( buffer, ",SS" );
|
util::stream_format( stream, ",SS" );
|
||||||
break;
|
break;
|
||||||
case _PC:
|
case _PC:
|
||||||
buffer += sprintf( buffer, ",PC" );
|
util::stream_format( stream, ",PC" );
|
||||||
break;
|
break;
|
||||||
case _SP:
|
case _SP:
|
||||||
buffer += sprintf( buffer, ",SP" );
|
util::stream_format( stream, ",SP" );
|
||||||
break;
|
break;
|
||||||
case _I8:
|
case _I8:
|
||||||
buffer += sprintf( buffer, ",0x%02x", oprom[pos++] );
|
util::stream_format( stream, ",0x%02x", oprom[pos++] );
|
||||||
break;
|
break;
|
||||||
case _I16:
|
case _I16:
|
||||||
case _A16:
|
case _A16:
|
||||||
buffer += sprintf( buffer, ",0x%02x", oprom[pos++] );
|
util::stream_format( stream, ",0x%02x", oprom[pos++] );
|
||||||
buffer += sprintf( buffer, "%02x", oprom[pos++] );
|
util::stream_format( stream, "%02x", oprom[pos++] );
|
||||||
break;
|
break;
|
||||||
case _I64:
|
case _I64:
|
||||||
buffer += sprintf( buffer, ",0x%02x", oprom[pos++] );
|
util::stream_format( stream, ",0x%02x", oprom[pos++] );
|
||||||
buffer += sprintf( buffer, "%02x", oprom[pos++] );
|
util::stream_format( stream, "%02x", oprom[pos++] );
|
||||||
buffer += sprintf( buffer, "%02x", oprom[pos++] );
|
util::stream_format( stream, "%02x", oprom[pos++] );
|
||||||
buffer += sprintf( buffer, "%02x", oprom[pos++] );
|
util::stream_format( stream, "%02x", oprom[pos++] );
|
||||||
buffer += sprintf( buffer, "%02x", oprom[pos++] );
|
util::stream_format( stream, "%02x", oprom[pos++] );
|
||||||
buffer += sprintf( buffer, "%02x", oprom[pos++] );
|
util::stream_format( stream, "%02x", oprom[pos++] );
|
||||||
buffer += sprintf( buffer, "%02x", oprom[pos++] );
|
util::stream_format( stream, "%02x", oprom[pos++] );
|
||||||
buffer += sprintf( buffer, "%02x", oprom[pos++] );
|
util::stream_format( stream, "%02x", oprom[pos++] );
|
||||||
break;
|
break;
|
||||||
case _I80:
|
case _I80:
|
||||||
buffer += sprintf( buffer, ",0x%02x", oprom[pos++] );
|
util::stream_format( stream, ",0x%02x", oprom[pos++] );
|
||||||
buffer += sprintf( buffer, "%02x", oprom[pos++] );
|
util::stream_format( stream, "%02x", oprom[pos++] );
|
||||||
buffer += sprintf( buffer, "%02x", oprom[pos++] );
|
util::stream_format( stream, "%02x", oprom[pos++] );
|
||||||
buffer += sprintf( buffer, "%02x", oprom[pos++] );
|
util::stream_format( stream, "%02x", oprom[pos++] );
|
||||||
buffer += sprintf( buffer, "%02x", oprom[pos++] );
|
util::stream_format( stream, "%02x", oprom[pos++] );
|
||||||
buffer += sprintf( buffer, "%02x", oprom[pos++] );
|
util::stream_format( stream, "%02x", oprom[pos++] );
|
||||||
buffer += sprintf( buffer, "%02x", oprom[pos++] );
|
util::stream_format( stream, "%02x", oprom[pos++] );
|
||||||
buffer += sprintf( buffer, "%02x", oprom[pos++] );
|
util::stream_format( stream, "%02x", oprom[pos++] );
|
||||||
buffer += sprintf( buffer, "%02x", oprom[pos++] );
|
util::stream_format( stream, "%02x", oprom[pos++] );
|
||||||
buffer += sprintf( buffer, "%02x", oprom[pos++] );
|
util::stream_format( stream, "%02x", oprom[pos++] );
|
||||||
break;
|
break;
|
||||||
case _A24:
|
case _A24:
|
||||||
buffer += sprintf( buffer, ",0x%02x:", oprom[pos++] );
|
util::stream_format( stream, ",0x%02x:", oprom[pos++] );
|
||||||
buffer += sprintf( buffer, "0x%02x", oprom[pos++] );
|
util::stream_format( stream, "0x%02x", oprom[pos++] );
|
||||||
buffer += sprintf( buffer, "%02x", oprom[pos++] );
|
util::stream_format( stream, "%02x", oprom[pos++] );
|
||||||
break;
|
break;
|
||||||
case _ILR:
|
case _ILR:
|
||||||
/* Implemented by _ILR section for arg1 */
|
/* Implemented by _ILR section for arg1 */
|
||||||
break;
|
break;
|
||||||
case _LAR:
|
case _LAR:
|
||||||
buffer += sprintf( buffer, ",lar" );
|
util::stream_format( stream, ",lar" );
|
||||||
break;
|
break;
|
||||||
case _DSZ:
|
case _DSZ:
|
||||||
buffer += sprintf( buffer, ",dsize" );
|
util::stream_format( stream, ",dsize" );
|
||||||
break;
|
break;
|
||||||
case _TIM:
|
case _TIM:
|
||||||
buffer += sprintf( buffer, ",TIM?" );
|
util::stream_format( stream, ",TIM?" );
|
||||||
break;
|
break;
|
||||||
case _KI:
|
case _KI:
|
||||||
buffer += sprintf( buffer, ",KI" );
|
util::stream_format( stream, ",KI" );
|
||||||
break;
|
break;
|
||||||
case _4:
|
case _4:
|
||||||
buffer += sprintf( buffer, ",4" );
|
util::stream_format( stream, ",4" );
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
@ -356,3 +356,13 @@ CPU_DISASSEMBLE( hcd62121 )
|
|||||||
|
|
||||||
return pos | DASMFLAG_SUPPORTED;
|
return pos | DASMFLAG_SUPPORTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
CPU_DISASSEMBLE(hcd62121)
|
||||||
|
{
|
||||||
|
std::ostringstream stream;
|
||||||
|
offs_t result = internal_disasm_hcd62121(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