Some changes to TGP with no noticeable effect.
This commit is contained in:
parent
dca98b36ba
commit
e44cfd2983
@ -192,7 +192,7 @@ void mb86233_cpu_device::device_reset()
|
||||
|
||||
void mb86233_cpu_device::FLAGSF( float v )
|
||||
{
|
||||
GETSR() = 0;
|
||||
GETSR() &= ~(ZERO_FLAG|SIGN_FLAG);
|
||||
|
||||
if ( v == 0 )
|
||||
GETSR() |= ZERO_FLAG;
|
||||
@ -203,7 +203,7 @@ void mb86233_cpu_device::FLAGSF( float v )
|
||||
|
||||
void mb86233_cpu_device::FLAGSI( UINT32 v )
|
||||
{
|
||||
GETSR() = 0;
|
||||
GETSR() &= ~(ZERO_FLAG|SIGN_FLAG);
|
||||
|
||||
if ( v == 0 )
|
||||
GETSR() |= ZERO_FLAG;
|
||||
@ -364,7 +364,7 @@ void mb86233_cpu_device::ALU( UINT32 alu)
|
||||
default: popmessage("TGP uses D = int(D) with FPU control = %02x, contact MAMEdev",m_fpucontrol>>1); break;
|
||||
}
|
||||
|
||||
FLAGSI( GETD().u);
|
||||
FLAGSI( GETD().i);
|
||||
break;
|
||||
|
||||
case 0x10: /* D = D / A */
|
||||
@ -419,7 +419,7 @@ void mb86233_cpu_device::ALU( UINT32 alu)
|
||||
break;
|
||||
|
||||
default:
|
||||
logerror( "TGP: Unknown ALU op %x at PC:%04x\n", alu, GETPC() );
|
||||
fatalerror( "TGP: Unknown ALU op %x at PC:%04x\n", alu, GETPC() );
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -712,7 +712,7 @@ UINT32 mb86233_cpu_device::GETREGS( UINT32 reg, int source )
|
||||
return GETREPCNT();
|
||||
|
||||
default:
|
||||
logerror( "TGP: Unknown GETREG (%d) at PC=%04x\n", reg, GETPC() );
|
||||
fatalerror( "TGP: Unknown GETREG (%d) at PC=%04x\n", reg, GETPC() );
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -789,11 +789,11 @@ void mb86233_cpu_device::SETREGS( UINT32 reg, UINT32 val )
|
||||
|
||||
if( mode == 0 || mode == 1 || mode == 3 )
|
||||
{
|
||||
if(reg==12 || reg==13) // counter regs seem to be 8 bit only
|
||||
val&=0xff;
|
||||
|
||||
if ( reg < 0x10 )
|
||||
{
|
||||
if ( reg == 12 || reg == 13 )
|
||||
val &= 0xff;
|
||||
|
||||
GETGPR(reg) = val;
|
||||
return;
|
||||
}
|
||||
@ -850,7 +850,7 @@ void mb86233_cpu_device::SETREGS( UINT32 reg, UINT32 val )
|
||||
break;
|
||||
|
||||
case 0x1D: /* P.e */
|
||||
GETP().u &= ~((0x0000007f) << 23);
|
||||
GETP().u &= ~((0x000000ff) << 23);
|
||||
GETP().u |= (( val & 0xff ) << 23 );
|
||||
break;
|
||||
|
||||
@ -1062,14 +1062,22 @@ void mb86233_cpu_device::execute_run()
|
||||
case 0x04: /* MOV RAM->External */
|
||||
{
|
||||
SETEXTERNAL( GETEB(), r2, GETARAM()[r1]);
|
||||
ALU( alu);
|
||||
ALU(alu);
|
||||
}
|
||||
break;
|
||||
|
||||
case 0x0c: /* MOV RAM->BRAM */
|
||||
{
|
||||
GETBRAM()[r2] = GETARAM()[r1];
|
||||
ALU( alu);
|
||||
ALU(alu);
|
||||
}
|
||||
break;
|
||||
|
||||
case 0x0d: /* Move RAM->BRAM indirect? */
|
||||
{
|
||||
val = GETARAM()[r1];
|
||||
ALU(alu);
|
||||
GETBRAM()[INDIRECT(r2|(2<<6),0)] = val;
|
||||
}
|
||||
break;
|
||||
|
||||
@ -1088,7 +1096,7 @@ void mb86233_cpu_device::execute_run()
|
||||
if ( GETFIFOWAIT() )
|
||||
break;
|
||||
|
||||
ALU( alu);
|
||||
ALU(alu);
|
||||
SETREGS(r2,val);
|
||||
}
|
||||
break;
|
||||
@ -1101,7 +1109,7 @@ void mb86233_cpu_device::execute_run()
|
||||
if ( GETFIFOWAIT() )
|
||||
break;
|
||||
|
||||
ALU( alu);
|
||||
ALU(alu);
|
||||
|
||||
if ( ( r2 >> 6 ) & 0x01)
|
||||
{
|
||||
@ -1129,8 +1137,8 @@ void mb86233_cpu_device::execute_run()
|
||||
if ( GETFIFOWAIT() )
|
||||
break;
|
||||
|
||||
ALU( alu);
|
||||
SETREGS( r2, val );
|
||||
ALU(alu);
|
||||
SETREGS(r2, val);
|
||||
}
|
||||
}
|
||||
break;
|
||||
@ -1138,7 +1146,7 @@ void mb86233_cpu_device::execute_run()
|
||||
case 0x0f: /* MOV RAMInd->BRAMInd */
|
||||
{
|
||||
val = GETARAM()[INDIRECT(r1,1)];
|
||||
ALU( alu);
|
||||
ALU(alu);
|
||||
GETBRAM()[INDIRECT(r2|(6<<6),0)] = val;
|
||||
}
|
||||
break;
|
||||
@ -1146,7 +1154,7 @@ void mb86233_cpu_device::execute_run()
|
||||
case 0x13: /* MOV BRAMInd->RAMInd */
|
||||
{
|
||||
val = GETBRAM()[INDIRECT(r1,1)];
|
||||
ALU( alu);
|
||||
ALU(alu);
|
||||
GETARAM()[INDIRECT(r2|(6<<6),0)] = val;
|
||||
}
|
||||
break;
|
||||
@ -1154,7 +1162,7 @@ void mb86233_cpu_device::execute_run()
|
||||
case 0x10: /* MOV RAMInd->RAM */
|
||||
{
|
||||
val = GETBRAM()[INDIRECT(r1,1)];
|
||||
ALU( alu);
|
||||
ALU(alu);
|
||||
GETARAM()[r2] = val;
|
||||
}
|
||||
break;
|
||||
@ -1166,15 +1174,15 @@ void mb86233_cpu_device::execute_run()
|
||||
if ( (( r2 >> 6 ) & 7) == 1 )
|
||||
{
|
||||
offset = INDIRECT(r1,1);
|
||||
val = GETEXTERNAL( 0,offset);
|
||||
val = GETEXTERNAL(0,offset);
|
||||
}
|
||||
else
|
||||
{
|
||||
offset = INDIRECT(r1,0);
|
||||
val = GETEXTERNAL( GETEB(),offset);
|
||||
val = GETEXTERNAL(GETEB(),offset);
|
||||
}
|
||||
|
||||
ALU( alu);
|
||||
ALU(alu);
|
||||
SETREGS(r2,val);
|
||||
}
|
||||
break;
|
||||
@ -1182,15 +1190,15 @@ void mb86233_cpu_device::execute_run()
|
||||
case 0x03: /* RAM->External Ind */
|
||||
{
|
||||
val = GETARAM()[r1];
|
||||
ALU( alu);
|
||||
SETEXTERNAL( GETEB(),INDIRECT(r2|(6<<6),0),val);
|
||||
ALU(alu);
|
||||
SETEXTERNAL(GETEB(),INDIRECT(r2|(6<<6),0),val);
|
||||
}
|
||||
break;
|
||||
|
||||
case 0x07: /* RAMInd->External */
|
||||
{
|
||||
val = GETARAM()[INDIRECT(r1,1)];
|
||||
ALU( alu);
|
||||
ALU(alu);
|
||||
SETEXTERNAL( GETEB(),INDIRECT(r2|(6<<6),0),val);
|
||||
}
|
||||
break;
|
||||
@ -1198,7 +1206,7 @@ void mb86233_cpu_device::execute_run()
|
||||
case 0x08: /* External->RAM */
|
||||
{
|
||||
val = GETEXTERNAL( GETEB(),INDIRECT(r1,1));
|
||||
ALU( alu);
|
||||
ALU(alu);
|
||||
GETARAM()[r2] = val;
|
||||
}
|
||||
break;
|
||||
@ -1223,16 +1231,9 @@ void mb86233_cpu_device::execute_run()
|
||||
}
|
||||
break;
|
||||
|
||||
case 0x0d: /* Move RAM->BRAM indirect? */
|
||||
{
|
||||
val = GETARAM()[r1];
|
||||
ALU( alu);
|
||||
GETBRAM()[INDIRECT(r2|(2<<6),0)] = val;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
logerror( "TGP: Unknown TGP move (op=%02x) at PC:%x\n", op, GETPC());
|
||||
fatalerror( "TGP: Unknown TGP move (op=%02x) at PC:%x\n", op, GETPC());
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -1291,7 +1292,7 @@ void mb86233_cpu_device::execute_run()
|
||||
UINT32 alu = ( opcode >> 20 ) & 0x1f;
|
||||
UINT32 sub2 = ( opcode >> 16 ) & 0x0f;
|
||||
|
||||
ALU( alu );
|
||||
ALU(alu);
|
||||
|
||||
if( sub2 == 0x00 ) /* CLEAR reg */
|
||||
{
|
||||
@ -1314,7 +1315,7 @@ void mb86233_cpu_device::execute_run()
|
||||
}
|
||||
else if ( sub2 == 0x04 ) /* REP xxx */
|
||||
{
|
||||
UINT32 sub3 = ( opcode >> 12 ) & 0x0f;
|
||||
UINT32 sub3 = ( opcode >> 12 ) & 0x0f;
|
||||
|
||||
if ( sub3 == 0 )
|
||||
{
|
||||
@ -1357,9 +1358,9 @@ void mb86233_cpu_device::execute_run()
|
||||
UINT32 imm = opcode & 0xffffff;
|
||||
|
||||
if ( sub == 0 ) /* R12 */
|
||||
GETGPR(12) = imm & 0xff;
|
||||
GETGPR(12) = imm;
|
||||
else if ( sub == 1 ) /* R13 */
|
||||
GETGPR(13) = imm & 0xff;
|
||||
GETGPR(13) = imm;
|
||||
else
|
||||
logerror( "TGP: Unknown LDIMM r12 (sub=%d) at PC:%04x\n", sub, GETPC() );
|
||||
}
|
||||
@ -1386,7 +1387,7 @@ void mb86233_cpu_device::execute_run()
|
||||
}
|
||||
else
|
||||
{
|
||||
logerror( "TGP: Unknown LDIMM m,e (sub=%d) at PC:%04x\n", sub, GETPC() );
|
||||
fatalerror( "TGP: Unknown LDIMM m,e (sub=%d) at PC:%04x\n", sub, GETPC() );
|
||||
}
|
||||
}
|
||||
break;
|
||||
@ -1414,7 +1415,7 @@ void mb86233_cpu_device::execute_run()
|
||||
}
|
||||
else
|
||||
{
|
||||
logerror( "TGP: Unknown LDIMM m,e (sub=%d) at PC:%04x\n", sub, GETPC() );
|
||||
fatalerror( "TGP: Unknown LDIMM m,e (sub=%d) at PC:%04x\n", sub, GETPC() );
|
||||
}
|
||||
}
|
||||
break;
|
||||
@ -1440,7 +1441,7 @@ void mb86233_cpu_device::execute_run()
|
||||
}
|
||||
else
|
||||
{
|
||||
logerror( "TGP: Unknown LDIMM m,e (sub=%d) at PC:%04x\n", sub, GETPC() );
|
||||
fatalerror( "TGP: Unknown LDIMM m,e (sub=%d) at PC:%04x\n", sub, GETPC() );
|
||||
}
|
||||
}
|
||||
break;
|
||||
@ -1472,7 +1473,7 @@ void mb86233_cpu_device::execute_run()
|
||||
}
|
||||
else
|
||||
{
|
||||
logerror( "TGP: Unknown LDIMM external reg (sub=%d) at PC:%04x\n", sub, GETPC() );
|
||||
fatalerror( "TGP: Unknown LDIMM external reg (sub=%d) at PC:%04x\n", sub, GETPC() );
|
||||
}
|
||||
}
|
||||
break;
|
||||
@ -1487,7 +1488,7 @@ void mb86233_cpu_device::execute_run()
|
||||
}
|
||||
else
|
||||
{
|
||||
logerror( "TGP: Unknown LDIMM REPCnt (sub=%d) at PC:%04x\n", sub, GETPC() );
|
||||
fatalerror( "TGP: Unknown LDIMM REPCnt (sub=%d) at PC:%04x\n", sub, GETPC() );
|
||||
}
|
||||
}
|
||||
break;
|
||||
@ -1507,10 +1508,7 @@ void mb86233_cpu_device::execute_run()
|
||||
break;
|
||||
|
||||
case 0x02: /* BRIF indirect */
|
||||
if ( data & 0x4000 )
|
||||
data = GETREGS(data&0x3f,0) - 1;
|
||||
else
|
||||
data = ((GETARAM()[data&0x3ff])&0xffff)-1;
|
||||
data = GETREGS(data&0x7f,0) - 1;
|
||||
|
||||
/* if we're waiting for data, don't complete the instruction */
|
||||
if ( GETFIFOWAIT() )
|
||||
@ -1529,7 +1527,7 @@ void mb86233_cpu_device::execute_run()
|
||||
GETPCS()[GETPCSP()] = GETPC();
|
||||
GETPCSP()++;
|
||||
if ( data & 0x4000 )
|
||||
data = GETREGS(data&0x3f,0) - 1;
|
||||
data = GETREGS(data&0x7f,0) - 1;
|
||||
else
|
||||
data = ((GETARAM()[data&0x3ff])&0xffff)-1;
|
||||
|
||||
@ -1546,15 +1544,15 @@ void mb86233_cpu_device::execute_run()
|
||||
break;
|
||||
|
||||
case 0x0c: /* LDIF */
|
||||
SETREGS(((data>>9)&0x3f), GETARAM()[data&0x1FF] );
|
||||
SETREGS(((data>>9)&0x7f), GETARAM()[data&0x1FF] );
|
||||
break;
|
||||
|
||||
case 0x0e: /* RIIF */
|
||||
logerror( "TGP: RIIF unimplemented at PC:%04x\n", GETPC() );
|
||||
fatalerror( "TGP: RIIF unimplemented at PC:%04x\n", GETPC() );
|
||||
break;
|
||||
|
||||
default:
|
||||
logerror( "TGP: Unknown Branch opcode (subtype=%d) at PC:%04x\n", subtype, GETPC() );
|
||||
fatalerror( "TGP: Unknown Branch opcode (subtype=%d) at PC:%04x\n", subtype, GETPC() );
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -1576,10 +1574,7 @@ void mb86233_cpu_device::execute_run()
|
||||
break;
|
||||
|
||||
case 0x02: /* BRUL indirect */
|
||||
if ( data & 0x4000 )
|
||||
data = GETREGS(data&0x3f,0) - 1;
|
||||
else
|
||||
data = ((GETARAM()[data&0x3ff])&0xffff)-1;
|
||||
data = GETREGS(data&0x7f,0) - 1;
|
||||
|
||||
/* if we're waiting for data, don't complete the instruction */
|
||||
if ( GETFIFOWAIT() )
|
||||
@ -1595,12 +1590,7 @@ void mb86233_cpu_device::execute_run()
|
||||
break;
|
||||
|
||||
case 0x06: /* BSUL indirect */
|
||||
GETPCS()[GETPCSP()] = GETPC();
|
||||
GETPCSP()++;
|
||||
if ( data & 0x4000 )
|
||||
data = GETREGS(data&0x3f,0) - 1;
|
||||
else
|
||||
data = ((GETARAM()[data&0x3ff])&0xffff)-1;
|
||||
data = GETARAM()[data] - 1;
|
||||
|
||||
/* if we're waiting for data, don't complete the instruction */
|
||||
if ( GETFIFOWAIT() )
|
||||
@ -1615,24 +1605,29 @@ void mb86233_cpu_device::execute_run()
|
||||
break;
|
||||
|
||||
case 0x0c: /* LDUL */
|
||||
SETREGS(((data>>9)&0x3f), GETARAM()[data&0x1FF] );
|
||||
SETREGS(((data>>9)&0x7f), GETARAM()[data&0x1FF] );
|
||||
break;
|
||||
|
||||
case 0x0e: /* RIUL */
|
||||
logerror( "TGP: RIIF unimplemented at PC:%04x\n", GETPC() );
|
||||
fatalerror( "TGP: RIUL unimplemented at PC:%04x\n", GETPC() );
|
||||
break;
|
||||
|
||||
default:
|
||||
logerror( "TGP: Unknown Branch opcode (subtype=%d) at PC:%04x\n", subtype, GETPC() );
|
||||
fatalerror( "TGP: Unknown Branch opcode (subtype=%d) at PC:%04x\n", subtype, GETPC() );
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
case 0x1f:
|
||||
case 0x12:
|
||||
logerror( "TGP: unknown opcode %08x at PC:%04x (%02x)\n", opcode, GETPC(),(opcode >> 26) & 0x3f );
|
||||
break;
|
||||
|
||||
default:
|
||||
fatalerror( "TGP: unknown opcode %08x at PC:%04x (%02x)\n", opcode, GETPC(),(opcode >> 26) & 0x3f );
|
||||
break;
|
||||
}
|
||||
|
||||
if ( GETFIFOWAIT() == 0 )
|
||||
|
Loading…
Reference in New Issue
Block a user