diff options
author | AJR <ajrhacker@users.noreply.github.com> | 2019-12-01 12:02:53 -0500 |
---|---|---|
committer | AJR <ajrhacker@users.noreply.github.com> | 2019-12-01 12:05:02 -0500 |
commit | 550b5bb87feca909ce411d67b6f632c0762c94b2 (patch) | |
tree | 47cd899f6bff75330f387c6c8282335085624337 | |
parent | 679858e85dd5ac15da3cb795937111bce8873d69 (diff) |
m6802, nsc8105: Internalize internal RAM (nw)
48 files changed, 71 insertions, 67 deletions
diff --git a/src/devices/cpu/m6800/m6800.cpp b/src/devices/cpu/m6800/m6800.cpp index 86b14810771..eaf193b4c77 100644 --- a/src/devices/cpu/m6800/m6800.cpp +++ b/src/devices/cpu/m6800/m6800.cpp @@ -348,13 +348,27 @@ m6802_cpu_device::m6802_cpu_device(const machine_config &mconfig, const char *ta } m6802_cpu_device::m6802_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, const op_func *insn, const uint8_t *cycles) - : m6800_cpu_device(mconfig, type, tag, owner, clock, insn, cycles, address_map_constructor()) + : m6800_cpu_device(mconfig, type, tag, owner, clock, insn, cycles, address_map_constructor(FUNC(m6802_cpu_device::ram_map), this)) + , m_ram_enable(true) { } +void m6802_cpu_device::ram_map(address_map &map) +{ + if (m_ram_enable) + map(0x0000, 0x007f).ram(); +} + m6808_cpu_device::m6808_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : m6802_cpu_device(mconfig, M6808, tag, owner, clock, m6800_insn, cycles_6800) { + set_ram_enable(false); +} + +void m6808_cpu_device::device_validity_check(validity_checker &valid) const +{ + if (m_ram_enable) + osd_printf_error("MC6808 should not have internal RAM enabled\n"); } nsc8105_cpu_device::nsc8105_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) diff --git a/src/devices/cpu/m6800/m6800.h b/src/devices/cpu/m6800/m6800.h index 0e8ef732058..82131562637 100644 --- a/src/devices/cpu/m6800/m6800.h +++ b/src/devices/cpu/m6800/m6800.h @@ -368,12 +368,19 @@ class m6802_cpu_device : public m6800_cpu_device public: m6802_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + void set_ram_enable(bool re) { assert(!configured()); m_ram_enable = re; } + protected: m6802_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, const m6800_cpu_device::op_func *insn, const uint8_t *cycles); virtual uint64_t execute_clocks_to_cycles(uint64_t clocks) const noexcept override { return (clocks + 4 - 1) / 4; } virtual uint64_t execute_cycles_to_clocks(uint64_t cycles) const noexcept override { return (cycles * 4); } virtual std::unique_ptr<util::disasm_interface> create_disassembler() override; + + bool m_ram_enable; + +private: + void ram_map(address_map &map); }; @@ -384,6 +391,7 @@ public: protected: virtual std::unique_ptr<util::disasm_interface> create_disassembler() override; + virtual void device_validity_check(validity_checker &valid) const override; }; diff --git a/src/devices/machine/swtpc8212.cpp b/src/devices/machine/swtpc8212.cpp index 3625e7a6225..bd7b33e23e9 100644 --- a/src/devices/machine/swtpc8212.cpp +++ b/src/devices/machine/swtpc8212.cpp @@ -421,7 +421,6 @@ void swtpc8212_device::device_reset() void swtpc8212_device::mem_map(address_map &map) { - map(0x0000, 0x007f).ram(); map(0x0080, 0x0083).rw("pia0", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); map(0x0088, 0x0088).w("crtc", FUNC(mc6845_device::address_w)); map(0x0089, 0x0089).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); diff --git a/src/mame/audio/bally.cpp b/src/mame/audio/bally.cpp index 90576c12f72..3b712c9b678 100644 --- a/src/mame/audio/bally.cpp +++ b/src/mame/audio/bally.cpp @@ -597,7 +597,6 @@ TIMER_CALLBACK_MEMBER(bally_squawk_n_talk_device::sound_int_sync) void bally_squawk_n_talk_device::squawk_n_talk_map(address_map &map) { map.unmap_value_high(); - map(0x0000, 0x007f).ram(); // internal RAM, could also be jumpered to use a 6808 map(0x0080, 0x0083).mirror(0x4f6c).rw("pia2", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); map(0x0090, 0x0093).mirror(0x4f6c).rw("pia1", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); map(0x1000, 0x1000).mirror(0x40ff).w("dac", FUNC(dac_byte_interface::data_w)); @@ -612,7 +611,7 @@ void bally_squawk_n_talk_device::squawk_n_talk_map(address_map &map) //------------------------------------------------- void bally_squawk_n_talk_device::device_add_mconfig(machine_config &config) { - M6802(config, m_cpu, DERIVED_CLOCK(1, 1)); + M6802(config, m_cpu, DERIVED_CLOCK(1, 1)); // could also be jumpered to use a 6808 m_cpu->set_addrmap(AS_PROGRAM, &bally_squawk_n_talk_device::squawk_n_talk_map); PIA6821(config, m_pia1, 0); diff --git a/src/mame/audio/qix.cpp b/src/mame/audio/qix.cpp index 79572f7fbfd..3bbca8ff066 100644 --- a/src/mame/audio/qix.cpp +++ b/src/mame/audio/qix.cpp @@ -156,7 +156,6 @@ WRITE_LINE_MEMBER(qix_state::qix_pia_sint) void qix_state::audio_map(address_map &map) { - map(0x0000, 0x007f).ram(); map(0x2000, 0x2003).mirror(0x5ffc).rw(m_sndpia2, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); map(0x4000, 0x4003).mirror(0x3ffc).rw(m_sndpia1, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); map(0xd000, 0xffff).rom(); diff --git a/src/mame/audio/redalert.cpp b/src/mame/audio/redalert.cpp index c6d93755eb8..1d34631bbc3 100644 --- a/src/mame/audio/redalert.cpp +++ b/src/mame/audio/redalert.cpp @@ -303,10 +303,8 @@ WRITE8_MEMBER(redalert_state::demoneye_ay8910_data_w) void redalert_state::demoneye_audio_map(address_map &map) { - map.global_mask(0x3fff); - map(0x0000, 0x007f).ram(); - map(0x0500, 0x0503).rw("sndpia", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); - map(0x2000, 0x3fff).rom(); + map(0x0500, 0x0503).mirror(0xc000).rw("sndpia", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x2000, 0x3fff).mirror(0xc000).rom(); } diff --git a/src/mame/audio/zaccaria.cpp b/src/mame/audio/zaccaria.cpp index 463136b9bd1..2138f651068 100644 --- a/src/mame/audio/zaccaria.cpp +++ b/src/mame/audio/zaccaria.cpp @@ -31,7 +31,6 @@ DEFINE_DEVICE_TYPE(ZACCARIA_1B11142, zac1b11142_audio_device, "zac1b11142", "Zac void zac1b111xx_melody_base::zac1b111xx_melody_base_map(address_map &map) { map.unmap_value_high(); - map(0x0000, 0x007f).ram(); // 6802 internal RAM map(0x400c, 0x400f).mirror(0x1ff0).rw("melodypia", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); } @@ -132,7 +131,6 @@ void zac1b11142_audio_device::zac1b11142_melody_map(address_map &map) void zac1b11142_audio_device::zac1b11142_audio_map(address_map &map) { map.unmap_value_high(); - map(0x0000, 0x007f).ram(); // 6802 internal RAM map(0x0090, 0x0093).mirror(0x8f6c).rw("pia_1i", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); map(0x1000, 0x1000).mirror(0x83ff).w("dac", FUNC(dac_byte_interface::data_w)); map(0x1400, 0x1400).mirror(0xc3ff).w(FUNC(zac1b11142_audio_device::melody_command_w)); diff --git a/src/mame/drivers/8080bw.cpp b/src/mame/drivers/8080bw.cpp index 2d7165a70a0..268956baecd 100644 --- a/src/mame/drivers/8080bw.cpp +++ b/src/mame/drivers/8080bw.cpp @@ -876,7 +876,6 @@ void _8080bw_state::invrvnge_io_map(address_map &map) void _8080bw_state::invrvnge_sound_map(address_map &map) { - map(0x0000, 0x007f).ram(); // inside CPU map(0xa001, 0xa001).r("psg",FUNC(ay8910_device::data_r)); map(0xa002, 0xa003).w("psg",FUNC(ay8910_device::data_address_w)); map(0xc000, 0xc7ff).mirror(0x1800).rom(); diff --git a/src/mame/drivers/barni.cpp b/src/mame/drivers/barni.cpp index ff225775bd8..47aa413f01a 100644 --- a/src/mame/drivers/barni.cpp +++ b/src/mame/drivers/barni.cpp @@ -55,7 +55,6 @@ void barni_state::subcpu_map(address_map &map) void barni_state::audiocpu_map(address_map &map) { - map(0x0000, 0x007f).ram(); map(0xc000, 0xffff).rom(); } diff --git a/src/mame/drivers/by35.cpp b/src/mame/drivers/by35.cpp index a6b37f6d5d3..76fd6d25bcc 100644 --- a/src/mame/drivers/by35.cpp +++ b/src/mame/drivers/by35.cpp @@ -242,7 +242,6 @@ void by35_state::by35_map(address_map &map) void by35_state::nuovo_map(address_map &map) { map(0x0000, 0x07ff).ram().share("nvram"); -// map(0x0000, 0x007f).ram(); // Schematics infer that the M6802 internal RAM is disabled. map(0x0088, 0x008b).rw(m_pia_u10, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); map(0x0090, 0x0093).rw(m_pia_u11, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); map(0x1000, 0xffff).rom(); @@ -1502,8 +1501,9 @@ void by35_state::nuovo(machine_config &config) { by35(config); - M6802(config.replace(), m_maincpu, 2000000); // ? MHz ? Large crystal next to CPU, schematics don't indicate speed. - m_maincpu->set_addrmap(AS_PROGRAM, &by35_state::nuovo_map); + m6802_cpu_device &maincpu(M6802(config.replace(), m_maincpu, 2000000)); // ? MHz ? Large crystal next to CPU, schematics don't indicate speed. + maincpu.set_addrmap(AS_PROGRAM, &by35_state::nuovo_map); + maincpu.set_ram_enable(false); // Schematics imply that the M6802 internal RAM is disabled. } void by35_state::as2888(machine_config &config) diff --git a/src/mame/drivers/clowndwn.cpp b/src/mame/drivers/clowndwn.cpp index e31862cef12..1112277744c 100644 --- a/src/mame/drivers/clowndwn.cpp +++ b/src/mame/drivers/clowndwn.cpp @@ -59,7 +59,7 @@ void clowndwn_state::machine_reset() void clowndwn_state::clowndwn(machine_config &config) { /* basic machine hardware */ - M6802(config, m_maincpu, 8000000); // unknown type and clock + M6808(config, m_maincpu, 8000000); // unknown type and clock m_maincpu->set_addrmap(AS_PROGRAM, &clowndwn_state::clowndwn_map); PIA6821(config, "pia0", 0); diff --git a/src/mame/drivers/datum.cpp b/src/mame/drivers/datum.cpp index fc218695004..a49a560fe80 100644 --- a/src/mame/drivers/datum.cpp +++ b/src/mame/drivers/datum.cpp @@ -95,13 +95,11 @@ private: void datum_state::datum_mem(address_map &map) { map.unmap_value_high(); - map.global_mask(0x7fff); // A15 not used - map(0x0000, 0x007f).ram(); // inside CPU - map(0x1000, 0x13ff).mirror(0x0c00).ram(); // main ram 2x 2114 - map(0x4000, 0x4001).mirror(0x0ffe).rw(m_acia, FUNC(acia6850_device::read), FUNC(acia6850_device::write)); - map(0x5000, 0x5003).mirror(0x0ffc).rw(m_pia2, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); - map(0x6000, 0x6003).mirror(0x0ffc).rw(m_pia1, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); - map(0x7000, 0x77ff).mirror(0x0800).rom().region("roms", 0); + map(0x1000, 0x13ff).mirror(0x8c00).ram(); // main ram 2x 2114 + map(0x4000, 0x4001).mirror(0x8ffe).rw(m_acia, FUNC(acia6850_device::read), FUNC(acia6850_device::write)); + map(0x5000, 0x5003).mirror(0x8ffc).rw(m_pia2, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x6000, 0x6003).mirror(0x8ffc).rw(m_pia1, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x7000, 0x77ff).mirror(0x8800).rom().region("roms", 0); } diff --git a/src/mame/drivers/didact.cpp b/src/mame/drivers/didact.cpp index 899653f8409..56b2e195eca 100644 --- a/src/mame/drivers/didact.cpp +++ b/src/mame/drivers/didact.cpp @@ -649,7 +649,6 @@ void modulab_state::machine_start() // This address map is traced from pcb void modulab_state::modulab_map(address_map &map) { - //map(0x0000, 0x007f).ram() // Schematics holds RAM enable low so that the M6802 internal RAM is disabled. map(0x0000, 0x03ff).ram().mirror(0xe000); // RAM0 always present 2114 map(0x0400, 0x07ff).ram().mirror(0xe000); // RAM1 optional 2114 // map(0x0800, 0x13ff).ram().mirror(0xe000); // expansion port area consisting of 3 chip selects each selecting 0x3ff byte addresses @@ -781,8 +780,9 @@ INPUT_CHANGED_MEMBER(didact_state::trigger_reset) void modulab_state::modulab(machine_config &config) { - M6802(config, m_maincpu, XTAL(4'000'000)); - m_maincpu->set_addrmap(AS_PROGRAM, &modulab_state::modulab_map); + m6802_cpu_device &maincpu(M6802(config, m_maincpu, XTAL(4'000'000))); + maincpu.set_ram_enable(false); // Schematics holds RAM enable low so that the M6802 internal RAM is disabled. + maincpu.set_addrmap(AS_PROGRAM, &modulab_state::modulab_map); config.set_default_layout(layout_modulab); /* Devices */ @@ -805,8 +805,9 @@ void modulab_state::modulab(machine_config &config) void md6802_state::md6802(machine_config &config) { - M6802(config, m_maincpu, XTAL(4'000'000)); - m_maincpu->set_addrmap(AS_PROGRAM, &md6802_state::md6802_map); + m6802_cpu_device &maincpu(M6802(config, m_maincpu, XTAL(4'000'000))); + maincpu.set_ram_enable(false); + maincpu.set_addrmap(AS_PROGRAM, &md6802_state::md6802_map); config.set_default_layout(layout_md6802); /* Devices */ diff --git a/src/mame/drivers/e100.cpp b/src/mame/drivers/e100.cpp index 708c0e7e87d..65ec913ec7a 100644 --- a/src/mame/drivers/e100.cpp +++ b/src/mame/drivers/e100.cpp @@ -537,6 +537,7 @@ INPUT_PORTS_END void e100_state::e100(machine_config &config) { M6802(config, m_maincpu, XTAL(4'000'000)); + m_maincpu->set_ram_enable(false); m_maincpu->set_addrmap(AS_PROGRAM, &e100_state::e100_map); /* Devices */ diff --git a/src/mame/drivers/eacc.cpp b/src/mame/drivers/eacc.cpp index be855d4e75c..3a126dc3056 100644 --- a/src/mame/drivers/eacc.cpp +++ b/src/mame/drivers/eacc.cpp @@ -85,7 +85,7 @@ private: bool m_nmi; virtual void machine_reset() override; virtual void machine_start() override { m_digits.resolve(); } - required_device<cpu_device> m_maincpu; + required_device<m6802_cpu_device> m_maincpu; required_device<pia6821_device> m_pia; required_shared_ptr<uint8_t> m_p_nvram; output_finder<7> m_digits; @@ -249,6 +249,7 @@ void eacc_state::eacc(machine_config &config) { /* basic machine hardware */ M6802(config, m_maincpu, XTAL(3'579'545)); /* Divided by 4 inside the m6802*/ + m_maincpu->set_ram_enable(false); // FIXME: needs standby support m_maincpu->set_addrmap(AS_PROGRAM, &eacc_state::eacc_mem); config.set_default_layout(layout_eacc); diff --git a/src/mame/drivers/efdt.cpp b/src/mame/drivers/efdt.cpp index ef200da650c..ad981cc4cda 100644 --- a/src/mame/drivers/efdt.cpp +++ b/src/mame/drivers/efdt.cpp @@ -362,7 +362,6 @@ void efdt_state::efdt_map(address_map &map) void efdt_state::efdt_snd_map(address_map &map) { - map(0x0000, 0x007f).ram(); map(0x6000, 0x6000).nopw(); map(0x7000, 0x7000).nopw(); map(0x8000, 0x83ff).ram(); diff --git a/src/mame/drivers/hankin.cpp b/src/mame/drivers/hankin.cpp index d20282fff41..032c7e75280 100644 --- a/src/mame/drivers/hankin.cpp +++ b/src/mame/drivers/hankin.cpp @@ -103,7 +103,6 @@ private: void hankin_state::hankin_map(address_map &map) { map.global_mask(0x1fff); - map(0x0000, 0x007f).ram(); // internal to the cpu map(0x0088, 0x008b).rw(m_ic11, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); map(0x0090, 0x0093).rw(m_ic10, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); map(0x0200, 0x02ff).ram().share("nvram"); // 5101L 4-bit static ram @@ -113,7 +112,6 @@ void hankin_state::hankin_map(address_map &map) void hankin_state::hankin_sub_map(address_map &map) { map.global_mask(0x1fff); - map(0x0000, 0x007f).ram(); // internal to the cpu map(0x0080, 0x0083).rw(m_ic2, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); map(0x1000, 0x17ff).rom().mirror(0x800).region("audiocpu", 0); } diff --git a/src/mame/drivers/hyperspt.cpp b/src/mame/drivers/hyperspt.cpp index ee31d9e5393..2ff1a7b9870 100644 --- a/src/mame/drivers/hyperspt.cpp +++ b/src/mame/drivers/hyperspt.cpp @@ -348,7 +348,6 @@ void hyperspt_state::hyperspt(machine_config &config) void hyperspt_state::hyprolyb_adpcm_map(address_map &map) { - map(0x0000, 0x007f).ram(); map(0x1000, 0x1000).r("hyprolyb_adpcm", FUNC(hyprolyb_adpcm_device::data_r)); map(0x1001, 0x1001).r("hyprolyb_adpcm", FUNC(hyprolyb_adpcm_device::ready_r)); map(0x1002, 0x1002).w("hyprolyb_adpcm", FUNC(hyprolyb_adpcm_device::msm_data_w)); diff --git a/src/mame/drivers/jangou.cpp b/src/mame/drivers/jangou.cpp index c30e06ba736..9753f643edc 100644 --- a/src/mame/drivers/jangou.cpp +++ b/src/mame/drivers/jangou.cpp @@ -406,7 +406,6 @@ void jangou_state::jngolady_cpu1_io(address_map &map) void jangou_state::nsc_map(address_map &map) { - map(0x0000, 0x007f).ram(); //internal ram for irq etc. map(0x8000, 0x8000).nopw(); //write-only,irq related? map(0x9000, 0x9000).rw(FUNC(jangou_state::slave_com_r), FUNC(jangou_state::slave_com_w)); map(0xc000, 0xc7ff).ram().share("share1"); diff --git a/src/mame/drivers/jr200.cpp b/src/mame/drivers/jr200.cpp index 4228a4fdd41..5e6b77f7611 100644 --- a/src/mame/drivers/jr200.cpp +++ b/src/mame/drivers/jr200.cpp @@ -542,7 +542,7 @@ void jr200_state::machine_reset() void jr200_state::jr200(machine_config &config) { /* basic machine hardware */ - M6802(config, m_maincpu, XTAL(14'318'181) / 4); /* MN1800A, ? MHz assumption that it is same as JR-100*/ + M6808(config, m_maincpu, XTAL(14'318'181) / 4); /* MN1800A, ? MHz assumption that it is same as JR-100*/ m_maincpu->set_addrmap(AS_PROGRAM, &jr200_state::jr200_mem); // MN1544(config, "mn1544", ?); diff --git a/src/mame/drivers/jvh.cpp b/src/mame/drivers/jvh.cpp index 616fcc8cac7..940102614fb 100644 --- a/src/mame/drivers/jvh.cpp +++ b/src/mame/drivers/jvh.cpp @@ -104,7 +104,6 @@ void jvh_state::movmastr_io(address_map &map) void jvh_state::jvh_sub_map(address_map &map) { - map(0x0000, 0x007f).ram(); map(0x0080, 0x008f).m("via", FUNC(via6522_device::map)); map(0xc000, 0xdfff).mirror(0x2000).rom(); } diff --git a/src/mame/drivers/ltd.cpp b/src/mame/drivers/ltd.cpp index d3d2c010dd3..a701dc3b60f 100644 --- a/src/mame/drivers/ltd.cpp +++ b/src/mame/drivers/ltd.cpp @@ -524,8 +524,9 @@ TIMER_DEVICE_CALLBACK_MEMBER( ltd_state::timer_r ) void ltd_state::ltd3(machine_config &config) { /* basic machine hardware */ - M6802(config, m_maincpu, XTAL(3'579'545)); - m_maincpu->set_addrmap(AS_PROGRAM, <d_state::ltd3_map); + m6802_cpu_device &maincpu(M6802(config, m_maincpu, XTAL(3'579'545))); + maincpu.set_ram_enable(false); // FIXME: needs standby support + maincpu.set_addrmap(AS_PROGRAM, <d_state::ltd3_map); NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); diff --git a/src/mame/drivers/mekd3.cpp b/src/mame/drivers/mekd3.cpp index 97757e46de3..1400fb585f2 100644 --- a/src/mame/drivers/mekd3.cpp +++ b/src/mame/drivers/mekd3.cpp @@ -186,7 +186,7 @@ private: DECLARE_WRITE8_MEMBER(trace_timer_w); DECLARE_READ8_MEMBER(trace_timer_r); - required_device<cpu_device> m_maincpu; + required_device<m6802_cpu_device> m_maincpu; required_device<ram_device> m_ram; required_memory_bank m_ram_bank; required_device<input_merger_device> m_mainirq; @@ -970,6 +970,7 @@ DEVICE_INPUT_DEFAULTS_END void mekd3_state::mekd3(machine_config &config) { M6802(config, m_maincpu, XTAL_MEKD3); // 894.8 kHz clock + m_maincpu->set_ram_enable(false); m_maincpu->set_addrmap(AS_PROGRAM, &mekd3_state::mekd3_mem); RAM(config, m_ram).set_default_size("256K").set_default_value(0); diff --git a/src/mame/drivers/mekd5.cpp b/src/mame/drivers/mekd5.cpp index 00295a92d92..840b8ea27bc 100644 --- a/src/mame/drivers/mekd5.cpp +++ b/src/mame/drivers/mekd5.cpp @@ -144,7 +144,7 @@ private: uint8_t m_digit; virtual void machine_start() override; virtual void machine_reset() override; - required_device<cpu_device> m_maincpu; + required_device<m6802_cpu_device> m_maincpu; required_device<pia6821_device> m_kpd_pia; required_device<pia6821_device> m_user_pia; required_device<pwm_display_device> m_display; @@ -458,6 +458,7 @@ DEVICE_INPUT_DEFAULTS_END void mekd5_state::mekd5(machine_config &config) { M6802(config, m_maincpu, XTAL_MEKD5); /* 894.8 kHz clock */ + m_maincpu->set_ram_enable(false); m_maincpu->set_addrmap(AS_PROGRAM, &mekd5_state::mekd5_mem); INPUT_MERGER_ANY_HIGH(config, "mainirq").output_handler().set_inputline(m_maincpu, M6802_IRQ_LINE); diff --git a/src/mame/drivers/murogem.cpp b/src/mame/drivers/murogem.cpp index c6344599aee..622d8d38617 100644 --- a/src/mame/drivers/murogem.cpp +++ b/src/mame/drivers/murogem.cpp @@ -161,7 +161,6 @@ WRITE8_MEMBER(murogem_state::outport_w) void murogem_state::murogem_map(address_map &map) { - map(0x0000, 0x007f).ram(); map(0x4000, 0x4000).w("crtc", FUNC(mc6845_device::address_w)); map(0x4001, 0x4001).w("crtc", FUNC(mc6845_device::register_w)); map(0x5000, 0x5000).portr("IN0"); diff --git a/src/mame/drivers/nightgal.cpp b/src/mame/drivers/nightgal.cpp index 8a941df5353..4b5ac298fb2 100644 --- a/src/mame/drivers/nightgal.cpp +++ b/src/mame/drivers/nightgal.cpp @@ -374,7 +374,6 @@ WRITE8_MEMBER(nightgal_state::output_w) void nightgal_state::common_nsc_map(address_map &map) { - map(0x0000, 0x007f).ram(); map(0x0080, 0x0080).portr("BLIT_PORT"); map(0x0081, 0x0083).r(FUNC(nightgal_state::royalqn_nsc_blit_r)); map(0x00a0, 0x00af).w(m_blitter, FUNC(jangou_blitter_device::vregs_w)); diff --git a/src/mame/drivers/nyny.cpp b/src/mame/drivers/nyny.cpp index c1186106c25..39cb9e8246b 100644 --- a/src/mame/drivers/nyny.cpp +++ b/src/mame/drivers/nyny.cpp @@ -452,7 +452,6 @@ void nyny_state::nyny_main_map(address_map &map) void nyny_state::nyny_audio_1_map(address_map &map) { map.global_mask(0x7fff); - map(0x0000, 0x007f).ram(); /* internal RAM */ map(0x0080, 0x0fff).noprw(); map(0x1000, 0x1000).mirror(0x0fff).r(m_soundlatch, FUNC(generic_latch_8_device::read)).w(FUNC(nyny_state::audio_1_answer_w)); map(0x2000, 0x2000).mirror(0x0fff).portr("SW3"); @@ -470,7 +469,6 @@ void nyny_state::nyny_audio_1_map(address_map &map) void nyny_state::nyny_audio_2_map(address_map &map) { map.global_mask(0x7fff); - map(0x0000, 0x007f).ram(); /* internal RAM */ map(0x0080, 0x0fff).noprw(); map(0x1000, 0x1000).mirror(0x0fff).r(m_soundlatch2, FUNC(generic_latch_8_device::read)); map(0x2000, 0x2000).mirror(0x0ffe).r("ay3", FUNC(ay8910_device::data_r)); diff --git a/src/mame/drivers/pubtimed.cpp b/src/mame/drivers/pubtimed.cpp index 2200b786d32..c9861813f1a 100644 --- a/src/mame/drivers/pubtimed.cpp +++ b/src/mame/drivers/pubtimed.cpp @@ -31,7 +31,6 @@ private: void pubtimed_state::mem_map(address_map &map) { - map(0x0000, 0x007f).ram(); map(0x0800, 0x080f).ram(); // LCD segment driver? map(0x0820, 0x083f).ram(); // LCD segment driver? map(0x4000, 0x4000).portr("UNKNOWN"); diff --git a/src/mame/drivers/r2dtank.cpp b/src/mame/drivers/r2dtank.cpp index 8860359a3fb..0d701f85636 100644 --- a/src/mame/drivers/r2dtank.cpp +++ b/src/mame/drivers/r2dtank.cpp @@ -348,7 +348,6 @@ void r2dtank_state::r2dtank_main_map(address_map &map) void r2dtank_state::r2dtank_audio_map(address_map &map) { - map(0x0000, 0x007f).ram(); /* internal RAM */ map(0xd000, 0xd003).rw("pia_audio", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); map(0xf000, 0xf000).rw(FUNC(r2dtank_state::audio_command_r), FUNC(r2dtank_state::audio_answer_w)); map(0xf800, 0xffff).rom(); diff --git a/src/mame/drivers/s11.cpp b/src/mame/drivers/s11.cpp index b1966c18077..9eca1fc247d 100644 --- a/src/mame/drivers/s11.cpp +++ b/src/mame/drivers/s11.cpp @@ -20,7 +20,6 @@ ToDo: #include "emu.h" #include "includes/s11.h" -#include "cpu/m6800/m6800.h" #include "cpu/m6809/m6809.h" #include "sound/volt_reg.h" #include "speaker.h" diff --git a/src/mame/drivers/s11a.cpp b/src/mame/drivers/s11a.cpp index da5e5170178..37132cfb715 100644 --- a/src/mame/drivers/s11a.cpp +++ b/src/mame/drivers/s11a.cpp @@ -237,6 +237,7 @@ void s11a_state::s11a(machine_config &config) /* Add the soundcard */ M6802(config, m_audiocpu, XTAL(4'000'000)); + m_audiocpu->set_ram_enable(false); m_audiocpu->set_addrmap(AS_PROGRAM, &s11a_state::s11a_audio_map); SPEAKER(config, "speaker").front_center(); diff --git a/src/mame/drivers/s11b.cpp b/src/mame/drivers/s11b.cpp index cf4b8effcb2..d4509ebbd50 100644 --- a/src/mame/drivers/s11b.cpp +++ b/src/mame/drivers/s11b.cpp @@ -313,6 +313,7 @@ void s11b_state::s11b(machine_config &config) /* Add the soundcard */ M6802(config, m_audiocpu, XTAL(4'000'000)); + m_audiocpu->set_ram_enable(false); m_audiocpu->set_addrmap(AS_PROGRAM, &s11b_state::s11b_audio_map); SPEAKER(config, "speaker").front_center(); diff --git a/src/mame/drivers/s3.cpp b/src/mame/drivers/s3.cpp index 9a7121a8c79..409aa0f60f0 100644 --- a/src/mame/drivers/s3.cpp +++ b/src/mame/drivers/s3.cpp @@ -130,7 +130,6 @@ void s3_state::s3_main_map(address_map &map) void s3_state::s3_audio_map(address_map &map) { map.global_mask(0xfff); - map(0x0000, 0x007f).ram(); map(0x0400, 0x0403).rw(m_pias, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // sounds map(0x0800, 0x0fff).rom().region("audioroms", 0); } diff --git a/src/mame/drivers/s6.cpp b/src/mame/drivers/s6.cpp index 859102df718..ce494940de2 100644 --- a/src/mame/drivers/s6.cpp +++ b/src/mame/drivers/s6.cpp @@ -141,7 +141,7 @@ void s6_state::s6_main_map(address_map &map) void s6_state::s6_audio_map(address_map &map) { map.global_mask(0x7fff); - map(0x0000, 0x00ff).ram(); + map(0x0080, 0x00ff).ram(); // external 6810 RAM map(0x0400, 0x0403).rw(m_pias, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); map(0x3000, 0x7fff).rom().region("audioroms", 0); } diff --git a/src/mame/drivers/s6a.cpp b/src/mame/drivers/s6a.cpp index 39b3aabb706..a7cfc05c776 100644 --- a/src/mame/drivers/s6a.cpp +++ b/src/mame/drivers/s6a.cpp @@ -133,7 +133,7 @@ void s6a_state::s6a_main_map(address_map &map) void s6a_state::s6a_audio_map(address_map &map) { - map(0x0000, 0x00ff).ram(); + map(0x0080, 0x00ff).ram(); // external 6810 RAM map(0x0400, 0x0403).mirror(0x8000).rw(m_pias, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); map(0xb000, 0xffff).rom().region("audioroms", 0); } diff --git a/src/mame/drivers/s8.cpp b/src/mame/drivers/s8.cpp index 3aaa9aca636..be397165e90 100644 --- a/src/mame/drivers/s8.cpp +++ b/src/mame/drivers/s8.cpp @@ -109,7 +109,7 @@ private: virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; static const device_timer_id TIMER_IRQ = 0; virtual void machine_start() override { m_digits.resolve(); } - required_device<cpu_device> m_maincpu; + required_device<m6802_cpu_device> m_maincpu; required_device<cpu_device> m_audiocpu; required_device<pia6821_device> m_pias; required_device<pia6821_device> m_pia21; @@ -321,6 +321,7 @@ void s8_state::s8(machine_config &config) { /* basic machine hardware */ M6802(config, m_maincpu, XTAL(4'000'000)); + m_maincpu->set_ram_enable(false); m_maincpu->set_addrmap(AS_PROGRAM, &s8_state::s8_main_map); MCFG_MACHINE_RESET_OVERRIDE(s8_state, s8) diff --git a/src/mame/drivers/s8a.cpp b/src/mame/drivers/s8a.cpp index 95cc85f1020..8d7081820c8 100644 --- a/src/mame/drivers/s8a.cpp +++ b/src/mame/drivers/s8a.cpp @@ -85,7 +85,7 @@ private: virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; static const device_timer_id TIMER_IRQ = 0; virtual void machine_start() override { m_digits.resolve(); } - required_device<cpu_device> m_maincpu; + required_device<m6802_cpu_device> m_maincpu; required_device<cpu_device> m_audiocpu; required_device<pia6821_device> m_pias; required_device<pia6821_device> m_pia21; @@ -293,6 +293,7 @@ void s8a_state::s8a(machine_config &config) { /* basic machine hardware */ M6802(config, m_maincpu, XTAL(4'000'000)); + m_maincpu->set_ram_enable(false); m_maincpu->set_addrmap(AS_PROGRAM, &s8a_state::s8a_main_map); MCFG_MACHINE_RESET_OVERRIDE(s8a_state, s8a) diff --git a/src/mame/drivers/seicross.cpp b/src/mame/drivers/seicross.cpp index 6b6e6571f32..b434895ee13 100644 --- a/src/mame/drivers/seicross.cpp +++ b/src/mame/drivers/seicross.cpp @@ -135,7 +135,6 @@ void seicross_state::main_portmap(address_map &map) void seicross_state::mcu_nvram_map(address_map &map) { - map(0x0000, 0x007f).ram(); map(0x1000, 0x10ff).ram().share("nvram"); map(0x2000, 0x2000).w(FUNC(seicross_state::dac_w)); map(0x8000, 0xf7ff).rom().region("maincpu", 0); @@ -144,7 +143,6 @@ void seicross_state::mcu_nvram_map(address_map &map) void seicross_state::mcu_no_nvram_map(address_map &map) { - map(0x0000, 0x007f).ram(); map(0x1003, 0x1003).portr("DSW1"); /* DSW1 */ map(0x1005, 0x1005).portr("DSW2"); /* DSW2 */ map(0x1006, 0x1006).portr("DSW3"); /* DSW3 */ diff --git a/src/mame/drivers/taito.cpp b/src/mame/drivers/taito.cpp index bcaeda525a8..5b5470e43ae 100644 --- a/src/mame/drivers/taito.cpp +++ b/src/mame/drivers/taito.cpp @@ -140,7 +140,6 @@ void taito_state::taito_map(address_map &map) void taito_state::taito_sub_map(address_map &map) { map.global_mask(0x1fff); - map(0x0000, 0x007f).ram(); // internal to the cpu map(0x0400, 0x0403).rw(m_pia, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); map(0x0800, 0x1fff).rom().region("cpu2", 0x0800); } @@ -148,7 +147,6 @@ void taito_state::taito_sub_map(address_map &map) void taito_state::taito_sub_map2(address_map &map) { map.global_mask(0x3fff); - map(0x0000, 0x007f).ram(); // internal to the cpu map(0x0400, 0x0403).rw(m_pia, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); map(0x2000, 0x3fff).rom().region("cpu2", 0x2000); } @@ -156,7 +154,6 @@ void taito_state::taito_sub_map2(address_map &map) void taito_state::taito_sub_map5(address_map &map) { map.global_mask(0x7fff); - map(0x0000, 0x007f).ram(); // internal to the cpu map(0x0400, 0x0403).rw(m_pia, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); map(0x1000, 0x1000).w("aysnd_0", FUNC(ay8910_device::address_w)); map(0x1003, 0x1003).w("aysnd_0", FUNC(ay8910_device::address_w)); @@ -194,7 +191,6 @@ void taito_state::shock_map(address_map &map) void taito_state::shock_sub_map(address_map &map) { map.global_mask(0x0fff); - map(0x0000, 0x007f).ram(); // internal to the cpu map(0x0400, 0x0403).rw(m_pia, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); map(0x0800, 0x0fff).rom().region("cpu2", 0); } diff --git a/src/mame/drivers/tdv2324.cpp b/src/mame/drivers/tdv2324.cpp index 5a194e6b5da..f1f47245bab 100644 --- a/src/mame/drivers/tdv2324.cpp +++ b/src/mame/drivers/tdv2324.cpp @@ -276,6 +276,7 @@ void tdv2324_state::tdv2324(machine_config &config) m_subcpu->set_addrmap(AS_IO, &tdv2324_state::tdv2324_sub_io); M6802(config, m_fdccpu, 8000000/2); // ??? + m_fdccpu->set_ram_enable(false); m_fdccpu->set_addrmap(AS_PROGRAM, &tdv2324_state::tdv2324_fdc_mem); // video hardware diff --git a/src/mame/drivers/trackfld.cpp b/src/mame/drivers/trackfld.cpp index 4a68de3cb01..2899dd62a42 100644 --- a/src/mame/drivers/trackfld.cpp +++ b/src/mame/drivers/trackfld.cpp @@ -1032,7 +1032,6 @@ void trackfld_state::yieartf(machine_config &config) void trackfld_state::hyprolyb_adpcm_map(address_map &map) { - map(0x0000, 0x007f).ram(); map(0x1000, 0x1000).r("hyprolyb_adpcm", FUNC(hyprolyb_adpcm_device::data_r)); map(0x1001, 0x1001).r("hyprolyb_adpcm", FUNC(hyprolyb_adpcm_device::ready_r)); map(0x1002, 0x1002).w("hyprolyb_adpcm", FUNC(hyprolyb_adpcm_device::msm_data_w)); diff --git a/src/mame/drivers/tubep.cpp b/src/mame/drivers/tubep.cpp index b5508786479..b391248d541 100644 --- a/src/mame/drivers/tubep.cpp +++ b/src/mame/drivers/tubep.cpp @@ -103,7 +103,6 @@ TP-S.1 TP-S.2 TP-S.3 TP-B.1 8212 TP-B.2 TP-B.3 TP-B.4 #include "emu.h" #include "includes/tubep.h" -#include "cpu/m6800/m6800.h" #include "cpu/z80/z80.h" #include "cpu/m6805/m6805.h" #include "machine/74259.h" @@ -836,6 +835,7 @@ void tubep_state::tubep(machine_config &config) m_soundcpu->set_addrmap(AS_IO, &tubep_state::tubep_sound_portmap); NSC8105(config, m_mcu, 6000000); /* 6 MHz Xtal - divided internally ??? */ + m_mcu->set_ram_enable(false); m_mcu->set_addrmap(AS_PROGRAM, &tubep_state::nsc_map); config.set_maximum_quantum(attotime::from_hz(6000)); @@ -885,6 +885,7 @@ void tubep_state::tubepb(machine_config &config) tubep(config); M6802(config.replace(), m_mcu, 6000000); /* ? MHz Xtal */ + m_mcu->set_ram_enable(false); m_mcu->set_addrmap(AS_PROGRAM, &tubep_state::nsc_map); //m_screen->screen_vblank().set_inputline(m_mcu, INPUT_LINE_NMI); @@ -908,6 +909,7 @@ void tubep_state::rjammer(machine_config &config) GENERIC_LATCH_8(config, "soundlatch").data_pending_callback().set_inputline(m_soundcpu, INPUT_LINE_NMI); NSC8105(config, m_mcu, 6000000); /* 6 MHz Xtal - divided internally ??? */ + m_mcu->set_ram_enable(false); m_mcu->set_addrmap(AS_PROGRAM, &tubep_state::nsc_map); ls259_device &mainlatch(LS259(config, "mainlatch")); // 3A diff --git a/src/mame/drivers/votrtnt.cpp b/src/mame/drivers/votrtnt.cpp index b0beaa96302..89de200b62d 100644 --- a/src/mame/drivers/votrtnt.cpp +++ b/src/mame/drivers/votrtnt.cpp @@ -57,7 +57,7 @@ private: void _6802_mem(address_map &map); - required_device<cpu_device> m_maincpu; + required_device<m6802_cpu_device> m_maincpu; required_device<votrax_sc01_device> m_votrax; required_device<clock_device> m_clock; }; @@ -140,6 +140,7 @@ void votrtnt_state::votrtnt(machine_config &config) { /* basic machine hardware */ M6802(config, m_maincpu, 2.4576_MHz_XTAL); // 2.4576MHz XTAL, verified; divided by 4 inside the MC6802 + m_maincpu->set_ram_enable(false); m_maincpu->set_addrmap(AS_PROGRAM, &votrtnt_state::_6802_mem); /* video hardware */ diff --git a/src/mame/includes/s11.h b/src/mame/includes/s11.h index 4e92c7d9868..1d54a5968e4 100644 --- a/src/mame/includes/s11.h +++ b/src/mame/includes/s11.h @@ -9,6 +9,7 @@ #ifndef MAME_INCLUDES_S11_H #define MAME_INCLUDES_S11_H +#include "cpu/m6800/m6800.h" #include "audio/s11c_bg.h" #include "machine/6821pia.h" #include "machine/genpin.h" @@ -96,7 +97,7 @@ protected: // devices required_device<cpu_device> m_maincpu; - optional_device<cpu_device> m_audiocpu; + optional_device<m6802_cpu_device> m_audiocpu; optional_device<cpu_device> m_bgcpu; optional_device<hc55516_device> m_hc55516; optional_device<pia6821_device> m_pias; diff --git a/src/mame/includes/tdv2324.h b/src/mame/includes/tdv2324.h index d0fdb05455f..69b4c2fa512 100644 --- a/src/mame/includes/tdv2324.h +++ b/src/mame/includes/tdv2324.h @@ -65,7 +65,7 @@ public: private: required_device<cpu_device> m_maincpu; required_device<cpu_device> m_subcpu; - required_device<cpu_device> m_fdccpu; + required_device<m6802_cpu_device> m_fdccpu; required_device<z80dart_device> m_sio; required_device<pic8259_device> m_pic; required_device<pit8253_device> m_pit0; diff --git a/src/mame/includes/tubep.h b/src/mame/includes/tubep.h index f56bd63b344..bb99db9a35e 100644 --- a/src/mame/includes/tubep.h +++ b/src/mame/includes/tubep.h @@ -5,6 +5,7 @@ #pragma once +#include "cpu/m6800/m6800.h" #include "sound/msm5205.h" #include "emupal.h" #include "screen.h" @@ -117,7 +118,7 @@ private: required_device<cpu_device> m_maincpu; required_device<cpu_device> m_soundcpu; required_device<cpu_device> m_slave; - required_device<cpu_device> m_mcu; + required_device<m6802_cpu_device> m_mcu; optional_device<msm5205_device> m_msm; required_device<screen_device> m_screen; diff --git a/src/mame/machine/cmi_ankbd.cpp b/src/mame/machine/cmi_ankbd.cpp index 997ea27619b..97001e93754 100644 --- a/src/mame/machine/cmi_ankbd.cpp +++ b/src/mame/machine/cmi_ankbd.cpp @@ -80,7 +80,6 @@ WRITE_LINE_MEMBER( cmi_alphanumeric_keyboard_device::rts_w ) void cmi_alphanumeric_keyboard_device::alphakeys_map(address_map &map) { map.unmap_value_high(); - map(0x0000, 0x007f).ram(); map(0x4000, 0x7fff).portr("OPTIONS"); map(0x8000, 0xbfff).rw(m_pia, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); map(0xc000, 0xc3ff).rom().mirror(0x3c00); diff --git a/src/mame/machine/cmi_mkbd.cpp b/src/mame/machine/cmi_mkbd.cpp index 69be6b34354..ea19b73e624 100644 --- a/src/mame/machine/cmi_mkbd.cpp +++ b/src/mame/machine/cmi_mkbd.cpp @@ -305,7 +305,6 @@ WRITE_LINE_MEMBER( cmi_music_keyboard_device::kbd_cts_w ) void cmi_music_keyboard_device::muskeys_map(address_map &map) { map.unmap_value_high(); - map(0x0000, 0x007f).ram(); map(0x0080, 0x0083).rw(m_cmi10_pia_u21, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); map(0x0090, 0x0093).rw(m_cmi10_pia_u20, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); map(0x00a0, 0x00a1).rw(m_acia_kbd, FUNC(acia6850_device::read), FUNC(acia6850_device::write)); |