The Motorola 6809 ("sixty-eight-oh-nine") is an 8-bit microprocessor CPU with some 16-bit features from Motorola. It was designed by Terry Ritter and Joel Boney and introduced in 1978. It was a major advance over both its predecessor, the Motorola 6800, and the related MOS Technology 6502. Among the systems to use the 6809 are the Dragon home computers, TRS-80 Color Computer, the Vectrex home console, and early 1980s arcade machines including Defender, Robotron: 2084, Joust, and Gyruss.
The 6809 was, by design, the first microprocessor for which it was possible to write fully position-independent code and fully reentrant code in a simple and straightforward way, without using difficult programming tricks. It was also one of the first microprocessors to implement a hardware multiplication instruction, and it features full 16-bit arithmetic and an especially fast interrupt system.
Among the significant enhancements introduced in the 6809 were the use of two 8-bit accumulators (A and B, which could be combined into a single 16-bit register, D), two 16-bit index registers (X, Y) and two 16-bit stack pointers. The index and stack registers allowed advanced addressing modes. Program counter relative addressing allowed for the easy creation of position-independent code, while a user stack pointer (U) facilitated the creation of reentrant code.
The 6809 was assembler source-compatible with the 6800, though the 6800 had 78 instructions to the 6809's 59. Some instructions were replaced by more general ones which the assembler translated into equivalent operations and some were even replaced by addressing modes. The instruction set and register complement were highly orthogonal, making the 6809 easier to program than the 6800 or 6502. Like the 6800, the 6809 included an undocumented address bus test instruction which came to be nicknamed Halt and Catch Fire (HCF).
Unlike many processors of the day that used a microcoded architecture, the 6809 more resembled the simplified RISC machines that would later appear in the 1980s. The 6809 was implemented as a register-transfer level (RTL) machine, using a large PLA to implement the combinational logic and a two-phase clock to gate the latches.
Although this meant fewer clock cycles per instruction, compared to the Z80 for instance, the latter's higher resolution state machine allowed clock frequencies 3-5 times as high without demanding faster memory chips, which was often the limiting factor. This is because the Z80 combines two full (but short) clock cycles into a relatively long memory access period compared to the clock, while the more asynchronous 6809 instead has relatively short memory access times: depending on version and speed grade, approximately 60% of a single clock cycle was typically available for memory access in a 6809 (see data sheets).
The 6809 had an internal two-phase clock generator (needing only an external crystal) whereas the 6809E needed an external clock generator. There were also variants such as the 68A09(E) and 68B09(E); the internal letter indicates the processor's rated clock speed.
The Motorola 6809 was originally produced in 1 MHz, 1.5 MHz (68A09) and 2 MHz (68B09) speed ratings. Faster versions were produced later by Hitachi. An 8-bit data bus version of the 68000 (i.e., the 68008) was intended for use in future 8-bit system designs. With little to improve, the 6809 marks the end of the evolution of Motorola's 8-bit processors. A micro-controller version with a slightly modified instruction set, the 6811, was discontinued as late as the second decade of the 21st century.
The 6809 is sometimes considered to be the conceptual precursor of the Motorola 68000 family of processors, though this is mostly a misunderstanding: the 6809 and 68000 design projects ran partly in parallel, and the two CPUs have quite differing architectures as well as radically different implementation principles. However, there is a certain amount of design philosophy similarity (e.g., considerable orthogonality and flexible addressing modes) and also some assembly language syntax resemblance as well as opcode mnemonic similarity. Notwithstanding the common elements, the 6809 is a derivative of the 6800, whereas the 68000 was a totally new design.
The 6809 design team believed that future system integrators would look to off-the-shelf code in ROMs to handle common tasks. In order to speed time to market, common code modules would be purchased, rather than developed in-house, and integrated into systems with code from other manufacturers. An example of standard ROM code might be binary floating point arithmetic, which is a common requirement in many systems. Drawing routines for graphics primitives, Lempel-Ziv (LZ77 or LZ78) data compression and decompression, and string searching (e.g. by the Boyer-Moore algorithm) are other potential content for standard ROM modules. For yet another example, Motorola's official programming manual contains the full listing of assist09, a so-called monitor, a miniature operating system intended to be burned in ROM. Since the programmer of a common code module could hardly guarantee where this code would be located in a future system, the 6809 design focused heavily on support of position-independent code that can be freely located anywhere in the memory map without modification. The 6809 design also focused on supporting reentrant code, code that can be called from various different programs concurrently without concern for coordination between them, or that can recursively call itself. The design team's prediction was, in reality, incorrect, as the market for ROM modules never materialized: Motorola's only released example of a ROM'd software module was the MC6839 floating-point ROM. (The industry solved the problem of integrating code modules from multiple separate sources by using automatic relocating linkers and loaders—which is still the solution used today—instead of using relocatable ROM modules.) However, the decisions made by the design team yielded a very powerful processor and made possible advanced operating systems like OS-9 and UniFlex, which took advantage of the position-independence, re-entrancy orientated nature of the 6809 to create multi-user multitasking operating systems.
The Hitachi 6309 was an enhanced version of the 6809 with extra registers and additional instructions, including block move, additional multiply instructions and hardware-implemented division. It was used in unofficially-upgraded Tandy Color Computer 3 computers and a version of OS-9 was written to take advantages of the 6309's extra features: NitrOS-9.
Motorola spun off its microprocessor division in 2004. The division changed its name to Freescale and has subsequently been acquired by NXP. In fall 2016, Qualcomm and NXP announced that they would merge.
Neither Motorola nor Hitachi produce 6809 processors or derivatives anymore. 6809 cores are available in VHDL and can be programmed into an FPGA and used as an embedded processor with speed ratings up to 40 MHz. Some 6809 opcodes also live on in the Freescale embedded processors. In 2015, Freescale authorized Rochester Electronics to start manufacturing the MC6809 once again as a drop-in replacement and copy of the original NMOS device. Freescale supplied Rochester Electronics the original GDS2 physical design database. At the end of 2016, Rochester's MC6809 (including the MC68A09, and MC68B09) is fully qualified and available in production.
The 6809 was used in Commodore's dual-CPU SuperPET computer, and, in its 68A09 incarnation, in the unique vector graphics based Vectrex home video game console with built-in screen display, and was also used in the Milton Bradley Expansion (MBX) system (an arcade console for use with the Texas Instruments TI-99/4A home computer). The 6809E was featured in the TRS-80 Color Computer (CoCo), the Acorn System 2, 3 and 4 computers (as an optional alternative to their standard 6502), the Fujitsu FM-7, the Canon CX-1, the Welsh-made Dragon 32/64 home computers, and the SWTPC, Gimix, Smoke Signal Broadcasting, etc. SS-50 Bus bus systems, in addition to several of Motorola's own EXORmacs and EXORset development systems. In France, Thomson micro-informatique produced a series of micro-computers based on the 6809E (TO7, TO7/70, TO8, TO8D, TO9, TO9Plus, MO5, MO6, MO5E and MO5NR).
In addition to home computers and game consoles, the 6809 was also utilized in a number of arcade games released during the early to mid-1980s. Williams Electronics was an especially prolific user of the processor, which was deployed in arcade hits such as Defender, Joust, Sinistar, and Robotron: 2084. Williams also utilized the processor in many of its solid-state pinball machines; the 6809 CPU formed the core of the successful Williams Pinball Controller. The KONAMI-1 was a modified 6809 used by Konami in various arcade sets such as Mappy, Roc'n Rope, Gyruss, Juno 1st, Son Son and The Simpsons.
Software development company Microware developed the original OS-9 operating system (not to be confused with the more recent Mac OS 9) for the 6809, later porting it to the 68000 and i386 series of microprocessors.
Series II of the Fairlight CMI (computer musical instrument) used dual 6809 CPUs and OS9, and also used one 6809 CPU per voice card. The 6809 was often employed in music synthesizers from other manufacturers such as Oberheim (Xpander, Matrix 6/12/1000), PPG (Wave 2/2.2/2.3, Waveterm A), and Ensoniq (Mirage sampler, SDP-1, ESQ1, SQ80). The latter used the 6809E as their main CPU. The (E) version was used in order to synchronize the microprocessor's clock to the sound chip (Ensoniq 5503 DOC) in those machines; in the ESQ1 and SQ80 the 68B09E was used, requiring a dedicated arbiter logic in order to ensure 1 MHz bus timing when accessing the DOC chip.
Hitachi produced its own 6809-based machines, the MB6890 and later the S1. These were primarily for the Japanese market, but some were exported to and sold in Australia. There the MB6890 was dubbed the "Peach", probably in ironic reference to the popularity of the Apple II. The S1 was notable in that it contained paging hardware extending the 6809's native 64 kilobyte (64×210 byte) addressing range to a full 1 megabyte (1×220 byte) in 4 KB pages. It was similar in this to machines produced by SWTPC, Gimix, and several other suppliers. TSC produced a Unix-like operating system uniFlex which ran only on such machines. OS-9 Level II, also took advantage of such memory management facilities. Most other computers of the time with more than 64 KB of memory addressing were limited to bank switching where much if not all the 64 KB was simply swapped for another section of memory.
Additionally, the 6809 processor was used in the mid-1980s through the early 2000s in Motorola SMARTNET and SMARTZONE Trunked Central Controllers (so dubbed the "6809 Controller"). These controllers are used as the central processors in many of Motorola's trunked two-way radio communications systems. It was widely accepted as a reliable platform and bulletproof controller, solidifying the processor's further use.
Australian VHDL programmer John Kent synthesized the 6809 processor and it is now freely available to hobbyists and others to use in FPGA designs. On some platforms the core has been clocked as high as 40 megahertz. A number of hobbyists currently use the core in a project designed by Gary Becker called CoCo3FPGA.
- though the assembly language is not a characeristic of the 6809 per se, as many assembly languages can be constructed for any given machine language: witness the assembly languages of the Z80 vs. the 8080, or the 8086/88 assembly language vs. the one that NEC developed for the V30/V20 (both cases of companies avoiding Intel's claimed copyrights on its assembly language mnemonics)
- This means that any number of modules can share any other (reentrant) module in common without synchronization, mutual exclusion controls, or other restrictions on their shared access.
- Robert J. Simpson; Raveendran Paramesran (1998). Advanced 8-bit Microprocessor, MC6809: Its Software, Hardware, Architecture & Interfacing Techniques. Springer. ISBN 978-981-3083-09-7.
- Hertzfeld, Andy (October 1980). "Good Earth". Folklore.org. Retrieved 2009-12-29.
- MC6809 Datasheet; Motorola (Freescale); 36 pages; 1983.
- MC6809E Datasheet; Motorola (Freescale); 34 pages.
- MC6809-MC6809E 8-Bit Microprocessor Programming Manual; Motorola (Freescale); 220 pages; 1981.
- 6809 Assembly Language Programming; Lance Leventhal; Osborne/McGraw-Hill; 579 pages; 1981; ISBN 0-931988-35-7.
- The MC6809 Cookbook; Carl Warren; TAB Books; 1980 pages; ISBN 0-8306-9683-0.
- A Microprocessor for the Revolution: The 6809; Terry Ritter & Joel Boney; BYTE Publications; 1979.
- MC6809 microprocessor; Ian Powers; Microprocessors, Volume 2, Issue 3; July 1978; page 162; ISSN 0308-5953, doi:10.1016/0308-5953(78)90010-7.
- http://koti.mbnet.fi/~atjs/mc6809/ – Collection of 6809 instructions, emulators, tools, debuggers, disassemblers and assemblers
- The BYTE 6809 Articles (Jan–February 1979) (PDF) – By Terry Ritter and Joel Boney, co-designers of the 6809; BYTE magazine reproductions by tim lindner
- news://comp.sys.m6809 – Usenet newsgroup for 6809 enthusiasts
- 6809 Emulator based on the SWTPC 6809 system
- Instruction set reference for 6809/6309 (PDF) By Chris Lomont
- NitrOS-9 project