diff options
Diffstat (limited to 'src/mame/drivers/geneve.cpp')
-rw-r--r-- | src/mame/drivers/geneve.cpp | 51 |
1 files changed, 26 insertions, 25 deletions
diff --git a/src/mame/drivers/geneve.cpp b/src/mame/drivers/geneve.cpp index d0849d802be..dac68a00d45 100644 --- a/src/mame/drivers/geneve.cpp +++ b/src/mame/drivers/geneve.cpp @@ -230,11 +230,11 @@ public: private: // CRU (Communication Register Unit) handling - DECLARE_READ8_MEMBER(cruread); - DECLARE_WRITE8_MEMBER(cruwrite); + uint8_t cruread(offs_t offset); + void cruwrite(offs_t offset, uint8_t data); // Connections with the system interface TMS9901 - DECLARE_READ8_MEMBER(read_by_9901); + uint8_t read_by_9901(offs_t offset); DECLARE_WRITE_LINE_MEMBER(peripheral_bus_reset); DECLARE_WRITE_LINE_MEMBER(VDP_reset); DECLARE_WRITE_LINE_MEMBER(joystick_select); @@ -244,9 +244,9 @@ private: DECLARE_WRITE_LINE_MEMBER(clock_out); DECLARE_WRITE_LINE_MEMBER(dbin_line); - DECLARE_WRITE8_MEMBER(external_operation); + void external_operation(offs_t offset, uint8_t data); - DECLARE_WRITE8_MEMBER(tms9901_interrupt); + void tms9901_interrupt(offs_t offset, uint8_t data); DECLARE_WRITE_LINE_MEMBER( keyboard_interrupt ); @@ -306,11 +306,8 @@ void geneve_state::memmap_setoffset(address_map &map) */ void geneve_state::crumap(address_map &map) { - map(0x0000, 0x0fff).r(FUNC(geneve_state::cruread)); - map(0x0000, 0x0003).r(m_tms9901, FUNC(tms9901_device::read)); - - map(0x0000, 0x7fff).w(FUNC(geneve_state::cruwrite)); - map(0x0000, 0x001f).w(m_tms9901, FUNC(tms9901_device::write)); + map(0x0000, 0xffff).rw(FUNC(geneve_state::cruread), FUNC(geneve_state::cruwrite)); + map(0x0000, 0x003f).rw(m_tms9901, FUNC(tms9901_device::read), FUNC(tms9901_device::write)); } static INPUT_PORTS_START(geneve_common) @@ -360,7 +357,7 @@ INPUT_PORTS_END #define CRU_CONTROL_BASE 0x1ee0 #define CRU_SSTEP_BASE 0x13c0 -WRITE8_MEMBER ( geneve_state::cruwrite ) +void geneve_state::cruwrite(offs_t offset, uint8_t data) { int addroff = offset << 1; @@ -427,14 +424,14 @@ WRITE8_MEMBER ( geneve_state::cruwrite ) } else { - m_peribox->cruwrite(space, addroff, data); + m_peribox->cruwrite(addroff, data); } } -READ8_MEMBER( geneve_state::cruread ) +uint8_t geneve_state::cruread(offs_t offset) { uint8_t value = 0; - int addroff = offset << 4; + uint16_t addroff = offset << 1; // Single step // 13c0 - 13fe: 0001 0011 11xx xxx0 @@ -449,7 +446,7 @@ READ8_MEMBER( geneve_state::cruread ) // so we just don't arrive here // Propagate the CRU access to external devices - m_peribox->crureadz(space, addroff, &value); + m_peribox->crureadz(addroff, &value); return value; } @@ -457,7 +454,7 @@ READ8_MEMBER( geneve_state::cruread ) CRU callbacks ***********************************************************************/ -READ8_MEMBER( geneve_state::read_by_9901 ) +uint8_t geneve_state::read_by_9901(offs_t offset) { int answer = 0; @@ -565,7 +562,7 @@ WRITE_LINE_MEMBER( geneve_state::video_wait_states ) but again it is ignored. Anyway, the TMS9995 has only two external inputs (INT1 and INT4). */ -WRITE8_MEMBER( geneve_state::tms9901_interrupt ) +void geneve_state::tms9901_interrupt(offs_t offset, uint8_t data) { /* INTREQ is connected to INT1. */ m_cpu->set_input_line(INT_9995_INT1, data); @@ -635,7 +632,7 @@ WRITE_LINE_MEMBER( geneve_state::keyboard_interrupt ) m_tms9901->set_single_int(8, state); } -WRITE8_MEMBER( geneve_state::external_operation ) +void geneve_state::external_operation(offs_t offset, uint8_t data) { static char const *const extop[8] = { "inv1", "inv2", "IDLE", "RSET", "inv3", "CKON", "CKOF", "LREX" }; if (offset != IDLE_OP) @@ -647,6 +644,7 @@ WRITE8_MEMBER( geneve_state::external_operation ) */ WRITE_LINE_MEMBER( geneve_state::clock_out ) { + m_tms9901->phi_line(state); m_mapper->clock_in(state); } @@ -694,7 +692,8 @@ void geneve_state::machine_reset() m_joyport->write_port(0x01); // select Joystick 1 } -MACHINE_CONFIG_START(geneve_state::geneve) +void geneve_state::geneve(machine_config &config) +{ geneve_common(config); // Mapper @@ -706,9 +705,10 @@ MACHINE_CONFIG_START(geneve_state::geneve) m_peribox->inta_cb().set(FUNC(geneve_state::inta)); m_peribox->intb_cb().set(FUNC(geneve_state::intb)); m_peribox->ready_cb().set(FUNC(geneve_state::ext_ready)); -MACHINE_CONFIG_END +} -MACHINE_CONFIG_START(geneve_state::genmod) +void geneve_state::genmod(machine_config &config) +{ geneve_common(config); // Mapper @@ -720,9 +720,10 @@ MACHINE_CONFIG_START(geneve_state::genmod) m_peribox->inta_cb().set(FUNC(geneve_state::inta)); m_peribox->intb_cb().set(FUNC(geneve_state::intb)); m_peribox->ready_cb().set(FUNC(geneve_state::ext_ready)); -MACHINE_CONFIG_END +} -MACHINE_CONFIG_START(geneve_state::geneve_common) +void geneve_state::geneve_common(machine_config &config) +{ // basic machine hardware // TMS9995 CPU @ 12.0 MHz TMS9995(config, m_cpu, 12000000); @@ -749,7 +750,7 @@ MACHINE_CONFIG_START(geneve_state::geneve_common) screen.set_screen_update(TI_VDP_TAG, FUNC(v99x8_device::screen_update)); // Main board components - TMS9901(config, m_tms9901, 3000000); + TMS9901(config, m_tms9901, 0); m_tms9901->read_cb().set(FUNC(geneve_state::read_by_9901)); m_tms9901->p_out_cb(0).set(FUNC(geneve_state::peripheral_bus_reset)); m_tms9901->p_out_cb(1).set(FUNC(geneve_state::VDP_reset)); @@ -785,7 +786,7 @@ MACHINE_CONFIG_START(geneve_state::geneve_common) // SRAM 384K (max; stock Geneve: 32K, but later MDOS releases require 64K) RAM(config, GENEVE_SRAM_TAG).set_default_size("384K").set_default_value(0); -MACHINE_CONFIG_END +} /* ROM loading |