summaryrefslogtreecommitdiffstatshomepage
path: root/src/mess/machine/mackbd.c
diff options
context:
space:
mode:
author R. Belmont <rb6502@users.noreply.github.com>2012-12-16 03:35:50 +0000
committer R. Belmont <rb6502@users.noreply.github.com>2012-12-16 03:35:50 +0000
commitdac144a74b8e6d9ac6416e0a735388da70bb19b8 (patch)
tree57e7da10949e4dac336f1deba0ef66cc76486491 /src/mess/machine/mackbd.c
parentfb31a90efbc1d7d3e22421e539b8659e90316810 (diff)
(MESS) mackbd: dumped correct ROM, prep for actual emulation [Lord Nightmare, R. Belmont]
Diffstat (limited to 'src/mess/machine/mackbd.c')
-rw-r--r--src/mess/machine/mackbd.c54
1 files changed, 49 insertions, 5 deletions
diff --git a/src/mess/machine/mackbd.c b/src/mess/machine/mackbd.c
index 95093cee754..769eff4a417 100644
--- a/src/mess/machine/mackbd.c
+++ b/src/mess/machine/mackbd.c
@@ -44,6 +44,8 @@
---x Data to Mac
The T1 line is "Option".
+
+ There is a later M0110 keyboard version which uses a GI PIC1657; we do not have a dump of that version.
*/
@@ -63,10 +65,12 @@
const device_type MACKBD = &device_creator<mackbd_device>;
-// typed in from the listing in the above-cited "IM Underground", but the PDF on Bitsavers is missing a page :(
ROM_START( mackbd )
- ROM_REGION(0x400, MACKBD_CPU_TAG, 0)
- ROM_LOAD( "mackbd.bin", 0x0000, 0x0400, BAD_DUMP CRC(c9af25a5) SHA1(4a6f81da036b071d2ea090cbde78e11c43a3b3b3) )
+ ROM_REGION(0x800, MACKBD_CPU_TAG, 0)
+ // original Mac keyboard and optional external keypad
+ ROM_LOAD( "ip8021h_2173.bin", 0x000000, 0x000400, CRC(5fbd9a94) SHA1(32a3b58afb445a8675b12a4de3aec2fa00c99222) )
+ // Mac Plus all-in-one keyboard (not yet supported)
+ ROM_LOAD( "341-0332-a.bin", 0x000400, 0x000400, CRC(6554f5b6) SHA1(a80404a122d74721cda13b285c412057c2c78bd7) )
ROM_END
//-------------------------------------------------
@@ -74,7 +78,15 @@ ROM_END
//-------------------------------------------------
static ADDRESS_MAP_START( mackbd_map, AS_PROGRAM, 8, mackbd_device )
-// AM_RANGE(0x0000, 0x03ff) AM_ROM AM_REGION(MACKBD_CPU_TAG, 0)
+ AM_RANGE(0x0000, 0x03ff) AM_ROM AM_REGION(MACKBD_CPU_TAG, 0)
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( mackbd_io_map, AS_IO, 8, mackbd_device )
+ AM_RANGE(MCS48_PORT_BUS, MCS48_PORT_BUS) AM_READ(p0_r)
+ AM_RANGE(0x2f, 0x2f) AM_WRITE(p0_w)
+ AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READWRITE(p1_r, p1_w)
+ AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READWRITE(p2_r, p2_w)
+ AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(t1_r)
ADDRESS_MAP_END
//-------------------------------------------------
@@ -84,7 +96,7 @@ ADDRESS_MAP_END
static MACHINE_CONFIG_FRAGMENT( mackbd )
MCFG_CPU_ADD(MACKBD_CPU_TAG, I8021, 100000) // "100,000 operations per second"?
MCFG_CPU_PROGRAM_MAP(mackbd_map)
- MCFG_DEVICE_DISABLE()
+ MCFG_CPU_IO_MAP(mackbd_io_map)
MACHINE_CONFIG_END
@@ -140,3 +152,35 @@ void mackbd_device::device_config_complete()
m_shortname = "mackbd";
}
+READ8_MEMBER(mackbd_device::p0_r)
+{
+ return 0x20; // 0x20 indicates we're a keyboard rather than the keypad
+}
+
+WRITE8_MEMBER(mackbd_device::p0_w)
+{
+}
+
+READ8_MEMBER(mackbd_device::p1_r)
+{
+ return 0;
+}
+
+WRITE8_MEMBER(mackbd_device::p1_w)
+{
+}
+
+READ8_MEMBER(mackbd_device::p2_r)
+{
+ return 0;
+}
+
+WRITE8_MEMBER(mackbd_device::p2_w)
+{
+}
+
+READ8_MEMBER(mackbd_device::t1_r)
+{
+ return 0;
+}
+