mirror of
https://github.com/holub/mame
synced 2025-04-18 22:49:58 +03:00
mb86233: add /3 clock divider
This commit is contained in:
parent
0197c170bf
commit
cfa56c0d33
@ -73,6 +73,8 @@ protected:
|
|||||||
virtual void device_start() override ATTR_COLD;
|
virtual void device_start() override ATTR_COLD;
|
||||||
virtual void device_reset() 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_min_cycles() const noexcept override { return 1; }
|
||||||
virtual uint32_t execute_max_cycles() const noexcept override { return 1; }
|
virtual uint32_t execute_max_cycles() const noexcept override { return 1; }
|
||||||
virtual void execute_run() override;
|
virtual void execute_run() override;
|
||||||
|
@ -53,6 +53,7 @@ public:
|
|||||||
|
|
||||||
void internal_abus(address_map &map) ATTR_COLD;
|
void internal_abus(address_map &map) ATTR_COLD;
|
||||||
void internal_bbus(address_map &map) ATTR_COLD;
|
void internal_bbus(address_map &map) ATTR_COLD;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
// device-level overrides
|
// device-level overrides
|
||||||
virtual void device_start() override ATTR_COLD;
|
virtual void device_start() override ATTR_COLD;
|
||||||
@ -74,7 +75,6 @@ protected:
|
|||||||
virtual std::unique_ptr<util::disasm_interface> create_disassembler() override;
|
virtual std::unique_ptr<util::disasm_interface> create_disassembler() override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
struct mb86235_flags
|
struct mb86235_flags
|
||||||
{
|
{
|
||||||
uint32_t az;
|
uint32_t az;
|
||||||
@ -181,9 +181,9 @@ private:
|
|||||||
{
|
{
|
||||||
compiler_state &operator=(compiler_state const &) = delete;
|
compiler_state &operator=(compiler_state const &) = delete;
|
||||||
|
|
||||||
uint32_t cycles; /* accumulated cycles */
|
uint32_t cycles; /* accumulated cycles */
|
||||||
uint8_t checkints; /* need to check interrupts before next instruction */
|
uint8_t checkints; /* need to check interrupts before next instruction */
|
||||||
uml::code_label labelnum; /* index for local labels */
|
uml::code_label labelnum; /* index for local labels */
|
||||||
};
|
};
|
||||||
|
|
||||||
void run_drc();
|
void run_drc();
|
||||||
@ -235,7 +235,7 @@ private:
|
|||||||
static void full_fifoout0(void *param);
|
static void full_fifoout0(void *param);
|
||||||
static void full_fifoout1(void *param);
|
static void full_fifoout1(void *param);
|
||||||
|
|
||||||
// interpreter
|
// interpreter
|
||||||
void execute_op(uint32_t h, uint32_t l);
|
void execute_op(uint32_t h, uint32_t l);
|
||||||
void do_alu1(uint32_t h, uint32_t l);
|
void do_alu1(uint32_t h, uint32_t l);
|
||||||
void do_alu2(uint32_t h, uint32_t l);
|
void do_alu2(uint32_t h, uint32_t l);
|
||||||
|
@ -25,7 +25,6 @@ protected:
|
|||||||
virtual bool describe(opcode_desc &desc, const opcode_desc *prev) override;
|
virtual bool describe(opcode_desc &desc, const opcode_desc *prev) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
mb86235_device *m_core;
|
mb86235_device *m_core;
|
||||||
|
|
||||||
void describe_alu(opcode_desc &desc, uint32_t aluop);
|
void describe_alu(opcode_desc &desc, uint32_t aluop);
|
||||||
|
@ -1723,7 +1723,7 @@ void model1_state::model1(machine_config &config)
|
|||||||
|
|
||||||
TIMER(config, "scantimer").configure_scanline(FUNC(model1_state::model1_interrupt), "screen", 0, 1);
|
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_PROGRAM, &model1_state::copro_prog_map);
|
||||||
m_tgp_copro->set_addrmap(AS_DATA, &model1_state::copro_data_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);
|
m_tgp_copro->set_addrmap(AS_IO, &model1_state::copro_io_map);
|
||||||
|
@ -2514,7 +2514,7 @@ void model2o_state::model2o(machine_config &config)
|
|||||||
|
|
||||||
TIMER(config, "scantimer").configure_scanline(FUNC(model2_state::model2_interrupt), "screen", 0, 1);
|
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_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_DATA, &model2o_state::copro_tgp_data_map);
|
||||||
m_copro_tgp->set_addrmap(AS_IO, &model2o_state::copro_tgp_io_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);
|
m_maincpu->set_addrmap(AS_PROGRAM, &model2a_state::model2a_crx_mem);
|
||||||
TIMER(config, "scantimer").configure_scanline(FUNC(model2_state::model2_interrupt), "screen", 0, 1);
|
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_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_DATA, &model2a_state::copro_tgp_data_map);
|
||||||
m_copro_tgp->set_addrmap(AS_IO, &model2a_state::copro_tgp_io_map);
|
m_copro_tgp->set_addrmap(AS_IO, &model2a_state::copro_tgp_io_map);
|
||||||
|
Loading…
Reference in New Issue
Block a user