upd7801, upd7807, upd7810, upd78c11: Divide internal clock by 2 or 3

This commit is contained in:
AJR 2020-03-04 14:20:05 -05:00
parent c641fe72db
commit 30094c0abc
3 changed files with 6 additions and 2 deletions

View File

@ -131,6 +131,8 @@ protected:
virtual void device_reset() override;
// device_execute_interface overrides
virtual uint64_t execute_clocks_to_cycles(uint64_t clocks) const noexcept override { return (clocks + 3 - 1) / 3; }
virtual uint64_t execute_cycles_to_clocks(uint64_t 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 40; }
virtual uint32_t execute_input_lines() const noexcept override { return 2; }
@ -1374,6 +1376,8 @@ public:
protected:
virtual void device_reset() override;
virtual uint64_t execute_clocks_to_cycles(uint64_t clocks) const noexcept override { return (clocks + 2 - 1) / 2; }
virtual uint64_t execute_cycles_to_clocks(uint64_t cycles) const noexcept override { return (cycles * 2); }
virtual void execute_set_input(int inputnum, int state) override;
virtual std::unique_ptr<util::disasm_interface> create_disassembler() override;
virtual void handle_timers(int cycles) override;

View File

@ -196,7 +196,7 @@ void korg_ds8_state::palette_init_ds8(palette_device &palette)
void korg_ds8_state::ds8(machine_config &config)
{
UPD7810(config, m_maincpu, 12_MHz_XTAL / 3); // µPD78C10CW (FIXME: internalize divider)
UPD7810(config, m_maincpu, 12_MHz_XTAL); // µPD78C10CW
m_maincpu->set_addrmap(AS_PROGRAM, &korg_ds8_state::mem_map);
m_maincpu->pa_in_cb().set(FUNC(korg_ds8_state::kbd_sw_r));
m_maincpu->pb_out_cb().set(FUNC(korg_ds8_state::scan_w));

View File

@ -336,7 +336,7 @@ GFXDECODE_END
void nibble_state::nibble(machine_config &config)
{
UPD7811(config, m_maincpu, MASTER_CLOCK / 3); // type guessed; clock not verified
UPD7811(config, m_maincpu, MASTER_CLOCK); // type guessed; clock not verified
m_maincpu->set_addrmap(AS_PROGRAM, &nibble_state::nibble_map);
//m_maincpu->set_vblank_int("screen", FUNC(nibble_state::nibble_interrupt));