summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/cpu/m6809/m6809.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/cpu/m6809/m6809.cpp')
-rw-r--r--src/devices/cpu/m6809/m6809.cpp52
1 files changed, 50 insertions, 2 deletions
diff --git a/src/devices/cpu/m6809/m6809.cpp b/src/devices/cpu/m6809/m6809.cpp
index 42f64d5e5b2..0521b745414 100644
--- a/src/devices/cpu/m6809/m6809.cpp
+++ b/src/devices/cpu/m6809/m6809.cpp
@@ -77,6 +77,30 @@ 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.
+
+ 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"
@@ -104,8 +128,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)")
//-------------------------------------------------
@@ -578,6 +604,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
//-------------------------------------------------