diff options
author | AJR <ajrhacker@users.noreply.github.com> | 2019-04-27 18:02:26 -0400 |
---|---|---|
committer | AJR <ajrhacker@users.noreply.github.com> | 2019-04-27 18:02:26 -0400 |
commit | cb2b4628fa8cca9496951cd1f1563992c49042d1 (patch) | |
tree | 9f335cb3e6966754ade9ceeae0349c2358fa2e03 | |
parent | 6f6a87dd452948473b11cb5fb36d1b87f03df2b2 (diff) |
ti89.cpp: TI-92 is ROM-based; all others use flash memory (nw)
-rw-r--r-- | src/mame/drivers/ti89.cpp | 51 | ||||
-rw-r--r-- | src/mame/includes/ti89.h | 6 |
2 files changed, 23 insertions, 34 deletions
diff --git a/src/mame/drivers/ti89.cpp b/src/mame/drivers/ti89.cpp index 8724747af2a..0a63ff8ce62 100644 --- a/src/mame/drivers/ti89.cpp +++ b/src/mame/drivers/ti89.cpp @@ -143,23 +143,9 @@ READ16_MEMBER ( ti68k_state::ti68k_io2_r ) } -WRITE16_MEMBER ( ti68k_state::flash_w ) +READ16_MEMBER ( ti68k_state::rom_r ) { - // verification if it is flash memory - if (m_flash_mem) - m_flash->write(offset, data); -} - -READ16_MEMBER ( ti68k_state::flash_r ) -{ - if (m_flash_mem) - { - return m_flash->read(offset); - } - else - { - return m_rom_base[offset]; - } + return m_rom_base[offset]; } @@ -208,7 +194,7 @@ void ti68k_state::ti89_mem(address_map &map) { map.unmap_value_high(); map(0x000000, 0x0fffff).ram().share("nvram"); - map(0x200000, 0x3fffff).rw(FUNC(ti68k_state::flash_r), FUNC(ti68k_state::flash_w)); + map(0x200000, 0x3fffff).rw(m_flash, FUNC(intelfsh16_device::read), FUNC(intelfsh16_device::write)); map(0x400000, 0x5fffff).noprw(); map(0x600000, 0x6fffff).rw(FUNC(ti68k_state::ti68k_io_r), FUNC(ti68k_state::ti68k_io_w)); map(0x700000, 0x7fffff).rw(FUNC(ti68k_state::ti68k_io2_r), FUNC(ti68k_state::ti68k_io2_w)); @@ -220,7 +206,7 @@ void ti68k_state::ti92p_mem(address_map &map) map.unmap_value_high(); map(0x000000, 0x0fffff).ram().share("nvram"); map(0x200000, 0x3fffff).noprw(); - map(0x400000, 0x5fffff).rw(FUNC(ti68k_state::flash_r), FUNC(ti68k_state::flash_w)); + map(0x400000, 0x5fffff).rw(m_flash, FUNC(intelfsh16_device::read), FUNC(intelfsh16_device::write)); map(0x600000, 0x6fffff).rw(FUNC(ti68k_state::ti68k_io_r), FUNC(ti68k_state::ti68k_io_w)); map(0x700000, 0x7fffff).rw(FUNC(ti68k_state::ti68k_io2_r), FUNC(ti68k_state::ti68k_io2_w)); } @@ -230,7 +216,7 @@ void ti68k_state::v200_mem(address_map &map) { map.unmap_value_high(); map(0x000000, 0x0fffff).ram().share("nvram"); - map(0x200000, 0x5fffff).rw(FUNC(ti68k_state::flash_r), FUNC(ti68k_state::flash_w)); + map(0x200000, 0x5fffff).rw(m_flash, FUNC(intelfsh16_device::read), FUNC(intelfsh16_device::write)); map(0x600000, 0x6fffff).rw(FUNC(ti68k_state::ti68k_io_r), FUNC(ti68k_state::ti68k_io_w)); map(0x700000, 0x70ffff).rw(FUNC(ti68k_state::ti68k_io2_r), FUNC(ti68k_state::ti68k_io2_w)); } @@ -242,7 +228,7 @@ void ti68k_state::ti89t_mem(address_map &map) map(0x000000, 0x0fffff).ram().mirror(0x200000).share("nvram"); map(0x600000, 0x6fffff).rw(FUNC(ti68k_state::ti68k_io_r), FUNC(ti68k_state::ti68k_io_w)); map(0x700000, 0x70ffff).rw(FUNC(ti68k_state::ti68k_io2_r), FUNC(ti68k_state::ti68k_io2_w)); - map(0x800000, 0xbfffff).rw(FUNC(ti68k_state::flash_r), FUNC(ti68k_state::flash_w)); + map(0x800000, 0xbfffff).rw(m_flash, FUNC(intelfsh16_device::read), FUNC(intelfsh16_device::write)); map(0xc00000, 0xffffff).noprw(); } @@ -432,13 +418,10 @@ INPUT_PORTS_END void ti68k_state::machine_start() { - int i; - - m_flash_mem = !((m_rom_base[0x32] & 0x0f) != 0); - - if (m_flash_mem) + if (m_flash.found()) { uint32_t base = ((((m_rom_base[0x82]) << 16) | m_rom_base[0x83]) & 0xffff)>>1; + int i; if (m_rom_base[base] >= 8) m_hw_version = ((m_rom_base[base + 0x0b]) << 16) | m_rom_base[base + 0x0c]; @@ -461,15 +444,15 @@ void ti68k_state::machine_start() if (m_initial_pc > 0x400000) { - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x400000, 0x5fffff, read16_delegate(FUNC(ti68k_state::flash_r), this),write16_delegate(FUNC(ti68k_state::flash_w), this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x400000, 0x5fffff, read16_delegate(FUNC(ti68k_state::rom_r), this)); } else { - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x200000, 0x3fffff, read16_delegate(FUNC(ti68k_state::flash_r), this), write16_delegate(FUNC(ti68k_state::flash_w), this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x200000, 0x3fffff, read16_delegate(FUNC(ti68k_state::rom_r), this)); } } - logerror("HW=v%x, PC=%06x, Type=%s\n", m_hw_version, m_initial_pc, (m_flash_mem) ? "Flash" : "ROM"); + logerror("HW=v%x, PC=%06x, Type=%s\n", m_hw_version, m_initial_pc, m_flash.found() ? "Flash" : "ROM"); } @@ -549,6 +532,8 @@ void ti68k_state::ti92(machine_config &config) ti89(config); m_maincpu->set_addrmap(AS_PROGRAM, &ti68k_state::ti92_mem); + config.device_remove("flash"); + /* video hardware */ subdevice<screen_device>("screen")->set_visarea(0, 240-1, 0, 128-1); } @@ -556,17 +541,23 @@ void ti68k_state::ti92(machine_config &config) void ti68k_state::ti92p(machine_config &config) { - ti92(config); + ti89(config); m_maincpu->set_clock(XTAL(12'000'000)); m_maincpu->set_addrmap(AS_PROGRAM, &ti68k_state::ti92p_mem); + + /* video hardware */ + subdevice<screen_device>("screen")->set_visarea(0, 240-1, 0, 128-1); } void ti68k_state::v200(machine_config &config) { - ti92(config); + ti89(config); m_maincpu->set_clock(XTAL(12'000'000)); m_maincpu->set_addrmap(AS_PROGRAM, &ti68k_state::v200_mem); + + /* video hardware */ + subdevice<screen_device>("screen")->set_visarea(0, 240-1, 0, 128-1); } diff --git a/src/mame/includes/ti89.h b/src/mame/includes/ti89.h index dd785ee2b3c..b40d17158a4 100644 --- a/src/mame/includes/ti89.h +++ b/src/mame/includes/ti89.h @@ -49,7 +49,7 @@ private: enum { HW1=1, HW2, HW3, HW4 }; required_device<cpu_device> m_maincpu; - required_device<sharp_unk128mbit_device> m_flash; + optional_device<sharp_unk128mbit_device> m_flash; required_region_ptr<uint16_t> m_rom_base; required_ioport m_io_bit0; required_ioport m_io_bit1; @@ -62,7 +62,6 @@ private: // HW specifications uint8_t m_hw_version; - bool m_flash_mem; uint32_t m_initial_pc; // keyboard @@ -93,8 +92,7 @@ private: DECLARE_READ16_MEMBER( ti68k_io_r ); DECLARE_WRITE16_MEMBER( ti68k_io2_w ); DECLARE_READ16_MEMBER( ti68k_io2_r ); - DECLARE_WRITE16_MEMBER( flash_w ); - DECLARE_READ16_MEMBER( flash_r ); + DECLARE_READ16_MEMBER( rom_r ); void ti68k_palette(palette_device &palette) const; TIMER_DEVICE_CALLBACK_MEMBER(ti68k_timer_callback); |