From 5832c7c2de9ce0ca1baa840050d689bf2b79a96b Mon Sep 17 00:00:00 2001 From: Sven Schnelle Date: Mon, 16 Apr 2018 15:00:04 +0200 Subject: split up hp98603 basic rom card The 98603A and 98603B cards have different base addresses and sizes for the rom region. Split up the cards so that we can boot HP BASIC 4 and HP BASIC 5.1. Signed-off-by: Sven Schnelle --- scripts/src/bus.lua | 6 ++- src/devices/bus/hp_dio/hp98603.cpp | 94 ------------------------------------- src/devices/bus/hp_dio/hp98603.h | 38 --------------- src/devices/bus/hp_dio/hp98603a.cpp | 77 ++++++++++++++++++++++++++++++ src/devices/bus/hp_dio/hp98603a.h | 38 +++++++++++++++ src/devices/bus/hp_dio/hp98603b.cpp | 72 ++++++++++++++++++++++++++++ src/devices/bus/hp_dio/hp98603b.h | 38 +++++++++++++++ src/mame/drivers/hp9k_3xx.cpp | 10 ++-- 8 files changed, 235 insertions(+), 138 deletions(-) delete mode 100644 src/devices/bus/hp_dio/hp98603.cpp delete mode 100644 src/devices/bus/hp_dio/hp98603.h create mode 100644 src/devices/bus/hp_dio/hp98603a.cpp create mode 100644 src/devices/bus/hp_dio/hp98603a.h create mode 100644 src/devices/bus/hp_dio/hp98603b.cpp create mode 100644 src/devices/bus/hp_dio/hp98603b.h diff --git a/scripts/src/bus.lua b/scripts/src/bus.lua index d57cd09c690..b2e0b5abe27 100644 --- a/scripts/src/bus.lua +++ b/scripts/src/bus.lua @@ -836,8 +836,10 @@ if (BUSES["HPDIO"]~=null) then MAME_DIR .. "src/devices/bus/hp_dio/hp_dio.h", MAME_DIR .. "src/devices/bus/hp_dio/hp98544.cpp", MAME_DIR .. "src/devices/bus/hp_dio/hp98544.h", - MAME_DIR .. "src/devices/bus/hp_dio/hp98603.cpp", - MAME_DIR .. "src/devices/bus/hp_dio/hp98603.h", + MAME_DIR .. "src/devices/bus/hp_dio/hp98603a.cpp", + MAME_DIR .. "src/devices/bus/hp_dio/hp98603a.h", + MAME_DIR .. "src/devices/bus/hp_dio/hp98603b.cpp", + MAME_DIR .. "src/devices/bus/hp_dio/hp98603b.h", MAME_DIR .. "src/devices/bus/hp_dio/hp98644.cpp", MAME_DIR .. "src/devices/bus/hp_dio/hp98644.h", } diff --git a/src/devices/bus/hp_dio/hp98603.cpp b/src/devices/bus/hp_dio/hp98603.cpp deleted file mode 100644 index a9b9718d7d4..00000000000 --- a/src/devices/bus/hp_dio/hp98603.cpp +++ /dev/null @@ -1,94 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:Sven Schnelle -/*************************************************************************** - - HP98603 BASIC ROM card - -***************************************************************************/ - -#include "emu.h" -#include "hp98603.h" - -DEFINE_DEVICE_TYPE(HPDIO_98603, dio16_98603_device, "dio98603", "HP98603 BASIC ROM card") - -#define HP98603_ROM_REGION "98603_rom" - -ROM_START(hp98603) - ROM_REGION(0x100000, HP98603_ROM_REGION, 0) - - ROM_SYSTEM_BIOS(0, "basic4", "BASIC 4.0") - ROMX_LOAD("98603_80001.bin", 0x00001, 32768, CRC(5d8c9657) SHA1(f5d89e7f8a61072f362532d1b5e05f5b5e3f42b3), ROM_SKIP(1) | ROM_BIOS(1)) - ROMX_LOAD("98603_80002.bin", 0x10001, 32768, CRC(7e4e0ca8) SHA1(3230c7825f5058a1e1a06776da6064b049417b50), ROM_SKIP(1) | ROM_BIOS(1)) - ROMX_LOAD("98603_80003.bin", 0x20001, 32768, CRC(b5da5f81) SHA1(69578ee197531e9474a0edb4c2f068b20118d25f), ROM_SKIP(1) | ROM_BIOS(1)) - ROMX_LOAD("98603_80004.bin", 0x30001, 32768, CRC(ea050835) SHA1(3be7c1bd394b11fdfee38ebf40beb9352f38722d), ROM_SKIP(1) | ROM_BIOS(1)) - - ROMX_LOAD("98603_80005.bin", 0x00000, 32768, CRC(1380d489) SHA1(e346857d9df9a06269f9fa57684fbe64edd0134b), ROM_SKIP(1) | ROM_BIOS(1)) - ROMX_LOAD("98603_80006.bin", 0x10000, 32768, CRC(19752031) SHA1(5e28ee9d527b297a8898dde50ab6e41bbc0c2572), ROM_SKIP(1) | ROM_BIOS(1)) - ROMX_LOAD("98603_80007.bin", 0x20000, 32768, CRC(72aa2225) SHA1(3c92cdd40adc7438d30b95eae14e4497b7e14f38), ROM_SKIP(1) | ROM_BIOS(1)) - ROMX_LOAD("98603_80008.bin", 0x30000, 32768, CRC(f617ae2e) SHA1(f59b63058e7e87eabc5dc5233895bb57579eb3f7), ROM_SKIP(1) | ROM_BIOS(1)) - - ROMX_LOAD("98603_80009.bin", 0x40001, 32768, CRC(9c128571) SHA1(7827cfbf710d8bba3ce9b42ec3368b17a5b5ff78), ROM_SKIP(1) | ROM_BIOS(1)) - ROMX_LOAD("98603_80010.bin", 0x50001, 32768, CRC(12528317) SHA1(e11d6c40334c41be68e2717d816e0895f8f7afa8), ROM_SKIP(1) | ROM_BIOS(1)) - ROMX_LOAD("98603_80011.bin", 0x60001, 32768, CRC(1d279451) SHA1(2ce966b8499d2d810056d147f71ba2b6cc909bc6), ROM_SKIP(1) | ROM_BIOS(1)) - ROMX_LOAD("98603_80012.bin", 0x70001, 32768, CRC(a1d6374e) SHA1(ca860b762503a05a4bfbd17a77bef28d01d7d279), ROM_SKIP(1) | ROM_BIOS(1)) - - ROMX_LOAD("98603_80013.bin", 0x40000, 32768, CRC(e554d97e) SHA1(c792c4f0097bed032ca31c88fde660d4db25b3dc), ROM_SKIP(1) | ROM_BIOS(1)) - ROMX_LOAD("98603_80014.bin", 0x50000, 32768, CRC(c0db7e02) SHA1(add3e7312ac07e5ed4281aae2d46e1a4389d6ea2), ROM_SKIP(1) | ROM_BIOS(1)) - ROMX_LOAD("98603_80015.bin", 0x60000, 32768, CRC(f85bb699) SHA1(bd7f690e3b4fb8952517b0acd6ac878cd50f5736), ROM_SKIP(1) | ROM_BIOS(1)) - ROMX_LOAD("98603_80016.bin", 0x70000, 32768, CRC(d887acab) SHA1(a9cbbaa5f053f374d6cbda614b727df35a61ace1), ROM_SKIP(1) | ROM_BIOS(1)) - - ROM_SYSTEM_BIOS(1, "basic51", "BASIC 5.1") - ROMX_LOAD("u1.bin", 0x00000, 65536, CRC(ba50d9e0) SHA1(064e3cbbc7ee01f279a289684616ae3b8744a7c9), ROM_SKIP(1) | ROM_BIOS(2)) - ROMX_LOAD("u2.bin", 0x20000, 65536, CRC(65f58d3e) SHA1(8367cecb46fa6f9abe9e78b42c25ce8699d5d3f3), ROM_SKIP(1) | ROM_BIOS(2)) - ROMX_LOAD("u3.bin", 0x40000, 65536, CRC(9bc70573) SHA1(b7e375e11f6758d59d32236fc1c42eafc892d247), ROM_SKIP(1) | ROM_BIOS(2)) - ROMX_LOAD("u4.bin", 0x60000, 65536, CRC(52debeba) SHA1(996e83e604501979fd80ae47ff1cda9890613982), ROM_SKIP(1) | ROM_BIOS(2)) - ROMX_LOAD("u5.bin", 0x80000, 65536, CRC(93b4bce8) SHA1(77efec9a95b9e543e1cdb00196d1794ca0c8b4ba), ROM_SKIP(1) | ROM_BIOS(2)) - ROMX_LOAD("u6.bin", 0xa0000, 65536, CRC(bda3d054) SHA1(c83d6f571ce5aa63ad3954ac02ff4069c01a1464), ROM_SKIP(1) | ROM_BIOS(2)) - - ROMX_LOAD("u9.bin", 0x00001, 65536, CRC(009e9fcb) SHA1(520f583a826516f7d676391daf31ed035162c263), ROM_SKIP(1) | ROM_BIOS(2)) - ROMX_LOAD("u10.bin", 0x20001, 65536, CRC(84f90a1d) SHA1(9358aa7fa83ed9617d318936cbab79002853b0ce), ROM_SKIP(1) | ROM_BIOS(2)) - ROMX_LOAD("u11.bin", 0x40001, 65536, CRC(e486e0f3) SHA1(66b5dd6c2c277156ad6c3ee5b99c34e243d897be), ROM_SKIP(1) | ROM_BIOS(2)) - ROMX_LOAD("u12.bin", 0x60001, 65536, CRC(d5a08c7b) SHA1(be997cf9bbdb8fdd6c7e95754747016293c51c7f), ROM_SKIP(1) | ROM_BIOS(2)) - ROMX_LOAD("u13.bin", 0x80001, 65536, CRC(9811c34c) SHA1(1655cac651889950b881e6be72f035c7de0a1aed), ROM_SKIP(1) | ROM_BIOS(2)) - ROMX_LOAD("u14.bin", 0xa0001, 65536, CRC(96527d4e) SHA1(6706ab97eab4465ea4fa2d6b07e8107468e83818), ROM_SKIP(1) | ROM_BIOS(2)) -ROM_END - -MACHINE_CONFIG_START(dio16_98603_device::device_add_mconfig) -MACHINE_CONFIG_END - -const tiny_rom_entry *dio16_98603_device::device_rom_region() const -{ - return ROM_NAME(hp98603); -} - -dio16_98603_device::dio16_98603_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - dio16_98603_device(mconfig, HPDIO_98603, tag, owner, clock) -{ -} - -dio16_98603_device::dio16_98603_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) : - device_t(mconfig, type, tag, owner, clock), - device_dio16_card_interface(mconfig, *this) -{ -} - -void dio16_98603_device::device_start() -{ - set_dio_device(); -} - -void dio16_98603_device::device_reset() -{ - m_rom = device().machine().root_device().memregion(this->subtag(HP98603_ROM_REGION).c_str())->base(); - m_dio->install_memory(0x100000, 0x1fffff, read16_delegate(FUNC(dio16_98603_device::rom_r), this), - write16_delegate(FUNC(dio16_98603_device::rom_w), this)); -} - -READ16_MEMBER(dio16_98603_device::rom_r) -{ - return m_rom[offset*2] | (m_rom[offset*2+1] << 8); -} - -WRITE16_MEMBER(dio16_98603_device::rom_w) -{ -} diff --git a/src/devices/bus/hp_dio/hp98603.h b/src/devices/bus/hp_dio/hp98603.h deleted file mode 100644 index c9db3fd723a..00000000000 --- a/src/devices/bus/hp_dio/hp98603.h +++ /dev/null @@ -1,38 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:Sven Schnelle - -#ifndef MAME_BUS_HPDIO_98603_H -#define MAME_BUS_HPDIO_98603_H - -#pragma once - -#include "hp_dio.h" - -class dio16_98603_device : - public device_t, - public device_dio16_card_interface -{ -public: - // construction/destruction - dio16_98603_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - DECLARE_READ16_MEMBER(rom_r); - DECLARE_WRITE16_MEMBER(rom_w); - -protected: - dio16_98603_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); - - // device-level overrides - virtual void device_start() override; - virtual void device_reset() override; - - // optional information overrides - virtual void device_add_mconfig(machine_config &config) override; - virtual const tiny_rom_entry *device_rom_region() const override; - -private: - uint8_t *m_rom; -}; - -DECLARE_DEVICE_TYPE(HPDIO_98603, dio16_98603_device) - -#endif // MAME_BUS_HPDIO_98603_H diff --git a/src/devices/bus/hp_dio/hp98603a.cpp b/src/devices/bus/hp_dio/hp98603a.cpp new file mode 100644 index 00000000000..c49f5e99dd6 --- /dev/null +++ b/src/devices/bus/hp_dio/hp98603a.cpp @@ -0,0 +1,77 @@ +// license:BSD-3-Clause +// copyright-holders:Sven Schnelle +/*************************************************************************** + + HP98603A BASIC ROM card + +***************************************************************************/ + +#include "emu.h" +#include "hp98603a.h" + +DEFINE_DEVICE_TYPE(HPDIO_98603A, dio16_98603a_device, "dio98603a", "HP98603A BASIC 4.0 ROM card") + +#define HP98603A_ROM_REGION "98603a_rom" + +ROM_START(hp98603a) + ROM_REGION(0x80000, HP98603A_ROM_REGION, 0) + ROM_LOAD16_BYTE("98603_80001.bin", 0x00001, 32768, CRC(5d8c9657) SHA1(f5d89e7f8a61072f362532d1b5e05f5b5e3f42b3)) + ROM_LOAD16_BYTE("98603_80002.bin", 0x10001, 32768, CRC(7e4e0ca8) SHA1(3230c7825f5058a1e1a06776da6064b049417b50)) + ROM_LOAD16_BYTE("98603_80003.bin", 0x20001, 32768, CRC(b5da5f81) SHA1(69578ee197531e9474a0edb4c2f068b20118d25f)) + ROM_LOAD16_BYTE("98603_80004.bin", 0x30001, 32768, CRC(ea050835) SHA1(3be7c1bd394b11fdfee38ebf40beb9352f38722d)) + + ROM_LOAD16_BYTE("98603_80005.bin", 0x00000, 32768, CRC(1380d489) SHA1(e346857d9df9a06269f9fa57684fbe64edd0134b)) + ROM_LOAD16_BYTE("98603_80006.bin", 0x10000, 32768, CRC(19752031) SHA1(5e28ee9d527b297a8898dde50ab6e41bbc0c2572)) + ROM_LOAD16_BYTE("98603_80007.bin", 0x20000, 32768, CRC(72aa2225) SHA1(3c92cdd40adc7438d30b95eae14e4497b7e14f38)) + ROM_LOAD16_BYTE("98603_80008.bin", 0x30000, 32768, CRC(f617ae2e) SHA1(f59b63058e7e87eabc5dc5233895bb57579eb3f7)) + + ROM_LOAD16_BYTE("98603_80009.bin", 0x40001, 32768, CRC(9c128571) SHA1(7827cfbf710d8bba3ce9b42ec3368b17a5b5ff78)) + ROM_LOAD16_BYTE("98603_80010.bin", 0x50001, 32768, CRC(12528317) SHA1(e11d6c40334c41be68e2717d816e0895f8f7afa8)) + ROM_LOAD16_BYTE("98603_80011.bin", 0x60001, 32768, CRC(1d279451) SHA1(2ce966b8499d2d810056d147f71ba2b6cc909bc6)) + ROM_LOAD16_BYTE("98603_80012.bin", 0x70001, 32768, CRC(a1d6374e) SHA1(ca860b762503a05a4bfbd17a77bef28d01d7d279)) + + ROM_LOAD16_BYTE("98603_80013.bin", 0x40000, 32768, CRC(e554d97e) SHA1(c792c4f0097bed032ca31c88fde660d4db25b3dc)) + ROM_LOAD16_BYTE("98603_80014.bin", 0x50000, 32768, CRC(c0db7e02) SHA1(add3e7312ac07e5ed4281aae2d46e1a4389d6ea2)) + ROM_LOAD16_BYTE("98603_80015.bin", 0x60000, 32768, CRC(f85bb699) SHA1(bd7f690e3b4fb8952517b0acd6ac878cd50f5736)) + ROM_LOAD16_BYTE("98603_80016.bin", 0x70000, 32768, CRC(d887acab) SHA1(a9cbbaa5f053f374d6cbda614b727df35a61ace1)) +ROM_END + +MACHINE_CONFIG_START(dio16_98603a_device::device_add_mconfig) +MACHINE_CONFIG_END + +const tiny_rom_entry *dio16_98603a_device::device_rom_region() const +{ + return ROM_NAME(hp98603a); +} + +dio16_98603a_device::dio16_98603a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : + dio16_98603a_device(mconfig, HPDIO_98603A, tag, owner, clock) +{ +} + +dio16_98603a_device::dio16_98603a_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) : + device_t(mconfig, type, tag, owner, clock), + device_dio16_card_interface(mconfig, *this) +{ +} + +void dio16_98603a_device::device_start() +{ + set_dio_device(); +} + +void dio16_98603a_device::device_reset() +{ + m_rom = device().machine().root_device().memregion(this->subtag(HP98603A_ROM_REGION).c_str())->base(); + m_dio->install_memory(0x80000, 0xfffff, read16_delegate(FUNC(dio16_98603a_device::rom_r), this), + write16_delegate(FUNC(dio16_98603a_device::rom_w), this)); +} + +READ16_MEMBER(dio16_98603a_device::rom_r) +{ + return m_rom[offset*2] | (m_rom[offset*2+1] << 8); +} + +WRITE16_MEMBER(dio16_98603a_device::rom_w) +{ +} diff --git a/src/devices/bus/hp_dio/hp98603a.h b/src/devices/bus/hp_dio/hp98603a.h new file mode 100644 index 00000000000..30a501b1b39 --- /dev/null +++ b/src/devices/bus/hp_dio/hp98603a.h @@ -0,0 +1,38 @@ +// license:BSD-3-Clause +// copyright-holders:Sven Schnelle + +#ifndef MAME_BUS_HPDIO_98603A_H +#define MAME_BUS_HPDIO_98603A_H + +#pragma once + +#include "hp_dio.h" + +class dio16_98603a_device : + public device_t, + public device_dio16_card_interface +{ +public: + // construction/destruction + dio16_98603a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + DECLARE_READ16_MEMBER(rom_r); + DECLARE_WRITE16_MEMBER(rom_w); + +protected: + dio16_98603a_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); + + // device-level overrides + virtual void device_start() override; + virtual void device_reset() override; + + // optional information overrides + virtual void device_add_mconfig(machine_config &config) override; + virtual const tiny_rom_entry *device_rom_region() const override; + +private: + uint8_t *m_rom; +}; + +DECLARE_DEVICE_TYPE(HPDIO_98603A, dio16_98603a_device) + +#endif // MAME_BUS_HPDIO_98603A_H diff --git a/src/devices/bus/hp_dio/hp98603b.cpp b/src/devices/bus/hp_dio/hp98603b.cpp new file mode 100644 index 00000000000..41a49dc61e0 --- /dev/null +++ b/src/devices/bus/hp_dio/hp98603b.cpp @@ -0,0 +1,72 @@ +// license:BSD-3-Clause +// copyright-holders:Sven Schnelle +/*************************************************************************** + + HP98603B BASIC ROM card + +***************************************************************************/ + +#include "emu.h" +#include "hp98603b.h" + +DEFINE_DEVICE_TYPE(HPDIO_98603B, dio16_98603b_device, "dio98603b", "HP98603 BASIC ROM card") + +#define HP98603B_ROM_REGION "98603b_rom" + +ROM_START(hp98603b) + ROM_REGION(0x100000, HP98603B_ROM_REGION, 0) + + ROM_LOAD16_BYTE("u1.bin", 0x00000, 65536, CRC(ba50d9e0) SHA1(064e3cbbc7ee01f279a289684616ae3b8744a7c9)) + ROM_LOAD16_BYTE("u2.bin", 0x20000, 65536, CRC(65f58d3e) SHA1(8367cecb46fa6f9abe9e78b42c25ce8699d5d3f3)) + ROM_LOAD16_BYTE("u3.bin", 0x40000, 65536, CRC(9bc70573) SHA1(b7e375e11f6758d59d32236fc1c42eafc892d247)) + ROM_LOAD16_BYTE("u4.bin", 0x60000, 65536, CRC(52debeba) SHA1(996e83e604501979fd80ae47ff1cda9890613982)) + ROM_LOAD16_BYTE("u5.bin", 0x80000, 65536, CRC(93b4bce8) SHA1(77efec9a95b9e543e1cdb00196d1794ca0c8b4ba)) + ROM_LOAD16_BYTE("u6.bin", 0xa0000, 65536, CRC(bda3d054) SHA1(c83d6f571ce5aa63ad3954ac02ff4069c01a1464)) + + ROM_LOAD16_BYTE("u9.bin", 0x00001, 65536, CRC(009e9fcb) SHA1(520f583a826516f7d676391daf31ed035162c263)) + ROM_LOAD16_BYTE("u10.bin", 0x20001, 65536, CRC(84f90a1d) SHA1(9358aa7fa83ed9617d318936cbab79002853b0ce)) + ROM_LOAD16_BYTE("u11.bin", 0x40001, 65536, CRC(e486e0f3) SHA1(66b5dd6c2c277156ad6c3ee5b99c34e243d897be)) + ROM_LOAD16_BYTE("u12.bin", 0x60001, 65536, CRC(d5a08c7b) SHA1(be997cf9bbdb8fdd6c7e95754747016293c51c7f)) + ROM_LOAD16_BYTE("u13.bin", 0x80001, 65536, CRC(9811c34c) SHA1(1655cac651889950b881e6be72f035c7de0a1aed)) + ROM_LOAD16_BYTE("u14.bin", 0xa0001, 65536, CRC(96527d4e) SHA1(6706ab97eab4465ea4fa2d6b07e8107468e83818)) +ROM_END + +MACHINE_CONFIG_START(dio16_98603b_device::device_add_mconfig) +MACHINE_CONFIG_END + +const tiny_rom_entry *dio16_98603b_device::device_rom_region() const +{ + return ROM_NAME(hp98603b); +} + +dio16_98603b_device::dio16_98603b_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : + dio16_98603b_device(mconfig, HPDIO_98603B, tag, owner, clock) +{ +} + +dio16_98603b_device::dio16_98603b_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) : + device_t(mconfig, type, tag, owner, clock), + device_dio16_card_interface(mconfig, *this) +{ +} + +void dio16_98603b_device::device_start() +{ + set_dio_device(); +} + +void dio16_98603b_device::device_reset() +{ + m_rom = device().machine().root_device().memregion(this->subtag(HP98603B_ROM_REGION).c_str())->base(); + m_dio->install_memory(0x100000, 0x1fffff, read16_delegate(FUNC(dio16_98603b_device::rom_r), this), + write16_delegate(FUNC(dio16_98603b_device::rom_w), this)); +} + +READ16_MEMBER(dio16_98603b_device::rom_r) +{ + return m_rom[offset*2] | (m_rom[offset*2+1] << 8); +} + +WRITE16_MEMBER(dio16_98603b_device::rom_w) +{ +} diff --git a/src/devices/bus/hp_dio/hp98603b.h b/src/devices/bus/hp_dio/hp98603b.h new file mode 100644 index 00000000000..8d1780432a5 --- /dev/null +++ b/src/devices/bus/hp_dio/hp98603b.h @@ -0,0 +1,38 @@ +// license:BSD-3-Clause +// copyright-holders:Sven Schnelle + +#ifndef MAME_BUS_HPDIO_98603B_H +#define MAME_BUS_HPDIO_98603B_H + +#pragma once + +#include "hp_dio.h" + +class dio16_98603b_device : + public device_t, + public device_dio16_card_interface +{ +public: + // construction/destruction + dio16_98603b_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + DECLARE_READ16_MEMBER(rom_r); + DECLARE_WRITE16_MEMBER(rom_w); + +protected: + dio16_98603b_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); + + // device-level overrides + virtual void device_start() override; + virtual void device_reset() override; + + // optional information overrides + virtual void device_add_mconfig(machine_config &config) override; + virtual const tiny_rom_entry *device_rom_region() const override; + +private: + uint8_t *m_rom; +}; + +DECLARE_DEVICE_TYPE(HPDIO_98603B, dio16_98603b_device) + +#endif // MAME_BUS_HPDIO_98603B_H diff --git a/src/mame/drivers/hp9k_3xx.cpp b/src/mame/drivers/hp9k_3xx.cpp index 9af80b9fff4..40176f88855 100644 --- a/src/mame/drivers/hp9k_3xx.cpp +++ b/src/mame/drivers/hp9k_3xx.cpp @@ -63,7 +63,8 @@ #include "bus/hp_dio/hp98544.h" #include "bus/hp_hil/hp_hil.h" #include "bus/hp_hil/hil_devices.h" -#include "bus/hp_dio/hp98603.h" +#include "bus/hp_dio/hp98603a.h" +#include "bus/hp_dio/hp98603b.h" #include "bus/hp_dio/hp98644.h" #include "screen.h" #include "speaker.h" @@ -383,7 +384,8 @@ READ8_MEMBER(hp9k3xx_state::iocpu_test0_r) static SLOT_INTERFACE_START(dio16_cards) SLOT_INTERFACE("98544", HPDIO_98544) /* 98544 High Resolution Monochrome Card */ - SLOT_INTERFACE("98603", HPDIO_98603) /* 98603 ROM BASIC */ + SLOT_INTERFACE("98603a", HPDIO_98603A) /* 98603A ROM BASIC (4.0) */ + SLOT_INTERFACE("98603b", HPDIO_98603B) /* 98603B ROM BASIC (5.1) */ SLOT_INTERFACE("98644", HPDIO_98644) /* 98644 Async serial interface */ SLOT_INTERFACE_END @@ -412,7 +414,7 @@ MACHINE_CONFIG_START(hp9k3xx_state::hp9k310) MCFG_DEVICE_ADD("diobus", DIO16, 0) MCFG_DIO16_CPU(":maincpu") MCFG_DIO16_SLOT_ADD("diobus", "sl1", dio16_cards, "98544", true) - MCFG_DIO16_SLOT_ADD("diobus", "sl2", dio16_cards, "98603", true) + MCFG_DIO16_SLOT_ADD("diobus", "sl2", dio16_cards, "98603b", true) MCFG_DIO16_SLOT_ADD("diobus", "sl3", dio16_cards, "98644", true) MCFG_DIO16_SLOT_ADD("diobus", "sl4", dio16_cards, nullptr, false) MACHINE_CONFIG_END @@ -442,7 +444,7 @@ MACHINE_CONFIG_START(hp9k3xx_state::hp9k320) MCFG_DEVICE_ADD("diobus", DIO32, 0) MCFG_DIO32_CPU(":maincpu") MCFG_DIO32_SLOT_ADD("diobus", "sl1", dio16_cards, "98544", true) - MCFG_DIO16_SLOT_ADD("diobus", "sl2", dio16_cards, "98603", true) + MCFG_DIO16_SLOT_ADD("diobus", "sl2", dio16_cards, "98603b", true) MCFG_DIO16_SLOT_ADD("diobus", "sl3", dio16_cards, "98644", true) MCFG_DIO32_SLOT_ADD("diobus", "sl4", dio16_cards, nullptr, false) MACHINE_CONFIG_END -- cgit v1.2.3