Zilog’s Z80 (1976)

“Kunnen wij ook en beter”, moet start-up Zilog gedacht hebben toen Intel met hun 8080 microprocessor op de markt kwam; de Zilog Z-80 (later als ‘Z80’ gespeld) uit 1976 was een kloon van compatible met de 8080 met extra registers en adresseringsmogelijkheden, voor een veel lagere prijs. Enkele jaren daarvoor had MOS Technology, opgericht door ontwerpers die bij Motorola de 6800 microprocessor hadden ontwikkeld, net de 6502 microprocessor uitgebracht. De Z80 was net als de 6502 een instant succes en het duurde tot ver na 1984 voordat Intel opnieuw marktleider werd met de Intel 8088. Wat volgde was het tijdperk van de single board computers zoals de Micro Professor, de Radio Shack TRS-80 model 1, home computers zoals de Sinclair ZX80, en een hele horde Z-80-gebaseerde MSX computers.

Een microprocessor bevat alle functies van een processor (accumulator, programmateller, statusregister, stackpointer en arithmetic logic unit) in een enkele chipbehuizing. Zilog werd opgericht door enkele van de Intel medewerkers die de Intel 4004 en 8080 microprocessors hadden ontworpen. Het is opvallend dat Intel nooit werk heeft gemaakt van hun weggelopen designers en dat de opvolger van de 8080, de Intel 8086, niet backwards compatible was.

De Z80 had een 8-bits architectuur met een 16-bits adresbus, hetgeen een maximum adresseerbaar geheugen van 64K mogelijk maakte. De Z80A-processor werd toegepast in de Tandy TRS-80 computer, de Sinclair ZX80, ZX81 en ZX Spectrum homecomputers, de MSX-homecomputers, de Amstrad CPC, de Philips P2000, de professionelere Exidy Sorcerer en veel CP/M-computers. Maar ook bijvoorbeeld in de dam- en schaakcomputers (Checker Challenger en Chess Challenger) van Fidelity. Tegenwoordig wordt de Z80 nog gebruikt in diverse apparaten, zoals taxameters en grafische rekenmachines, zoals de Texas Instruments TI-84 Plus.

Externe links

Rodnay Zaks’ How to program the Z80 / Programming the Z80 (1979)

Geen boek over programmeren heeft me meer bezig gehouden dan Programming the Z80 van Rodnay Zaks (met als covertitel How to program the Z80). Zaks heeft het boek ontworpen als een volledig zelfstandige manier om vertrouwd te raken met het programmeren in het algemeen en assembleren voor de Zilog Z-80 microprocessor in het bijzonder. De Z80 (de oorspronkelijke spelling ‘Z-80’ werd zelfs door Zilog niet lang gehandhaafd) is een 8 bit processor, die werd ontworpen door oud-medewerkers van Intel. Hij werd uitgebracht in 1976 en is in essentie een processor die compatibel is met de 8080 van Intel, maar met meer instructies, registers en adresseringsmethoden. In het boek van Zaks komen dan ook verschillende verhandelingen over het werken met de 8080 voor.

Een microprocessor is slechts te gebruiken in combinatie met een door de fabrikant uitgegeven instructieset met vertaling naar machinetaalcode. De instructieset wordt gebruikt om programma’s in assembleertaal te specificeren en de vertaling naar machinecode levert bytes op die in het werkgeheugen door de processor kunnen worden uitgevoerd. Iedere fabrikant levert daarom een handboek met de instructieset van de processor mee: in het geval van de Z80 is dat de Zilog Z80 CPU User’s Manual. Als voorbeeld de instructie LD (nn), A (“laad de inhoud van register A in geheugenadres nn“), uit de User’s Manual van Zilog:

Beschrijving van de instructie LD (nn), A in de Zilog Z80 CPU User’s Manual

De beschrijving van de instructie in de User’s Manual is beknopt en terzake, maar doet geen enkele moeite om de lezer op de pagina mee te nemen in de werking van de instructie. De User’s Manual lijkt ervan uit te gaan dat de lezer kundig is in de werking van de processor en alleen op zoek is naar de precieze vertaling van de assembleertaalinstructie naar de machinetaalcode.

Dezelfde instructie instructie LD (nn), A in Programming the Z80:

Beschrijving van de instructie LD (nn), A in Rodney Zaks’ Programming the Z80

