From cfa56c0d33ead1dc3bf0d62d3508cf3a83cd2183 Mon Sep 17 00:00:00 2001 From: hap Date: Tue, 1 Apr 2025 12:28:27 +0200 Subject: [PATCH] mb86233: add /3 clock divider --- src/devices/cpu/mb86233/mb86233.h | 2 ++ src/devices/cpu/mb86235/mb86235.h | 10 +++++----- src/devices/cpu/mb86235/mb86235fe.h | 1 - src/mame/sega/model1.cpp | 2 +- src/mame/sega/model2.cpp | 4 ++-- 5 files changed, 10 insertions(+), 9 deletions(-) diff --git a/src/devices/cpu/mb86233/mb86233.h b/src/devices/cpu/mb86233/mb86233.h index 4a72a137201..f23a0a113ad 100644 --- a/src/devices/cpu/mb86233/mb86233.h +++ b/src/devices/cpu/mb86233/mb86233.h @@ -73,6 +73,8 @@ protected: virtual void device_start() override ATTR_COLD; virtual void device_reset() override ATTR_COLD; + virtual u64 execute_clocks_to_cycles(u64 clocks) const noexcept override { return (clocks + 3 - 1) / 3; } + virtual u64 execute_cycles_to_clocks(u64 cycles) const noexcept override { return (cycles * 3); } virtual uint32_t execute_min_cycles() const noexcept override { return 1; } virtual uint32_t execute_max_cycles() const noexcept override { return 1; } virtual void execute_run() override; diff --git a/src/devices/cpu/mb86235/mb86235.h b/src/devices/cpu/mb86235/mb86235.h index 137189b5170..ed5ba800dc9 100644 --- a/src/devices/cpu/mb86235/mb86235.h +++ b/src/devices/cpu/mb86235/mb86235.h @@ -53,6 +53,7 @@ public: void internal_abus(address_map &map) ATTR_COLD; void internal_bbus(address_map &map) ATTR_COLD; + protected: // device-level overrides virtual void device_start() override ATTR_COLD; @@ -74,7 +75,6 @@ protected: virtual std::unique_ptr create_disassembler() override; private: - struct mb86235_flags { uint32_t az; @@ -181,9 +181,9 @@ private: { compiler_state &operator=(compiler_state const &) = delete; - uint32_t cycles; /* accumulated cycles */ - uint8_t checkints; /* need to check interrupts before next instruction */ - uml::code_label labelnum; /* index for local labels */ + uint32_t cycles; /* accumulated cycles */ + uint8_t checkints; /* need to check interrupts before next instruction */ + uml::code_label labelnum; /* index for local labels */ }; void run_drc(); @@ -235,7 +235,7 @@ private: static void full_fifoout0(void *param); static void full_fifoout1(void *param); -// interpreter + // interpreter void execute_op(uint32_t h, uint32_t l); void do_alu1(uint32_t h, uint32_t l); void do_alu2(uint32_t h, uint32_t l); diff --git a/src/devices/cpu/mb86235/mb86235fe.h b/src/devices/cpu/mb86235/mb86235fe.h index 309b30b9133..ed160a98c0a 100644 --- a/src/devices/cpu/mb86235/mb86235fe.h +++ b/src/devices/cpu/mb86235/mb86235fe.h @@ -25,7 +25,6 @@ protected: virtual bool describe(opcode_desc &desc, const opcode_desc *prev) override; private: - mb86235_device *m_core; void describe_alu(opcode_desc &desc, uint32_t aluop); diff --git a/src/mame/sega/model1.cpp b/src/mame/sega/model1.cpp index ce5fe7b4527..308982c50be 100644 --- a/src/mame/sega/model1.cpp +++ b/src/mame/sega/model1.cpp @@ -1723,7 +1723,7 @@ void model1_state::model1(machine_config &config) TIMER(config, "scantimer").configure_scanline(FUNC(model1_state::model1_interrupt), "screen", 0, 1); - MB86233(config, m_tgp_copro, 40_MHz_XTAL / 3); + MB86233(config, m_tgp_copro, 40_MHz_XTAL); m_tgp_copro->set_addrmap(AS_PROGRAM, &model1_state::copro_prog_map); m_tgp_copro->set_addrmap(AS_DATA, &model1_state::copro_data_map); m_tgp_copro->set_addrmap(AS_IO, &model1_state::copro_io_map); diff --git a/src/mame/sega/model2.cpp b/src/mame/sega/model2.cpp index b8cd4c76fcc..54e95f78234 100644 --- a/src/mame/sega/model2.cpp +++ b/src/mame/sega/model2.cpp @@ -2514,7 +2514,7 @@ void model2o_state::model2o(machine_config &config) TIMER(config, "scantimer").configure_scanline(FUNC(model2_state::model2_interrupt), "screen", 0, 1); - MB86234(config, m_copro_tgp, 50_MHz_XTAL / 3); + MB86234(config, m_copro_tgp, 50_MHz_XTAL); m_copro_tgp->set_addrmap(AS_PROGRAM, &model2o_state::copro_tgp_prog_map); m_copro_tgp->set_addrmap(AS_DATA, &model2o_state::copro_tgp_data_map); m_copro_tgp->set_addrmap(AS_IO, &model2o_state::copro_tgp_io_map); @@ -2664,7 +2664,7 @@ void model2a_state::model2a(machine_config &config) m_maincpu->set_addrmap(AS_PROGRAM, &model2a_state::model2a_crx_mem); TIMER(config, "scantimer").configure_scanline(FUNC(model2_state::model2_interrupt), "screen", 0, 1); - MB86234(config, m_copro_tgp, 50_MHz_XTAL / 3); + MB86234(config, m_copro_tgp, 50_MHz_XTAL); m_copro_tgp->set_addrmap(AS_PROGRAM, &model2a_state::copro_tgp_prog_map); m_copro_tgp->set_addrmap(AS_DATA, &model2a_state::copro_tgp_data_map); m_copro_tgp->set_addrmap(AS_IO, &model2a_state::copro_tgp_io_map);