summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus/bml3/bml3kanji.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/bus/bml3/bml3kanji.cpp')
-rw-r--r--src/devices/bus/bml3/bml3kanji.cpp101
1 files changed, 101 insertions, 0 deletions
diff --git a/src/devices/bus/bml3/bml3kanji.cpp b/src/devices/bus/bml3/bml3kanji.cpp
new file mode 100644
index 00000000000..f07e95c8bba
--- /dev/null
+++ b/src/devices/bus/bml3/bml3kanji.cpp
@@ -0,0 +1,101 @@
+// license:GPL-2.0+
+// copyright-holders:Jonathan Edwards
+/*********************************************************************
+
+ bml3kanji.c
+
+ Hitachi MP-9740 (?) kanji character ROM for the MB-689x
+
+*********************************************************************/
+
+#include "emu.h"
+#include "bml3kanji.h"
+
+
+/***************************************************************************
+ PARAMETERS
+***************************************************************************/
+
+//**************************************************************************
+// GLOBAL VARIABLES
+//**************************************************************************
+
+const device_type BML3BUS_KANJI = &device_creator<bml3bus_kanji_device>;
+
+#define KANJI_ROM_REGION "kanji_rom"
+
+ROM_START( kanji )
+ ROM_REGION( 0x20000, KANJI_ROM_REGION, ROMREGION_ERASEFF )
+ ROM_LOAD("kanji.rom", 0x00000, 0x20000, BAD_DUMP CRC(de99a726) SHA1(65fead5d0d779b242f6e0ac25fcc9899dc343101))
+ROM_END
+
+MACHINE_CONFIG_FRAGMENT( kanji )
+ // nothing to add
+MACHINE_CONFIG_END
+
+/***************************************************************************
+ FUNCTION PROTOTYPES
+***************************************************************************/
+
+//-------------------------------------------------
+// machine_config_additions - device-specific
+// machine configurations
+//-------------------------------------------------
+
+machine_config_constructor bml3bus_kanji_device::device_mconfig_additions() const
+{
+ return MACHINE_CONFIG_NAME( kanji );
+}
+
+//-------------------------------------------------
+// rom_region - device-specific ROM region
+//-------------------------------------------------
+
+const rom_entry *bml3bus_kanji_device::device_rom_region() const
+{
+ return ROM_NAME( kanji );
+}
+
+READ8_MEMBER( bml3bus_kanji_device::bml3_kanji_r )
+{
+ return m_rom[((UINT32)m_kanji_addr << 1) + offset];
+}
+
+WRITE8_MEMBER( bml3bus_kanji_device::bml3_kanji_w )
+{
+ m_kanji_addr &= (0xff << (offset*8));
+ m_kanji_addr |= (data << ((offset^1)*8));
+}
+
+
+//**************************************************************************
+// LIVE DEVICE
+//**************************************************************************
+
+bml3bus_kanji_device::bml3bus_kanji_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
+ device_t(mconfig, BML3BUS_KANJI, "Hitachi MP-9740 Kanji Character ROM Card", tag, owner, clock, "bml3kanji", __FILE__),
+ device_bml3bus_card_interface(mconfig, *this)
+{
+}
+
+
+//-------------------------------------------------
+// device_start - device-specific startup
+//-------------------------------------------------
+
+void bml3bus_kanji_device::device_start()
+{
+ // set_bml3bus_device makes m_slot valid
+ set_bml3bus_device();
+
+ m_rom = memregion(KANJI_ROM_REGION)->base();
+
+ // install into memory
+ address_space &space_prg = machine().firstcpu->space(AS_PROGRAM);
+ space_prg.install_readwrite_handler(0xff75, 0xff76, read8_delegate( FUNC(bml3bus_kanji_device::bml3_kanji_r), this), write8_delegate(FUNC(bml3bus_kanji_device::bml3_kanji_w), this) );
+}
+
+void bml3bus_kanji_device::device_reset()
+{
+ m_kanji_addr = 0;
+}