Mijn Z80 computer

Begin jaren '80 bouwde ik, naar eigen ontwerp, een personal computer.
De processor was van het type Z80, toen ultramodern.
De kloksnelheid was 4Megaherz.
De databus was 8 bits breed, de adresbus 16 bits.

Om vanaf scratch te kunnen werken voegde ik een console toe.
Dat bestond uit LED displays voor data, adres en status en knoppen om data te lezen en te schrijven,
de processor te starten en te stoppen of stap voor stap instructies te laten uitvoeren.
Ook waren breakpoints in te stellen.
(een breakpoint is een adres waarop de processor moet stoppen, het nut is opsporen van fouten in programma's).
Het was dus mogelijk handmatig, bit voor bit, programma's in te voeren in het geheugen.

Dat lezen en schrijven van data kon trouwens tijdens het uitvoeren van het programma,
de processor werd dan even (een paar microseconden) door het console in de wacht gezet.

De Z80 processor kon (met zijn 16 adresbits) 65536 bytes adresseren.
Ik maakte het geheugen 512Kbytes groot.
De bytes van adres $0000 tot $c000 (48Kbytes) waren direct te adresseren. ($ voor hexadecimaal)
Elk byte was echter ook te adresseren in het window $c400..$cbff samen met een 8 bits (bank) register.
Het geheugen kon dus ook als 256 banks van elk 2Kbyte worden opgevat.

Het adreswindow $c000..cfff bevatte daarnaast ook I/O poorten,
de aansturing van een midi-chip en twee video controllers:
één voor lettertekens (scrollbaar) en één voor grafische toepassingen, per pixel adresseerbaar.
Het console had een resolutie van 480 x 250 pixels. Er waren 4 grijstinten, 2 bits dus per pixel.
Een pagina tekst was 25 regels van elk 80 tekens.

Adresruimte $D000 ..$FFFF werd ingenomen door 3 EPROMS van elk 4Kbyte.
Die bevatten diagnostische programma's en een heel simpel besturingssysteem met drivers voor
de tape-cassette en de floppy disk.
Ook was er een vast programma om EPROMS te branden.

Een truuk zorgde ervoor dat de processor na RESET startte op adres $D000.
Drukken op de RESET toets met een ander schakelaartje in de stand HI, sette de HI-start FlipFlop.
Die forceerde bij het lezen van instructies het adres op $Dxxx.
Bij de start leest de processor dan niet van adres $0000 maar van $D000.
Op dat adres stond een jump naar $D003 en het lezen van die instructie vanaf dit (hoge) adres
zorgde voor resetten van de HI-start FlipFlop.

De I/O bestond uit 6 parallelle data kanalen, die in beide richtingen 8 bits breed waren.
Buiten de 8 databits had een kanaal 4 functie- en 4 statusbits.
Met de functiebits was besturingsinformatie over te brengen.
Controllers voor tape-cassette, floppy disk , toetsenbord en serial I/O poorten zaten in een externe kast,
die via de datakanalen met de processorkast was verbonden.

Uiteindelijk bevatte het hele project zo'n 400 (TTL) chips.
Die waren gemonteerd in voetjes of in pennen, dus simpel te vervangen.
De bedrading was wire-wrap, om ontwerpfouten snel te kunnen verbeteren.
De bus werd gerealiseerd met flat-cable en DIL pluggen.
Drie standaardprintjes met elk 27 chips vormden samen een frame.
De vier frames in totaal waren uitklapbaar, twee naar elke kant.
De later toegevoegde grafische video controller bevond zich op een vast (vijfde) paneel midden in de kast.

Onderin zat de voeding (5 en 12 volt) : transformatoren en regelaars.
Op de kast twee in serie geplaatste ventilatoren (Amerikaans, dus 115V per stuk).

Hieronder een paar foto's van dit museumstuk
LED displays voor data en adressen.
Knoppen voor start-stop, lezen en schrijven, instellen van breakpoints etc.


Het console frame met bandkabel voor signalen naar LEDs en schakelaars aan de voorzijde.


De bedradingszijde van een paneel.
Rechtsonder de bandkabel met de bus-signalen.


I/O paneel zichtbaar met verwijderde zijkant.
Zes parallelle I/O kanalen. Acht bits bi-directioneel.


Bedrading van het I/O paneel.


Vast middenpaneel met de video controllers.


Chipzijde van het I/O paneel.


Achterzijde met aan-uitschakelaar, zekeringen.


Bedradingszijde van processor / geheugen panel.


Chipszijde van grafische video controller.


Hieronder een blokschema met aanduiding van de panelen
(1,2 rechts uitklappend; 3 vast, midden; 4,5 links uitklappend)