Intel 8008 Einplatinencomputer
Pin-Out
---V--- Vdd 1[ ]18 interrupt Man beachte: D7 2[ ]17 ready Im Gegensatz zum i8080 D6 3[ ]16 phi 1 braucht der 8008 nur eine D5 4[ ]15 phi 2 Betriebsspannung: -14V D4 5[ ]14 sync Um ihn mit TTL-Schaltungen D3 6[ ]13 S0 zu kombinieren, wurde mit D2 7[ ]12 S1 zwei Spannungen gearbeitet: D1 8[ ]11 S2 +5V und -9V. D0 9[ ]10 Vcc Der Bezugspol ist dann Vdd -------
Erklärung der Anschlußpins:
- D0-D7 Bi-direktionaler Adress/Datenbus.
- interrupt Aktiv high. Bringt den Prozessor in den Interrupt-Status.
- ready Aktiv high. Wenn die Leitung auf low gezogen wird, wartet der Prozessor auf langsame Speicher.
- phi1, phi2 Zwei-Phasentakt, nicht überlappend. Der Prozessor erzeugt damit intern einen Vier-Phasentakt.
- sync Signal zur Kennzeichnung des Beginns eines Maschinenzyklus.
- S0-S2 Maschinenstatus-Signale.
Die 8008-States
Name S2 S1 S0 Funktion T1 0 1 0 Niederwertiges Adressbyte T1I 1 1 0 wie T1, aber Interrupt erkannt T2 1 0 0 Höherwertiges Adressbyte + cc2 und cc1 wait 0 0 0 Warte auf langsamen Speicher T3 0 0 1 Daten Ein- Ausgabe (Speicherzugriff) stop 0 1 1 Warte auf Interrupt T4 1 1 1 interner Datentransfer T5 1 0 1 interner Datentransfer
Der T3-Status wird durch die in T2 ausgegebenen cc2 und cc1 weiter differenziert:
Name cc2 cc1 Funktion PCI 0 0 Instruction Cycle. Das erste Byte (OPC) wird aus dem Speicher gelesen. PCR 1 0 Read Cycle. Daten oder weitere Teile des Befehls aus dem Speicher lesen. PCC 0 1 Command Cycle. Input-Output-Befehl. Ob Input oder Output hängt von der Adresse ab. PCW 1 1 Write Cycle. Daten in den Speicher schreiben.
Architektur des Intel 8008
Allgemeines
Entgegen anderslautender Gerüchte ist der i8008 weder eine 'Verdoppelung' des 4-Bitprozessors i4004, noch ist er vom PDP8 inspiriert. Das einzige, was gegenüber dem 4004 verdoppelt war, ist die Breite der Datenpfade. Ansonsten hat der 4004 eine Harvard-Architektur, der 8008 ist ein von-Neumann-Rechner. Der 4004 hat 16 Datenregister, der 8008 nur 7. Daß die Firma Intel in ihren alten Datenbüchern für beide Prozessoren das gleiche Blockdiagramm verwendete, und sich beide nur durch die Beschriftung unterscheiden, beweist nur wieder, daß der Spruch "Ein Bild sagt mehr als 1000 Worte" dumm und falsch ist. Bilder tragen i.A. wenig zur Information bei.
Zurück zum i8008:
Der Prozessor besitzt 7 für den Programmierer sichtbare Register:
A, B, C, D, E, H und L. A ist ein Akkumulator, B-E sind
Scratchpadregister zur Aufnahme von Zwischenwerten, H und L sind zwei Register
mit Hilfe derer der Speicher adressiert werden kann.
Die einzige Möglichkeit, Daten im Speicher zu erreichen, besteht darin,
H und L als doppeltlanges Indexregister zusammenzufassen, und ein
achtes virtuelles Register M anzusprechen, welches das Byte im Speicher
darstellt, das durch HL adressiert wird.
Eine direkte Speicheradressierung ist nicht möglich, für jeden Zugriff
muß erst wenigstens das L-Register explizit geladen werden!
Der Stack ist auf dem Chip, er besitzt acht Ebenen. Zugriff darauf ist
nur durch CALL und RETURN-Befehle möglich. Es ist auch nicht möglich,
z.B. bei einem Interrupt, den Prozessorstatus irgendwo abzuspeichern,
genausowenig wie es möglich ist, alle Register zu retten.
Um irgendeinen Registerinhalt retten zu können, muss ja wenigsten der
Inhalt des L-Registers verändert werden. Dieses, und die umständliche
Speicheradressierung über (HL) oder M machen den 8008 für allgemeine
Anwendungen ziemlich ungeeignet.
Befehlssatz
Intel hat für den 8008 zwei Assemblerbefehlssätze definiert. Der binäre Maschinencode blieb natürlich bei beiden gleich. Der ältere Befehlssatz ist so konstruiert, daß der Assembler möglichst einfach wird: Alle Registeradressen sind im OPC enthalten, der stets aus drei Buchstaben besteht. Man kann drei Großbuchstaben in 16 Bits kodieren, was das Durchsuchen der OPC-Tabelle vereinfacht und beschleunigt. Außerdem gab Intel in den alten Beschreibungen den Maschinencode Oktal an, was dadurch gerechtfertigt war, daß die meisten Befehle zwei mit drei Bits kodierte Registeradressen beinhalten. Dadurch wird Handassemblieren und Disassemblieren des nackten Codes etwas erleichtert.