summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Olivier Galibert <galibert@pobox.com>2025-10-31 23:56:09 +0100
committer Olivier Galibert <galibert@pobox.com>2025-10-31 23:56:09 +0100
commit5be959e3f0e041f6b732a035929ace45944f1f8b (patch)
tree32714f6ec973f61226633b08a4292a5d4e662d82
parent6202423dccbe3a020e396005834eee186b7b5552 (diff)
Ensure all three virus reach 0x100
-rw-r--r--src/devices/cpu/dsp563xx/dsp56303.cpp4
-rw-r--r--src/devices/cpu/dsp563xx/dsp56362.cpp4
-rw-r--r--src/devices/cpu/dsp563xx/dsp56364.cpp3
-rwxr-xr-xsrc/devices/cpu/dsp563xx/dsp563xx-make.py3
-rw-r--r--src/devices/cpu/dsp563xx/dsp563xx.lst20
-rw-r--r--src/devices/cpu/dsp563xx/dsp563xxd-tables.cpp20
6 files changed, 32 insertions, 22 deletions
diff --git a/src/devices/cpu/dsp563xx/dsp56303.cpp b/src/devices/cpu/dsp563xx/dsp56303.cpp
index 7e1c81483b5..4a95484615c 100644
--- a/src/devices/cpu/dsp563xx/dsp56303.cpp
+++ b/src/devices/cpu/dsp563xx/dsp56303.cpp
@@ -42,15 +42,19 @@ const tiny_rom_entry *dsp56303_device::device_rom_region() const
void dsp56303_device::p_map(address_map &map)
{
+ map(0x000000, 0x000fff).ram();
map(0xff0000, 0xff00bf).rom().region("boot", 0);
}
void dsp56303_device::x_map(address_map &map)
{
+ map(0x000000, 0x0007ff).ram();
+ map(0xffffc2, 0xffffc7).m(m_hi08, FUNC(hi08_device::map));
}
void dsp56303_device::y_map(address_map &map)
{
+ map(0x000000, 0x0007ff).ram();
}
DEFINE_DEVICE_TYPE(DSP56303, dsp56303_device, "dsp56303", "DSP 56303")
diff --git a/src/devices/cpu/dsp563xx/dsp56362.cpp b/src/devices/cpu/dsp563xx/dsp56362.cpp
index 1f171059bd0..59a120078e7 100644
--- a/src/devices/cpu/dsp563xx/dsp56362.cpp
+++ b/src/devices/cpu/dsp563xx/dsp56362.cpp
@@ -42,15 +42,19 @@ const tiny_rom_entry *dsp56362_device::device_rom_region() const
void dsp56362_device::p_map(address_map &map)
{
+ map(0x000000, 0x000bff).ram();
map(0xff0000, 0xff00bf).rom().region("boot", 0);
}
void dsp56362_device::x_map(address_map &map)
{
+ map(0x000000, 0x0015ff).ram();
+ map(0xffffc2, 0xffffc7).m(m_hi08, FUNC(hi08_device::map));
}
void dsp56362_device::y_map(address_map &map)
{
+ map(0x000000, 0x0015ff).ram();
}
DEFINE_DEVICE_TYPE(DSP56362, dsp56362_device, "dsp56362", "DSP 56362")
diff --git a/src/devices/cpu/dsp563xx/dsp56364.cpp b/src/devices/cpu/dsp563xx/dsp56364.cpp
index 22642b15815..5cb33270ae8 100644
--- a/src/devices/cpu/dsp563xx/dsp56364.cpp
+++ b/src/devices/cpu/dsp563xx/dsp56364.cpp
@@ -43,15 +43,18 @@ const tiny_rom_entry *dsp56364_device::device_rom_region() const
void dsp56364_device::p_map(address_map &map)
{
+ map(0x000000, 0x0001ff).ram();
map(0xff0000, 0xff00bf).rom().region("boot", 0);
}
void dsp56364_device::x_map(address_map &map)
{
+ map(0x000000, 0x0003ff).ram();
}
void dsp56364_device::y_map(address_map &map)
{
+ map(0x000000, 0x0005ff).ram();
}
DEFINE_DEVICE_TYPE(DSP56364, dsp56364_device, "dsp56364", "DSP 56364")
diff --git a/src/devices/cpu/dsp563xx/dsp563xx-make.py b/src/devices/cpu/dsp563xx/dsp563xx-make.py
index b7086463da7..00cef22f74e 100755
--- a/src/devices/cpu/dsp563xx/dsp563xx-make.py
+++ b/src/devices/cpu/dsp563xx/dsp563xx-make.py
@@ -432,8 +432,7 @@ Function("xyeax", 1, ["single", ['(r)+n', '(r)-', '(r)+', '(r)']])
Function("xyeay", 3, ["split-alt", 2, ['(rh)+n', '(rh)-', '(rh)+', '(rh)', '(rl)+n', '(rl)-', '(rl)+', '(rl)']])
Function("ar", 1, ["single", ['r']])
Function("exoff", 0, ["pass"])
-Function("eximm16", 0, ["pass"])
-Function("eximm24", 0, ["pass"])
+Function("eximm", 0, ["pass"])
Function("expcrel", 0, ["pass"])
Function("exabs", 0, ["pass"])
Function("exco", 0, ["pass"])
diff --git a/src/devices/cpu/dsp563xx/dsp563xx.lst b/src/devices/cpu/dsp563xx/dsp563xx.lst
index 90e8be37cb9..a054c209d57 100644
--- a/src/devices/cpu/dsp563xx/dsp563xx.lst
+++ b/src/devices/cpu/dsp563xx/dsp563xx.lst
@@ -92,9 +92,9 @@ c000.. s1,x:eax y:eay,d2 - eax:xyeax(8) eay:xyeay(20, 13, 10) s1:tbrx(18) d2
0200b0 move y:(r+o),d - o:sda7(11, 6) r:ar(8) d:fobr(0)
0200a0 move s,y:(r+o) - o:sda7(11, 6) r:ar(8) s:fobr(0)
014080 add #i,d - i:imm6(8) d:acc(3)
-0140c0 add #i,d - d:acc(3) i:eximm16()
+0140c0 add #i,d - d:acc(3) i:eximm()
014086 and #i,d - i:imm6(8) d:acc(3)
-0140c6 and #i,d - d:acc(3) i:eximm16()
+0140c6 and #i,d - d:acc(3) i:eximm()
0000b8 andi #i,ctrl - i:imm8(8) ctrl:ctrl(0)
$ctrl:w($ctrl & $i);
@@ -180,7 +180,7 @@ c000.. s1,x:eax y:eay,d2 - eax:xyeax(8) eay:xyeay(20, 13, 10) s1:tbrx(18) d2
0bc060 btst #n,d - d:sbr(8) n:bit5(0)
00c3c0 clb s,d - s:acc(1) d:acc(0)
014085 cmp #i,d - i:imm6(8) d:acc(3)
-0140c5 cmp #i,d - d:acc(3) i:eximm16()
+0140c5 cmp #i,d - d:acc(3) i:eximm()
0c1ff0 cmpu s1,s2 - s1:dao3(1) s2:acc(0)
000200 debug -
000300 debugcc - cc:cc(0)
@@ -259,7 +259,7 @@ c000.. s1,x:eax y:eay,d2 - eax:xyeax(8) eay:xyeay(20, 13, 10) s1:tbrx(18) d2
00008c enddo -
014083 eor #i,d - i:imm6(8) d:acc(3)
-0140c3 eor #i,d - d:acc(3) i:eximm24()
+0140c3 eor #i,d - d:acc(3) i:eximm()
0c1a00 extract s1,s2,d - s1:actrl(1) s2:acc(4)
0c1800 extract #co,s2,d - s2:acc(4) d:acc(0) co:exco()
0c1a80 extractu s1,s2,d - s1:actrl(1) s2:acc(4)
@@ -333,10 +333,10 @@ c000.. s1,x:eax y:eay,d2 - eax:xyeax(8) eay:xyeay(20, 13, 10) s1:tbrx(18) d2
044000 lua ea,d - ea:eam4(8) d:fvbr1(0)
040000 lua (r+o),d - r:ar(8) o:sda7b(11, 4) d:agu(0)
0100c2 mac +s,#i,d - i:imm4(8) s:damo2(4) d:acc(3) +:sign(2)
-0141c2 maci +#i,s,d - s:damo2(4) d:acc(3) +:sign(2) i:eximm24()
+0141c2 maci +#i,s,d - s:damo2(4) d:acc(3) +:sign(2) i:eximm()
012680 macss +s1,s2,d - ss:ss1(6) d:acc(5) +:sign(4) s1:damo4_a(0) s2:damo4_b(0)
0100c3 maccr +s,#i,d - i:imm4(8) s:damo2(4) d:acc(3) +:sign(2)
-0141c3 macri +#i,s,d - s:damo2(4) d:acc(3) +:sign(2) i:eximm24()
+0141c3 macri +#i,s,d - s:damo2(4) d:acc(3) +:sign(2) i:eximm()
0c1b80 merge s,d - s:dao3(1) d:acc(0)
05c020 movec xy:ea,d1 - ea:eam1(8) xy:xyc(6) d1:fvbr2(0)
054020 movec s1,xy:ea - ea:eam1(8) xy:xyc(6) s1:fvbr2(0)
@@ -398,13 +398,13 @@ c000.. s1,x:eax y:eay,d2 - eax:xyeax(8) eay:xyeay(20, 13, 10) s1:tbrx(18) d2
0100c0 mpy +s,#i,d - i:imm4(8) s:damo2(4) d:acc(3) +:sign(2)
012780 mpyss +s1,s2,d - ss:ss1(6) d:acc(5) +:sign(4) s1:damo4_a(0) s2:damo4_b(0)
-0141c0 mpyi +#i,s,d - s:damo2(4) d:acc(3) +:sign(2) i:eximm24()
+0141c0 mpyi +#i,s,d - s:damo2(4) d:acc(3) +:sign(2) i:eximm()
0100c1 mpyr +s,#i,d - i:imm4(8) s:damo2(4) d:acc(3) +:sign(2)
-0141c1 mpyri +#i,s,d - s:damo2(4) d:acc(3) +:sign(2) i:eximm24()
+0141c1 mpyri +#i,s,d - s:damo2(4) d:acc(3) +:sign(2) i:eximm()
01d815 norm r,d - r:ar(8) d:acc(3)
0c1e20 normf s,d - s:actrl(1) d:acc(0)
014082 or #i,d - i:imm6(8) d:acc(3)
-0140c2 or #i,d - d:acc(3) i:eximm24()
+0140c2 or #i,d - d:acc(3) i:eximm()
0000f8 ori #i,ctrl - i:imm8(8) ctrl:ctrl(0)
000003 pflush -
000001 pflushun -
@@ -424,7 +424,7 @@ c000.. s1,x:eax y:eay,d2 - eax:xyeax(8) eay:xyeay(20, 13, 10) s1:tbrx(18) d2
00000c rts -
000087 stop -
014084 sub #i,d - i:imm6(8) d:acc(3)
-0140c4 sub #i,d - d:acc(3) i:eximm16()
+0140c4 sub #i,d - d:acc(3) i:eximm()
020000 tcc s1,d1 - cc:cc(12) s1:daos3(4, 3) d1:acc(3)
030000 tcc s1,d1 s2,d2 - cc:cc(12) s2:ar(8) s1:daos3(4, 3) d1:acc(3) d2:ar(0)
020800 tcc s2,d2 - cc:cc(12) s2:ar(8) d2:ar(0)
diff --git a/src/devices/cpu/dsp563xx/dsp563xxd-tables.cpp b/src/devices/cpu/dsp563xx/dsp563xxd-tables.cpp
index 19d8aa7b719..30ade62ca72 100644
--- a/src/devices/cpu/dsp563xx/dsp563xxd-tables.cpp
+++ b/src/devices/cpu/dsp563xx/dsp563xxd-tables.cpp
@@ -34987,9 +34987,9 @@ std::string dsp563xx_disassembler::disasm_npar(u8 knpar, u32 opcode, u32 exv, u3
case 8: return util::string_format("move y:(%s+0x%02x),%s", ts_ar[BIT(opcode, 8, 3)], bitswap<7>(opcode, 16, 15, 14, 13, 12, 11, 6), ts_fobr[BIT(opcode, 0, 4)]);
case 9: return util::string_format("move %s,y:(%s+0x%02x)", ts_fobr[BIT(opcode, 0, 4)], ts_ar[BIT(opcode, 8, 3)], bitswap<7>(opcode, 16, 15, 14, 13, 12, 11, 6));
case 10: return util::string_format("add #0x%02x,%s", BIT(opcode, 8, 6), ts_acc[BIT(opcode, 3, 1)]);
- case 11: return util::string_format("add #[eximm16],%s", ts_acc[BIT(opcode, 3, 1)]);
+ case 11: return util::string_format("add #0x%06x,%s", exv, ts_acc[BIT(opcode, 3, 1)]);
case 12: return util::string_format("and #0x%02x,%s", BIT(opcode, 8, 6), ts_acc[BIT(opcode, 3, 1)]);
- case 13: return util::string_format("and #[eximm16],%s", ts_acc[BIT(opcode, 3, 1)]);
+ case 13: return util::string_format("and #0x%06x,%s", exv, ts_acc[BIT(opcode, 3, 1)]);
case 14: return util::string_format("andi #0x%02x,%s", BIT(opcode, 8, 8), ts_ctrl[BIT(opcode, 0, 2)]);
case 15: return util::string_format("asl #0x%02x,%s,%s", BIT(opcode, 1, 6), ts_acc[BIT(opcode, 7, 1)], ts_acc[BIT(opcode, 0, 1)]);
case 16: return util::string_format("asl %s,%s,%s", ts_actrl[BIT(opcode, 1, 3)], ts_acc[BIT(opcode, 4, 1)], ts_acc[BIT(opcode, 0, 1)]);
@@ -35058,7 +35058,7 @@ std::string dsp563xx_disassembler::disasm_npar(u8 knpar, u32 opcode, u32 exv, u3
case 79: return util::string_format("btst #%d,%s", BIT(opcode, 0, 5), ts_sbr[BIT(opcode, 8, 6)]);
case 80: return util::string_format("clb %s,%s", ts_acc[BIT(opcode, 1, 1)], ts_acc[BIT(opcode, 0, 1)]);
case 81: return util::string_format("cmp #0x%02x,%s", BIT(opcode, 8, 6), ts_acc[BIT(opcode, 3, 1)]);
- case 82: return util::string_format("cmp #[eximm16],%s", ts_acc[BIT(opcode, 3, 1)]);
+ case 82: return util::string_format("cmp #0x%06x,%s", exv, ts_acc[BIT(opcode, 3, 1)]);
case 83: return util::string_format("cmpu %s,%s", ts_dao3[BIT(opcode, 1, 3)], ts_acc[BIT(opcode, 0, 1)]);
case 84: return "debug";
case 85: return util::string_format("debug%s", ts_cc[BIT(opcode, 0, 4)]);
@@ -35077,7 +35077,7 @@ std::string dsp563xx_disassembler::disasm_npar(u8 knpar, u32 opcode, u32 exv, u3
case 98: return util::string_format("dor forever,0x%06x", (pc+exv) & 0xffffff);
case 99: return "enddo";
case 100: return util::string_format("eor #0x%02x,%s", BIT(opcode, 8, 6), ts_acc[BIT(opcode, 3, 1)]);
- case 101: return util::string_format("eor #[eximm24],%s", ts_acc[BIT(opcode, 3, 1)]);
+ case 101: return util::string_format("eor #0x%06x,%s", exv, ts_acc[BIT(opcode, 3, 1)]);
case 102: return util::string_format("extract %s,%s,d", ts_actrl[BIT(opcode, 1, 3)], ts_acc[BIT(opcode, 4, 1)]);
case 103: return util::string_format("extract #[exco],%s,%s", ts_acc[BIT(opcode, 4, 1)], ts_acc[BIT(opcode, 0, 1)]);
case 104: return util::string_format("extractu %s,%s,d", ts_actrl[BIT(opcode, 1, 3)], ts_acc[BIT(opcode, 4, 1)]);
@@ -35127,10 +35127,10 @@ std::string dsp563xx_disassembler::disasm_npar(u8 knpar, u32 opcode, u32 exv, u3
case 148: return util::string_format("lua %s,%s", ts_eam4[BIT(opcode, 8, 5)], ts_fvbr1[BIT(opcode, 0, 5)]);
case 149: return util::string_format("lua (%s+0x%02x),%s", ts_ar[BIT(opcode, 8, 3)], bitswap<7>(opcode, 13, 12, 11, 7, 6, 5, 4), ts_agu[BIT(opcode, 0, 4)]);
case 150: return util::string_format("mac %s%s,#0x%01x,%s", ts_sign[BIT(opcode, 2, 1)], ts_damo2[BIT(opcode, 4, 2)], BIT(opcode, 8, 4), ts_acc[BIT(opcode, 3, 1)]);
- case 151: return util::string_format("maci %s#[eximm24],%s,%s", ts_sign[BIT(opcode, 2, 1)], ts_damo2[BIT(opcode, 4, 2)], ts_acc[BIT(opcode, 3, 1)]);
+ case 151: return util::string_format("maci %s#0x%06x,%s,%s", ts_sign[BIT(opcode, 2, 1)], exv, ts_damo2[BIT(opcode, 4, 2)], ts_acc[BIT(opcode, 3, 1)]);
case 152: return util::string_format("mac%s %s%s,%s,%s", ts_ss1[BIT(opcode, 6, 1)], ts_sign[BIT(opcode, 4, 1)], ts_damo4_a[BIT(opcode, 0, 4)], ts_damo4_b[BIT(opcode, 0, 4)], ts_acc[BIT(opcode, 5, 1)]);
case 153: return util::string_format("maccr %s%s,#0x%01x,%s", ts_sign[BIT(opcode, 2, 1)], ts_damo2[BIT(opcode, 4, 2)], BIT(opcode, 8, 4), ts_acc[BIT(opcode, 3, 1)]);
- case 154: return util::string_format("macri %s#[eximm24],%s,%s", ts_sign[BIT(opcode, 2, 1)], ts_damo2[BIT(opcode, 4, 2)], ts_acc[BIT(opcode, 3, 1)]);
+ case 154: return util::string_format("macri %s#0x%06x,%s,%s", ts_sign[BIT(opcode, 2, 1)], exv, ts_damo2[BIT(opcode, 4, 2)], ts_acc[BIT(opcode, 3, 1)]);
case 155: return util::string_format("merge %s,%s", ts_dao3[BIT(opcode, 1, 3)], ts_acc[BIT(opcode, 0, 1)]);
case 156: return util::string_format("movec %s:%s,%s", ts_xyc[BIT(opcode, 6, 1)], ts_eam1[BIT(opcode, 8, 6)], ts_fvbr2[BIT(opcode, 0, 5)]);
case 157: return util::string_format("movec %s,%s:%s", ts_fvbr2[BIT(opcode, 0, 5)], ts_xyc[BIT(opcode, 6, 1)], ts_eam1[BIT(opcode, 8, 6)]);
@@ -35172,13 +35172,13 @@ std::string dsp563xx_disassembler::disasm_npar(u8 knpar, u32 opcode, u32 exv, u3
case 193: return util::string_format("movep y:0x%06x,%s", 0xffff80 + bitswap<6>(opcode, 6, 4, 3, 2, 1, 0), ts_sbr[BIT(opcode, 8, 6)]);
case 194: return util::string_format("mpy %s%s,#0x%01x,%s", ts_sign[BIT(opcode, 2, 1)], ts_damo2[BIT(opcode, 4, 2)], BIT(opcode, 8, 4), ts_acc[BIT(opcode, 3, 1)]);
case 195: return util::string_format("mpy%s %s%s,%s,%s", ts_ss1[BIT(opcode, 6, 1)], ts_sign[BIT(opcode, 4, 1)], ts_damo4_a[BIT(opcode, 0, 4)], ts_damo4_b[BIT(opcode, 0, 4)], ts_acc[BIT(opcode, 5, 1)]);
- case 196: return util::string_format("mpyi %s#[eximm24],%s,%s", ts_sign[BIT(opcode, 2, 1)], ts_damo2[BIT(opcode, 4, 2)], ts_acc[BIT(opcode, 3, 1)]);
+ case 196: return util::string_format("mpyi %s#0x%06x,%s,%s", ts_sign[BIT(opcode, 2, 1)], exv, ts_damo2[BIT(opcode, 4, 2)], ts_acc[BIT(opcode, 3, 1)]);
case 197: return util::string_format("mpyr %s%s,#0x%01x,%s", ts_sign[BIT(opcode, 2, 1)], ts_damo2[BIT(opcode, 4, 2)], BIT(opcode, 8, 4), ts_acc[BIT(opcode, 3, 1)]);
- case 198: return util::string_format("mpyri %s#[eximm24],%s,%s", ts_sign[BIT(opcode, 2, 1)], ts_damo2[BIT(opcode, 4, 2)], ts_acc[BIT(opcode, 3, 1)]);
+ case 198: return util::string_format("mpyri %s#0x%06x,%s,%s", ts_sign[BIT(opcode, 2, 1)], exv, ts_damo2[BIT(opcode, 4, 2)], ts_acc[BIT(opcode, 3, 1)]);
case 199: return util::string_format("norm %s,%s", ts_ar[BIT(opcode, 8, 3)], ts_acc[BIT(opcode, 3, 1)]);
case 200: return util::string_format("normf %s,%s", ts_actrl[BIT(opcode, 1, 3)], ts_acc[BIT(opcode, 0, 1)]);
case 201: return util::string_format("or #0x%02x,%s", BIT(opcode, 8, 6), ts_acc[BIT(opcode, 3, 1)]);
- case 202: return util::string_format("or #[eximm24],%s", ts_acc[BIT(opcode, 3, 1)]);
+ case 202: return util::string_format("or #0x%06x,%s", exv, ts_acc[BIT(opcode, 3, 1)]);
case 203: return util::string_format("ori #0x%02x,%s", BIT(opcode, 8, 8), ts_ctrl[BIT(opcode, 0, 2)]);
case 204: return "pflush";
case 205: return "pflushun";
@@ -35198,7 +35198,7 @@ std::string dsp563xx_disassembler::disasm_npar(u8 knpar, u32 opcode, u32 exv, u3
case 219: return "rts";
case 220: return "stop";
case 221: return util::string_format("sub #0x%02x,%s", BIT(opcode, 8, 6), ts_acc[BIT(opcode, 3, 1)]);
- case 222: return util::string_format("sub #[eximm16],%s", ts_acc[BIT(opcode, 3, 1)]);
+ case 222: return util::string_format("sub #0x%06x,%s", exv, ts_acc[BIT(opcode, 3, 1)]);
case 223: return util::string_format("t%s %s,%s", ts_cc[BIT(opcode, 12, 4)], ts_daos3[bitswap<4>(opcode, 3, 6, 5, 4)], ts_acc[BIT(opcode, 3, 1)]);
case 224: return util::string_format("t%s %s,%s %s,%s", ts_cc[BIT(opcode, 12, 4)], ts_daos3[bitswap<4>(opcode, 3, 6, 5, 4)], ts_acc[BIT(opcode, 3, 1)], ts_ar[BIT(opcode, 8, 3)], ts_ar[BIT(opcode, 0, 3)]);
case 225: return util::string_format("t%s %s,%s", ts_cc[BIT(opcode, 12, 4)], ts_ar[BIT(opcode, 8, 3)], ts_ar[BIT(opcode, 0, 3)]);