Some changes to TGP with no noticeable effect.

This commit is contained in:
Angelo Salese 2014-04-28 01:28:49 +00:00
parent dca98b36ba
commit e44cfd2983

View File

@ -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 )