From a3c65b6ce2b7401e24670601117d2d3d12e50840 Mon Sep 17 00:00:00 2001 From: Robbbert Date: Sun, 14 Jun 2020 02:55:42 +1000 Subject: (nw) more cleanups --- src/mame/drivers/bbcbc.cpp | 8 ++-- src/mame/drivers/jtc.cpp | 8 ++-- src/mame/drivers/mekd2.cpp | 44 ++++++++++----------- src/mame/drivers/osi.cpp | 20 +++++++--- src/mame/drivers/phc25.cpp | 36 ++++++++++------- src/mame/drivers/pulsar.cpp | 16 ++------ src/mame/drivers/rc702.cpp | 62 +++++++++++++++-------------- src/mame/drivers/systec.cpp | 28 +++++++------- src/mame/drivers/vixen.cpp | 24 +++++++----- src/mame/drivers/vta2000.cpp | 2 +- src/mame/drivers/z1013.cpp | 74 ++++++++++++++++++++++++----------- src/mame/drivers/z9001.cpp | 92 ++++++++++++++++++++++++++++---------------- src/mame/includes/phc25.h | 23 +++++------ src/mame/includes/vixen.h | 2 - 14 files changed, 256 insertions(+), 183 deletions(-) diff --git a/src/mame/drivers/bbcbc.cpp b/src/mame/drivers/bbcbc.cpp index 8c36c1ecdba..71d275f0f35 100644 --- a/src/mame/drivers/bbcbc.cpp +++ b/src/mame/drivers/bbcbc.cpp @@ -46,13 +46,13 @@ public: , m_buttons(*this, "BUTTONS.%u", 0) { } + void bbcbc(machine_config &config); + +private: uint8_t input_r(); void input_select_w(uint8_t data); - - void bbcbc(machine_config &config); void io_map(address_map &map); void mem_map(address_map &map); -private: uint8_t m_input_select; virtual void machine_start() override; virtual void machine_reset() override; @@ -181,4 +181,4 @@ ROM_END ***************************************************************************/ // YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS -CONS(1985, bbcbc, 0, 0, bbcbc, bbcbc, bbcbc_state, empty_init, "Unicard", "BBC Bridge Companion", MACHINE_NO_SOUND_HW | MACHINE_SUPPORTS_SAVE) +CONS(1985, bbcbc, 0, 0, bbcbc, bbcbc, bbcbc_state, empty_init, "Unicard", "BBC Bridge Companion", MACHINE_NO_SOUND_HW | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/jtc.cpp b/src/mame/drivers/jtc.cpp index 484151da7a3..ffd343f3f2c 100644 --- a/src/mame/drivers/jtc.cpp +++ b/src/mame/drivers/jtc.cpp @@ -895,27 +895,27 @@ void jtces40_state::jtces40(machine_config &config) /* ROMs */ ROM_START( jtc ) - ROM_REGION( 0x10000, UB8830D_TAG, 0 ) + ROM_REGION( 0x2800, UB8830D_TAG, 0 ) ROM_LOAD( "u883rom.bin", 0x0000, 0x0800, CRC(2453c8c1) SHA1(816f5d08f8064b69b1779eb6661fde091aa58ba8) ) ROM_LOAD( "os2k_0800.bin", 0x0800, 0x0800, CRC(c81a2e19) SHA1(97c3b36c7b555081e084403e8f800fc9dbf5e68d) ) // u2716c1.bin ROM_LOAD( "u2716c2.bin", 0x2000, 0x0800, NO_DUMP ) // doesn't seem to be needed? ROM_END ROM_START( jtces88 ) - ROM_REGION( 0x10000, UB8830D_TAG, 0 ) + ROM_REGION( 0x2800, UB8830D_TAG, 0 ) ROM_LOAD( "u883rom.bin", 0x0000, 0x0800, CRC(2453c8c1) SHA1(816f5d08f8064b69b1779eb6661fde091aa58ba8) ) ROM_LOAD( "es1988_0800.bin", 0x0800, 0x0800, CRC(af3e882f) SHA1(65af0d0f5f882230221e9552707d93ed32ba794d) ) ROM_LOAD( "es1988_2000.bin", 0x2000, 0x0800, CRC(5ff87c1e) SHA1(fbd2793127048bd9706970b7bce84af2cb258dc5) ) ROM_END ROM_START( jtces23 ) - ROM_REGION( 0x10000, UB8830D_TAG, 0 ) + ROM_REGION( 0x2800, UB8830D_TAG, 0 ) ROM_LOAD( "u883rom.bin", 0x0000, 0x0800, CRC(2453c8c1) SHA1(816f5d08f8064b69b1779eb6661fde091aa58ba8) ) ROM_LOAD( "es23_0800.bin", 0x0800, 0x1000, CRC(16128b64) SHA1(90fb0deeb5660f4a2bb38d51981cc6223d5ddf6b) ) ROM_END ROM_START( jtces40 ) - ROM_REGION( 0x10000, UB8830D_TAG, 0 ) + ROM_REGION( 0x2800, UB8830D_TAG, 0 ) ROM_LOAD( "u883rom.bin", 0x0000, 0x0800, CRC(2453c8c1) SHA1(816f5d08f8064b69b1779eb6661fde091aa58ba8) ) ROM_LOAD( "es40_0800.bin", 0x0800, 0x1800, CRC(770c87ce) SHA1(1a5227ba15917f2a572cb6c27642c456f5b32b90) ) ROM_END diff --git a/src/mame/drivers/mekd2.cpp b/src/mame/drivers/mekd2.cpp index fe4b6825491..b0f06299280 100644 --- a/src/mame/drivers/mekd2.cpp +++ b/src/mame/drivers/mekd2.cpp @@ -107,16 +107,16 @@ public: void mekd2(machine_config &config); private: - DECLARE_READ_LINE_MEMBER(mekd2_key40_r); - uint8_t mekd2_key_r(); - DECLARE_WRITE_LINE_MEMBER(mekd2_nmi_w); - void mekd2_digit_w(uint8_t data); - void mekd2_segment_w(uint8_t data); + DECLARE_READ_LINE_MEMBER(key40_r); + uint8_t key_r(); + DECLARE_WRITE_LINE_MEMBER(nmi_w); + void digit_w(uint8_t data); + void segment_w(uint8_t data); DECLARE_QUICKLOAD_LOAD_MEMBER(quickload_cb); TIMER_DEVICE_CALLBACK_MEMBER(kansas_w); TIMER_DEVICE_CALLBACK_MEMBER(kansas_r); - void mekd2_mem(address_map &map); + void mem_map(address_map &map); virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; uint8_t m_cass_data[4]; @@ -142,14 +142,14 @@ private: ************************************************************/ -void mekd2_state::mekd2_mem(address_map &map) +void mekd2_state::mem_map(address_map &map) { map(0x0000, 0x00ff).ram(); // user ram map(0x8004, 0x8007).rw(m_pia_u, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); map(0x8008, 0x8009).rw(m_acia, FUNC(acia6850_device::read), FUNC(acia6850_device::write)); map(0x8020, 0x8023).rw(m_pia_s, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); map(0xa000, 0xa07f).ram(); // system ram - map(0xe000, 0xe3ff).rom().mirror(0x1c00); /* JBUG ROM */ + map(0xe000, 0xe3ff).rom().mirror(0x1c00).region("maincpu",0); /* JBUG ROM */ } /*********************************************************** @@ -216,7 +216,7 @@ void mekd2_state::device_timer(emu_timer &timer, device_timer_id id, int param, } -WRITE_LINE_MEMBER( mekd2_state::mekd2_nmi_w ) +WRITE_LINE_MEMBER( mekd2_state::nmi_w ) { if (state) m_maincpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE); @@ -232,12 +232,12 @@ WRITE_LINE_MEMBER( mekd2_state::mekd2_nmi_w ) ************************************************************/ -READ_LINE_MEMBER( mekd2_state::mekd2_key40_r ) +READ_LINE_MEMBER( mekd2_state::key40_r ) { return BIT(m_keydata, 6); } -uint8_t mekd2_state::mekd2_key_r() +uint8_t mekd2_state::key_r() { char kbdrow[4]; uint8_t i; @@ -275,12 +275,12 @@ uint8_t mekd2_state::mekd2_key_r() ************************************************************/ -void mekd2_state::mekd2_segment_w(uint8_t data) +void mekd2_state::segment_w(uint8_t data) { m_segment = data & 0x7f; } -void mekd2_state::mekd2_digit_w(uint8_t data) +void mekd2_state::digit_w(uint8_t data) { if (data < 0x3f) { @@ -371,7 +371,7 @@ void mekd2_state::mekd2(machine_config &config) { /* basic machine hardware */ M6800(config, m_maincpu, XTAL_MEKD2 / 2); /* 614.4 kHz */ - m_maincpu->set_addrmap(AS_PROGRAM, &mekd2_state::mekd2_mem); + m_maincpu->set_addrmap(AS_PROGRAM, &mekd2_state::mem_map); config.set_default_layout(layout_mekd2); @@ -383,11 +383,11 @@ void mekd2_state::mekd2(machine_config &config) /* Devices */ PIA6821(config, m_pia_s, 0); - m_pia_s->readpa_handler().set(FUNC(mekd2_state::mekd2_key_r)); - m_pia_s->readcb1_handler().set(FUNC(mekd2_state::mekd2_key40_r)); - m_pia_s->writepa_handler().set(FUNC(mekd2_state::mekd2_segment_w)); - m_pia_s->writepb_handler().set(FUNC(mekd2_state::mekd2_digit_w)); - m_pia_s->ca2_handler().set(FUNC(mekd2_state::mekd2_nmi_w)); + m_pia_s->readpa_handler().set(FUNC(mekd2_state::key_r)); + m_pia_s->readcb1_handler().set(FUNC(mekd2_state::key40_r)); + m_pia_s->writepa_handler().set(FUNC(mekd2_state::segment_w)); + m_pia_s->writepb_handler().set(FUNC(mekd2_state::digit_w)); + m_pia_s->ca2_handler().set(FUNC(mekd2_state::nmi_w)); m_pia_s->irqa_handler().set_inputline("maincpu", INPUT_LINE_NMI); m_pia_s->irqb_handler().set_inputline("maincpu", INPUT_LINE_NMI); @@ -417,8 +417,8 @@ void mekd2_state::mekd2(machine_config &config) ************************************************************/ ROM_START(mekd2) - ROM_REGION(0x10000,"maincpu",0) - ROM_LOAD("jbug.rom", 0xe000, 0x0400, CRC(5ed08792) SHA1(b06e74652a4c4e67c4a12ddc191ffb8c07f3332e) ) + ROM_REGION(0x0400,"maincpu",0) + ROM_LOAD("jbug.rom", 0x0000, 0x0400, CRC(5ed08792) SHA1(b06e74652a4c4e67c4a12ddc191ffb8c07f3332e) ) ROM_END /*************************************************************************** @@ -428,4 +428,4 @@ ROM_END ***************************************************************************/ // YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS -COMP( 1977, mekd2, 0, 0, mekd2, mekd2, mekd2_state, empty_init, "Motorola", "MEK6800D2" , 0 ) +COMP( 1977, mekd2, 0, 0, mekd2, mekd2, mekd2_state, empty_init, "Motorola", "MEK6800D2" , MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/osi.cpp b/src/mame/drivers/osi.cpp index 08f3f967661..526f0a6e745 100644 --- a/src/mame/drivers/osi.cpp +++ b/src/mame/drivers/osi.cpp @@ -663,6 +663,12 @@ void sb2m600_state::machine_start() /* register for state saving */ save_item(NAME(m_keylatch)); save_pointer(NAME(m_video_ram.target()), OSI600_VIDEORAM_SIZE); + save_item(NAME(m_cass_data)); + save_item(NAME(m_cassbit)); + save_item(NAME(m_cassold)); + save_item(NAME(m_fdc_index)); + save_item(NAME(m_32)); + save_item(NAME(m_coloren)); } void c1p_state::machine_start() @@ -686,6 +692,10 @@ void c1p_state::machine_start() } /* register for state saving */ + save_item(NAME(m_cass_data)); + save_item(NAME(m_cassbit)); + save_item(NAME(m_cassold)); + save_item(NAME(m_fdc_index)); save_item(NAME(m_keylatch)); save_item(NAME(m_32)); save_item(NAME(m_coloren)); @@ -931,8 +941,8 @@ void c1p_state::init_c1p() /* System Drivers */ // YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS -COMP( 1978, sb2m600b, 0, 0, osi600, osi600, sb2m600_state, empty_init, "Ohio Scientific", "Superboard II Model 600 (Rev. B)", 0 ) -//COMP( 1980, sb2m600c, 0, 0, osi600c, osi600, sb2m600_state, empty_init, "Ohio Scientific", "Superboard II Model 600 (Rev. C)", MACHINE_NOT_WORKING) -COMP( 1980, c1p, sb2m600b, 0, c1p, osi600, c1p_state, init_c1p, "Ohio Scientific", "Challenger 1P Series 2", 0 ) -COMP( 1980, c1pmf, sb2m600b, 0, c1pmf, osi600, c1pmf_state, init_c1p, "Ohio Scientific", "Challenger 1P MF Series 2", MACHINE_NOT_WORKING) -COMP( 1979, uk101, sb2m600b, 0, uk101, uk101, uk101_state, empty_init, "Compukit", "UK101", 0 ) +COMP( 1978, sb2m600b, 0, 0, osi600, osi600, sb2m600_state, empty_init, "Ohio Scientific", "Superboard II Model 600 (Rev. B)", MACHINE_SUPPORTS_SAVE ) +//COMP( 1980, sb2m600c, 0, 0, osi600c, osi600, sb2m600_state, empty_init, "Ohio Scientific", "Superboard II Model 600 (Rev. C)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) +COMP( 1980, c1p, sb2m600b, 0, c1p, osi600, c1p_state, init_c1p, "Ohio Scientific", "Challenger 1P Series 2", MACHINE_SUPPORTS_SAVE ) +COMP( 1980, c1pmf, sb2m600b, 0, c1pmf, osi600, c1pmf_state, init_c1p, "Ohio Scientific", "Challenger 1P MF Series 2", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) +COMP( 1979, uk101, sb2m600b, 0, uk101, uk101, uk101_state, empty_init, "Compukit", "UK101", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/phc25.cpp b/src/mame/drivers/phc25.cpp index ccfeabcb8d2..20d38973bff 100644 --- a/src/mame/drivers/phc25.cpp +++ b/src/mame/drivers/phc25.cpp @@ -119,15 +119,15 @@ WRITE_LINE_MEMBER( phc25_state::write_centronics_busy ) /* Memory Maps */ -void phc25_state::phc25_mem(address_map &map) +void phc25_state::mem_map(address_map &map) { map.unmap_value_high(); map(0x0000, 0x5fff).rom().region(Z80_TAG, 0); - map(0x6000, 0x77ff).ram().share("video_ram"); + map(0x6000, 0x77ff).ram().share("videoram"); map(0xc000, 0xffff).ram(); } -void phc25_state::phc25_io(address_map &map) +void phc25_state::io_map(address_map &map) { map.unmap_value_high(); map.global_mask(0xff); @@ -270,16 +270,16 @@ uint8_t phc25_state::video_ram_r(offs_t offset) { if (BIT(m_port40, 7)) // graphics { - return m_video_ram[offset]; + return m_vram[offset]; } else // text { offset &= 0x7ff; - m_vdg->inv_w(BIT(m_video_ram[offset | 0x800], 0)); // cursor attribute - m_vdg->as_w(BIT(m_video_ram[offset | 0x800], 1)); // screen2 lores attribute - m_vdg->css_w(BIT(m_video_ram[offset | 0x800], 2)); // css attribute + m_vdg->inv_w(BIT(m_vram[offset | 0x800], 0)); // cursor attribute + m_vdg->as_w(BIT(m_vram[offset | 0x800], 1)); // screen2 lores attribute + m_vdg->css_w(BIT(m_vram[offset | 0x800], 2)); // css attribute // bit 7 is set for all text (not spaces), meaning is unknown - return m_video_ram[offset]; + return m_vram[offset]; } } @@ -299,11 +299,17 @@ MC6847_GET_CHARROM_MEMBER(phc25_state::ntsc_char_rom_r) return m_char_rom[(ch * 16 + line) & 0xfff]; } -void phc25_state::video_start() +void phc25_state::machine_reset() +{ + m_port40 = 0; +} + +void phc25_state::machine_start() { /* find memory regions */ m_char_rom = memregion(Z80_TAG)->base() + 0x5000; - m_port40 = 0; + save_item(NAME(m_port40)); + save_item(NAME(m_centronics_busy)); } /* Machine Driver */ @@ -312,8 +318,8 @@ void phc25_state::phc25(machine_config &config) { /* basic machine hardware */ Z80(config, m_maincpu, XTAL(4'000'000)); - m_maincpu->set_addrmap(AS_PROGRAM, &phc25_state::phc25_mem); - m_maincpu->set_addrmap(AS_IO, &phc25_state::phc25_io); + m_maincpu->set_addrmap(AS_PROGRAM, &phc25_state::mem_map); + m_maincpu->set_addrmap(AS_IO, &phc25_state::io_map); /* sound hardware */ SPEAKER(config, "mono").front_center(); @@ -379,6 +385,7 @@ ROM_START( phc25 ) ROM_LOAD( "phc25rom.0", 0x0000, 0x2000, CRC(fa28336b) SHA1(582376bee455e124de24ba4ac02326c8a592fa5a)) // 031_00aa.ic13 ? ROM_LOAD( "phc25rom.1", 0x2000, 0x2000, CRC(38fd578b) SHA1(dc3db78c0cdc89f1605200d39535be65a4091705)) // 031_01a.ic14 ? ROM_LOAD( "phc25rom.2", 0x4000, 0x2000, CRC(54392b27) SHA1(1587827fe9438780b50164727ce3fdea1b98078a)) // 031_02a.ic15 ? + ROM_REGION( 0x1000, "chargen", 0 ) ROM_LOAD( "031_04a.ic6", 0x0000, 0x1000, CRC(e56fb8c5) SHA1(6fc388c17fb43debfbc1464f767d0ce1375ce27b)) ROM_END @@ -391,6 +398,7 @@ ROM_START( phc25j ) //ROM_LOAD( "022 00aa.ic", 0x0000, 0x2000, NO_DUMP ) //ROM_LOAD( "022 01aa.ic", 0x2000, 0x2000, NO_DUMP ) //ROM_LOAD( "022 02aa.ic", 0x4000, 0x2000, NO_DUMP ) + //ROM_REGION( 0x1000, "chargen", 0 ) //ROM_LOAD( "022 04a.ic", 0x0000, 0x1000, NO_DUMP ) ROM_END @@ -398,5 +406,5 @@ ROM_END /* Driver */ // YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS -COMP( 1983, phc25, 0, 0, pal, phc25, phc25_state, empty_init, "Sanyo", "PHC-25 (Europe)", MACHINE_NO_SOUND ) -COMP( 1983, phc25j, phc25, 0, ntsc, phc25j, phc25_state, empty_init, "Sanyo", "PHC-25 (Japan)", MACHINE_NO_SOUND ) +COMP( 1983, phc25, 0, 0, pal, phc25, phc25_state, empty_init, "Sanyo", "PHC-25 (Europe)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) +COMP( 1983, phc25j, phc25, 0, ntsc, phc25j, phc25_state, empty_init, "Sanyo", "PHC-25 (Japan)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/pulsar.cpp b/src/mame/drivers/pulsar.cpp index 65ace2fa1f0..adc0d86d746 100644 --- a/src/mame/drivers/pulsar.cpp +++ b/src/mame/drivers/pulsar.cpp @@ -57,11 +57,11 @@ public: : 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") , m_rtc(*this, "rtc") - , m_ram(*this, "mainram") { } void pulsar(machine_config &config); @@ -74,27 +74,26 @@ private: void ppi_pb_w(u8 data); void ppi_pc_w(u8 data); u8 ppi_pc_r(); - u8 read_rom(offs_t offset); void io_map(address_map &map); void mem_map(address_map &map); bool m_rom_in_map; floppy_image_device *m_floppy; + memory_passthrough_handler *m_rom_shadow_tap; required_device m_maincpu; required_region_ptr m_rom; + required_shared_ptr m_ram; required_device m_fdc; required_device m_floppy0; required_device m_floppy1; required_device m_rtc; - memory_passthrough_handler *m_rom_shadow_tap; - required_shared_ptr m_ram; }; void pulsar_state::mem_map(address_map &map) { map(0x0000, 0xffff).ram().share("mainram"); - map(0xf800, 0xffff).r(FUNC(pulsar_state::read_rom)); + map(0xf800, 0xffff).lr8(NAME([this] (offs_t offset) { if(m_rom_in_map) return m_rom[offset]; else return m_ram[offset+0xf800]; })); } void pulsar_state::io_map(address_map &map) @@ -107,13 +106,6 @@ void pulsar_state::io_map(address_map &map) map(0xf0, 0xf0).mirror(0x0f).w("brg", FUNC(com8116_device::stt_str_w)); } -u8 pulsar_state::read_rom(offs_t offset) -{ - if (m_rom_in_map) - return m_rom[offset]; - else - return m_ram[offset+0xf800]; -} /* d0..d3 Drive select 0-3 (we only emulate 1 drive) diff --git a/src/mame/drivers/rc702.cpp b/src/mame/drivers/rc702.cpp index b1bcb54c297..bd039882f36 100644 --- a/src/mame/drivers/rc702.cpp +++ b/src/mame/drivers/rc702.cpp @@ -50,6 +50,8 @@ public: : driver_device(mconfig, type, tag) , m_palette(*this, "palette") , m_maincpu(*this, "maincpu") + , m_rom(*this, "maincpu") + , m_ram(*this, "mainram") , m_p_chargen(*this, "chargen") , m_ctc1(*this, "ctc1") , m_pio(*this, "pio") @@ -62,12 +64,10 @@ public: void rc702(machine_config &config); - void init_rc702(); - -protected: - virtual void machine_reset() override; - private: + void machine_reset() override; + void machine_start() override; + uint8_t memory_read_byte(offs_t offset); void memory_write_byte(offs_t offset, uint8_t data); void port14_w(uint8_t data); @@ -83,8 +83,8 @@ private: void rc702_palette(palette_device &palette) const; void kbd_put(u8 data); - void rc702_io(address_map &map); - void rc702_mem(address_map &map); + void io_map(address_map &map); + void mem_map(address_map &map); bool m_q_state; bool m_qbar_state; @@ -92,8 +92,11 @@ private: uint16_t m_beepcnt; bool m_eop; bool m_dack1; + bool m_rom_in_map; required_device m_palette; required_device m_maincpu; + required_region_ptr m_rom; + required_shared_ptr m_ram; required_region_ptr m_p_chargen; required_device m_ctc1; required_device m_pio; @@ -105,13 +108,13 @@ private: }; -void rc702_state::rc702_mem(address_map &map) +void rc702_state::mem_map(address_map &map) { - map(0x0000, 0x07ff).bankr("bankr0").bankw("bankw0"); + 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 rc702_state::rc702_io(address_map &map) +void rc702_state::io_map(address_map &map) { map.global_mask(0xff); map.unmap_value_high(); @@ -121,7 +124,7 @@ void rc702_state::rc702_io(address_map &map) map(0x0c, 0x0f).rw(m_ctc1, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); map(0x10, 0x13).rw(m_pio, FUNC(z80pio_device::read), FUNC(z80pio_device::write)); map(0x14, 0x17).portr("DSW").w(FUNC(rc702_state::port14_w)); // motors - map(0x18, 0x1b).lw8(NAME([this] (u8 data) { membank("bankr0")->set_entry(1); })); // replace roms with ram + map(0x18, 0x1b).lw8(NAME([this] (u8 data) { m_rom_in_map = false; })); // replace roms with ram map(0x1c, 0x1f).w(FUNC(rc702_state::port1c_w)); // sound map(0xf0, 0xff).rw(m_dma, FUNC(am9517a_device::read), FUNC(am9517a_device::write)); } @@ -157,8 +160,7 @@ INPUT_PORTS_END void rc702_state::machine_reset() { - membank("bankr0")->set_entry(0); // point at rom - membank("bankw0")->set_entry(0); // always write to ram + m_rom_in_map = true; m_beepcnt = 0xffff; m_dack1 = 0; m_eop = 0; @@ -168,6 +170,17 @@ void rc702_state::machine_reset() m_maincpu->reset(); } +void rc702_state::machine_start() +{ + save_item(NAME(m_q_state)); + save_item(NAME(m_qbar_state)); + save_item(NAME(m_drq_state)); + save_item(NAME(m_beepcnt)); + save_item(NAME(m_eop)); + save_item(NAME(m_dack1)); + save_item(NAME(m_rom_in_map)); +} + WRITE_LINE_MEMBER( rc702_state::q_w ) { m_q_state = state; @@ -251,15 +264,6 @@ void rc702_state::rc702_palette(palette_device &palette) const palette.set_pen_color(1, rgb_t(0xff, 0xb4, 0x00)); } -void rc702_state::init_rc702() -{ - uint8_t *main = memregion("maincpu")->base(); - - membank("bankr0")->configure_entry(1, &main[0x0000]); - membank("bankr0")->configure_entry(0, &main[0x10000]); - membank("bankw0")->configure_entry(0, &main[0x0000]); -} - I8275_DRAW_CHARACTER_MEMBER( rc702_state::display_pixels ) { const rgb_t *palette = m_palette->palette()->entry_list_raw(); @@ -335,8 +339,8 @@ void rc702_state::rc702(machine_config &config) { /* basic machine hardware */ Z80(config, m_maincpu, XTAL(8'000'000) / 2); - m_maincpu->set_addrmap(AS_PROGRAM, &rc702_state::rc702_mem); - m_maincpu->set_addrmap(AS_IO, &rc702_state::rc702_io); + m_maincpu->set_addrmap(AS_PROGRAM, &rc702_state::mem_map); + m_maincpu->set_addrmap(AS_IO, &rc702_state::io_map); m_maincpu->set_daisy_config(daisy_chain_intf); CLOCK(config, "ctc_clock", 614000).signal_handler().set(FUNC(rc702_state::clock_w)); @@ -402,13 +406,13 @@ void rc702_state::rc702(machine_config &config) /* ROM definition */ ROM_START( rc702 ) - ROM_REGION( 0x10800, "maincpu", 0 ) + ROM_REGION( 0x0800, "maincpu", 0 ) ROM_SYSTEM_BIOS(0, "rc702", "RC702") - ROMX_LOAD( "roa375.ic66", 0x10000, 0x0800, CRC(034cf9ea) SHA1(306af9fc779e3d4f51645ba04f8a99b11b5e6084), ROM_BIOS(0)) + ROMX_LOAD( "roa375.ic66", 0x0000, 0x0800, CRC(034cf9ea) SHA1(306af9fc779e3d4f51645ba04f8a99b11b5e6084), ROM_BIOS(0)) ROM_SYSTEM_BIOS(1, "rc703", "RC703") - ROMX_LOAD( "rob357.rom", 0x10000, 0x0800, CRC(dcf84a48) SHA1(7190d3a898bcbfa212178a4d36afc32bbbc166ef), ROM_BIOS(1)) + ROMX_LOAD( "rob357.rom", 0x0000, 0x0800, CRC(dcf84a48) SHA1(7190d3a898bcbfa212178a4d36afc32bbbc166ef), ROM_BIOS(1)) ROM_SYSTEM_BIOS(2, "rc700", "RC700") - ROMX_LOAD( "rob358.rom", 0x10000, 0x0800, CRC(254aa89e) SHA1(5fb1eb8df1b853b931e670a2ff8d062c1bd8d6bc), ROM_BIOS(2)) + ROMX_LOAD( "rob358.rom", 0x0000, 0x0800, CRC(254aa89e) SHA1(5fb1eb8df1b853b931e670a2ff8d062c1bd8d6bc), ROM_BIOS(2)) ROM_REGION( 0x1000, "chargen", 0 ) ROM_LOAD( "roa296.rom", 0x0000, 0x0800, CRC(7d7e4548) SHA1(efb8b1ece5f9eeca948202a6396865f26134ff2f) ) // char @@ -418,4 +422,4 @@ ROM_END /* Driver */ // YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS -COMP( 1979, rc702, 0, 0, rc702, rc702, rc702_state, init_rc702, "Regnecentralen", "RC702 Piccolo", MACHINE_NOT_WORKING ) +COMP( 1979, rc702, 0, 0, rc702, rc702, rc702_state, empty_init, "Regnecentralen", "RC702 Piccolo", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/systec.cpp b/src/mame/drivers/systec.cpp index 938d8cf439d..d943423689c 100644 --- a/src/mame/drivers/systec.cpp +++ b/src/mame/drivers/systec.cpp @@ -46,25 +46,27 @@ public: systec_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag) , m_maincpu(*this, "maincpu") - { } + , m_ram(*this, "mainram") + { } void systec(machine_config &config); private: - void systec_io(address_map &map); - void systec_mem(address_map &map); + void io_map(address_map &map); + void mem_map(address_map &map); virtual void machine_reset() override; required_device m_maincpu; + required_shared_ptr m_ram; }; -void systec_state::systec_mem(address_map &map) +void systec_state::mem_map(address_map &map) { map.unmap_value_high(); - map(0x0000, 0xffff).ram().region("maincpu", 0); + map(0x0000, 0xffff).ram().share("mainram"); } -void systec_state::systec_io(address_map &map) +void systec_state::io_map(address_map &map) { map.global_mask(0xff); map(0x68, 0x6b); // fdc? @@ -78,9 +80,8 @@ INPUT_PORTS_END void systec_state::machine_reset() { - uint8_t *m_p_maincpu = memregion("maincpu")->base(); - uint8_t *m_p_roms = memregion("roms")->base(); - memcpy(m_p_maincpu, m_p_roms, 0x2000); + uint8_t *m = memregion("roms")->base(); + memcpy(m_ram, m, 0x2000); } @@ -88,8 +89,8 @@ void systec_state::systec(machine_config &config) { /* basic machine hardware */ Z80(config, m_maincpu, XTAL(16'000'000) / 4); - m_maincpu->set_addrmap(AS_PROGRAM, &systec_state::systec_mem); - m_maincpu->set_addrmap(AS_IO, &systec_state::systec_io); + m_maincpu->set_addrmap(AS_PROGRAM, &systec_state::mem_map); + m_maincpu->set_addrmap(AS_IO, &systec_state::io_map); clock_device &uart_clock(CLOCK(config, "uart_clock", 153600)); uart_clock.signal_handler().set("sio", FUNC(z80sio_device::txca_w)); @@ -110,12 +111,11 @@ void systec_state::systec(machine_config &config) /* ROM definition */ ROM_START( systec ) - ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF ) - ROM_REGION( 0x10000, "roms", 0 ) + ROM_REGION( 0x2000, "roms", 0 ) ROM_LOAD( "systec.bin", 0x0000, 0x2000, CRC(967108ab) SHA1(a414db032ca7db0f9fdbe22aa68a099a93efb593)) ROM_END /* Driver */ // YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS -COMP(19??, systec, 0, 0, systec, systec, systec_state, empty_init, "Systec", "Systec Z80", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +COMP(19??, systec, 0, 0, systec, systec, systec_state, empty_init, "Systec", "Systec Z80", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/vixen.cpp b/src/mame/drivers/vixen.cpp index 4936fff9160..bcc08415b15 100644 --- a/src/mame/drivers/vixen.cpp +++ b/src/mame/drivers/vixen.cpp @@ -373,14 +373,6 @@ TIMER_DEVICE_CALLBACK_MEMBER(vixen_state::vsync_tick) } } -void vixen_state::video_start() -{ - // register for state saving - save_item(NAME(m_alt)); - save_item(NAME(m_256)); - save_item(NAME(m_vsync)); -} - uint32_t vixen_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) { const pen_t *pen = m_palette->pens(); @@ -658,6 +650,20 @@ void vixen_state::machine_start() save_item(NAME(m_cmd_d0)); save_item(NAME(m_cmd_d1)); save_item(NAME(m_fdint)); + save_item(NAME(m_alt)); + save_item(NAME(m_256)); + save_item(NAME(m_vsync)); + save_item(NAME(m_srq)); + save_item(NAME(m_atn)); + save_item(NAME(m_enb_srq_int)); + save_item(NAME(m_enb_atn_int)); + save_item(NAME(m_rxrdy)); + save_item(NAME(m_txrdy)); + save_item(NAME(m_int_clk)); + save_item(NAME(m_enb_xmt_int)); + save_item(NAME(m_enb_rcv_int)); + save_item(NAME(m_enb_ring_int)); + } void vixen_state::machine_reset() @@ -777,4 +783,4 @@ void vixen_state::init_vixen() //************************************************************************** // YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS -COMP( 1984, vixen, 0, 0, vixen, vixen, vixen_state, init_vixen, "Osborne", "Vixen", 0 ) +COMP( 1984, vixen, 0, 0, vixen, vixen, vixen_state, init_vixen, "Osborne", "Vixen", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/vta2000.cpp b/src/mame/drivers/vta2000.cpp index 8850e90af1a..974bd16f0d0 100644 --- a/src/mame/drivers/vta2000.cpp +++ b/src/mame/drivers/vta2000.cpp @@ -236,4 +236,4 @@ ROM_END /* Driver */ // YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS -COMP( 19??, vta2000, 0, 0, vta2000, vta2000, vta2000_state, empty_init, "", "VTA2000-15m", MACHINE_NOT_WORKING ) +COMP( 19??, vta2000, 0, 0, vta2000, vta2000, vta2000_state, empty_init, "", "VTA2000-15m", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/z1013.cpp b/src/mame/drivers/z1013.cpp index ac361f0687d..44831c2dad5 100644 --- a/src/mame/drivers/z1013.cpp +++ b/src/mame/drivers/z1013.cpp @@ -65,6 +65,8 @@ public: z1013_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_cass(*this, "cassette") , m_p_videoram(*this, "videoram") , m_p_chargen(*this, "chargen") @@ -81,13 +83,17 @@ private: DECLARE_SNAPSHOT_LOAD_MEMBER(snapshot_cb); uint32_t screen_update_z1013(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - void z1013_io(address_map &map); - void z1013_mem(address_map &map); + void io_map(address_map &map); + void mem_map(address_map &map); uint8_t m_keyboard_line; bool m_keyboard_part; virtual void machine_reset() override; + virtual void machine_start() override; + memory_passthrough_handler *m_rom_shadow_tap; required_device m_maincpu; + required_region_ptr m_rom; + required_shared_ptr m_ram; required_device m_cass; required_shared_ptr m_p_videoram; required_region_ptr m_p_chargen; @@ -95,14 +101,14 @@ private: /* Address maps */ -void z1013_state::z1013_mem(address_map &map) +void z1013_state::mem_map(address_map &map) { - map(0x0000, 0xebff).ram(); + map(0x0000, 0xebff).ram().share("mainram"); map(0xec00, 0xefff).ram().share("videoram"); - map(0xf000, 0xffff).rom(); // ROM + map(0xf000, 0xffff).rom().region("maincpu",0); } -void z1013_state::z1013_io(address_map &map) +void z1013_state::io_map(address_map &map) { map.global_mask(0xff); map(0x00, 0x03).rw("z80pio", FUNC(z80pio_device::read_alt), FUNC(z80pio_device::write_alt)); @@ -268,9 +274,31 @@ uint32_t z1013_state::screen_update_z1013(screen_device &screen, bitmap_ind16 &b void z1013_state::machine_reset() { - m_maincpu->set_state_int(Z80_PC, 0xF000); m_keyboard_part = 0; m_keyboard_line = 0; + + address_space &program = m_maincpu->space(AS_PROGRAM); + program.install_rom(0x0000, 0x07ff, m_rom); // do it here for F3 + m_rom_shadow_tap = program.install_read_tap(0xf000, 0xf7ff, "rom_shadow_r",[this](offs_t offset, u8 &data, u8 mem_mask) + { + if (!machine().side_effects_disabled()) + { + // delete this tap + m_rom_shadow_tap->remove(); + + // reinstall ram over the rom shadow + m_maincpu->space(AS_PROGRAM).install_ram(0x0000, 0x07ff, m_ram); + } + + // return the original data + return data; + }); +} + +void z1013_state::machine_start() +{ + save_item(NAME(m_keyboard_line)); + save_item(NAME(m_keyboard_part)); } void z1013_state::z1013_keyboard_w(uint8_t data) @@ -352,7 +380,7 @@ SNAPSHOT_LOAD_MEMBER(z1013_state::snapshot_cb) } /* F4 Character Displayer */ -static const gfx_layout z1013_charlayout = +static const gfx_layout charlayout = { 8, 8, /* 8 x 8 characters */ 512, /* 2 x 256 characters */ @@ -366,7 +394,7 @@ static const gfx_layout z1013_charlayout = }; static GFXDECODE_START( gfx_z1013 ) - GFXDECODE_ENTRY( "chargen", 0x0000, z1013_charlayout, 0, 1 ) + GFXDECODE_ENTRY( "chargen", 0x0000, charlayout, 0, 1 ) GFXDECODE_END /* Machine driver */ @@ -374,8 +402,8 @@ void z1013_state::z1013(machine_config &config) { /* basic machine hardware */ Z80(config, m_maincpu, XTAL(1'000'000)); - m_maincpu->set_addrmap(AS_PROGRAM, &z1013_state::z1013_mem); - m_maincpu->set_addrmap(AS_IO, &z1013_state::z1013_io); + m_maincpu->set_addrmap(AS_PROGRAM, &z1013_state::mem_map); + m_maincpu->set_addrmap(AS_IO, &z1013_state::io_map); /* video hardware */ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); @@ -415,12 +443,12 @@ void z1013_state::z1013k76(machine_config &config) /* ROM definition */ ROM_START( z1013 ) - ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF ) + ROM_REGION( 0x1000, "maincpu", ROMREGION_ERASEFF ) ROM_SYSTEM_BIOS( 0, "202", "Original" ) - ROMX_LOAD( "mon_202.bin", 0xf000, 0x0800, CRC(5884edab) SHA1(c3a45ea5cc4da2b7c270068ba1e2d75916960709), ROM_BIOS(0)) + ROMX_LOAD( "mon_202.bin", 0x0000, 0x0800, CRC(5884edab) SHA1(c3a45ea5cc4da2b7c270068ba1e2d75916960709), ROM_BIOS(0)) ROM_SYSTEM_BIOS( 1, "jm", "Jens Muller version" ) - ROMX_LOAD( "mon_jm_1992.bin", 0xf000, 0x0800, CRC(186d2888) SHA1(b52ccb557c41c96bace7db4c4f5031a0cd736168), ROM_BIOS(1)) + ROMX_LOAD( "mon_jm_1992.bin", 0x0000, 0x0800, CRC(186d2888) SHA1(b52ccb557c41c96bace7db4c4f5031a0cd736168), ROM_BIOS(1)) ROM_REGION(0x1000, "chargen",0) ROM_LOAD ("z1013font.bin", 0x0000, 0x0800, CRC(7023088f) SHA1(8b197a51c070efeba173d10be197bd41e764358c)) @@ -428,8 +456,8 @@ ROM_START( z1013 ) ROM_END ROM_START( z1013a2 ) - ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF ) - ROM_LOAD( "mon_a2.bin", 0xf000, 0x0800, CRC(98b19b10) SHA1(97e158f589198cb96aae1567ee0aa6e47824027e)) + ROM_REGION( 0x1000, "maincpu", ROMREGION_ERASEFF ) + ROM_LOAD( "mon_a2.bin", 0x0000, 0x0800, CRC(98b19b10) SHA1(97e158f589198cb96aae1567ee0aa6e47824027e)) ROM_REGION(0x1000, "chargen",0) ROM_LOAD ("z1013font.bin", 0x0000, 0x0800, CRC(7023088f) SHA1(8b197a51c070efeba173d10be197bd41e764358c)) @@ -437,8 +465,8 @@ ROM_START( z1013a2 ) ROM_END ROM_START( z1013k76 ) - ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF ) - ROM_LOAD( "mon_rb_k7659.bin", 0xf000, 0x1000, CRC(b3d88c45) SHA1(0bcd20338cf0706b384f40901b7f8498c6f6c320)) + ROM_REGION( 0x1000, "maincpu", ROMREGION_ERASEFF ) + ROM_LOAD( "mon_rb_k7659.bin", 0x0000, 0x1000, CRC(b3d88c45) SHA1(0bcd20338cf0706b384f40901b7f8498c6f6c320)) ROM_REGION(0x1000, "chargen",0) ROM_LOAD ("z1013font.bin", 0x0000, 0x0800, CRC(7023088f) SHA1(8b197a51c070efeba173d10be197bd41e764358c)) @@ -472,8 +500,8 @@ ROM_END /* Driver */ // YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS -COMP( 1985, z1013, 0, 0, z1013, z1013_8x4, z1013_state, empty_init, "VEB Robotron Electronics Riesa", "Z1013 (matrix 8x4)", 0 ) -COMP( 1985, z1013a2, z1013, 0, z1013, z1013_8x8, z1013_state, empty_init, "VEB Robotron Electronics Riesa", "Z1013 (matrix 8x8)", 0 ) -COMP( 1985, z1013k76, z1013, 0, z1013k76, z1013, z1013_state, empty_init, "VEB Robotron Electronics Riesa", "Z1013 (K7659)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW) -COMP( 1985, z1013s60, z1013, 0, z1013k76, z1013_8x8, z1013_state, empty_init, "VEB Robotron Electronics Riesa", "Z1013 (K7652/S6009)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW) -COMP( 1985, z1013k69, z1013, 0, z1013k76, z1013, z1013_state, empty_init, "VEB Robotron Electronics Riesa", "Z1013 (K7669)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW) +COMP( 1985, z1013, 0, 0, z1013, z1013_8x4, z1013_state, empty_init, "VEB Robotron Electronics Riesa", "Z1013 (matrix 8x4)", MACHINE_SUPPORTS_SAVE ) +COMP( 1985, z1013a2, z1013, 0, z1013, z1013_8x8, z1013_state, empty_init, "VEB Robotron Electronics Riesa", "Z1013 (matrix 8x8)", MACHINE_SUPPORTS_SAVE ) +COMP( 1985, z1013k76, z1013, 0, z1013k76, z1013, z1013_state, empty_init, "VEB Robotron Electronics Riesa", "Z1013 (K7659)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW | MACHINE_SUPPORTS_SAVE ) +COMP( 1985, z1013s60, z1013, 0, z1013k76, z1013_8x8, z1013_state, empty_init, "VEB Robotron Electronics Riesa", "Z1013 (K7652/S6009)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW | MACHINE_SUPPORTS_SAVE ) +COMP( 1985, z1013k69, z1013, 0, z1013k76, z1013, z1013_state, empty_init, "VEB Robotron Electronics Riesa", "Z1013 (K7669)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/z9001.cpp b/src/mame/drivers/z9001.cpp index 595a011de67..3755fcfdd85 100644 --- a/src/mame/drivers/z9001.cpp +++ b/src/mame/drivers/z9001.cpp @@ -57,6 +57,8 @@ public: : driver_device(mconfig, type, tag) , m_framecnt(0) , m_maincpu(*this, "maincpu") + , m_rom(*this, "maincpu") + , m_ram(*this, "mainram") , m_beeper(*this, "beeper") , m_cass(*this, "cassette") , m_p_colorram(*this, "colorram") @@ -74,14 +76,17 @@ private: TIMER_DEVICE_CALLBACK_MEMBER(timer_callback); uint32_t screen_update_z9001(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - void z9001_io(address_map &map); - void z9001_mem(address_map &map); + void io_map(address_map &map); + void mem_map(address_map &map); uint8_t m_framecnt; bool m_cassbit; virtual void machine_reset() override; - //virtual void machine_start(); + virtual void machine_start() override; + memory_passthrough_handler *m_rom_shadow_tap; required_device m_maincpu; + required_region_ptr m_rom; + required_shared_ptr m_ram; required_device m_beeper; required_device m_cass; required_shared_ptr m_p_colorram; @@ -89,17 +94,17 @@ private: required_region_ptr m_p_chargen; }; -void z9001_state::z9001_mem(address_map &map) +void z9001_state::mem_map(address_map &map) { map.unmap_value_high(); - map(0x0000, 0xe7ff).ram(); + map(0x0000, 0xe7ff).ram().share("mainram"); + map(0xc000, 0xe7ff).rom().region("maincpu",0x1000); map(0xe800, 0xebff).ram().share("colorram"); - map(0xc000, 0xe7ff).rom(); map(0xec00, 0xefff).ram().share("videoram"); - map(0xf000, 0xffff).rom(); + map(0xf000, 0xffff).rom().region("maincpu",0); } -void z9001_state::z9001_io(address_map &map) +void z9001_state::io_map(address_map &map) { map.unmap_value_high(); map.global_mask(0xff); @@ -144,7 +149,28 @@ TIMER_DEVICE_CALLBACK_MEMBER(z9001_state::timer_callback) void z9001_state::machine_reset() { - m_maincpu->set_state_int(Z80_PC, 0xf000); + address_space &program = m_maincpu->space(AS_PROGRAM); + program.install_rom(0x0000, 0x0fff, m_rom); // do it here for F3 + m_rom_shadow_tap = program.install_read_tap(0xf000, 0xffff, "rom_shadow_r",[this](offs_t offset, u8 &data, u8 mem_mask) + { + if (!machine().side_effects_disabled()) + { + // delete this tap + m_rom_shadow_tap->remove(); + + // reinstall ram over the rom shadow + m_maincpu->space(AS_PROGRAM).install_ram(0x0000, 0x0fff, m_ram); + } + + // return the original data + return data; + }); +} + +void z9001_state::machine_start() +{ + save_item(NAME(m_framecnt)); + save_item(NAME(m_cassbit)); } uint32_t z9001_state::screen_update_z9001(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) @@ -191,7 +217,7 @@ uint32_t z9001_state::screen_update_z9001(screen_device &screen, bitmap_ind16 &b } /* F4 Character Displayer */ -static const gfx_layout z9001_charlayout = +static const gfx_layout charlayout = { 8, 8, /* 8 x 8 characters */ 1024, /* 4 x 256 characters */ @@ -210,7 +236,7 @@ void z9001_state::kbd_put(u8 data) } static GFXDECODE_START( gfx_z9001 ) - GFXDECODE_ENTRY( "chargen", 0x0000, z9001_charlayout, 0, 1 ) + GFXDECODE_ENTRY( "chargen", 0x0000, charlayout, 0, 1 ) GFXDECODE_END @@ -218,8 +244,8 @@ void z9001_state::z9001(machine_config &config) { /* basic machine hardware */ Z80(config, m_maincpu, XTAL(9'830'400) / 4); - m_maincpu->set_addrmap(AS_PROGRAM, &z9001_state::z9001_mem); - m_maincpu->set_addrmap(AS_IO, &z9001_state::z9001_io); + m_maincpu->set_addrmap(AS_PROGRAM, &z9001_state::mem_map); + m_maincpu->set_addrmap(AS_IO, &z9001_state::io_map); m_maincpu->set_daisy_config(z9001_daisy_chain); /* video hardware */ @@ -261,13 +287,13 @@ void z9001_state::z9001(machine_config &config) /* ROM definition */ ROM_START( z9001 ) - ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF ) + ROM_REGION( 0x3800, "maincpu", 0 ) ROM_SYSTEM_BIOS( 0, "orig", "Original" ) - ROMX_LOAD( "os____f0.851", 0xf000, 0x1000, CRC(9fe60a92) SHA1(553609631f5eaa7d6758a73f56c613e280a5b310), ROM_BIOS(0)) + ROMX_LOAD( "os____f0.851", 0x0000, 0x1000, CRC(9fe60a92) SHA1(553609631f5eaa7d6758a73f56c613e280a5b310), ROM_BIOS(0)) ROM_SYSTEM_BIOS( 1, "rb20", "ROM-Bank System without menu" ) - ROMX_LOAD( "os_rb20.rom", 0xf000, 0x1000, CRC(c783124d) SHA1(c2893ce5bb23b280ba4e982e860586d21de2469b), ROM_BIOS(1)) + ROMX_LOAD( "os_rb20.rom", 0x0000, 0x1000, CRC(c783124d) SHA1(c2893ce5bb23b280ba4e982e860586d21de2469b), ROM_BIOS(1)) ROM_SYSTEM_BIOS( 2, "rb21", "ROM-Bank System with menu" ) - ROMX_LOAD( "os_rb21.rom", 0xf000, 0x1000, CRC(11eec2dd) SHA1(5dbb661bdf4daf92d6c4ffbbdec674e57917e9eb), ROM_BIOS(2)) + ROMX_LOAD( "os_rb21.rom", 0x0000, 0x1000, CRC(11eec2dd) SHA1(5dbb661bdf4daf92d6c4ffbbdec674e57917e9eb), ROM_BIOS(2)) ROM_REGION( 0x2000, "chargen", 0 ) ROM_LOAD( "chargen.851", 0x0000, 0x0800, CRC(dd9c0f4e) SHA1(2e4928ba7161f5cce7173b7d2ded3d6596ae2aa2)) @@ -279,15 +305,15 @@ ROM_END #define rom_kc85_111 rom_z9001 ROM_START( kc87_10 ) - ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF ) + ROM_REGION( 0x3800, "maincpu", 0 ) ROM_SYSTEM_BIOS( 0, "orig", "Original" ) - ROMX_LOAD( "os____f0.851", 0xf000, 0x1000, CRC(9fe60a92) SHA1(553609631f5eaa7d6758a73f56c613e280a5b310), ROM_BIOS(0)) + ROMX_LOAD( "os____f0.851", 0x0000, 0x1000, CRC(9fe60a92) SHA1(553609631f5eaa7d6758a73f56c613e280a5b310), ROM_BIOS(0)) ROM_SYSTEM_BIOS( 1, "rb20", "ROM-Bank System without menu" ) - ROMX_LOAD( "os_rb20.rom", 0xf000, 0x1000, CRC(c783124d) SHA1(c2893ce5bb23b280ba4e982e860586d21de2469b), ROM_BIOS(1)) + ROMX_LOAD( "os_rb20.rom", 0x0000, 0x1000, CRC(c783124d) SHA1(c2893ce5bb23b280ba4e982e860586d21de2469b), ROM_BIOS(1)) ROM_SYSTEM_BIOS( 2, "rb21", "ROM-Bank System with menu" ) - ROMX_LOAD( "os_rb21.rom", 0xf000, 0x1000, CRC(11eec2dd) SHA1(5dbb661bdf4daf92d6c4ffbbdec674e57917e9eb), ROM_BIOS(2)) + ROMX_LOAD( "os_rb21.rom", 0x0000, 0x1000, CRC(11eec2dd) SHA1(5dbb661bdf4daf92d6c4ffbbdec674e57917e9eb), ROM_BIOS(2)) - ROM_LOAD( "basic_c0.87a", 0xc000, 0x2800, CRC(c508d45e) SHA1(ea85b53e21429c4cb85cdb81b92f278a8f4eb574)) + ROM_LOAD( "basic_c0.87a", 0x1000, 0x2800, CRC(c508d45e) SHA1(ea85b53e21429c4cb85cdb81b92f278a8f4eb574)) ROM_REGION( 0x2000, "chargen", 0 ) ROM_LOAD( "chargen.851", 0x0000, 0x0800, CRC(dd9c0f4e) SHA1(2e4928ba7161f5cce7173b7d2ded3d6596ae2aa2)) @@ -299,15 +325,15 @@ ROM_END #define rom_kc87_11 rom_kc87_10 ROM_START( kc87_20 ) - ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF ) + ROM_REGION( 0x3800, "maincpu", 0 ) ROM_SYSTEM_BIOS( 0, "orig", "Original" ) - ROMX_LOAD( "os____f0.87b", 0xf000, 0x1000, CRC(a357d093) SHA1(b1df6b499517c8366a0795030ee800e8a258e938), ROM_BIOS(0)) + ROMX_LOAD( "os____f0.87b", 0x0000, 0x1000, CRC(a357d093) SHA1(b1df6b499517c8366a0795030ee800e8a258e938), ROM_BIOS(0)) ROM_SYSTEM_BIOS( 1, "rb20", "ROM-Bank System without menu" ) - ROMX_LOAD( "os_rb20.rom", 0xf000, 0x1000, CRC(c783124d) SHA1(c2893ce5bb23b280ba4e982e860586d21de2469b), ROM_BIOS(1)) + ROMX_LOAD( "os_rb20.rom", 0x0000, 0x1000, CRC(c783124d) SHA1(c2893ce5bb23b280ba4e982e860586d21de2469b), ROM_BIOS(1)) ROM_SYSTEM_BIOS( 2, "rb21", "ROM-Bank System with menu" ) - ROMX_LOAD( "os_rb21.rom", 0xf000, 0x1000, CRC(11eec2dd) SHA1(5dbb661bdf4daf92d6c4ffbbdec674e57917e9eb), ROM_BIOS(2)) + ROMX_LOAD( "os_rb21.rom", 0x0000, 0x1000, CRC(11eec2dd) SHA1(5dbb661bdf4daf92d6c4ffbbdec674e57917e9eb), ROM_BIOS(2)) - ROM_LOAD( "basic_c0.87b", 0xc000, 0x2800, CRC(9e8f6380) SHA1(8ffecc64ba35c953c93738f8568c83dc6af1ae72)) + ROM_LOAD( "basic_c0.87b", 0x1000, 0x2800, CRC(9e8f6380) SHA1(8ffecc64ba35c953c93738f8568c83dc6af1ae72)) ROM_REGION( 0x2000, "chargen", 0 ) ROM_LOAD( "chargen.851", 0x0000, 0x0800, CRC(dd9c0f4e) SHA1(2e4928ba7161f5cce7173b7d2ded3d6596ae2aa2)) @@ -321,9 +347,9 @@ ROM_END /* Driver */ // YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS -COMP( 1984, z9001, 0, 0, z9001, z9001, z9001_state, empty_init, "Robotron", "Z9001 (KC 85/1.10)", MACHINE_NOT_WORKING ) -COMP( 1986, kc85_111, z9001, 0, z9001, z9001, z9001_state, empty_init, "Robotron", "KC 85/1.11", MACHINE_NOT_WORKING ) -COMP( 1987, kc87_10, z9001, 0, z9001, z9001, z9001_state, empty_init, "Robotron", "KC 87.10", MACHINE_NOT_WORKING ) -COMP( 1987, kc87_11, z9001, 0, z9001, z9001, z9001_state, empty_init, "Robotron", "KC 87.11", MACHINE_NOT_WORKING ) -COMP( 1987, kc87_20, z9001, 0, z9001, z9001, z9001_state, empty_init, "Robotron", "KC 87.20", MACHINE_NOT_WORKING ) -COMP( 1987, kc87_21, z9001, 0, z9001, z9001, z9001_state, empty_init, "Robotron", "KC 87.21", MACHINE_NOT_WORKING ) +COMP( 1984, z9001, 0, 0, z9001, z9001, z9001_state, empty_init, "Robotron", "Z9001 (KC 85/1.10)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) +COMP( 1986, kc85_111, z9001, 0, z9001, z9001, z9001_state, empty_init, "Robotron", "KC 85/1.11", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) +COMP( 1987, kc87_10, z9001, 0, z9001, z9001, z9001_state, empty_init, "Robotron", "KC 87.10", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) +COMP( 1987, kc87_11, z9001, 0, z9001, z9001, z9001_state, empty_init, "Robotron", "KC 87.11", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) +COMP( 1987, kc87_20, z9001, 0, z9001, z9001, z9001_state, empty_init, "Robotron", "KC 87.20", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) +COMP( 1987, kc87_21, z9001, 0, z9001, z9001, z9001_state, empty_init, "Robotron", "KC 87.21", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/includes/phc25.h b/src/mame/includes/phc25.h index 360520185ee..e74b781102a 100644 --- a/src/mame/includes/phc25.h +++ b/src/mame/includes/phc25.h @@ -27,13 +27,20 @@ class phc25_state : public driver_device public: phc25_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag) - , m_video_ram(*this, "video_ram") + , m_vram(*this, "videoram") , m_maincpu(*this, Z80_TAG) , m_vdg(*this, MC6847_TAG) , m_centronics(*this, CENTRONICS_TAG) , m_cassette(*this, "cassette") { } + void phc25(machine_config &config); + void pal(machine_config &config); + void ntsc(machine_config &config); + +private: + void io_map(address_map &map); + void mem_map(address_map &map); DECLARE_WRITE_LINE_MEMBER( write_centronics_busy ); uint8_t port40_r(); void port40_w(uint8_t data); @@ -41,22 +48,16 @@ public: uint8_t video_ram_r(offs_t offset); MC6847_GET_CHARROM_MEMBER(ntsc_char_rom_r); MC6847_GET_CHARROM_MEMBER(pal_char_rom_r); - - void phc25(machine_config &config); - void pal(machine_config &config); - void ntsc(machine_config &config); - void phc25_io(address_map &map); - void phc25_mem(address_map &map); -private: - virtual void video_start() override; + void machine_start() override; + void machine_reset() override; uint8_t *m_char_rom; uint8_t m_port40; - required_shared_ptr m_video_ram; + int m_centronics_busy; + required_shared_ptr m_vram; required_device m_maincpu; required_device m_vdg; required_device m_centronics; required_device m_cassette; - int m_centronics_busy; }; #endif diff --git a/src/mame/includes/vixen.h b/src/mame/includes/vixen.h index 0ec2411427f..ecf9802da1d 100644 --- a/src/mame/includes/vixen.h +++ b/src/mame/includes/vixen.h @@ -108,8 +108,6 @@ private: virtual void machine_start() override; virtual void machine_reset() override; - virtual void video_start() override; - void update_interrupt(); // keyboard state -- cgit v1.2.3