From cc1e25cb83802f82d2f15d4c05634180a2decda2 Mon Sep 17 00:00:00 2001 From: Sergey Svishchev Date: Sun, 1 Dec 2013 23:35:03 +0400 Subject: mikrosha: add cartslot and one ROM cart --- hash/mikrosha_cart.xml | 16 ++++++++++++++++ src/mess/drivers/mikrosha.c | 21 ++++++++++++++++++--- 2 files changed, 34 insertions(+), 3 deletions(-) create mode 100644 hash/mikrosha_cart.xml 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 @@ + + + + + + BASIC-Micron, ED.Micron, Assembler + 19?? + <unknown> + + + + + + + + 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 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 -- cgit v1.2.3