diff options
Diffstat (limited to 'src/emu/cpu/dsp16/dsp16dis.c')
-rw-r--r-- | src/emu/cpu/dsp16/dsp16dis.c | 180 |
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; } |