Motorola 6809
The Motorola 6809 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 TRS-80 Color Computer and Dragon 32/64 home computers, the Vectrex game system, and early 1980s arcade machines including Star Wars, Defender, , Joust, and Gyruss. Series II of the Fairlight CMI digital audio workstation and Konami's Time Pilot '84 arcade game each use dual 6809 processors.
Unlike the 6800 and 6502, the 6809 allows fully position-independent code and fully reentrant code in a simple and straightforward way. It was one of the first microprocessors with a hardware multiplication instruction, and it includes full 16-bit arithmetic and a fast interrupt system.
Description
Among the significant enhancements introduced in the 6809 are the use of two 8-bit accumulators, two 16-bit index registers and two 16-bit stack pointers. The index and stack registers allow advanced addressing modes. Program counter relative addressing allows for the easy creation of position-independent code, while a user stack pointer facilitates reentrant code.The 6809 is assembler source-compatible with the 6800, though the 6800 has 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 includes an undocumented address bus test instruction which came to be nicknamed Halt and Catch Fire.
Unlike contemporary processors that often used a microcoded architecture, the 6809's internal design was more similar to early simple CPU designs. Like most 8-bit microprocessors, the 6809 implementation can in be viewed as a register-transfer level machine, using a central PLA to implement much of the instruction decoding as well as parts of the sequencing.
Just like the 6800 and 6502, the 6809 uses a two-phase clock to gate the latches. This two phase clock cycle is used as a full machine cycle in these processors. Simple instructions can therefore execute in as little as two or three such cycles, although this also means that these cycles must be pretty slow.
As a comparison, the higher resolution state machine of a CPU like the Z80 allows clock frequencies 3–5 times as high with the same speed memory chips, which was often the limiting factor. This is because the Z80 combines two full 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 40–60% of a single clock cycle is typically available for memory access in a 6800, 6502, or 6809.
The 6809 has an internal two-phase clock generator whereas the 6809E needed an external clock generator. There were also variants such as the 68A09 and 68B09; the internal letter indicates the processor's rated clock speed.
History
Core concepts
A key aspect of the 6809 design is a series of built-in features to allow position-independent code. This came about because the design team believed that future system integrators would look to off-the-shelf code in ROMs to handle common tasks. Libraries of common routines like floating point arithmetic, graphics primitives, Lempel-Ziv and so forth would be available for integrators to license, combine together along with their own code, and burn to ROM. A larger example is found in Motorola's 6809 programming manual, which contains the full listing of assist09, a so-called monitor, a miniature operating system intended to be burned in ROM.In this sort of "pick and place" programming environment, there was no way to predict where the code would end up in the ROM. Any instructions that referred to other locations in memory would normally have to be changed to reflect these changes in layout. In contrast, the 6809 allowed code to be placed anywhere in memory 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, ultimately, incorrect. The market for pre-rolled ROM modules never materialized: Motorola's only released example was the MC6839 floating-point ROM. The industry as a whole 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 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 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.
Versions
The Motorola 6809 was originally produced in 1 MHz, 1.5 MHz and 2 MHz speed ratings. Faster versions were produced later by Hitachi. With little to improve, the 6809 marks the end of the evolution of Motorola's 8-bit processors; Motorola intended that future 8-bit products would be based on an 8-bit data bus version of the 68000. 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 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: NitrOS9
Use
The 6809 is 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 in the Milton Bradley Expansion system. The 6809E is the CPU in the TRS-80 Color Computer, the Acorn System 2, 3 and 4 computers, 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.In addition to home computers and game consoles, the 6809 is also found in a number of arcade games released during the early to mid-1980s. Williams Electronics was a prolific user of the processor, which was deployed in Defender, Stargate, Joust, , Sinistar, and other games. The 6809 CPU forms the core of the successful Williams Pinball Controller. The KONAMI-1 is a modified 6809 used by Konami in Roc'n Rope, Gyruss, and The Simpsons.
The 6809 CPU was also used in traffic signal controllers made in the 1980s by several different manufacturers.
Software development company Microware developed the original OS-9 operating system for the 6809, later porting it to the 68000 and i386 series of microprocessors. Some years later, enthusiasts developed the NitrOS9 operating system based upon the original Microware OS9.
Series II of the Fairlight CMI 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, PPG, and Ensoniq. The latter used the 6809E as their main CPU. The version was used in order to synchronize the microprocessor's clock to the sound chip 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 addressing range to a full 1 mebibyte 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, although in the case of the 6809, Motorola offered their own MC6829 MMU design mapping 2 mebibytes in 2 KB pages.
The very first Macintosh prototype, wire-wrapped by Burrell Smith, contained a 6809.
The 6809 was used in the mid-1980s through the early 2000s in Motorola SMARTNET and SMARTZONE Trunked Central Controllers. These controllers were used as the central processors in many of Motorola's trunked two-way radio communications systems.
Legacy
Motorola spun off its microprocessor division in 2004. The division changed its name to Freescale and has subsequently been acquired by NXP.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 the original GDSII physical design database. At the end of 2016, Rochester's MC6809 is fully qualified and available in production.
Australian developer John Kent has synthesized the Motorola 6809 CPU in hardware description language. This has made possible the use of the 6809 core at much higher clock speeds than were available with the original 6809. Gary Becker's runs the Kent 6809 core at 25 MHz. Roger Taylor's Matchbox CoCo runs at 7.16 MHz. Dave Philipsen's runs at 25 MHz.