Naast, of misschien zelfs nog wel meer dan, de Zilog Z80 is de MOS Technology 6502 microprocessor bepalend geweest voor de ontwikkeling en evolutie van computers zoals we die vandaag kennen. Een microprocessor bevat alle functies van een processor (accumulator, programmateller, statusregister, stackpointer en arithmetic logic unit) in een enkele chipbehuizing. Een lange lijst van home computers, maar ook randapparatuur en spelconsoles, werden ontworpen en geproduceerd met een 6502 als kloppend hart.
De 6502 werd ontworpen door een klein team van chipontwerpers die daarvoor bij Motorola aan de 6800 microprocessor hadden gewerkt. Hoewel er inhoudelijke verschillen zijn, lijken de chipontwerpen van beide microprocessoren veel op elkaar. Een rechtszaak met Motorola kon dan ook niet uitblijven, maar werd onderling geschikt; mogelijk omdat enkele van de patenten op de 6800 bij ontwerpers van de 6502 lagen.
Een single board computer, de KIM-1, werd door MOS Technology ontworpen en geproduceerd om hobbyisten de mogelijkheid te geven om met de 6502 bekend te raken. Dit bleek een populair product, evenals de Apple I, die in 1976 werd geïntroduceerd. De 6502 werd vervolgens gebruikt in de Commodore PET en de Apple II, die beide in 1977 het licht zagen. In dat jaar en de jaren erop werd de 6502 gebruikt in home computers en game consoles van onder andere Atari (2600, XL, 400/800), Commodore (VIC-20, 64) en Nintendo (NES).
MOS Technology werd in de begindagen vrij snel overgenomen door Commodore omdat ‘moederbedrijf’ Motorola met verschillende rechtszaken dreigde en voldoende grond had om die te winnen.
De Intel 4004 is de eerste processor die volledig op één chip is gebouwd. Intel lanceerde deze in 1971 en noemde het een microprocessor, om onderscheid te maken met eerdere processoren waarvan de onderdelen in verschillende chipbehuizingen (of systeemdelen) waren ondergebracht. Maar hoewel Intel de eerste was die een microprocessor op de markt bracht, ligt het patent bij Texas Instruments, die het ontwerp voor de TMS1000 eerder had gemaakt maar deze toen nog niet op de markt had gebracht.
De 4004 is een 4-bits-processor. Hij kan maar met 4 bits tegelijk bewerkingen doen. Bewerkingen met getallen van 16 (24) of groter moet hij in meerdere stappen doen. Het tientallig (BCD) rekenen verraadt waar hij oorspronkelijk voor ontwikkeld is: voor kantoorrekenmachine.
De 4004 heeft 2300 transistors. Zoveel waren er in die tijd nog nooit op één chip geplaatst. De 4004 heeft een instructieset van 46 instructies, 41 van 8 bits en 5 van 16 bits, en hij heeft een maximale kloksnelheid van 740 kHz.
Intel ontwikkelde in 1969 vier chips voor een rekenmachine van een Japanse klant; de chipfamilie bestond uit de 4004 microprocessor, passende ROM- en RAM-chips en een I/O chip. In 1971 werden de rechten van het ontwerp teruggekocht en bracht Intel de vier chips onder eigen naam op de markt, vergezeld van een postercampagne getiteld “Announcing a new era of integrated electronics”.
De Intel 8080 was een 8-bits microprocessor ontworpen en gefabriceerd door Intel vanaf april 1974. Een microprocessor bevat alle functies van een processor (accumulator, programmateller, statusregister, stackpointer en arithmetic logic unit) in een enkele chipbehuizing. De 8080 werd gebruikt de MITS Altair 8800 en de IMSAI 8080, waarmee de basis gelegd werd voor machines met het CP/M-besturingssysteem. De grootste concurrent in die tijd was de 6502 van MOS Technology. De ontwerpers van de processors begonnen na een verschil van mening met Intel hun eigen fabriek en brachten de kloon Z80 op de markt. Die processor is veel uitgebreider maar verder volledig compatibel met de 8080 en bracht een microcomputer revolutie teweeg.
Twee jaar nadat Zilog de markt voor microprocessoren van Intel had afgesnoept met de Z80 kwam Intel met een geheel nieuwe microprocessor, de Intel 8086. Een microprocessor bevat alle functies van een processor (accumulator, programmateller, statusregister, stackpointer en arithmetic logic unit) in een enkele chipbehuizing. Mogelijk omdat de oorspronkelijke ontwerpers van de 8080 nu Zilog hadden opgericht was de 8086 niet backwards compatible met de 8080. Belangrijk verschil met zijn voorganger was de 16-bits architectuur en 20-bits adresbus. Dit laatste maakte een groter geheugenbereiken tot 1MB mogelijk en daarmee aanzienlijk grotere programma’s en complexere user interfaces. Het nadeel was echter dat geen van de oude generatie interface chips kon worden hergebruikt. Intel bracht daarom vrij snel een 8088 uit, een 8086 met extern een 8-bits databus. Deze 8088 microcroprocessor werd door IBM in de eerste generatie IBM PC’s gebruikt.
De Motorola 6800 is een microprocessor die werd ontwikkeld door Motorola en vlak na Intel’s 8080 in 1974 op de markt werd gebracht. Een microprocessor bevat alle functies van een processor (accumulator, programmateller, statusregister, stackpointer en arithmetic logic unit) in een enkele chipbehuizing. Een kloon instructie-compatible versie van de 6800, de MOS Technology 6502, werd toegepast in veel game consoles en home computers zoals de Atari 2600, Atari 400/800, Apple II, Commodore VIC-20, Acorn Atom en Nintendo Entertainment System (NES).
De opvolger van de 6800, de Motorola 68000 die werd uitgebracht in 1979, werd toegepast in de Apple Macintosh en de Sinclair QL.
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:
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:
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.