diff options
author | 2013-12-01 23:35:03 +0400 | |
---|---|---|
committer | 2014-11-08 13:32:05 +0300 | |
commit | cc1e25cb83802f82d2f15d4c05634180a2decda2 (patch) | |
tree | 2062f12403d3dbd9150fc7dbfc478ea545e2a4ba | |
parent | 574f55ed55e7ff6c651d02e4a1da117c5b6c323d (diff) |
mikrosha: add cartslot and one ROM cart
-rw-r--r-- | hash/mikrosha_cart.xml | 16 | ||||
-rw-r--r-- | src/mess/drivers/mikrosha.c | 21 |
2 files changed, 34 insertions, 3 deletions
diff --git a/hash/mikrosha_cart.xml b/hash/mikrosha_cart.xml new file mode 100644 index 00000000000..53ebf73c6dd --- /dev/null +++ b/hash/mikrosha_cart.xml @@ -0,0 +1,16 @@ +<?xml version="1.0"?> +<!DOCTYPE softwarelist SYSTEM "softwarelist.dtd"> +<softwarelist name="mikrosha_cart" description="Mikrosha cartridges"> + + <software name="micron"> + <description>BASIC-Micron, ED.Micron, Assembler</description> + <year>19??</year> + <publisher><unknown></publisher> + <part name="cart" interface="mikrosha_cart"> + <dataarea name="rom" size="16384"> + <rom name="micron.rom" size="16384" crc="42ac7739" sha1="ca7ac6e0f38d54274db14d1dd4141722908b2d8b" offset="0" /> + </dataarea> + </part> + </software> + +</softwarelist> diff --git a/src/mess/drivers/mikrosha.c b/src/mess/drivers/mikrosha.c index 7e565963cf6..6f8be9d8ae9 100644 --- a/src/mess/drivers/mikrosha.c +++ b/src/mess/drivers/mikrosha.c @@ -21,17 +21,28 @@ class mikrosha_state : public radio86_state { public: mikrosha_state(const machine_config &mconfig, device_type type, const char *tag) - : radio86_state(mconfig, type, tag) { } + : radio86_state(mconfig, type, tag), + m_cart(*this, "cartslot") + { } DECLARE_WRITE_LINE_MEMBER(mikrosha_pit_out2); I8275_DRAW_CHARACTER_MEMBER(display_pixels); + DECLARE_MACHINE_RESET(mikrosha); + +protected: + required_device<generic_slot_device> m_cart; }; +MACHINE_RESET_MEMBER(mikrosha_state,mikrosha) +{ + if (m_cart->exists()) + m_maincpu->space(AS_PROGRAM).install_read_handler(0x8000, 0x8000+m_cart->get_rom_size()-1, read8_delegate(FUNC(generic_slot_device::read_rom),(generic_slot_device*)m_cart)); + radio86_state::machine_reset(); +} /* Address maps */ static ADDRESS_MAP_START(mikrosha_mem, AS_PROGRAM, 8, mikrosha_state ) AM_RANGE( 0x0000, 0x0fff ) AM_RAMBANK("bank1") // First bank AM_RANGE( 0x1000, 0x7fff ) AM_RAM // RAM - AM_RANGE( 0x8000, 0xbfff ) AM_READ(radio_cpu_state_r) // Not connected AM_RANGE( 0xc000, 0xc003 ) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) AM_MIRROR(0x07fc) AM_RANGE( 0xc800, 0xc803 ) AM_DEVREADWRITE("ppi8255_2", i8255_device, read, write) AM_MIRROR(0x07fc) AM_RANGE( 0xd000, 0xd001 ) AM_DEVREADWRITE("i8275", i8275_device, read, write) AM_MIRROR(0x07fe) // video @@ -189,7 +200,7 @@ static MACHINE_CONFIG_START( mikrosha, mikrosha_state ) MCFG_CPU_PROGRAM_MAP(mikrosha_mem) MCFG_CPU_IO_MAP(mikrosha_io) - MCFG_MACHINE_RESET_OVERRIDE(mikrosha_state, radio86 ) + MCFG_MACHINE_RESET_OVERRIDE(mikrosha_state, mikrosha) MCFG_DEVICE_ADD("ppi8255_1", I8255, 0) MCFG_I8255_IN_PORTA_CB(READ8(radio86_state, radio86_8255_portb_r2)) @@ -238,7 +249,11 @@ static MACHINE_CONFIG_START( mikrosha, mikrosha_state ) MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_SPEAKER_ENABLED | CASSETTE_MOTOR_ENABLED) MCFG_CASSETTE_INTERFACE("mikrosha_cass") + MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "mikrosha_cart") + MCFG_GENERIC_EXTENSIONS("bin,rom") + MCFG_SOFTWARE_LIST_ADD("cass_list","mikrosha") + MCFG_SOFTWARE_LIST_ADD("cart_list","mikrosha_cart") MACHINE_CONFIG_END |