mb86233: add /3 clock divider

This commit is contained in:
hap 2025-04-01 12:28:27 +02:00
parent 0197c170bf
commit cfa56c0d33
5 changed files with 10 additions and 9 deletions

View File

@ -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;

View File

@ -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<util::disasm_interface> 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);

View File

@ -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);

View File

@ -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);

View File

@ -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);