From 13a70d311857594b48f581943a832190b468809a Mon Sep 17 00:00:00 2001 From: AJR Date: Fri, 8 Dec 2017 18:44:23 -0500 Subject: m6809: Start resolving the great device type/clock divider mix-up --- src/devices/cpu/m6809/m6809.cpp | 43 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 41 insertions(+), 2 deletions(-) (limited to 'src/devices/cpu/m6809/m6809.cpp') diff --git a/src/devices/cpu/m6809/m6809.cpp b/src/devices/cpu/m6809/m6809.cpp index 42f64d5e5b2..521d4a113b7 100644 --- a/src/devices/cpu/m6809/m6809.cpp +++ b/src/devices/cpu/m6809/m6809.cpp @@ -77,6 +77,21 @@ March 2013 NPW: Removed unused jmp/jsr _slap functions from 6809ops.c, m6809_slapstick check moved into the opcode functions. +****************************************************************************** + + M6809 cycle timings are relative to a four-phase clock cycle defined by + the Q and E signals on pins 35 and 34. The Q clock must lead the E clock + by approximately half a cycle. On the MC6809E, Q and E are inputs, and + one 74LS74 wired as a two-stage Johnson counter is almost sufficient to + generate both (though E requires voltage levels above TTL). On the + MC6809, however, Q and E are output from an internal clock generator + which can be driven by a crystal oscillator connected to pins 38 and 39. + (The MC6809E reuses the same numbered pins for the unrelated TSC and LIC + functions.) The frequencies of Q and E on the MC6809 are that of the XTAL + divided by 4. MAME's emulation formerly assigned this internal clock + divider to the MC6809E and not to the MC6809; the confusion resulting + from this error is in the process of being straightened out. + *****************************************************************************/ #include "emu.h" @@ -104,8 +119,10 @@ March 2013 NPW: // DEVICE INTERFACE //************************************************************************** -DEFINE_DEVICE_TYPE(M6809, m6809_device, "m6809", "M6809") -DEFINE_DEVICE_TYPE(M6809E, m6809e_device, "m6809e", "M6809E") +DEFINE_DEVICE_TYPE(MC6809, mc6809_device, "mc6809", "MC6809") +DEFINE_DEVICE_TYPE(MC6809E, mc6809e_device, "mc6809e", "MC6809E") +DEFINE_DEVICE_TYPE(M6809, m6809_device, "m6809", "MC6809 (legacy)") +DEFINE_DEVICE_TYPE(M6809E, m6809e_device, "m6809e", "MC6809E (legacy)") //------------------------------------------------- @@ -577,6 +594,28 @@ void m6809_base_device::mi_default::write(uint16_t adr, uint8_t val) +//------------------------------------------------- +// mc6809_device +//------------------------------------------------- + +mc6809_device::mc6809_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) + : m6809_base_device(mconfig, tag, owner, clock, MC6809, 4) +{ +} + + + +//------------------------------------------------- +// mc6809e_device +//------------------------------------------------- + +mc6809e_device::mc6809e_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) + : m6809_base_device(mconfig, tag, owner, clock, MC6809E, 1) +{ +} + + + //------------------------------------------------- // m6809_device //------------------------------------------------- -- cgit v1.2.3-70-g09d2 From 7bf4395401d1af061d8342df5be3eee7006a83f7 Mon Sep 17 00:00:00 2001 From: AJR Date: Sun, 10 Dec 2017 08:52:34 -0500 Subject: m6809: Note (nw) --- src/devices/cpu/m6809/m6809.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'src/devices/cpu/m6809/m6809.cpp') diff --git a/src/devices/cpu/m6809/m6809.cpp b/src/devices/cpu/m6809/m6809.cpp index 521d4a113b7..0521b745414 100644 --- a/src/devices/cpu/m6809/m6809.cpp +++ b/src/devices/cpu/m6809/m6809.cpp @@ -92,6 +92,15 @@ March 2013 NPW: divider to the MC6809E and not to the MC6809; the confusion resulting from this error is in the process of being straightened out. + Maximum clock ratings: + + Q & E EXTAL + MC6809(E) 1.0 MHz 4.0 MHz + MC68A09(E) 1.5 MHz 6.0 MHz + MC68B09(E) 2.0 MHz 8.0 MHz + HD63B09(E) 2.0 MHz 8.0 MHz + HD63C09(E) 3.0 MHz 12.0 MHz + *****************************************************************************/ #include "emu.h" -- cgit v1.2.3-70-g09d2