Skip to content
/ AC6309 Public

A minimalistic industrial computer running 6809/6309

Notifications You must be signed in to change notification settings

izne/AC6309

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AC6309

A minimalistic industrial computer core, based on Motorola 6809 platform.

Purpose

Proof of concept custom industrial computer with minimal device count implementation. Modular, low-power design, allowing easy expansion and customization per use case.

Configuration AC29

AC29 Config

Prototype build

  • 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 Breadboard

AC29 BASIC

Layout

AC29 Layout

PCB Updates

Current state of PCB design: AC29 PCB AC29 TOP AC29 BTM

Dedication

AC29 is dedicated to my beloved father.

BAUS

System memory map

Address range Device Size
$0000-$7FFF RAM 32KB
$8000-$8FFF Extension port #1 4KB
$9000-$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.

Work in progress: I/O update

Currently it looks like this:

Address range Device Size
$0000-$7FFF RAM 32KB
$8000-$8FFF Unallocated 4KB
$9000-$9FFF Unallocated 4KB
$A000-$AFFF I/O 4KB
$B000-$BFFF Unallocated 4KB
$C000-$FFFF ROM 16KB

AC29

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

AC219

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 $9000-$9FFF - and another 4 ports

Decoding logic and CS lines

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.

Writing the ROM image

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.

ROM switching

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).

Communication

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.

Software

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)

Hardware

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)

Toolchain

Emulators


Prerequisites

The schematics and PCB design is made with KiCad

References and inspiration:

Some great oldschool books:

https://colorcomputerarchive.com/repo/Documents/Books/Programming%20the%206809%20(Rodney%20Zaks%20and%20William%20Labiak).pdf

https://www.chibiakumas.com/6809/

About

A minimalistic industrial computer running 6809/6309

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published