summaryrefslogtreecommitdiffstats
path: root/src/mame/drivers/cortex.cpp
diff options
context:
space:
mode:
author Robbbert <Robbbert@users.noreply.github.com>2020-06-13 03:34:47 +1000
committer Robbbert <Robbbert@users.noreply.github.com>2020-06-13 03:34:47 +1000
commit1ae6bbdb4f310fa691a95ac5d00ac21c3320a0e3 (patch)
tree7419852a0d94134743defc83b6e2c555772172dd /src/mame/drivers/cortex.cpp
parent72397ac72513b23256cbdb876c9875541f7c9cc0 (diff)
(nw) more cleanups
Diffstat (limited to 'src/mame/drivers/cortex.cpp')
-rw-r--r--src/mame/drivers/cortex.cpp49
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 )