diff options
author | 2020-06-13 03:34:47 +1000 | |
---|---|---|
committer | 2020-06-13 03:34:47 +1000 | |
commit | 1ae6bbdb4f310fa691a95ac5d00ac21c3320a0e3 (patch) | |
tree | 7419852a0d94134743defc83b6e2c555772172dd | |
parent | 72397ac72513b23256cbdb876c9875541f7c9cc0 (diff) |
(nw) more cleanups
-rw-r--r-- | src/mame/drivers/cm1800.cpp | 2 | ||||
-rw-r--r-- | src/mame/drivers/cortex.cpp | 49 | ||||
-rw-r--r-- | src/mame/drivers/d6809.cpp | 10 | ||||
-rw-r--r-- | src/mame/drivers/dg680.cpp | 39 | ||||
-rw-r--r-- | src/mame/drivers/dim68k.cpp | 18 | ||||
-rw-r--r-- | src/mame/drivers/dolphunk.cpp | 24 | ||||
-rw-r--r-- | src/mame/drivers/dps1.cpp | 40 | ||||
-rw-r--r-- | src/mame/drivers/dsb46.cpp | 42 | ||||
-rw-r--r-- | src/mame/drivers/jonos.cpp | 19 | ||||
-rw-r--r-- | src/mame/drivers/microdec.cpp | 6 | ||||
-rw-r--r-- | src/mame/drivers/mz6500.cpp | 69 |
11 files changed, 184 insertions, 134 deletions
diff --git a/src/mame/drivers/cm1800.cpp b/src/mame/drivers/cm1800.cpp index 413980e72be..f319dd4b18d 100644 --- a/src/mame/drivers/cm1800.cpp +++ b/src/mame/drivers/cm1800.cpp @@ -127,4 +127,4 @@ ROM_END /* Driver */ /* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ -COMP( 1981, cm1800, 0, 0, cm1800, cm1800, cm1800_state, empty_init, "<unknown>", "CM-1800", MACHINE_NO_SOUND_HW) +COMP( 1981, cm1800, 0, 0, cm1800, cm1800, cm1800_state, empty_init, "<unknown>", "CM-1800", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW | MACHINE_SUPPORTS_SAVE ) 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 ) diff --git a/src/mame/drivers/d6809.cpp b/src/mame/drivers/d6809.cpp index f464a986d7a..5fedeab68a9 100644 --- a/src/mame/drivers/d6809.cpp +++ b/src/mame/drivers/d6809.cpp @@ -128,7 +128,8 @@ private: void mem_map(address_map &map); u8 m_term_data; - virtual void machine_reset() override; + void machine_start() override; + void machine_reset() override; required_device<cpu_device> m_maincpu; required_device<generic_terminal_device> m_terminal; required_device<upd765a_device> m_fdc; @@ -174,6 +175,11 @@ void d6809_state::kbd_put(u8 data) m_term_data = data; } +void d6809_state::machine_start() +{ + save_item(NAME(m_term_data)); +} + void d6809_state::machine_reset() { m_fdc->set_ready_line_connected(1); @@ -217,4 +223,4 @@ ROM_END /* Driver */ // YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS -COMP( 1983, d6809, 0, 0, d6809, d6809, d6809_state, empty_init, "Dunfield", "6809 Portable", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW ) +COMP( 1983, d6809, 0, 0, d6809, d6809, d6809_state, empty_init, "Dunfield", "6809 Portable", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/dg680.cpp b/src/mame/drivers/dg680.cpp index 65e096cc846..fee76a61779 100644 --- a/src/mame/drivers/dg680.cpp +++ b/src/mame/drivers/dg680.cpp @@ -93,22 +93,22 @@ private: void portb_w(u8 data); u8 port08_r(); void port08_w(u8 data); + u8 mem_r(offs_t offset); + void mem_w(offs_t offset, u8 data); DECLARE_WRITE_LINE_MEMBER(kansas_w); TIMER_DEVICE_CALLBACK_MEMBER(kansas_r); void kbd_put(u8 data); - void dg680_io(address_map &map); - void dg680_mem(address_map &map); + void io_map(address_map &map); + void mem_map(address_map &map); + void machine_reset() override; + void machine_start() override; u8 m_pio_b; u8 m_term_data; u8 m_protection[0x100]; - virtual void machine_reset() override; - u8 m_cass_data[4]; bool m_cassold, m_cassinbit, m_cassoutbit; - u8 mem_r(offs_t offset); - void mem_w(offs_t offset, u8 data); required_device<cpu_device> m_maincpu; required_device<cassette_image_device> m_cass; @@ -175,16 +175,16 @@ void dg680_state::mem_w(offs_t offset, u8 data) } -void dg680_state::dg680_mem(address_map &map) +void dg680_state::mem_map(address_map &map) { map.unmap_value_high(); map(0x0000, 0xcfff).ram(); - map(0xd000, 0xd7ff).rom(); + map(0xd000, 0xd7ff).rom().region("maincpu", 0); map(0xd800, 0xefff).ram(); map(0xf000, 0xffff).rw(FUNC(dg680_state::mem_r),FUNC(dg680_state::mem_w)); } -void dg680_state::dg680_io(address_map &map) +void dg680_state::io_map(address_map &map) { map.unmap_value_high(); map.global_mask(0xff); @@ -196,6 +196,17 @@ void dg680_state::dg680_io(address_map &map) //map(0x0c,0x0d).rw("am9519", FUNC(am9519_device::read), FUNC(am9519_device::write)); } +void dg680_state::machine_start() +{ + save_item(NAME(m_pio_b)); + save_item(NAME(m_term_data)); + save_item(NAME(m_protection)); + save_item(NAME(m_cass_data)); + save_item(NAME(m_cassold)); + save_item(NAME(m_cassinbit)); + save_item(NAME(m_cassoutbit)); +} + void dg680_state::machine_reset() { m_maincpu->set_pc(0xd000); @@ -285,8 +296,8 @@ void dg680_state::dg680(machine_config &config) /* basic machine hardware */ z80_device& maincpu(Z80(config, m_maincpu, XTAL(8'000'000) / 4)); - maincpu.set_addrmap(AS_PROGRAM, &dg680_state::dg680_mem); - maincpu.set_addrmap(AS_IO, &dg680_state::dg680_io); + maincpu.set_addrmap(AS_PROGRAM, &dg680_state::mem_map); + maincpu.set_addrmap(AS_IO, &dg680_state::io_map); maincpu.set_daisy_config(dg680_daisy_chain); /* Keyboard */ @@ -313,8 +324,8 @@ void dg680_state::dg680(machine_config &config) /* ROM definition */ ROM_START( dg680 ) - ROM_REGION( 0x10000, "maincpu", 0 ) - ROM_LOAD( "dg680.rom", 0xd000, 0x0800, BAD_DUMP CRC(c1aaef6a) SHA1(1508ca8315452edfb984718e795ccbe79a0c0b58) ) + ROM_REGION( 0x0800, "maincpu", 0 ) + ROM_LOAD( "dg680.rom", 0x0000, 0x0800, BAD_DUMP CRC(c1aaef6a) SHA1(1508ca8315452edfb984718e795ccbe79a0c0b58) ) ROM_REGION( 0x0020, "proms", 0 ) ROM_LOAD( "82s123.bin", 0x0000, 0x0020, NO_DUMP ) @@ -323,4 +334,4 @@ ROM_END /* Driver */ // YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS -COMP( 1980, dg680, 0, 0, dg680, dg680, dg680_state, empty_init, "David Griffiths", "DG680 with DGOS-Z80 1.4", MACHINE_NO_SOUND_HW ) +COMP( 1980, dg680, 0, 0, dg680, dg680, dg680_state, empty_init, "David Griffiths", "DG680 with DGOS-Z80 1.4", MACHINE_NO_SOUND_HW | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/dim68k.cpp b/src/mame/drivers/dim68k.cpp index 0685f0599e3..ebb3ce6763d 100644 --- a/src/mame/drivers/dim68k.cpp +++ b/src/mame/drivers/dim68k.cpp @@ -77,12 +77,13 @@ private: void kbd_put(u8 data); MC6845_UPDATE_ROW(crtc_update_row); - void dim68k_mem(address_map &map); + void mem_map(address_map &map); bool m_speaker_bit; u8 m_video_control; u8 m_term_data; - virtual void machine_reset() override; + void machine_reset() override; + void machine_start() override; required_device<cpu_device> m_maincpu; required_device<mc6845_device> m_crtc; required_device<speaker_sound_device> m_speaker; @@ -189,7 +190,7 @@ void dim68k_state::dim68k_banksw_w(u16 data) { } -void dim68k_state::dim68k_mem(address_map &map) +void dim68k_state::mem_map(address_map &map) { map.unmap_value_high(); map(0x00000000, 0x00feffff).ram().share("ram"); // 16MB RAM / ROM at boot @@ -310,11 +311,18 @@ void dim68k_state::kbd_put(u8 data) m_term_data = data; } +void dim68k_state::machine_start() +{ + save_item(NAME(m_speaker_bit)); + save_item(NAME(m_video_control)); + save_item(NAME(m_term_data)); +} + void dim68k_state::dim68k(machine_config &config) { /* basic machine hardware */ M68000(config, m_maincpu, XTAL(10'000'000)); - m_maincpu->set_addrmap(AS_PROGRAM, &dim68k_state::dim68k_mem); + m_maincpu->set_addrmap(AS_PROGRAM, &dim68k_state::mem_map); /* video hardware */ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); @@ -406,4 +414,4 @@ ROM_END /* Driver */ // YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS -COMP( 1984, dim68k, 0, 0, dim68k, dim68k, dim68k_state, empty_init, "Micro Craft", "Dimension 68000", MACHINE_NOT_WORKING) +COMP( 1984, dim68k, 0, 0, dim68k, dim68k, dim68k_state, empty_init, "Micro Craft", "Dimension 68000", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/dolphunk.cpp b/src/mame/drivers/dolphunk.cpp index 1c90abbce24..94a05ae39ce 100644 --- a/src/mame/drivers/dolphunk.cpp +++ b/src/mame/drivers/dolphunk.cpp @@ -110,8 +110,9 @@ private: void port00_w(offs_t offset, u8 data); void port06_w(u8 data); TIMER_DEVICE_CALLBACK_MEMBER(kansas_w); - void dauphin_io(address_map &map); - void dauphin_mem(address_map &map); + void io_map(address_map &map); + void mem_map(address_map &map); + void machine_start() override; u8 m_cass_data; u8 m_last_key; @@ -182,7 +183,16 @@ TIMER_DEVICE_CALLBACK_MEMBER(dauphin_state::kansas_w) m_cass->output(BIT(m_cass_data, 0) ? -1.0 : +1.0); // 2000Hz } -void dauphin_state::dauphin_mem(address_map &map) +void dauphin_state::machine_start() +{ + save_item(NAME(m_cass_data)); + save_item(NAME(m_last_key)); + save_item(NAME(m_cassbit)); + save_item(NAME(m_cassold)); + save_item(NAME(m_speaker_state)); +} + +void dauphin_state::mem_map(address_map &map) { map.unmap_value_high(); map(0x0000, 0x01ff).rom(); @@ -190,7 +200,7 @@ void dauphin_state::dauphin_mem(address_map &map) map(0x0c00, 0x0fff).rom(); } -void dauphin_state::dauphin_io(address_map &map) +void dauphin_state::io_map(address_map &map) { map.unmap_value_high(); map(0x00, 0x03).w(FUNC(dauphin_state::port00_w)); // 4-led display @@ -230,8 +240,8 @@ void dauphin_state::dauphin(machine_config &config) { /* basic machine hardware */ S2650(config, m_maincpu, XTAL(1'000'000)); - m_maincpu->set_addrmap(AS_PROGRAM, &dauphin_state::dauphin_mem); - m_maincpu->set_addrmap(AS_IO, &dauphin_state::dauphin_io); + m_maincpu->set_addrmap(AS_PROGRAM, &dauphin_state::mem_map); + m_maincpu->set_addrmap(AS_IO, &dauphin_state::io_map); m_maincpu->sense_handler().set(FUNC(dauphin_state::cass_r)); m_maincpu->flag_handler().set([this] (bool state) { m_cassbit = state; }); @@ -269,4 +279,4 @@ ROM_END /* Driver */ // YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS -COMP( 1979, dauphin, 0, 0, dauphin, dauphin, dauphin_state, empty_init, "LCD EPFL Stoppani", "Dauphin", 0 ) +COMP( 1979, dauphin, 0, 0, dauphin, dauphin, dauphin_state, empty_init, "LCD EPFL Stoppani", "Dauphin", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/dps1.cpp b/src/mame/drivers/dps1.cpp index 61911ca608b..1c8a493fb07 100644 --- a/src/mame/drivers/dps1.cpp +++ b/src/mame/drivers/dps1.cpp @@ -29,16 +29,18 @@ public: dps1_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_fdc(*this, "fdc") , m_floppy0(*this, "fdc:0") //, m_floppy1(*this, "fdc:1") { } void dps1(machine_config &config); - void init_dps1(); private: - virtual void machine_reset() override; + void machine_reset() override; + void machine_start() override; void portb2_w(u8 data); void portb4_w(u8 data); void portb6_w(u8 data); @@ -52,9 +54,12 @@ private: void io_map(address_map &map); void mem_map(address_map &map); + bool m_rom_in_map; bool m_dma_dir; u16 m_dma_adr; required_device<cpu_device> m_maincpu; + required_region_ptr<u8> m_rom; + required_shared_ptr<u8> m_ram; required_device<upd765_family_device> m_fdc; required_device<floppy_connector> m_floppy0; //required_device<floppy_connector> m_floppy1; @@ -62,7 +67,7 @@ private: void dps1_state::mem_map(address_map &map) { - map(0x0000, 0x03ff).bankr("bankr0").bankw("bankw0"); + map(0x0000, 0x03ff).ram().share("mainram").lr8(NAME([this] (offs_t offset) { if(m_rom_in_map) return m_rom[offset]; else return m_ram[offset]; })); map(0x0400, 0xffff).ram(); } @@ -108,7 +113,7 @@ void dps1_state::portb4_w(u8 data) // enable eprom void dps1_state::portb6_w(u8 data) { - membank("bankr0")->set_entry(1); // point at rom + m_rom_in_map = true; } // set A16-23 @@ -131,7 +136,7 @@ void dps1_state::portbc_w(u8 data) // disable eprom void dps1_state::portbe_w(u8 data) { - membank("bankr0")->set_entry(0); // point at ram + m_rom_in_map = false; } // read 8 front-panel switches @@ -166,10 +171,16 @@ WRITE_LINE_MEMBER( dps1_state::fdc_drq_w ) // else take /dack high (unsupported) } +void dps1_state::machine_start() +{ + save_item(NAME(m_rom_in_map)); + save_item(NAME(m_dma_dir)); + save_item(NAME(m_dma_adr)); +} + void dps1_state::machine_reset() { - membank("bankr0")->set_entry(1); // point at rom - membank("bankw0")->set_entry(0); // always write to ram + m_rom_in_map = true; // set fdc for 8 inch floppies m_fdc->set_rate(500000); // turn on the motor @@ -178,15 +189,6 @@ void dps1_state::machine_reset() floppy->mon_w(0); } -void dps1_state::init_dps1() -{ - u8 *main = memregion("maincpu")->base(); - - membank("bankr0")->configure_entry(1, &main[0x0000]); - membank("bankr0")->configure_entry(0, &main[0x0400]); - membank("bankw0")->configure_entry(0, &main[0x0400]); -} - static INPUT_PORTS_START( dps1 ) INPUT_PORTS_END @@ -228,8 +230,8 @@ void dps1_state::dps1(machine_config &config) } ROM_START( dps1 ) - ROM_REGION( 0x800, "maincpu", 0 ) - ROM_LOAD( "boot 1280", 0x000, 0x400, CRC(9c2e98fa) SHA1(78e6c9d00aa6e8f6c4d3c65984cfdf4e99434c66) ) // actually on the FDC-2 board + ROM_REGION( 0x0400, "maincpu", 0 ) + ROM_LOAD( "boot 1280", 0x0000, 0x0400, CRC(9c2e98fa) SHA1(78e6c9d00aa6e8f6c4d3c65984cfdf4e99434c66) ) // actually on the FDC-2 board ROM_END -COMP( 1979, dps1, 0, 0, dps1, dps1, dps1_state, init_dps1, "Ithaca InterSystems", "DPS-1", MACHINE_NO_SOUND_HW ) +COMP( 1979, dps1, 0, 0, dps1, dps1, dps1_state, empty_init, "Ithaca InterSystems", "DPS-1", MACHINE_NO_SOUND_HW | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/dsb46.cpp b/src/mame/drivers/dsb46.cpp index c6518075c33..09cc2dcef62 100644 --- a/src/mame/drivers/dsb46.cpp +++ b/src/mame/drivers/dsb46.cpp @@ -40,26 +40,31 @@ public: dsb46_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") { } void dsb46(machine_config &config); - void init_dsb46(); private: - virtual void machine_reset() override; + void machine_reset() override; + void machine_start() override; void port1a_w(u8 data); - void dsb46_io(address_map &map); - void dsb46_mem(address_map &map); + void io_map(address_map &map); + void mem_map(address_map &map); + bool m_rom_in_map; required_device<z80_device> m_maincpu; + required_region_ptr<u8> m_rom; + required_shared_ptr<u8> m_ram; }; -void dsb46_state::dsb46_mem(address_map &map) +void dsb46_state::mem_map(address_map &map) { - map(0x0000, 0x07ff).bankr("read").bankw("write"); + map(0x0000, 0x07ff).ram().share("mainram").lr8(NAME([this] (offs_t offset) { if(m_rom_in_map) return m_rom[offset]; else return m_ram[offset]; })); map(0x0800, 0xffff).ram(); } -void dsb46_state::dsb46_io(address_map &map) +void dsb46_state::io_map(address_map &map) { map.global_mask(0xff); map.unmap_value_high(); @@ -76,24 +81,19 @@ void dsb46_state::dsb46_io(address_map &map) static INPUT_PORTS_START( dsb46 ) INPUT_PORTS_END -void dsb46_state::init_dsb46() +void dsb46_state::machine_start() { - u8 *RAM = memregion("maincpu")->base(); - membank("read")->configure_entry(0, &RAM[0x10000]); - membank("read")->configure_entry(1, &RAM[0x00000]); - membank("write")->configure_entry(0, &RAM[0x00000]); + save_item(NAME(m_rom_in_map)); } void dsb46_state::machine_reset() { - membank("read")->set_entry(0); - membank("write")->set_entry(0); - m_maincpu->reset(); + m_rom_in_map = true; } void dsb46_state::port1a_w(u8 data) { - membank("read")->set_entry(data & 1); + m_rom_in_map = BIT(~data, 0); } static const z80_daisy_config daisy_chain[] = @@ -108,8 +108,8 @@ void dsb46_state::dsb46(machine_config &config) { // basic machine hardware Z80(config, m_maincpu, 24_MHz_XTAL / 6); - m_maincpu->set_addrmap(AS_PROGRAM, &dsb46_state::dsb46_mem); - m_maincpu->set_addrmap(AS_IO, &dsb46_state::dsb46_io); + m_maincpu->set_addrmap(AS_PROGRAM, &dsb46_state::mem_map); + m_maincpu->set_addrmap(AS_IO, &dsb46_state::io_map); m_maincpu->set_daisy_config(daisy_chain); /* Devices */ @@ -134,11 +134,11 @@ void dsb46_state::dsb46(machine_config &config) } ROM_START( dsb46 ) - ROM_REGION( 0x10800, "maincpu", 0 ) - ROM_LOAD( "1538a.bin", 0x10000, 0x800, CRC(65b3e26e) SHA1(afe1f03f266b7d13fdb1f1bc6762df5e0aa5c764) ) + ROM_REGION( 0x0800, "maincpu", 0 ) + ROM_LOAD( "1538a.bin", 0x0000, 0x0800, CRC(65b3e26e) SHA1(afe1f03f266b7d13fdb1f1bc6762df5e0aa5c764) ) ROM_REGION( 0x4000, "ades", 0 ) ROM_LOAD( "ades.bin", 0x0000, 0x4000, CRC(d374abf0) SHA1(331f51a2bb81375aeffbe63c1ebc1d7cd779b9c3) ) ROM_END -COMP( 198?, dsb46, 0, 0, dsb46, dsb46, dsb46_state, init_dsb46, "Davidge", "DSB-4/6", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW ) +COMP( 198?, dsb46, 0, 0, dsb46, dsb46, dsb46_state, empty_init, "Davidge", "DSB-4/6", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/jonos.cpp b/src/mame/drivers/jonos.cpp index 52d5200099e..2009928dd76 100644 --- a/src/mame/drivers/jonos.cpp +++ b/src/mame/drivers/jonos.cpp @@ -41,13 +41,14 @@ private: u32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); void kbd_put(u8 data); - void jonos_mem(address_map &map); + void mem_map(address_map &map); u8 m_framecnt; u8 m_term_data; u8 m_curs_ctrl; u16 m_curs_pos; - virtual void machine_reset() override; + void machine_reset() override; + void machine_start() override; required_device<cpu_device> m_maincpu; required_shared_ptr<u8> m_p_videoram; required_region_ptr<u8> m_p_chargen; @@ -55,7 +56,7 @@ private: -void jonos_state::jonos_mem(address_map &map) +void jonos_state::mem_map(address_map &map) { map.unmap_value_high(); map(0x0000, 0x0fff).rom().region("roms", 0); @@ -105,6 +106,14 @@ void jonos_state::cursor_w(offs_t offset, u8 data) m_curs_pos = (m_curs_pos & 0xff) | (data << 8); } +void jonos_state::machine_start() +{ + save_item(NAME(m_term_data)); + save_item(NAME(m_curs_ctrl)); + save_item(NAME(m_curs_pos)); + save_item(NAME(m_framecnt)); +} + void jonos_state::machine_reset() { m_curs_ctrl = 0; @@ -179,7 +188,7 @@ void jonos_state::jonos(machine_config &config) { /* basic machine hardware */ I8085A(config, m_maincpu, XTAL(16'000'000) / 4); - m_maincpu->set_addrmap(AS_PROGRAM, &jonos_state::jonos_mem); + m_maincpu->set_addrmap(AS_PROGRAM, &jonos_state::mem_map); /* video hardware */ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); @@ -213,4 +222,4 @@ ROM_END /* Driver */ // YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS -COMP( 198?, jonos, 0, 0, jonos, jonos, jonos_state, empty_init, "Jonos", "Escort", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +COMP( 198?, jonos, 0, 0, jonos, jonos, jonos_state, empty_init, "Jonos", "Escort", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/microdec.cpp b/src/mame/drivers/microdec.cpp index 88528a9ed3d..716cc940c62 100644 --- a/src/mame/drivers/microdec.cpp +++ b/src/mame/drivers/microdec.cpp @@ -167,6 +167,8 @@ INPUT_PORTS_END void microdec_state::machine_start() { + save_item(NAME(m_portf8)); + save_item(NAME(m_fdc_rdy)); } void microdec_state::machine_reset() @@ -263,5 +265,5 @@ ROM_END /* Driver */ // YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS -COMP( 1982, md2, 0, 0, microdec, microdec, microdec_state, init_microdec, "Morrow Designs", "Micro Decision MD-2", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW ) -COMP( 1982, md3, md2, 0, microdec, microdec, microdec_state, init_microdec, "Morrow Designs", "Micro Decision MD-3", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW ) +COMP( 1982, md2, 0, 0, microdec, microdec, microdec_state, init_microdec, "Morrow Designs", "Micro Decision MD-2", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW | MACHINE_SUPPORTS_SAVE ) +COMP( 1982, md3, md2, 0, microdec, microdec, microdec_state, init_microdec, "Morrow Designs", "Micro Decision MD-3", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/mz6500.cpp b/src/mame/drivers/mz6500.cpp index 400a314ee9e..76ba97cf42a 100644 --- a/src/mame/drivers/mz6500.cpp +++ b/src/mame/drivers/mz6500.cpp @@ -20,30 +20,31 @@ class mz6500_state : public driver_device { public: mz6500_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag), - m_hgdc(*this, "upd7220"), - m_fdc(*this, "upd765"), - m_video_ram(*this, "video_ram"), - m_maincpu(*this, "maincpu"), - m_palette(*this, "palette") { } + : driver_device(mconfig, type, tag) + , m_hgdc(*this, "upd7220") + , m_fdc(*this, "upd765") + , m_vram(*this, "videoram") + , m_maincpu(*this, "maincpu") + , m_palette(*this, "palette") + { } void mz6500(machine_config &config); private: required_device<upd7220_device> m_hgdc; required_device<upd765a_device> m_fdc; - uint8_t mz6500_vram_r(offs_t offset); - void mz6500_vram_w(offs_t offset, uint8_t data); + u8 vram_r(offs_t offset); + void vram_w(offs_t offset, u8 data); void fdc_irq(bool state); void fdc_drq(bool state); - required_shared_ptr<uint16_t> m_video_ram; - virtual void machine_reset() override; - virtual void video_start() override; + required_shared_ptr<u16> m_vram; + void machine_reset() override; + void machine_start() override; required_device<cpu_device> m_maincpu; required_device<palette_device> m_palette; UPD7220_DISPLAY_PIXELS_MEMBER( hgdc_display_pixels ); - void mz6500_io(address_map &map); - void mz6500_map(address_map &map); + void io_map(address_map &map); + void mem_map(address_map &map); void upd7220_map(address_map &map); }; @@ -51,11 +52,11 @@ UPD7220_DISPLAY_PIXELS_MEMBER( mz6500_state::hgdc_display_pixels ) { const rgb_t *palette = m_palette->palette()->entry_list_raw(); int gfx[3]; - uint8_t i,pen; + u8 i,pen; - gfx[0] = m_video_ram[(address + 0x00000) >> 1]; - gfx[1] = m_video_ram[(address + 0x10000) >> 1]; - gfx[2] = m_video_ram[(address + 0x20000) >> 1]; + gfx[0] = m_vram[(address + 0x00000) >> 1]; + gfx[1] = m_vram[(address + 0x10000) >> 1]; + gfx[2] = m_vram[(address + 0x20000) >> 1]; for(i=0; i<16; i++) { @@ -66,34 +67,29 @@ UPD7220_DISPLAY_PIXELS_MEMBER( mz6500_state::hgdc_display_pixels ) } -void mz6500_state::video_start() +u8 mz6500_state::vram_r(offs_t offset) { + return m_vram[offset >> 1] >> ((offset & 1) ? 8 : 0); } - -uint8_t mz6500_state::mz6500_vram_r(offs_t offset) -{ - return m_video_ram[offset >> 1] >> ((offset & 1) ? 8 : 0); -} - -void mz6500_state::mz6500_vram_w(offs_t offset, uint8_t data) +void mz6500_state::vram_w(offs_t offset, u8 data) { int mask = (offset & 1) ? 8 : 0; offset >>= 1; - m_video_ram[offset] &= 0xff00 >> mask; - m_video_ram[offset] |= data << mask; + m_vram[offset] &= 0xff00 >> mask; + m_vram[offset] |= data << mask; } -void mz6500_state::mz6500_map(address_map &map) +void mz6500_state::mem_map(address_map &map) { map.unmap_value_high(); map(0x00000, 0x9ffff).ram(); // map(0xa0000,0xbffff) kanji/dictionary ROM - map(0xc0000, 0xeffff).rw(FUNC(mz6500_state::mz6500_vram_r), FUNC(mz6500_state::mz6500_vram_w)); + map(0xc0000, 0xeffff).rw(FUNC(mz6500_state::vram_r), FUNC(mz6500_state::vram_w)); map(0xfc000, 0xfffff).rom().region("ipl", 0); } -void mz6500_state::mz6500_io(address_map &map) +void mz6500_state::io_map(address_map &map) { map.unmap_value_high(); // map(0x0000, 0x000f) i8237 dma @@ -124,6 +120,10 @@ static INPUT_PORTS_START( mz6500 ) INPUT_PORTS_END +void mz6500_state::machine_start() +{ +} + void mz6500_state::machine_reset() { } @@ -145,7 +145,7 @@ static void mz6500_floppies(device_slot_interface &device) void mz6500_state::upd7220_map(address_map &map) { - map(0x00000, 0x3ffff).ram().share("video_ram"); + map(0x00000, 0x3ffff).ram().share("videoram"); } @@ -153,9 +153,8 @@ void mz6500_state::mz6500(machine_config &config) { /* basic machine hardware */ I8086(config, m_maincpu, 8000000); //unk clock - m_maincpu->set_addrmap(AS_PROGRAM, &mz6500_state::mz6500_map); - m_maincpu->set_addrmap(AS_IO, &mz6500_state::mz6500_io); - + m_maincpu->set_addrmap(AS_PROGRAM, &mz6500_state::mem_map); + m_maincpu->set_addrmap(AS_IO, &mz6500_state::io_map); /* video hardware */ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); @@ -191,4 +190,4 @@ ROM_END /* Driver */ // YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS -COMP( 198?, mz6500, 0, 0, mz6500, mz6500, mz6500_state, empty_init, "Sharp", "MZ-6500", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +COMP( 198?, mz6500, 0, 0, mz6500, mz6500, mz6500_state, empty_init, "Sharp", "MZ-6500", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) |