summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author angelosa <lordkale4@gmail.com>2025-04-16 20:00:29 +0200
committer angelosa <lordkale4@gmail.com>2025-04-16 20:01:05 +0200
commit8ac83f8b02dd011b877979adfa1c95d356f61b3c (patch)
treef5eb058410a5c49a2440530d40cc85a8e87297ab
parentf4b1881edcd952105e40d8c20af82205121b1ee8 (diff)
nec/pc98_sdip.cpp: drop template i/f
-rw-r--r--src/mame/nec/pc9801.cpp23
-rw-r--r--src/mame/nec/pc98_sdip.cpp36
-rw-r--r--src/mame/nec/pc98_sdip.h4
3 files changed, 18 insertions, 45 deletions
diff --git a/src/mame/nec/pc9801.cpp b/src/mame/nec/pc9801.cpp
index 65ee322a23a..69fa7ed8f93 100644
--- a/src/mame/nec/pc9801.cpp
+++ b/src/mame/nec/pc9801.cpp
@@ -1244,18 +1244,17 @@ void pc9801us_state::pc9801us_io(address_map &map)
else
logerror("SDIP: I/O $00f6 unrecognized write %02x\n", data);
}));
- map(0x841e, 0x841e).rw(m_sdip, FUNC(pc98_sdip_device::read<0x0>), FUNC(pc98_sdip_device::write<0x0>));
- map(0x851e, 0x851e).rw(m_sdip, FUNC(pc98_sdip_device::read<0x1>), FUNC(pc98_sdip_device::write<0x1>));
- map(0x861e, 0x861e).rw(m_sdip, FUNC(pc98_sdip_device::read<0x2>), FUNC(pc98_sdip_device::write<0x2>));
- map(0x871e, 0x871e).rw(m_sdip, FUNC(pc98_sdip_device::read<0x3>), FUNC(pc98_sdip_device::write<0x3>));
- map(0x881e, 0x881e).rw(m_sdip, FUNC(pc98_sdip_device::read<0x4>), FUNC(pc98_sdip_device::write<0x4>));
- map(0x891e, 0x891e).rw(m_sdip, FUNC(pc98_sdip_device::read<0x5>), FUNC(pc98_sdip_device::write<0x5>));
- map(0x8a1e, 0x8a1e).rw(m_sdip, FUNC(pc98_sdip_device::read<0x6>), FUNC(pc98_sdip_device::write<0x6>));
- map(0x8b1e, 0x8b1e).rw(m_sdip, FUNC(pc98_sdip_device::read<0x7>), FUNC(pc98_sdip_device::write<0x7>));
- map(0x8c1e, 0x8c1e).rw(m_sdip, FUNC(pc98_sdip_device::read<0x8>), FUNC(pc98_sdip_device::write<0x8>));
- map(0x8d1e, 0x8d1e).rw(m_sdip, FUNC(pc98_sdip_device::read<0x9>), FUNC(pc98_sdip_device::write<0x9>));
- map(0x8e1e, 0x8e1e).rw(m_sdip, FUNC(pc98_sdip_device::read<0xa>), FUNC(pc98_sdip_device::write<0xa>));
- map(0x8f1e, 0x8f1e).rw(m_sdip, FUNC(pc98_sdip_device::read<0xb>), FUNC(pc98_sdip_device::write<0xb>));
+
+ // 0x841e ~ 0x8f1e SDIP I/O mapping
+ // NOTE: split in half for pleasing emumem
+ map(0x841e, 0x841e).select(0x300).lrw8(
+ NAME([this] (offs_t offset) { return m_sdip->read(offset >> 8); }),
+ NAME([this] (offs_t offset, u8 data) { m_sdip->write(offset >> 8, data); })
+ );
+ map(0x881e, 0x881e).select(0x700).lrw8(
+ NAME([this] (offs_t offset) { return m_sdip->read((offset >> 8) + 4); }),
+ NAME([this] (offs_t offset, u8 data) { m_sdip->write((offset >> 8) + 4, data); })
+ );
// map(0x8f1f, 0x8f1f).w(m_sdip, FUNC(pc98_sdip_device::bank_w));
}
diff --git a/src/mame/nec/pc98_sdip.cpp b/src/mame/nec/pc98_sdip.cpp
index 02ddc595764..d22f1318bda 100644
--- a/src/mame/nec/pc98_sdip.cpp
+++ b/src/mame/nec/pc98_sdip.cpp
@@ -8,7 +8,7 @@ References:
- https://bitchinbits.foolproofdesigns.com/pc-9821/pc-9821-cheat-sheet/
TODO:
-- Discards saved settings in PC-9821 and later;
+- Discards saved settings in PC-9821 and later, access thru MMIO?
===================================================================================================
@@ -65,16 +65,16 @@ bool pc98_sdip_device::nvram_write(util::write_stream &file)
}
-template<unsigned port> u8 pc98_sdip_device::read(offs_t offset)
+u8 pc98_sdip_device::read(offs_t offset)
{
- u8 sdip_offset = port + (m_bank * 12);
+ u8 sdip_offset = offset + (m_bank * 12);
return m_sdip_ram[sdip_offset];
}
-template<unsigned port> void pc98_sdip_device::write(offs_t offset, u8 data)
+void pc98_sdip_device::write(offs_t offset, u8 data)
{
- u8 sdip_offset = port + (m_bank * 12);
+ u8 sdip_offset = offset + (m_bank * 12);
m_sdip_ram[sdip_offset] = data;
}
@@ -83,29 +83,3 @@ void pc98_sdip_device::bank_w(int state)
{
m_bank = !!(state);
}
-
-template u8 pc98_sdip_device::read<0>(offs_t offset);
-template u8 pc98_sdip_device::read<1>(offs_t offset);
-template u8 pc98_sdip_device::read<2>(offs_t offset);
-template u8 pc98_sdip_device::read<3>(offs_t offset);
-template u8 pc98_sdip_device::read<4>(offs_t offset);
-template u8 pc98_sdip_device::read<5>(offs_t offset);
-template u8 pc98_sdip_device::read<6>(offs_t offset);
-template u8 pc98_sdip_device::read<7>(offs_t offset);
-template u8 pc98_sdip_device::read<8>(offs_t offset);
-template u8 pc98_sdip_device::read<9>(offs_t offset);
-template u8 pc98_sdip_device::read<10>(offs_t offset);
-template u8 pc98_sdip_device::read<11>(offs_t offset);
-
-template void pc98_sdip_device::write<0>(offs_t offset, u8 data);
-template void pc98_sdip_device::write<1>(offs_t offset, u8 data);
-template void pc98_sdip_device::write<2>(offs_t offset, u8 data);
-template void pc98_sdip_device::write<3>(offs_t offset, u8 data);
-template void pc98_sdip_device::write<4>(offs_t offset, u8 data);
-template void pc98_sdip_device::write<5>(offs_t offset, u8 data);
-template void pc98_sdip_device::write<6>(offs_t offset, u8 data);
-template void pc98_sdip_device::write<7>(offs_t offset, u8 data);
-template void pc98_sdip_device::write<8>(offs_t offset, u8 data);
-template void pc98_sdip_device::write<9>(offs_t offset, u8 data);
-template void pc98_sdip_device::write<10>(offs_t offset, u8 data);
-template void pc98_sdip_device::write<11>(offs_t offset, u8 data);
diff --git a/src/mame/nec/pc98_sdip.h b/src/mame/nec/pc98_sdip.h
index 454b957affd..e2eda96fd8d 100644
--- a/src/mame/nec/pc98_sdip.h
+++ b/src/mame/nec/pc98_sdip.h
@@ -15,8 +15,8 @@ class pc98_sdip_device : public device_t,
public:
pc98_sdip_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template <unsigned port> u8 read(offs_t offset);
- template <unsigned port> void write(offs_t offset, u8 data);
+ u8 read(offs_t offset);
+ void write(offs_t offset, u8 data);
void bank_w(int state);
protected: