summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/cpu/dsp16/dsp16dis.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/emu/cpu/dsp16/dsp16dis.c')
-rw-r--r--src/emu/cpu/dsp16/dsp16dis.c180
1 files changed, 90 insertions, 90 deletions
diff --git a/src/emu/cpu/dsp16/dsp16dis.c b/src/emu/cpu/dsp16/dsp16dis.c
index 7db21ec7bf6..09d6e2d149a 100644
--- a/src/emu/cpu/dsp16/dsp16dis.c
+++ b/src/emu/cpu/dsp16/dsp16dis.c
@@ -1,34 +1,34 @@
#include "emu.h"
#include "dsp16.h"
-astring disasmF1Field(const UINT8& F1, const UINT8& D, const UINT8& S)
+std::string disasmF1Field(const UINT8& F1, const UINT8& D, const UINT8& S)
{
- astring ret = "";
+ std::string ret = "";
switch (F1)
{
- case 0x00: ret.printf("a%d = p, p = x*y", D); break;
- case 0x01: ret.printf("a%d = a%d + p, p = x*y", D, S); break;
- case 0x02: ret.printf("p = x*y"); break;
- case 0x03: ret.printf("a%d = a%d - p, p = x*y", D, S); break;
- case 0x04: ret.printf("a%d = p", D); break;
- case 0x05: ret.printf("a%d = a%d + p", D, S); break;
- case 0x06: ret.printf("NOP"); break;
- case 0x07: ret.printf("a%d = a%d - p", D, S); break;
- case 0x08: ret.printf("a%d = a%d | y", D, S); break;
- case 0x09: ret.printf("a%d = a%d ^ y", D, S); break;
- case 0x0a: ret.printf("a%d & y", S); break;
- case 0x0b: ret.printf("a%d - y", S); break;
- case 0x0c: ret.printf("a%d = y", D); break;
- case 0x0d: ret.printf("a%d = a%d + y", D, S); break;
- case 0x0e: ret.printf("a%d = a%d & y", D, S); break;
- case 0x0f: ret.printf("a%d = a%d - y", D, S); break;
+ case 0x00: strprintf(ret, "a%d = p, p = x*y", D); break;
+ case 0x01: strprintf(ret, "a%d = a%d + p, p = x*y", D, S); break;
+ case 0x02: strprintf(ret, "p = x*y"); break;
+ case 0x03: strprintf(ret, "a%d = a%d - p, p = x*y", D, S); break;
+ case 0x04: strprintf(ret, "a%d = p", D); break;
+ case 0x05: strprintf(ret, "a%d = a%d + p", D, S); break;
+ case 0x06: strprintf(ret, "NOP"); break;
+ case 0x07: strprintf(ret, "a%d = a%d - p", D, S); break;
+ case 0x08: strprintf(ret, "a%d = a%d | y", D, S); break;
+ case 0x09: strprintf(ret, "a%d = a%d ^ y", D, S); break;
+ case 0x0a: strprintf(ret, "a%d & y", S); break;
+ case 0x0b: strprintf(ret, "a%d - y", S); break;
+ case 0x0c: strprintf(ret, "a%d = y", D); break;
+ case 0x0d: strprintf(ret, "a%d = a%d + y", D, S); break;
+ case 0x0e: strprintf(ret, "a%d = a%d & y", D, S); break;
+ case 0x0f: strprintf(ret, "a%d = a%d - y", D, S); break;
default: return "UNKNOWN";
}
return ret;
}
-astring disasmYField(const UINT8& Y)
+std::string disasmYField(const UINT8& Y)
{
switch (Y)
{
@@ -58,7 +58,7 @@ astring disasmYField(const UINT8& Y)
//return "";
}
-astring disasmZField(const UINT8& Z)
+std::string disasmZField(const UINT8& Z)
{
switch (Z)
{
@@ -88,35 +88,35 @@ astring disasmZField(const UINT8& Z)
//return "";
}
-astring disasmF2Field(const UINT8& F2, const UINT8& D, const UINT8& S)
+std::string disasmF2Field(const UINT8& F2, const UINT8& D, const UINT8& S)
{
- astring ret = "";
+ std::string ret = "";
switch (F2)
{
- case 0x00: ret.printf("a%d = a%d >> 1", D, S); break;
- case 0x01: ret.printf("a%d = a%d << 1", D, S); break;
- case 0x02: ret.printf("a%d = a%d >> 4", D, S); break;
- case 0x03: ret.printf("a%d = a%d << 4", D, S); break;
- case 0x04: ret.printf("a%d = a%d >> 8", D, S); break;
- case 0x05: ret.printf("a%d = a%d << 8", D, S); break;
- case 0x06: ret.printf("a%d = a%d >> 16", D, S); break;
- case 0x07: ret.printf("a%d = a%d << 16", D, S); break;
-
- case 0x08: ret.printf("a%d = p", D); break;
- case 0x09: ret.printf("a%dh = a%dh + 1", D, S); break;
- case 0x0a: ret.printf("RESERVED"); break;
- case 0x0b: ret.printf("a%d = rnd(a%d)", D, S); break;
- case 0x0c: ret.printf("a%d = y", D); break;
- case 0x0d: ret.printf("a%d = a%d + 1", D, S); break;
- case 0x0e: ret.printf("a%d = a%d", D, S); break;
- case 0x0f: ret.printf("a%d = -a%d", D, S); break;
+ case 0x00: strprintf(ret, "a%d = a%d >> 1", D, S); break;
+ case 0x01: strprintf(ret, "a%d = a%d << 1", D, S); break;
+ case 0x02: strprintf(ret, "a%d = a%d >> 4", D, S); break;
+ case 0x03: strprintf(ret, "a%d = a%d << 4", D, S); break;
+ case 0x04: strprintf(ret, "a%d = a%d >> 8", D, S); break;
+ case 0x05: strprintf(ret, "a%d = a%d << 8", D, S); break;
+ case 0x06: strprintf(ret, "a%d = a%d >> 16", D, S); break;
+ case 0x07: strprintf(ret, "a%d = a%d << 16", D, S); break;
+
+ case 0x08: strprintf(ret, "a%d = p", D); break;
+ case 0x09: strprintf(ret, "a%dh = a%dh + 1", D, S); break;
+ case 0x0a: strprintf(ret, "RESERVED"); break;
+ case 0x0b: strprintf(ret, "a%d = rnd(a%d)", D, S); break;
+ case 0x0c: strprintf(ret, "a%d = y", D); break;
+ case 0x0d: strprintf(ret, "a%d = a%d + 1", D, S); break;
+ case 0x0e: strprintf(ret, "a%d = a%d", D, S); break;
+ case 0x0f: strprintf(ret, "a%d = -a%d", D, S); break;
default: return "UNKNOWN";
}
return ret;
}
-astring disasmCONField(const UINT8& CON)
+std::string disasmCONField(const UINT8& CON)
{
switch (CON)
{
@@ -145,7 +145,7 @@ astring disasmCONField(const UINT8& CON)
//return "";
}
-astring disasmBField(const UINT8& B)
+std::string disasmBField(const UINT8& B)
{
switch (B)
{
@@ -164,7 +164,7 @@ astring disasmBField(const UINT8& B)
//return "";
}
-astring disasmRImmediateField(const UINT8& R)
+std::string disasmRImmediateField(const UINT8& R)
{
switch (R)
{
@@ -183,7 +183,7 @@ astring disasmRImmediateField(const UINT8& R)
//return "";
}
-astring disasmRField(const UINT8& R)
+std::string disasmRField(const UINT8& R)
{
switch (R)
{
@@ -222,7 +222,7 @@ astring disasmRField(const UINT8& R)
//return "";
}
-astring disasmIField(const UINT8& I)
+std::string disasmIField(const UINT8& I)
{
switch (I)
{
@@ -268,8 +268,8 @@ CPU_DISASSEMBLE( dsp16a )
const UINT8 S = (op & 0x0200) >> 9;
const UINT8 D = (op & 0x0400) >> 10;
const UINT8 F1 = (op & 0x01e0) >> 5;
- astring yString = disasmYField(Y);
- astring fString = disasmF1Field(F1, D, S);
+ std::string yString = disasmYField(Y);
+ std::string fString = disasmF1Field(F1, D, S);
sprintf(buffer, "%s, %s", fString.c_str(), yString.c_str());
break;
}
@@ -281,10 +281,10 @@ CPU_DISASSEMBLE( dsp16a )
const UINT8 S = (op & 0x0200) >> 9;
const UINT8 D = (op & 0x0400) >> 10;
const UINT8 F1 = (op & 0x01e0) >> 5;
- astring yString = disasmYField(Y);
- astring fString = disasmF1Field(F1, D, S);
- astring aString = (opcode == 0x1c) ? "a0" : "a1";
- astring xString = (X) ? "" : "l";
+ std::string yString = disasmYField(Y);
+ std::string fString = disasmF1Field(F1, D, S);
+ std::string aString = (opcode == 0x1c) ? "a0" : "a1";
+ std::string xString = (X) ? "" : "l";
sprintf(buffer, "%s = %s%s, %s", yString.c_str(), aString.c_str(), xString.c_str(), fString.c_str());
break;
}
@@ -295,8 +295,8 @@ CPU_DISASSEMBLE( dsp16a )
const UINT8 S = (op & 0x0200) >> 9;
const UINT8 D = (op & 0x0400) >> 10;
const UINT8 F1 = (op & 0x01e0) >> 5;
- astring yString = disasmYField(Y);
- astring fString = disasmF1Field(F1, D, S);
+ std::string yString = disasmYField(Y);
+ std::string fString = disasmF1Field(F1, D, S);
sprintf(buffer, "%s, x = %s", fString.c_str(), yString.c_str());
break;
}
@@ -308,9 +308,9 @@ CPU_DISASSEMBLE( dsp16a )
const UINT8 S = (op & 0x0200) >> 9;
const UINT8 D = (op & 0x0400) >> 10;
const UINT8 F1 = (op & 0x01e0) >> 5;
- astring yString = disasmYField(Y);
- astring fString = disasmF1Field(F1, D, S);
- astring xString = (X ? "y" : "y1");
+ std::string yString = disasmYField(Y);
+ std::string fString = disasmF1Field(F1, D, S);
+ std::string xString = (X ? "y" : "y1");
sprintf(buffer, "%s, %s = %s", fString.c_str(), xString.c_str(), yString.c_str());
break;
}
@@ -322,9 +322,9 @@ CPU_DISASSEMBLE( dsp16a )
const UINT8 S = (op & 0x0200) >> 9;
const UINT8 D = (op & 0x0400) >> 10;
const UINT8 F1 = (op & 0x01e0) >> 5;
- astring yString = disasmYField(Y);
- astring fString = disasmF1Field(F1, D, S);
- astring xString = (X ? "*pt++i" : "*pt++");
+ std::string yString = disasmYField(Y);
+ std::string fString = disasmF1Field(F1, D, S);
+ std::string xString = (X ? "*pt++i" : "*pt++");
sprintf(buffer, "%s, y = %s, x = %s", fString.c_str(), yString.c_str(), xString.c_str());
break;
}
@@ -336,9 +336,9 @@ CPU_DISASSEMBLE( dsp16a )
const UINT8 S = (op & 0x0200) >> 9;
const UINT8 D = (op & 0x0400) >> 10;
const UINT8 F1 = (op & 0x01e0) >> 5;
- astring fString = disasmF1Field(F1, D, S);
- astring xString = (X ? "*pt++i" : "*pt++");
- astring aString = (opcode == 0x19) ? "a0" : "a1";
+ std::string fString = disasmF1Field(F1, D, S);
+ std::string xString = (X ? "*pt++i" : "*pt++");
+ std::string aString = (opcode == 0x19) ? "a0" : "a1";
sprintf(buffer, "%s, y = %s, x = %s", fString.c_str(), aString.c_str(), xString.c_str());
if (Y != 0x00) sprintf(buffer, "UNKNOWN");
break;
@@ -351,9 +351,9 @@ CPU_DISASSEMBLE( dsp16a )
const UINT8 S = (op & 0x0200) >> 9;
const UINT8 D = (op & 0x0400) >> 10;
const UINT8 F1 = (op & 0x01e0) >> 5;
- astring yString = disasmYField(Y);
- astring xString = (X ? "y" : "y1");
- astring fString = disasmF1Field(F1, D, S);
+ std::string yString = disasmYField(Y);
+ std::string xString = (X ? "y" : "y1");
+ std::string fString = disasmF1Field(F1, D, S);
sprintf(buffer, "%s, %s = %s", fString.c_str(), yString.c_str(), xString.c_str());
break;
}
@@ -366,9 +366,9 @@ CPU_DISASSEMBLE( dsp16a )
const UINT8 S = (op & 0x0200) >> 9;
const UINT8 aT = (op & 0x0400) >> 10;
const UINT8 F1 = (op & 0x01e0) >> 5;
- astring yString = disasmYField(Y);
- astring atString = (aT ? "a0" : "a1");
- astring fString = disasmF1Field(F1, aT, S);
+ std::string yString = disasmYField(Y);
+ std::string atString = (aT ? "a0" : "a1");
+ std::string fString = disasmF1Field(F1, aT, S);
sprintf(buffer, "%s, %s = %s", fString.c_str(), atString.c_str(), yString.c_str());
break;
}
@@ -382,9 +382,9 @@ CPU_DISASSEMBLE( dsp16a )
const UINT8 S = (op & 0x0200) >> 9;
const UINT8 D = (op & 0x0400) >> 10;
const UINT8 F1 = (op & 0x01e0) >> 5;
- astring zString = disasmZField(Z);
- astring xString = (X ? "y" : "y1");
- astring fString = disasmF1Field(F1, D, S);
+ std::string zString = disasmZField(Z);
+ std::string xString = (X ? "y" : "y1");
+ std::string fString = disasmF1Field(F1, D, S);
sprintf(buffer, "%s, %s <=> %s", fString.c_str(), xString.c_str(), zString.c_str());
break;
}
@@ -396,9 +396,9 @@ CPU_DISASSEMBLE( dsp16a )
const UINT8 S = (op & 0x0200) >> 9;
const UINT8 D = (op & 0x0400) >> 10;
const UINT8 F1 = (op & 0x01e0) >> 5;
- astring zString = disasmZField(Z);
- astring xString = (X ? "*pt++i" : "*pt++");
- astring fString = disasmF1Field(F1, D, S);
+ std::string zString = disasmZField(Z);
+ std::string xString = (X ? "*pt++i" : "*pt++");
+ std::string fString = disasmF1Field(F1, D, S);
sprintf(buffer, "%s, %s <=> y, x = %s", fString.c_str(), zString.c_str(), xString.c_str());
break;
}
@@ -412,10 +412,10 @@ CPU_DISASSEMBLE( dsp16a )
const UINT8 S = (op & 0x0200) >> 9;
const UINT8 aT = (op & 0x0400) >> 10;
const UINT8 F1 = (op & 0x01e0) >> 5;
- astring zString = disasmZField(Z);
- astring atString = (aT ? "a0" : "a1");
+ std::string zString = disasmZField(Z);
+ std::string atString = (aT ? "a0" : "a1");
atString += X ? "" : "1"; // TODO: Figure out unclear wording.
- astring fString = disasmF1Field(F1, aT, S);
+ std::string fString = disasmF1Field(F1, aT, S);
sprintf(buffer, "%s, %s <=> %s", fString.c_str(), zString.c_str(), atString.c_str());
break;
}
@@ -429,8 +429,8 @@ CPU_DISASSEMBLE( dsp16a )
const UINT8 S = (op & 0x0200) >> 9;
const UINT8 D = (op & 0x0400) >> 10;
const UINT8 F2 = (op & 0x01e0) >> 5;
- astring fString = disasmF2Field(F2, D, S);
- astring conString = disasmCONField(CON);
+ std::string fString = disasmF2Field(F2, D, S);
+ std::string conString = disasmCONField(CON);
if (op & 0x0800) sprintf(buffer, "if %s : %s", conString.c_str(), fString.c_str());
else sprintf(buffer, "ifc %s : %s", conString.c_str(), fString.c_str());
break;
@@ -457,7 +457,7 @@ CPU_DISASSEMBLE( dsp16a )
{
// goto B
const UINT8 B = (op & 0x0700) >> 8;
- astring bString = disasmBField(B);
+ std::string bString = disasmBField(B);
sprintf(buffer, "%s", bString.c_str());
break;
}
@@ -467,7 +467,7 @@ CPU_DISASSEMBLE( dsp16a )
{
// if CON [goto/call/return]
const UINT8 CON = (op & 0x001f);
- astring conString = disasmCONField(CON);
+ std::string conString = disasmCONField(CON);
sprintf(buffer, "if %s:", conString.c_str());
// TODO: Test for invalid ops
// icall
@@ -481,7 +481,7 @@ CPU_DISASSEMBLE( dsp16a )
// R = aS
const UINT8 R = (op & 0x03f0) >> 4;
const UINT8 S = (op & 0x1000) >> 12;
- astring rString = disasmRField(R);
+ std::string rString = disasmRField(R);
sprintf(buffer, "%s = %s", rString.c_str(), (S ? "a1" : "a0"));
break;
}
@@ -490,7 +490,7 @@ CPU_DISASSEMBLE( dsp16a )
// aT = R
const UINT8 R = (op & 0x03f0) >> 4;
const UINT8 aT = (op & 0x0400) >> 10;
- astring rString = disasmRField(R);
+ std::string rString = disasmRField(R);
sprintf(buffer, "%s = %s", (aT ? "a0" : "a1"), rString.c_str());
break;
}
@@ -499,8 +499,8 @@ CPU_DISASSEMBLE( dsp16a )
// R = Y
const UINT8 Y = (op & 0x000f);
const UINT8 R = (op & 0x03f0) >> 4;
- astring yString = disasmYField(Y);
- astring rString = disasmRField(R);
+ std::string yString = disasmYField(Y);
+ std::string rString = disasmRField(R);
sprintf(buffer, "%s = %s", rString.c_str(), yString.c_str());
// TODO: Special case the R == [y, y1, or x] case
break;
@@ -510,8 +510,8 @@ CPU_DISASSEMBLE( dsp16a )
// Y = R
const UINT8 Y = (op & 0x000f);
const UINT8 R = (op & 0x03f0) >> 4;
- astring yString = disasmYField(Y);
- astring rString = disasmRField(R);
+ std::string yString = disasmYField(Y);
+ std::string rString = disasmRField(R);
// TODO: page 3-31 "special function encoding"
sprintf(buffer, "%s = %s", yString.c_str(), rString.c_str());
break;
@@ -521,8 +521,8 @@ CPU_DISASSEMBLE( dsp16a )
// Z : R
const UINT8 Z = (op & 0x000f);
const UINT8 R = (op & 0x03f0) >> 4;
- astring zString = disasmZField(Z);
- astring rString = disasmRField(R);
+ std::string zString = disasmZField(Z);
+ std::string rString = disasmRField(R);
sprintf(buffer, "%s <=> %s", zString.c_str(), rString.c_str());
break;
}
@@ -532,7 +532,7 @@ CPU_DISASSEMBLE( dsp16a )
{
// R = N
const UINT8 R = (op & 0x03f0) >> 4;
- astring rString = disasmRField(R);
+ std::string rString = disasmRField(R);
sprintf(buffer, "%s = 0x%04x", rString.c_str(), op2);
opSize = 2;
break;
@@ -544,7 +544,7 @@ CPU_DISASSEMBLE( dsp16a )
// R = M
const UINT16 M = (op & 0x01ff);
const UINT8 R = (op & 0x0e00) >> 9;
- astring rString = disasmRImmediateField(R);
+ std::string rString = disasmRImmediateField(R);
sprintf(buffer, "%s = 0x%04x", rString.c_str(), M);
break;
}