diff options
author | 2020-06-13 03:34:47 +1000 | |
---|---|---|
committer | 2020-06-13 03:34:47 +1000 | |
commit | 1ae6bbdb4f310fa691a95ac5d00ac21c3320a0e3 (patch) | |
tree | 7419852a0d94134743defc83b6e2c555772172dd /src/mame/drivers/cortex.cpp | |
parent | 72397ac72513b23256cbdb876c9875541f7c9cc0 (diff) |
(nw) more cleanups
Diffstat (limited to 'src/mame/drivers/cortex.cpp')
-rw-r--r-- | src/mame/drivers/cortex.cpp | 49 |
1 files changed, 26 insertions, 23 deletions
diff --git a/src/mame/drivers/cortex.cpp b/src/mame/drivers/cortex.cpp index 9ae615e65a5..577aee8a71b 100644 --- a/src/mame/drivers/cortex.cpp +++ b/src/mame/drivers/cortex.cpp @@ -60,12 +60,13 @@ public: cortex_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag) , m_maincpu(*this, "maincpu") + , m_rom(*this, "maincpu") + , m_ram(*this, "mainram") , m_beep(*this, "beeper") , m_io_dsw(*this, "DSW") { } void cortex(machine_config &config); - void init_init(); private: void kbd_put(u8 data); @@ -76,18 +77,22 @@ private: u8 keyboard_r(offs_t offset); void io_map(address_map &map); void mem_map(address_map &map); + bool m_rom_in_map; bool m_kbd_ack; bool m_vdp_int; u8 m_term_data; - virtual void machine_reset() override; + void machine_reset() override; + void machine_start() override; required_device<tms9995_device> m_maincpu; + required_region_ptr<u8> m_rom; + required_shared_ptr<u8> m_ram; required_device<beep_device> m_beep; required_ioport m_io_dsw; }; void cortex_state::mem_map(address_map &map) { - map(0x0000, 0x7fff).bankr("bankr0").bankw("bankw0"); + map(0x0000, 0x7fff).ram().share("mainram").lr8(NAME([this] (offs_t offset) { if(m_rom_in_map) return m_rom[offset]; else return m_ram[offset]; })); map(0x8000, 0xefff).ram(); map(0xf100, 0xf11f).ram(); // memory mapping unit map(0xf120, 0xf121).rw("crtc", FUNC(tms9928a_device::read), FUNC(tms9928a_device::write)); @@ -154,7 +159,7 @@ WRITE_LINE_MEMBER( cortex_state::keyboard_ack_w ) WRITE_LINE_MEMBER( cortex_state::romsw_w ) { - membank("bankr0")->set_entry(state ? 0 : 1); + m_rom_in_map = state ? 0 : 1; } WRITE_LINE_MEMBER( cortex_state::vdp_int_w ) @@ -169,26 +174,24 @@ void cortex_state::kbd_put(u8 data) m_maincpu->set_input_line(INT_9995_INT4, ASSERT_LINE); } +void cortex_state::machine_start() +{ + save_item(NAME(m_rom_in_map)); + save_item(NAME(m_kbd_ack)); + save_item(NAME(m_vdp_int)); + save_item(NAME(m_term_data)); +} + void cortex_state::machine_reset() { m_kbd_ack = 1; m_vdp_int = 0; m_beep->set_state(0); - membank("bankr0")->set_entry(1); // point at rom - membank("bankw0")->set_entry(0); // always write to ram + m_rom_in_map = true; m_maincpu->ready_line(ASSERT_LINE); m_maincpu->reset_line(ASSERT_LINE); } -void cortex_state::init_init() -{ - u8 *main = memregion("maincpu")->base(); - - membank("bankr0")->configure_entry(1, &main[0x10000]); - membank("bankr0")->configure_entry(0, &main[0x00000]); - membank("bankw0")->configure_entry(0, &main[0x00000]); -} - void cortex_state::cortex(machine_config &config) { /* basic machine hardware */ @@ -230,17 +233,17 @@ void cortex_state::cortex(machine_config &config) /* ROM definition */ ROM_START( cortex ) - ROM_REGION( 0x18000, "maincpu", ROMREGION_ERASEFF ) + ROM_REGION( 0x8000, "maincpu", ROMREGION_ERASEFF ) ROM_SYSTEM_BIOS(0, "basic", "Cortex Bios") - ROMX_LOAD( "cortex.ic47", 0x10000, 0x2000, CRC(bdb8c7bd) SHA1(340829dcb7a65f2e830fd5aff82a312e3ed7918f), ROM_BIOS(0)) - ROMX_LOAD( "cortex.ic46", 0x12000, 0x2000, CRC(4de459ea) SHA1(00a42fe556d4ffe1f85b2ce369f544b07fbd06d9), ROM_BIOS(0)) - ROMX_LOAD( "cortex.ic45", 0x14000, 0x2000, CRC(b0c9b6e8) SHA1(4e20c3f0b7546b803da4805cd3b8616f96c3d923), ROM_BIOS(0)) + ROMX_LOAD( "cortex.ic47", 0x0000, 0x2000, CRC(bdb8c7bd) SHA1(340829dcb7a65f2e830fd5aff82a312e3ed7918f), ROM_BIOS(0)) + ROMX_LOAD( "cortex.ic46", 0x2000, 0x2000, CRC(4de459ea) SHA1(00a42fe556d4ffe1f85b2ce369f544b07fbd06d9), ROM_BIOS(0)) + ROMX_LOAD( "cortex.ic45", 0x4000, 0x2000, CRC(b0c9b6e8) SHA1(4e20c3f0b7546b803da4805cd3b8616f96c3d923), ROM_BIOS(0)) ROM_SYSTEM_BIOS(1, "forth", "FIG-Forth") - ROMX_LOAD( "forth.ic47", 0x10000, 0x2000, CRC(999034be) SHA1(0dcc7404c38aa0ae913101eb0aa98da82104b5d4), ROM_BIOS(1)) - ROMX_LOAD( "forth.ic46", 0x12000, 0x2000, CRC(8eca54cc) SHA1(0f1680e941ef60bb9bde9a4b843b78f30dff3202), ROM_BIOS(1)) + ROMX_LOAD( "forth.ic47", 0x0000, 0x2000, CRC(999034be) SHA1(0dcc7404c38aa0ae913101eb0aa98da82104b5d4), ROM_BIOS(1)) + ROMX_LOAD( "forth.ic46", 0x2000, 0x2000, CRC(8eca54cc) SHA1(0f1680e941ef60bb9bde9a4b843b78f30dff3202), ROM_BIOS(1)) ROM_END /* Driver */ -// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS -COMP( 1982, cortex, 0, 0, cortex, cortex, cortex_state, init_init, "Powertran Cybernetics", "Cortex", MACHINE_NOT_WORKING ) +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +COMP( 1982, cortex, 0, 0, cortex, cortex, cortex_state, empty_init, "Powertran Cybernetics", "Cortex", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) |