A minimalistic industrial computer core, based on Motorola 6809 platform.
Proof of concept custom industrial computer with minimal device count implementation. Modular, low-power design, allowing easy expansion and customization per use case.
- CPU: Hitachi HD63B09 @ 1.8MHz
- RAM: 32KB Winbond W24257A
- ROM: 16KB Atmel 28C256 EEPROM (half)
- UART: Hitachi HD63B50 (1MBps) on FT23 USB Serial
- Address decoding: 74HCT00
- Power over USB
AC29 is dedicated to my beloved father.
Address range | Device | Size |
---|---|---|
$0000-$7FFF | RAM | 32KB |
$8000-$8FFF | Extension port #1 | 4KB |
$9500-$9FFF | Extension port #2 | 4KB |
$A000-$AFFF | UART | 4KB |
$B000-$BFFF | Extension port #3 | 4KB |
$C000-$FFFF | ROM | 16KB |
The entire 32KB of RAM is allocated from the bottom of the address range $0000 to $7FFF. The ROM is allocated at top 16KB of the address space starting $C000 to $FFFF.
The I/O mapping is temporary and to allow compatibility with existing BIOS images having ACIA on address 0xA000.
Currently it looks like this:
Address range | Device | Size |
---|---|---|
$0000-$7FFF | RAM | 32KB |
$8000-$8FFF | Unallocated | 4KB |
$9500-$9FFF | Unallocated | 4KB |
$A000-$AFFF | I/O | 4KB |
$B000-$BFFF | Unallocated | 4KB |
$C000-$FFFF | ROM | 16KB |
The A000 I/O address being split into four pieces (another 74138) is forming the ACIA and adding 3 extension port select lines with the following addressing:
Address range | Device | Size |
---|---|---|
$A000-$A3FF | UART | 1KB |
$A400-$A7FF | Extension port #1 | 1KB |
$A800-$ABFF | Extension port #2 | 1KB |
$AC00-$AFFF | Extension port #3 | 1KB |
The addressing can be "A" - internal devices, "B" - external devices:
Address range | Device | Size |
---|---|---|
$A000-$A3FF | UART | 1KB |
$A400-$A7FF | Internal device #1 | 1KB |
$A800-$ABFF | Internal device #2 | 1KB |
$AC00-$AFFF | Internal device #3 | 1KB |
Address range | Device | Size |
---|---|---|
$B000-$B3FF | Extension port #1 | 1KB |
$B400-$B7FF | Extension port #2 | 1KB |
$B800-$BBFF | Extension port #3 | 1KB |
$BC00-$BFFF | Extension port #4 | 1KB |
For even more external devices: $8000-$8FFF - another 4 ports $9500-$9FFF - and another 4 ports
ROM: When ROM_CS is LOW (active low). The signal is produced by one NAND gate fed with A14 and A15 lines.
RAM: When A15 signal is LOW (the second half (16KBytes) of the address space).
ACIA: Using A13, A14 and A15 for the CS0, CS1 and CS2 registers respectively.
Using the combination ROM image in Intel HEX format it needs first be turned into a binary image to be written to the EEPROM.
objcopy -I ihex -O binary combined.hex combined.bin
Write the resulting .bin file using the specially created EEPROM programmer for AT28C-series EEPROMs. Or any other.
promdude.exe -combined.bin
As a note, burning the combined.bin (16K) onto 32K 28C256 has to be at the correct half. Optionally, a copy of combined.bin twice into the chip will do as well.
As the firmware is 16K and 28C256 chips are nowadays more accesible, two firmwares could be stored in the 32K. A possible rom switching key can be implemented on the board, to switch the higher or lower part of the chip to be "visible" (A15).
The system communicates with a host computer via USB serial connection using the included ACIA device and its UART capability, coupled with an FT23 header. Host computer serial port settings: 115200 baud, 8n1, no hardware handshake.
Main goals for the first runs of the project:
- Run ASSIST09 and Extended BASIC
- Write basic program (asm)
- Cross-compile on host machine
- Easy program transer via ASSIST09 Load (S19)
- Use of high level C code (CMOC)
Main goals for the fabrication part:
- Breadboard prototype running
- Extended addressing with 74138
- Expansion board with easy coupling
- Revision 1 completion and PCB fabrication
- Expansion card: TMP68681 (2x6350) / 2x RS232
- Expansion card: Ethernet adapter (ENC28J60)
- Expansion card: SAA1099 amp audio interface
- Expansion card: Am9511 card
- Expansion card: Tape interface
- Expansion card: VGA and PS/2 (Arduino)
- Expansion card: VGA and PS/2 (MC6845/HD6321)
The schematics and PCB design is made with KiCad