From 8a06ca6cb7948c14ab342123ea80d79cbc724cb0 Mon Sep 17 00:00:00 2001 From: Robbbert Date: Thu, 25 Jun 2020 23:28:35 +1000 Subject: (nw) camplynx: don't use rom region as ram --- src/mame/drivers/camplynx.cpp | 367 +++++++++++++++++++++--------------------- 1 file changed, 187 insertions(+), 180 deletions(-) diff --git a/src/mame/drivers/camplynx.cpp b/src/mame/drivers/camplynx.cpp index 83e4ee17bee..fe43ec05f5c 100644 --- a/src/mame/drivers/camplynx.cpp +++ b/src/mame/drivers/camplynx.cpp @@ -166,6 +166,7 @@ #include "sound/dac.h" #include "sound/volt_reg.h" #include "video/mc6845.h" +#include "machine/ram.h" #include "emupal.h" #include "formats/camplynx_cas.h" @@ -182,6 +183,8 @@ public: : driver_device(mconfig, type, tag) , m_palette(*this, "palette") , m_maincpu(*this, "maincpu") + , m_ram(*this, RAM_TAG) + , m_bankr(*this, "bankr%d", 0) , m_cass(*this, "cassette") //, m_printer(*this, "centronics") , m_crtc(*this, "crtc") @@ -210,8 +213,8 @@ private: u8 port82_r(); // cassin for 128k void port82_w(u8 data); // banking 128k void port84_w(u8 data); // dac port 48k - DECLARE_MACHINE_RESET(lynx48k); - DECLARE_MACHINE_RESET(lynx128k); + void machine_start() override; + void machine_reset() override; DECLARE_FLOPPY_FORMATS(camplynx_floppy_formats); MC6845_UPDATE_ROW(lynx48k_update_row); MC6845_UPDATE_ROW(lynx128k_update_row); @@ -228,6 +231,8 @@ private: bool m_is_128k; required_device m_palette; required_device m_maincpu; + required_device m_ram; + required_memory_bank_array<8> m_bankr; required_device m_cass; //required_device<> m_printer; required_device m_crtc; @@ -266,51 +271,51 @@ d7 = read from bank 4 */ case 0x14: case 0x18: case 0x1c: - membank("bankr1")->set_entry(0); - membank("bankr2")->set_entry(1); - membank("bankr3")->set_entry(2); - membank("bankr4")->set_entry(3); - membank("bankr5")->set_entry(0); - membank("bankr6")->set_entry(1); - membank("bankr7")->set_entry(2); - membank("bankr8")->set_entry(7); + m_bankr[0]->set_entry(0); + m_bankr[1]->set_entry(1); + m_bankr[2]->set_entry(2); + m_bankr[3]->set_entry(3); + m_bankr[4]->set_entry(0); + m_bankr[5]->set_entry(1); + m_bankr[6]->set_entry(2); + m_bankr[7]->set_entry(7); break; case 0x20: case 0x24: case 0x28: case 0x2c: - membank("bankr1")->set_entry(8); - membank("bankr2")->set_entry(9); - membank("bankr3")->set_entry(10); - membank("bankr4")->set_entry(11); - membank("bankr5")->set_entry(12); - membank("bankr6")->set_entry(13); - membank("bankr7")->set_entry(14); - membank("bankr8")->set_entry(BIT(m_port58, 4) ? 15 : 7); + m_bankr[0]->set_entry(8); + m_bankr[1]->set_entry(9); + m_bankr[2]->set_entry(10); + m_bankr[3]->set_entry(11); + m_bankr[4]->set_entry(12); + m_bankr[5]->set_entry(13); + m_bankr[6]->set_entry(14); + m_bankr[7]->set_entry(BIT(m_port58, 4) ? 15 : 7); break; case 0x30: case 0x34: case 0x38: case 0x3c: - membank("bankr1")->set_entry(0); - membank("bankr2")->set_entry(1); - membank("bankr3")->set_entry(2); - membank("bankr4")->set_entry(11); - membank("bankr5")->set_entry(12); - membank("bankr6")->set_entry(13); - membank("bankr7")->set_entry(14); - membank("bankr8")->set_entry(BIT(m_port58, 4) ? 15 : 7); + m_bankr[0]->set_entry(0); + m_bankr[1]->set_entry(1); + m_bankr[2]->set_entry(2); + m_bankr[3]->set_entry(11); + m_bankr[4]->set_entry(12); + m_bankr[5]->set_entry(13); + m_bankr[6]->set_entry(14); + m_bankr[7]->set_entry(BIT(m_port58, 4) ? 15 : 7); break; case 0x44: case 0x64: - membank("bankr1")->set_entry(24); - membank("bankr2")->set_entry(25); - membank("bankr3")->set_entry(26); - membank("bankr4")->set_entry(27); - membank("bankr5")->set_entry(28); - membank("bankr6")->set_entry(29); - membank("bankr7")->set_entry(30); - membank("bankr8")->set_entry(31); + m_bankr[0]->set_entry(24); + m_bankr[1]->set_entry(25); + m_bankr[2]->set_entry(26); + m_bankr[3]->set_entry(27); + m_bankr[4]->set_entry(28); + m_bankr[5]->set_entry(29); + m_bankr[6]->set_entry(30); + m_bankr[7]->set_entry(31); break; case 0x40: case 0x60: @@ -318,25 +323,25 @@ d7 = read from bank 4 */ case 0x68: case 0x4c: case 0x6c: - membank("bankr1")->set_entry(16); - membank("bankr2")->set_entry(17); - membank("bankr3")->set_entry(18); - membank("bankr4")->set_entry(19); - membank("bankr5")->set_entry(20); - membank("bankr6")->set_entry(21); - membank("bankr7")->set_entry(22); - membank("bankr8")->set_entry(23); + m_bankr[0]->set_entry(16); + m_bankr[1]->set_entry(17); + m_bankr[2]->set_entry(18); + m_bankr[3]->set_entry(19); + m_bankr[4]->set_entry(20); + m_bankr[5]->set_entry(21); + m_bankr[6]->set_entry(22); + m_bankr[7]->set_entry(23); break; case 0x54: case 0x74: - membank("bankr1")->set_entry(0); - membank("bankr2")->set_entry(1); - membank("bankr3")->set_entry(2); - membank("bankr4")->set_entry(27); - membank("bankr5")->set_entry(28); - membank("bankr6")->set_entry(29); - membank("bankr7")->set_entry(30); - membank("bankr8")->set_entry(31); + m_bankr[0]->set_entry(0); + m_bankr[1]->set_entry(1); + m_bankr[2]->set_entry(2); + m_bankr[3]->set_entry(27); + m_bankr[4]->set_entry(28); + m_bankr[5]->set_entry(29); + m_bankr[6]->set_entry(30); + m_bankr[7]->set_entry(31); break; case 0x50: case 0x70: @@ -344,14 +349,14 @@ d7 = read from bank 4 */ case 0x78: case 0x5c: case 0x7c: - membank("bankr1")->set_entry(0); - membank("bankr2")->set_entry(1); - membank("bankr3")->set_entry(2); - membank("bankr4")->set_entry(19); - membank("bankr5")->set_entry(20); - membank("bankr6")->set_entry(21); - membank("bankr7")->set_entry(22); - membank("bankr8")->set_entry(23); + m_bankr[0]->set_entry(0); + m_bankr[1]->set_entry(1); + m_bankr[2]->set_entry(2); + m_bankr[3]->set_entry(19); + m_bankr[4]->set_entry(20); + m_bankr[5]->set_entry(21); + m_bankr[6]->set_entry(22); + m_bankr[7]->set_entry(23); break; default: printf("Banking code %X not handled\n", m_bankdata); @@ -382,82 +387,82 @@ d0 = read from bank 4 */ { case 0x00: case 0x01: - membank("bankr1")->set_entry(0); - membank("bankr2")->set_entry(1); - membank("bankr3")->set_entry(2); - membank("bankr4")->set_entry(3); - membank("bankr5")->set_entry(4); - membank("bankr6")->set_entry(5); - membank("bankr7")->set_entry(6); - membank("bankr8")->set_entry(7); + m_bankr[0]->set_entry(0); + m_bankr[1]->set_entry(1); + m_bankr[2]->set_entry(2); + m_bankr[3]->set_entry(3); + m_bankr[4]->set_entry(4); + m_bankr[5]->set_entry(5); + m_bankr[6]->set_entry(6); + m_bankr[7]->set_entry(7); break; case 0x02: case 0x0a: - membank("bankr1")->set_entry(8); - membank("bankr2")->set_entry(9); - membank("bankr3")->set_entry(10); - membank("bankr4")->set_entry(11); - membank("bankr5")->set_entry(12); - membank("bankr6")->set_entry(13); - membank("bankr7")->set_entry(14); - membank("bankr8")->set_entry(15); + m_bankr[0]->set_entry(8); + m_bankr[1]->set_entry(9); + m_bankr[2]->set_entry(10); + m_bankr[3]->set_entry(11); + m_bankr[4]->set_entry(12); + m_bankr[5]->set_entry(13); + m_bankr[6]->set_entry(14); + m_bankr[7]->set_entry(15); break; case 0x03: case 0x07: case 0x0b: case 0x0f: - membank("bankr1")->set_entry(0); - membank("bankr2")->set_entry(1); - membank("bankr3")->set_entry(2); - membank("bankr4")->set_entry(11); - membank("bankr5")->set_entry(12); - membank("bankr6")->set_entry(13); - membank("bankr7")->set_entry(14); - membank("bankr8")->set_entry(BIT(m_port58, 4) ? 15 : 7); + m_bankr[0]->set_entry(0); + m_bankr[1]->set_entry(1); + m_bankr[2]->set_entry(2); + m_bankr[3]->set_entry(11); + m_bankr[4]->set_entry(12); + m_bankr[5]->set_entry(13); + m_bankr[6]->set_entry(14); + m_bankr[7]->set_entry(BIT(m_port58, 4) ? 15 : 7); break; case 0x04: case 0x06: case 0x0c: case 0x0e: - membank("bankr1")->set_entry(16); - membank("bankr2")->set_entry(17); - membank("bankr3")->set_entry(18); - membank("bankr4")->set_entry(19); - membank("bankr5")->set_entry(20); - membank("bankr6")->set_entry(21); - membank("bankr7")->set_entry(22); - membank("bankr8")->set_entry(23); + m_bankr[0]->set_entry(16); + m_bankr[1]->set_entry(17); + m_bankr[2]->set_entry(18); + m_bankr[3]->set_entry(19); + m_bankr[4]->set_entry(20); + m_bankr[5]->set_entry(21); + m_bankr[6]->set_entry(22); + m_bankr[7]->set_entry(23); break; case 0x05: case 0x0d: - membank("bankr1")->set_entry(0); - membank("bankr2")->set_entry(1); - membank("bankr3")->set_entry(2); - membank("bankr4")->set_entry(19); - membank("bankr5")->set_entry(20); - membank("bankr6")->set_entry(21); - membank("bankr7")->set_entry(22); - membank("bankr8")->set_entry(23); + m_bankr[0]->set_entry(0); + m_bankr[1]->set_entry(1); + m_bankr[2]->set_entry(2); + m_bankr[3]->set_entry(19); + m_bankr[4]->set_entry(20); + m_bankr[5]->set_entry(21); + m_bankr[6]->set_entry(22); + m_bankr[7]->set_entry(23); break; case 0x08: - membank("bankr1")->set_entry(32); - membank("bankr2")->set_entry(33); - membank("bankr3")->set_entry(34); - membank("bankr4")->set_entry(35); - membank("bankr5")->set_entry(36); - membank("bankr6")->set_entry(37); - membank("bankr7")->set_entry(38); - membank("bankr8")->set_entry(39); + m_bankr[0]->set_entry(32); + m_bankr[1]->set_entry(33); + m_bankr[2]->set_entry(34); + m_bankr[3]->set_entry(35); + m_bankr[4]->set_entry(36); + m_bankr[5]->set_entry(37); + m_bankr[6]->set_entry(38); + m_bankr[7]->set_entry(39); break; case 0x09: - membank("bankr1")->set_entry(0); - membank("bankr2")->set_entry(1); - membank("bankr3")->set_entry(2); - membank("bankr4")->set_entry(35); - membank("bankr5")->set_entry(36); - membank("bankr6")->set_entry(37); - membank("bankr7")->set_entry(38); - membank("bankr8")->set_entry(39); + m_bankr[0]->set_entry(0); + m_bankr[1]->set_entry(1); + m_bankr[2]->set_entry(2); + m_bankr[3]->set_entry(35); + m_bankr[4]->set_entry(36); + m_bankr[5]->set_entry(37); + m_bankr[6]->set_entry(38); + m_bankr[7]->set_entry(39); break; default: printf("Banking code %X not handled\n", m_bankdata); @@ -467,28 +472,28 @@ d0 = read from bank 4 */ void camplynx_state::lynx48k_mem(address_map &map) { map.unmap_value_high(); - map(0x0000, 0x1fff).bankr("bankr1"); - map(0x2000, 0x3fff).bankr("bankr2"); - map(0x4000, 0x5fff).bankr("bankr3"); - map(0x6000, 0x7fff).bankr("bankr4"); - map(0x8000, 0x9fff).bankr("bankr5"); - map(0xa000, 0xbfff).bankr("bankr6"); - map(0xc000, 0xdfff).bankr("bankr7"); - map(0xe000, 0xffff).bankr("bankr8"); + map(0x0000, 0x1fff).bankr("bankr0"); + map(0x2000, 0x3fff).bankr("bankr1"); + map(0x4000, 0x5fff).bankr("bankr2"); + map(0x6000, 0x7fff).bankr("bankr3"); + map(0x8000, 0x9fff).bankr("bankr4"); + map(0xa000, 0xbfff).bankr("bankr5"); + map(0xc000, 0xdfff).bankr("bankr6"); + map(0xe000, 0xffff).bankr("bankr7"); map(0x0000, 0xffff).w(FUNC(camplynx_state::bank6_w)); } void camplynx_state::lynx128k_mem(address_map &map) { map.unmap_value_high(); - map(0x0000, 0x1fff).bankr("bankr1"); - map(0x2000, 0x3fff).bankr("bankr2"); - map(0x4000, 0x5fff).bankr("bankr3"); - map(0x6000, 0x7fff).bankr("bankr4"); - map(0x8000, 0x9fff).bankr("bankr5"); - map(0xa000, 0xbfff).bankr("bankr6"); - map(0xc000, 0xdfff).bankr("bankr7"); - map(0xe000, 0xffff).bankr("bankr8"); + map(0x0000, 0x1fff).bankr("bankr0"); + map(0x2000, 0x3fff).bankr("bankr1"); + map(0x4000, 0x5fff).bankr("bankr2"); + map(0x6000, 0x7fff).bankr("bankr3"); + map(0x8000, 0x9fff).bankr("bankr4"); + map(0xa000, 0xbfff).bankr("bankr5"); + map(0xc000, 0xdfff).bankr("bankr6"); + map(0xe000, 0xffff).bankr("bankr7"); map(0x0000, 0xffff).w(FUNC(camplynx_state::bank1_w)); } @@ -730,19 +735,14 @@ u8 camplynx_state::port82_r() return data; } -MACHINE_RESET_MEMBER(camplynx_state, lynx48k) +void camplynx_state::machine_reset() { m_port58 = 0; m_port80 = 0; - port7f_w( 0 ); - m_maincpu->reset(); -} - -MACHINE_RESET_MEMBER(camplynx_state, lynx128k) -{ - m_port58 = 0; - m_port80 = 0; - port82_w( 0 ); + if (m_is_128k) + port82_w( 0 ); + else + port7f_w( 0 ); m_maincpu->reset(); } @@ -838,6 +838,15 @@ d7 = 125ns or 250ns */ m_floppy1->get_device()->mon_w(BIT(data, 3)); } +void camplynx_state::machine_start() +{ + save_item(NAME(m_port58)); + save_item(NAME(m_port80)); + save_item(NAME(m_bankdata)); + save_item(NAME(m_wbyte)); + save_item(NAME(m_is_128k)); +} + FLOPPY_FORMATS_MEMBER( camplynx_state::camplynx_floppy_formats ) FLOPPY_CAMPLYNX_FORMAT FLOPPY_FORMATS_END @@ -871,8 +880,6 @@ void camplynx_state::lynx48k(machine_config &config) m_maincpu->set_addrmap(AS_PROGRAM, &camplynx_state::lynx48k_mem); m_maincpu->set_addrmap(AS_IO, &camplynx_state::lynx48k_io); - MCFG_MACHINE_RESET_OVERRIDE(camplynx_state, lynx48k) - /* video hardware */ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); screen.set_refresh_hz(50); @@ -897,6 +904,9 @@ void camplynx_state::lynx48k(machine_config &config) m_crtc->set_update_row_callback(FUNC(camplynx_state::lynx48k_update_row)); m_crtc->out_vsync_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); + /* internal ram */ + RAM(config, RAM_TAG).set_default_size("256K"); + /* software lists */ SOFTWARE_LIST(config, "cass_list").set_original("camplynx_cass"); } @@ -920,8 +930,6 @@ void camplynx_state::lynx128k(machine_config &config) m_maincpu->set_addrmap(AS_PROGRAM, &camplynx_state::lynx128k_mem); m_maincpu->set_addrmap(AS_IO, &camplynx_state::lynx128k_io); - MCFG_MACHINE_RESET_OVERRIDE(camplynx_state, lynx128k) - /* video hardware */ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); screen.set_refresh_hz(50); @@ -946,6 +954,9 @@ void camplynx_state::lynx128k(machine_config &config) m_crtc->set_update_row_callback(FUNC(camplynx_state::lynx128k_update_row)); m_crtc->out_vsync_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); + /* internal ram */ + RAM(config, RAM_TAG).set_default_size("320K"); + lynx_disk(config); /* software lists */ @@ -956,69 +967,65 @@ void camplynx_state::lynx128k(machine_config &config) void camplynx_state::init_lynx48k() { m_is_128k = false; - m_p_ram = memregion("maincpu")->base(); - membank("bankr1")->configure_entries(0, 32, &m_p_ram[0], 0x2000); - membank("bankr2")->configure_entries(0, 32, &m_p_ram[0], 0x2000); - membank("bankr3")->configure_entries(0, 32, &m_p_ram[0], 0x2000); - membank("bankr4")->configure_entries(0, 32, &m_p_ram[0], 0x2000); - membank("bankr5")->configure_entries(0, 32, &m_p_ram[0], 0x2000); - membank("bankr6")->configure_entries(0, 32, &m_p_ram[0], 0x2000); - membank("bankr7")->configure_entries(0, 32, &m_p_ram[0], 0x2000); - membank("bankr8")->configure_entries(0, 32, &m_p_ram[0], 0x2000); + u8 *m = memregion("maincpu")->base(); + m_p_ram = m_ram->pointer(); + for (auto &bank : m_bankr) + bank->configure_entries(0, 32, m_p_ram, 0x2000); + for (u8 i = 0; i < 8; i++) + for (auto &bank : m_bankr) + bank->configure_entry(i, m+i*0x2000); } void camplynx_state::init_lynx128k() { m_is_128k = true; - m_p_ram = memregion("maincpu")->base(); - membank("bankr1")->configure_entries(0, 40, &m_p_ram[0], 0x2000); - membank("bankr2")->configure_entries(0, 40, &m_p_ram[0], 0x2000); - membank("bankr3")->configure_entries(0, 40, &m_p_ram[0], 0x2000); - membank("bankr4")->configure_entries(0, 40, &m_p_ram[0], 0x2000); - membank("bankr5")->configure_entries(0, 40, &m_p_ram[0], 0x2000); - membank("bankr6")->configure_entries(0, 40, &m_p_ram[0], 0x2000); - membank("bankr7")->configure_entries(0, 40, &m_p_ram[0], 0x2000); - membank("bankr8")->configure_entries(0, 40, &m_p_ram[0], 0x2000); + u8 *m = memregion("maincpu")->base(); + m_p_ram = m_ram->pointer(); + for (auto &bank : m_bankr) + bank->configure_entries(0, 40, m_p_ram, 0x2000); + for (u8 i = 0; i < 8; i++) + for (auto &bank : m_bankr) + bank->configure_entry(i, m+i*0x2000); } /* ROM definition */ ROM_START( lynx48k ) - ROM_REGION( 0x40000, "maincpu", ROMREGION_ERASEFF ) + ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF ) ROM_DEFAULT_BIOS("1") ROM_SYSTEM_BIOS(0, "1", "Set1") - ROMX_LOAD( "lynx48-1.rom", 0x0000, 0x2000, CRC(56feec44) SHA1(7ded5184561168e159a30fa8e9d3fde5e52aa91a), ROM_BIOS(0) ) - ROMX_LOAD( "lynx48-2.rom", 0x2000, 0x2000, CRC(d894562e) SHA1(c08a78ecb4eb05baa4c52488fce3648cd2688744), ROM_BIOS(0) ) + ROMX_LOAD( "lynx48-1.ic46", 0x0000, 0x2000, CRC(56feec44) SHA1(7ded5184561168e159a30fa8e9d3fde5e52aa91a), ROM_BIOS(0) ) + ROMX_LOAD( "lynx48-2.ic45", 0x2000, 0x2000, CRC(d894562e) SHA1(c08a78ecb4eb05baa4c52488fce3648cd2688744), ROM_BIOS(0) ) ROM_SYSTEM_BIOS(1, "2", "Set2") - ROMX_LOAD( "lynx4811.rom", 0x0000, 0x2000, CRC(a933e577) SHA1(c7b30a28d99b38dbe63a1314c78e3e614287143b), ROM_BIOS(1) ) - ROMX_LOAD( "lynx4812.rom", 0x2000, 0x2000, CRC(3d3fdd0e) SHA1(259d124f05367a96f891790f9418cc9c7798e2f8), ROM_BIOS(1) ) + ROMX_LOAD( "lynx4811.ic46", 0x0000, 0x2000, CRC(a933e577) SHA1(c7b30a28d99b38dbe63a1314c78e3e614287143b), ROM_BIOS(1) ) + ROMX_LOAD( "lynx4812.ic45", 0x2000, 0x2000, CRC(3d3fdd0e) SHA1(259d124f05367a96f891790f9418cc9c7798e2f8), ROM_BIOS(1) ) ROM_END ROM_START( lynx96k ) - ROM_REGION( 0x40000, "maincpu", ROMREGION_ERASEFF ) - ROM_LOAD( "lynx9646.rom", 0x0000, 0x2000, CRC(f86c5514) SHA1(77a4af7557382003d697d08f364839e2dc28f063) ) - ROM_LOAD( "lynx9645.rom", 0x2000, 0x2000, CRC(f596b9a3) SHA1(3fca46bd68422d34c6cd801dd904507e52bd8846) ) + ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF ) + ROM_LOAD( "lynx9646.ic46", 0x0000, 0x2000, CRC(f86c5514) SHA1(77a4af7557382003d697d08f364839e2dc28f063) ) + ROM_LOAD( "lynx9645.ic45", 0x2000, 0x2000, CRC(f596b9a3) SHA1(3fca46bd68422d34c6cd801dd904507e52bd8846) ) ROM_DEFAULT_BIOS("orig") ROM_SYSTEM_BIOS(0, "orig", "Original") - ROMX_LOAD( "lynx9644.rom", 0x4000, 0x1000, CRC(4b96b0de) SHA1(c372a8d26399b9b45e615b674d61ccda76491b8b), ROM_BIOS(0) ) + ROMX_LOAD( "lynx9644.ic44", 0x4000, 0x1000, CRC(4b96b0de) SHA1(c372a8d26399b9b45e615b674d61ccda76491b8b), ROM_BIOS(0) ) ROM_SYSTEM_BIOS(1, "scorp", "Scorpion") /* Scorpion ROM v2.1 03/86 (Reading Lynx User Group) */ - ROMX_LOAD( "skorprom.rom", 0x4000, 0x2000, CRC(698d3de9) SHA1(c707bdcecef79774c2a8a23d1f3e9ba382cb9304), ROM_BIOS(1) ) + ROMX_LOAD( "skorprom.ic44", 0x4000, 0x2000, CRC(698d3de9) SHA1(c707bdcecef79774c2a8a23d1f3e9ba382cb9304), ROM_BIOS(1) ) ROM_SYSTEM_BIOS(2, "danish", "Danish") - ROMX_LOAD( "danish96k3.rom", 0x4000, 0x2000, CRC(795c22ea) SHA1(0a57394cd986c5b338b38d514e894bace7f6e47b), ROM_BIOS(2) ) + ROMX_LOAD( "danish96k3.ic44", 0x4000, 0x2000, CRC(795c22ea) SHA1(0a57394cd986c5b338b38d514e894bace7f6e47b), ROM_BIOS(2) ) ROM_LOAD( "dosrom.rom", 0xe000, 0x2000, CRC(011e106a) SHA1(e77f0ca99790551a7122945f3194516b2390fb69) ) ROM_END ROM_START( lynx128k ) - ROM_REGION( 0x50000, "maincpu", ROMREGION_ERASEFF ) - ROM_LOAD( "lynx128-1.rom", 0x0000, 0x2000, CRC(65d292ce) SHA1(36567c2fbd9cf72f758e8cb80c21cb4d82040752) ) - ROM_LOAD( "lynx128-2.rom", 0x2000, 0x2000, CRC(23288773) SHA1(e12a7ebea3fae5eb375c03e848dbb81070d9d189) ) - ROM_LOAD( "lynx128-3.rom", 0x4000, 0x2000, CRC(9827b9e9) SHA1(1092367b2af51c72ce9be367179240d692aeb131) ) + ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF ) + ROM_LOAD( "lynx128-1.ic1", 0x0000, 0x2000, CRC(65d292ce) SHA1(36567c2fbd9cf72f758e8cb80c21cb4d82040752) ) + ROM_LOAD( "lynx128-2.ic2", 0x2000, 0x2000, CRC(23288773) SHA1(e12a7ebea3fae5eb375c03e848dbb81070d9d189) ) + ROM_LOAD( "lynx128-3.ic3", 0x4000, 0x2000, CRC(9827b9e9) SHA1(1092367b2af51c72ce9be367179240d692aeb131) ) ROM_LOAD( "dosrom.rom", 0xe000, 0x2000, CRC(011e106a) SHA1(e77f0ca99790551a7122945f3194516b2390fb69) ) ROM_END /* Driver */ /* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP( 1983, lynx48k, 0, 0, lynx48k, lynx48k, camplynx_state, init_lynx48k, "Camputers", "Lynx 48k", 0 ) -COMP( 1983, lynx96k, lynx48k, 0, lynx96k, lynx48k, camplynx_state, init_lynx48k, "Camputers", "Lynx 96k", 0 ) -COMP( 1983, lynx128k, lynx48k, 0, lynx128k, lynx48k, camplynx_state, init_lynx128k, "Camputers", "Lynx 128k", 0 ) +COMP( 1983, lynx48k, 0, 0, lynx48k, lynx48k, camplynx_state, init_lynx48k, "Camputers", "Lynx 48k", MACHINE_SUPPORTS_SAVE ) +COMP( 1983, lynx96k, lynx48k, 0, lynx96k, lynx48k, camplynx_state, init_lynx48k, "Camputers", "Lynx 96k", MACHINE_SUPPORTS_SAVE ) +COMP( 1983, lynx128k, lynx48k, 0, lynx128k, lynx48k, camplynx_state, init_lynx128k, "Camputers", "Lynx 128k", MACHINE_SUPPORTS_SAVE ) -- cgit v1.2.3