Table of Contents
Accessing the outside world
Programming a CPU is cool, but at some point you need the help from other devices to do something useful!
The 6809E CPU can communicate with other chips on the computer motherboard (and expansions) using a “bus”. This is just a set of wires which can be in two states (high or low), and each represent a binary digit (0 or 1).
The bus is made of:
- 16 address lines that allows the CPUto tells who it wants to communicate with,
- 8 data lines, where the CPU can send or receive data,
- Several control lines, allowing the CPU to tells which data direction it expects, and a few other things.
Unlike the z80 and chips from Intel x86 family, the 6809E doesn't have a dedicated address space for I/O devices. Instead, they share the same space as memory. Thus, the devices are “memory mapped”. This allows removing a few instructions from the instruction set and simplifies the hardware interfacing.
This is the place where TO and MO machines differ the most.
|0000-1FFF||Pixel RAM||Attribute RAM|
- Screen: 2 8KiB pages. The last 1536 bytes are not visible on screen and can be used as a buffer.|
- Custom page: Unused by standard peripherals. Available as pre-decoded line on expansion port, and an extra ROM slot on MO5 revision 2 motherboard.
|0000-3FFF||Cartridge||RAM banks (pages 0 to 31)||Internal ROMs (up to 8 pages)|
|4000-5FFF||Pixel RAM (page 0)||Attribute RAM (page 0)|
|6200-9FFF||User RAM (page 1, not remappable)|
|A000-DFFF||legacy RAM expansion (pages 2 to 8)||RAM banks (pages 0 to 31)|
|E000-E7AF||Floppy controller ROM|
|E7B0-E7BF||Unused (free for custom expansions)|
All the internal peripherals, and most external ones, are mapped in the I/0 page.
|E7C0-E7C7||System 6846 PIA||@#AFA:Yes|
|E7C8-E7CB||System 6821 PIA||@#AFA:Yes|
|E7CC-E7CF||“Sound and Game” PIA||Exp||@#AFA:Yes|
|E7DA-E7DB||EF9369 Color Palette||@#FAA:No||@#AFA:Yes|
|E7DC-E7DD||Gate Array (Video configuration)||@#FAA:No||@#AFA:Yes|
|E7DE-E7DF||6850 ACIA (keyboard controller)||@#FAA:No||@#AFA:Yes||@#FAA:No||@#AFA:Yes||@#FAA:No|
|E7E0-E7E3||CC90 communication controller||Exp||@#FAA:No|
|E7E4-E7E7||Gate Array (RAM Management)||@#FAA:No||@#AFA:Yes|
|E7E8-E7EB||RF57-232 serial controller 6551 ACIA||Exp|
|E7EC-E7EF||Digitalization expansion (?)||@#FAA:No||Exp|
|E7F0-E7F7||IEEE expansion (?)||Exp|