Het is aardig om te zien, hoe Zaks de droge stof van de instructieset aantrekkelijker wist te maken. De pagina begint direct met een tekstuele omschrijving van de werking van de instructie. Dat is geen overbodige luxe, want veel beginnende Z80 programmeurs hadden moeite met het onderscheid tussen “laad de register met het geheugenadres” en “laad de register met de inhoud van het geheugenadres”, om maar eens een voorbeeld te noemen. Ook een uitgebreidere beschrijving ontbrak niet, om de lezer die nog meer ondersteuning nodig had in het zadel te helpen. Voor de lezer die meer de behoefte hadden aan een afbeelding had Zaks een schematisch overzicht opgenomen van de data zoals die van de register A in het geheugen werd overgenomen.

Hoewel doorgewinterde Z80 programmeurs waarschijnlijk wel een kopie van de Zilog User’s Manual op hun bureau hadden liggen, was het leren programmeren in Z80 assembleertaal een stuk aantrekkelijker met het boek van Zaks op tafel. Ik heb mezelf leren programmeren in Z80 assembleertaal en heb in mijn studie Informatica leren programmeren in 80×86 assembleertaal. 80×86 assembleertaal heeft een op de 8080 gelijkende benaming van instructies, die afwijkend is van die van de Z80 (LD (nn), A van de Z80 heet STA word in 8088). De 80×86 heeft echter veel instructies die 16 bits geheugenadressen en resultaten toestaan, wat me motiveerde zowel handig te worden in 8080 assembleertaal, alsook de meer toekomstgerichte 80×86 instructieset.

Externe links

Multitech Micro-Professor (1981)

Er was een tijd dat er geen iPads en Macintoshes waren en beide Apple Computer medewerkers nog in de garage van Steve Jobs bivakkeerden. In die tijd (het zal 1981 zijn geweest) kwam Multitech (het tegenwoordige Acer) met zijn eerste computer-voor-onderwijsdoeleinden op de markt: de Micro-Professor MPF-1. De MPF-1 was een microprocessorsysteem gebaseerd op een Zilog Z80. De kleine printplaat van de MPF-1 bevatte de 1,7MHz processor, een rekenmachine-achtig toetsenbord met 36 toetsen en een 6-cijferig 7-segment LED display. Er was verder voorzien in een 8255 PPI Programmable Peripheral Interface die het toetsenbord uitlas en 4KB ROM en 2KB RAM in de vorm van een 2732 EPROM en een 6116 RAM chip. Ook waren er drie lege IC-voeten voor geheugenuitbreiding, naar wens EPROM of RAM, en twee lege IC-voeten voor een Z80 PIO Parallel I/O en een Z80 CTC Counter Timer. De MPF-1 had een kleine luidspreker, aansluitingen voor een cassetterecorder en een gebied waarop kleine eigen schakelingen konden worden gesoldeerd. Bijzonder was de behuizing: die bestond uit een kunststof boekomslag die, dichtgeslagen, zo de boekenkast in kon. De MPF-1 werd in Z80 assembly geprogrammeerd. De bijgeleverde handleidingen bevatten veel uitgewerkte voorbeelden van onder meer timers en spelletjes die gebruik maakten van het 6-cijferige display. De hexadecimale codes van deze voorbeelden werden byte-voor-byte via het toetsenbord ingevoerd. Het ingebouwde monitorprogramma maakte wijzigingen op het ingevoerde programma eenvoudig en ook het stoppen en instellen van breakpoints was mogelijk. Gebruikers die verder wilden dan de voorbeelden moesten zich specialiseren in Z80 assembly. Vrij snel na de introductie in 1981 kwam Multitech uit met een kleine versie van een BASIC interpreter, die samen met het monitorprogramma in een 4 kilobyte ROM werd aangeboden. Een overlay over het toetsenbord werd meegeleverd en ook de handleiding, met alweer veel voorbeelden, was prima in orde. Sciento, de Nederlandse importeur van de MPF-1, gebruikte later de printplaat uit de boekomslag van de Micro-Professor voor hun eigen Teach Pendant CS-113, een besturingscomputer voor hun robot arm CS-113. De EPROM was in deze Teach Pendant door Sciento voorzien van een speciaal programma om de robot arm bewegingen te laten maken en te laten herhalen. Een toetsenbord overlay maakte het apparaat compleet. Het geheel was in een stevige aluminium kast ingebouwd met een voedingsaansluiting en een parallelle poort waarop de robot arm werd aangesloten.

Externe links