The Motorola 6800 gives a programmer two 8-bit accumulators, A and B, and a 16-bit index register, X. An instruction can work on one accumulator while the other keeps a value needed later. X supplies an address for indexed access. The combination is small enough to understand register by register, but different enough from the 6502 that similar-looking assembly needs careful reading.
Motorola’s M6800 Programming Reference Manual describes the original processor’s model. Its program counter and stack pointer are also 16-bit, and its address bus can select 64KB of memory locations. That is an address range, not a claim that every 6800 computer shipped with 64KB of RAM.
One address space for memory and devices
The 6800 uses memory-mapped I/O. Loads and stores can reach peripheral registers through the same address space as RAM and ROM. Address decoding in the computer decides which device responds. A program therefore needs the machine’s memory map as well as the processor’s instruction reference.
Southwest Technical Products’ contemporary 6800 system brochure illustrates the distinction. The processor board was one part of a system built from memory and interface boards. Buying a CPU did not prescribe a keyboard, screen or storage interface; the system designer supplied those choices.
Addresses in the instruction
Direct addressing selects a location in the first 256 bytes with a one-byte address operand. Extended addressing supplies the full 16-bit address. Indexed addressing adds an unsigned byte offset to X. Relative branches use a signed displacement from the instruction stream. These forms trade instruction size and convenience against the range of locations they can reach. (Motorola, programming reference, addressing modes.)
Subroutine calls and interrupts use an external-memory stack. The stack pointer is not confined to the single page familiar to a 6502 programmer. Interrupt handling also saves processor state through the stack, making its location and available memory part of a working system design.
Similar names, different programs
Motorola’s later 6809 developed the family’s programming ideas, but added registers and operations of its own. A 6809 listing is not an original 6800 listing with a faster clock. Likewise, the 6502’s connection to former Motorola engineers does not make its instructions binary compatible with the 6800.
The useful comparison is specific: which registers hold data, how an instruction forms an address, and what a call puts on the stack. Those questions explain what a program can reuse and what a port must change.
Sources
- Motorola, M6800 Programming Reference Manual, M68PRM(D), November 1976: register model, addressing and stack operation. Original manual.
- Motorola, MC6800 8-Bit Microprocessing Unit data sheet. Preserved data sheet.
- Southwest Technical Products Corporation, 6800 Computer System brochure: a contemporary implementation using processor, memory and interface boards. Preserved brochure.