Retro Z80 Computer

Eigentlich habe ich mit dem Abschied von den PIC Microcontrollern auch vom Assemblerprogrammieren verabschiedet. Trotzdem habe ich bei Gelegenheit einige Z80 mitsamt Peripheriebausteinen auf Lager genommen und diese wie so oft erst einmal rumliegen lassen. Irgendwann kam dann doch das Bedürfnis auf, etwas mit diesen Chips zu bauen. So entstand dann zuerst die Platine ganz unten. Links die Z80 CPU, daneben der DMA-Controller, 32kbytes ROM, 32kbytes RAM, der Z80-CTC, darunter die Z80-SIO, daneben die Z80-PIO - gefolgt von ein wenige Gluelogic.
Getaktet wird die Schaltung mit 6.144MHz.
Oberhalb der Hauptplatine befindet sich links eine Ausgabeeinheit mit 4 7-Segment Anzeigen, rechts eine Eingabeeinheit mit DIP-Schalter.
Ganz links oben ist eine 8bit A/D-D/A Einheit aufgebaut; das 16x2-LCD ist selbsterklärend.
Die Ein- und Ausgabeeinheiten sind mit 74HCT-Logik aufgebaut und direkt adressierbar; allerdings muss die Eingabe gepollt werden, Interruptsteuerung ist nicht vorgesehen, was bei DIP-Schaltern aber auch nicht nötig ist.
Das LCD-Display ist ebenfalls direkt adressierbar und wird wie auch heute in der MCU-Welt üblichen Weise mit 4bit Busbreite gefüttert. Für die Daten werden dabei Bit 4,5,6,7 des Datenbuses verwendet, während Bit 0 den Enable-Pin und Bit 1 den R/S-Pin bedient. Somit können die am Bus anliegenden Daten durch ein einfaches inc und dec eingelesen werden, was insgesamt einfacher zu realisieren ist, als den Adressbus umzuadressieren. Aufs Auslesen des LCD-Displays hab ich der Einfachheit halber verzichtet und arbeite fürs genaue Timing mit Delayroutinen.
Ebenso habe ich aus Einfachheit auf einen 70ns SRAM-Chip zurückgegriffen und mir die Klimmzüge mit DRAM gespart. Das ROM ist ein Flash-ROM AT28C256, welches mit einem der bekannten MiniPro Programmer beschrieben wird; die funktionieren auf Linux einwandfrei.
Als Toolchain dienen der z80asm Compiler und der vi Editor. Ebenso habe ich bereits einen Blick auf den SDCC geworfen, um ggf. einmal etwas in C zu schreiben, wobei dies nicht wirklich der Zweck des Projekts ist.