summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/onyx.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/onyx.cpp')
-rw-r--r--src/mame/drivers/onyx.cpp105
1 files changed, 10 insertions, 95 deletions
diff --git a/src/mame/drivers/onyx.cpp b/src/mame/drivers/onyx.cpp
index e23d61b2b89..0e4250ff4db 100644
--- a/src/mame/drivers/onyx.cpp
+++ b/src/mame/drivers/onyx.cpp
@@ -51,109 +51,15 @@ public:
onyx_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag)
, m_maincpu(*this, "maincpu")
- , m_ctc1(*this, "ctc1")
- , m_ctc2(*this, "ctc2")
- , m_ctc3(*this, "ctc3")
- , m_pio1(*this, "pio1")
- , m_pio2(*this, "pio2")
- , m_sio1(*this, "sio1")
- , m_sio2(*this, "sio2")
- , m_sio3(*this, "sio3")
- , m_sio4(*this, "sio4")
- , m_sio5(*this, "sio5")
{ }
DECLARE_MACHINE_RESET(c8002);
- DECLARE_READ8_MEMBER(io_r);
- DECLARE_WRITE8_MEMBER(io_w);
private:
- uint8_t m_term_data;
required_device<cpu_device> m_maincpu;
- required_device<z80ctc_device> m_ctc1;
- required_device<z80ctc_device> m_ctc2;
- required_device<z80ctc_device> m_ctc3;
- required_device<z80pio_device> m_pio1;
- required_device<z80pio_device> m_pio2;
- required_device<z80sio_device> m_sio1;
- required_device<z80sio_device> m_sio2;
- required_device<z80sio_device> m_sio3;
- required_device<z80sio_device> m_sio4;
- required_device<z80sio_device> m_sio5;
};
-READ8_MEMBER( onyx_state::io_r )
-{
- offset >>= 1;
- switch (offset >> 2)
- {
- case 0x00:
- return m_sio1->cd_ba_r(space, offset & 3);
- case 0x01:
- return m_sio2->cd_ba_r(space, offset & 3);
- case 0x02:
- return m_sio3->cd_ba_r(space, offset & 3);
- case 0x03:
- return m_sio4->cd_ba_r(space, offset & 3);
- case 0x04:
- return m_sio5->cd_ba_r(space, offset & 3);
- case 0x06:
- return m_ctc1->read(space, offset & 3);
- case 0x07:
- return m_ctc2->read(space, offset & 3);
- case 0x08:
- return m_ctc3->read(space, offset & 3);
- case 0x0a:
- return m_pio1->read(space, offset & 3);
- case 0x0b:
- return m_pio2->read(space, offset & 3);
- default:
- return 0;
- }
-}
-
-WRITE8_MEMBER( onyx_state::io_w )
-{
- offset >>= 1;
- switch (offset >> 2)
- {
- case 0x00: // ff00-ff07
- m_sio1->cd_ba_w(space, offset & 3, data);
- break;
- case 0x01: // ff08-ff0f
- m_sio2->cd_ba_w(space, offset & 3, data);
- break;
- case 0x02: // ff10-ff17
- m_sio3->cd_ba_w(space, offset & 3, data);
- break;
- case 0x03: // ff18-ff1f
- m_sio4->cd_ba_w(space, offset & 3, data);
- break;
- case 0x04: // ff20-ff27
- m_sio5->cd_ba_w(space, offset & 3, data);
- break;
- case 0x06: // ff30-ff37
- m_ctc1->write(space, offset & 3, data);
- break;
- case 0x07: // ff38-ff3f
- m_ctc2->write(space, offset & 3, data);
- break;
- case 0x08: // ff40-ff47
- m_ctc3->write(space, offset & 3, data);
- break;
- case 0x0a: // ff50-ff57
- m_pio1->write(space, offset & 3, data);
- break;
- case 0x0b: // ff58-ff5f
- m_pio2->write(space, offset & 3, data);
- break;
- default:
- break;
- }
-}
-
-
/* Input ports */
static INPUT_PORTS_START( c8002 )
INPUT_PORTS_END
@@ -176,7 +82,16 @@ ADDRESS_MAP_END
//ADDRESS_MAP_END
static ADDRESS_MAP_START(c8002_io, AS_IO, 8, onyx_state)
- AM_RANGE(0xff00, 0xff5f) AM_READWRITE(io_r, io_w)
+ AM_RANGE(0xff00, 0xff07) AM_DEVREADWRITE_MOD("sio1", z80sio_device, cd_ba_r, cd_ba_w, rshift<1>)
+ AM_RANGE(0xff08, 0xff0f) AM_DEVREADWRITE_MOD("sio2", z80sio_device, cd_ba_r, cd_ba_w, rshift<1>)
+ AM_RANGE(0xff10, 0xff17) AM_DEVREADWRITE_MOD("sio3", z80sio_device, cd_ba_r, cd_ba_w, rshift<1>)
+ AM_RANGE(0xff18, 0xff1f) AM_DEVREADWRITE_MOD("sio4", z80sio_device, cd_ba_r, cd_ba_w, rshift<1>)
+ AM_RANGE(0xff20, 0xff27) AM_DEVREADWRITE_MOD("sio5", z80sio_device, cd_ba_r, cd_ba_w, rshift<1>)
+ AM_RANGE(0xff30, 0xff37) AM_DEVREADWRITE_MOD("ctc1", z80ctc_device, read, write, rshift<1>)
+ AM_RANGE(0xff38, 0xff3f) AM_DEVREADWRITE_MOD("ctc2", z80ctc_device, read, write, rshift<1>)
+ AM_RANGE(0xff40, 0xff47) AM_DEVREADWRITE_MOD("ctc3", z80ctc_device, read, write, rshift<1>)
+ AM_RANGE(0xff50, 0xff57) AM_DEVREADWRITE_MOD("pio1", z80pio_device, read, write, rshift<1>)
+ AM_RANGE(0xff58, 0xff5f) AM_DEVREADWRITE_MOD("pio2", z80pio_device, read, write, rshift<1>)
ADDRESS_MAP_END
static ADDRESS_MAP_START(submem, AS_PROGRAM, 8, onyx_state)