Die folgenden Hinweise sollen Besitzern eines Philips/Schuco MC 6400 Mikrocomputer Master Lab zusätzliche Informationen zur CPU geben. Das Anleitungsbuch zum MC 6400 beschreibt ja nur einen kleinen Teil des Befehlssatzes und der Adressierungsarten. Selbst überprüfen konnte ich diese Angaben jedoch nicht, da mir dieser Computer nicht zur Verfügung steht.
Zur Klarstellung: Ich bin nicht daran interessiert, mich tiefer in dieses Gebiet einzuarbeiten oder gar einen MC 6400 käuflich zu erwerben. Sollten Anwender des MC 6400 jedoch feststellen, dass die hier gegebenen Informationen fehlerhaft sind, bin ich gerne bereit, entsprechende Korrekturen durchzuführen oder weiterführende Links aufzunehmen.
Im Text der Anleitung zum MC 6400 Mikrocomputer befindet sich kein Hinweis
auf den
eingesetzten Mikroprozessor. Ich hatte im Internet nach verschiedenen
Mikroprozessoren gesucht und schließlich auf einer japanischen Seite zum
INS8070
einen Befehlssatz entdeckt, der mit der Beschreibung im Handbuch zum MC 6400
übereinstimmte. Eine
anschließende Suche auf den Seiten des Herstellers
National
Semiconductor blieb jedoch ohne Erfolg.
Man gewinnt dort den Eindruck, dieser Prozessor wäre niemals hergestellt worden.
Die weitere Recherche brachte aber doch noch ein Datenblatt zur
INS8070-Series
Microprocessor Family zu Tage. Es scheint das
einzige erhalten gebliebene Exemplar zu sein. Jedenfalls findet man die gleiche
Datei auf mehreren Webseiten. Der
Scan ist schlecht. Die Ausklappseite mit der
Befehlsübersicht ist nicht vollständig.

Dass es sich definitiv um einen INS8070 handelt, wurde mir kurz nach der
Erstveröffentlichung dieser Seite von Michael Schülke bestätigt. Es ist auch
bei Vergrößerung des Fotos auf Seite 23 in der Anleitung zu erkennen.
Michael Schülke hat außerdem einen kompletten Scan
der erwähnten Ausklappseite mit der
Befehlsübersicht
und eine Kurzbeschreibung der
Busbelegung
im MC 6400
zur Verfügung gestellt.
Der INS8070 Mikroprozessor wird oft als SC/MP 3 bezeichnet. Er darf jedoch nicht mit dem eigentlichen SC/MP Prozessor in P-Kanal-Technologie oder mit dessen direktem Nachfolger INS8060 (SC/MP 2) in N-Kanal-Technologie verwechselt werden. Die wesentlichen Unterschiede zwischen diesen Prozessoren sind:
| SC/MP und INS8060 (SC/MP 2) | INS8070 (SC/MP 3) |
|---|---|
| Hat kein T-Register. | Zusätzliches T-Register vorhanden. |
| Der Datenbus wird auch zur Ausgabe der 4 höchstwertigen Adressbits und von 4 zusätzlichen Flags genutzt. | Reiner 16 Bit Adress- und 8 Bit Datenbus. Die 4 zusätzlichen Flags im Datenbus gibt es nicht. |
| Kein Stack. | 16 Bit Stack pointer. |
| Befehle zum direkten Setzen bzw. Rücksetzen des IE und CY/L Flags im S-Register vorhanden. | Das S-Register kann nur über den Akkumulator oder mit AND bzw. OR Befehlen manipuliert werden. |
| Befehle SIO und DLY um mit dem E-Register eine einfache serielle Ein/Ausgabe auf den Pins SIN und SOUT zu realisieren. | Das E-Register kann zusammen mit dem Akku als 16 Bit Register EA benutzt werden. Die Pins SIN und SOUT gibt es nicht. |
| Unterprogramme sind mangels CALL, JSR und RET Befehlen nur umständlich zu realisieren. | 16 kurze CALL Befehle (1 Byte), ein JSR Befehl (3 Bytes) und RET vorhanden. |
| Nur 8 Bit Addition und Subtraktion. | Auch 16 Bit Berechnungen, inkl. Multiplikation und Division. |
Der INS8070 Prozessor ist nur ein Mitglied einer größeren Prozessor-Familie. Zu dieser Familie gehören:
Die 64 Byte RAM liegen in jedem Prozessor auf den Adressen FFC0h...FFFFh. Das ROM beginnt immer an der Adresse 0000h. Bei 2,5 KB ROM liegt die letzte ROM Adresse somit auf 09FFh und beim 4 KB ROM auf 0FFFh.
Im MC 6400 kommt das
Grundmodell INS8070 ohne ROM zum Einsatz. Das Betriebssystem ist in einem
externen 4 KB EPROM vom Typ
2732 untergebracht.
In diesem EPROM ist nur gut die Hälfte vom Betriebssystem belegt.
Mit einem geeigneten Programmiergerät könnten durchaus die Programme
auf Kassette in das EPROM übertragen werden.
Als Arbeitsspeicher (RAM) kommen im MC 6400 zwei ICs des Typs
2114
zum Einsatz. Sie liegen hinter dem EPROM auf den Adressen
1000h...13FFh.
| Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|---|---|---|---|---|---|---|---|---|
| Name | CY/L | OV | SB | SA | F3 | F2 | F1 | IE |
Der Stapelzeiger SP (stack pointer) wird überwiegend dazu verwendet, um auf das Ende des Stapelbereichs im RAM zu verweisen. Die Befehle CALL, JSR, RET, PUSH, POP und PLI arbeiten grundsätzlich mit dem SP-Register. Unter Programmkontrolle kann der Stapel an einem beliebigen Platz im Arbeitsspeicher angelegt werden und eine beliebige Länge erreichen.
Die Register P2 und P3 können ebenfalls als Zeiger auf andere Stapelbereiche benutzt werden. Die Adressierungsart "Auto-Indiziert" basiert auf diesem Prinzip.
Der INS8070 Mikroprozessor unterscheidet folgende Adressierungsarten:
1000: 401000: C4 081000: 24 FF 111000: C5 D91000: C0 0A1000: C2 0B1000: C6 0C1000: C7 FBIn den folgenden Tabellen sind die in der Anleitung zum Philips/Schuco Microcomputer Master Lab behandelten Befehle durch grüne Schrift markiert. Die Sternchen in der Spalte "Status" folgende Bedeutung:
* Der Befehl beeinflusst das CY/L Flag im Statusregister
** Der Befehl beeinflusst das CY/L und OV Flag im Statusregister
*** Der Befehl beeinflusst alle Flags des Statusregisters, außer SA und SB
Bei den auto-indizierten Adressierungen gilt in der Spalte "Wirkung" die erste Zeile für negative und die zweite Zeile für positive Offsets.
Mnemonic |
Hex-Code |
Zyklen |
Status |
Adressierung |
Wirkung |
|---|---|---|---|---|---|
LD A,S |
06 |
3 |
implizit |
A:=(S) |
|
LD S,A |
07 |
3 |
*** |
implizit |
S:=(A) |
LD T,EA |
09 |
4 |
implizit |
T:=(EA) |
|
LD EA,T |
0B |
4 |
implizit |
EA:=(T) |
|
LD SP,=XXYY |
25 YY XX |
8 |
unmittelbar |
SP:=XXYY |
|
LD P2,=XXYY |
26 YY XX |
8 |
unmittelbar |
P2:=XXYY |
|
LD P3,=XXYY |
27 YY XX |
8 |
unmittelbar |
P3:=XXYY |
|
LD EA,PC |
30 |
4 |
implizit |
EA:=(PC) |
|
LD EA,SP |
31 |
4 |
implizit |
EA:=(SP) |
|
LD EA,P2 |
32 |
4 |
implizit |
EA:=(P2) |
|
LD EA,P3 |
33 |
4 |
implizit |
EA:=(P3) |
|
LD A,E |
40 |
4 |
implizit |
A:=(E) |
|
LD PC,EA |
44 |
5 |
implizit |
PC:=(EA) |
|
LD SP,EA |
45 |
5 |
implizit |
SP:=(EA) |
|
LD P2,EA |
46 |
5 |
implizit |
P2:=(EA) |
|
LD P3,EA |
47 |
5 |
implizit |
P3:=(EA) |
|
LD E,A |
48 |
4 |
implizit |
E:=(A) |
|
LD EA,XX(PC) |
80 XX |
10 |
PC relativ |
EA:=((PC)+XX) |
|
LD EA,XX(SP) |
81 XX |
10 |
SP relativ |
EA:=((SP)+XX) |
|
LD EA,XX(P2) |
82 XX |
10 |
P2 relativ |
EA:=((P2)+XX) |
|
LD EA,XX(P3) |
83 XX |
10 |
P3 relativ |
EA:=((P3)+XX) |
|
LD EA,=XXYY |
84 YY XX |
8 |
unmittelbar |
EA:=XXYY |
|
LD EA,XX |
85 XX |
10 |
direkt |
EA:=(FF00+XX) |
|
LD @EA,XX(P2) |
86 XX |
10 |
auto-indiziert |
P2:=(P2)+XX, EA:=((P2)) |
|
LD @EA,XX(P3) |
87 XX |
10 |
auto-indiziert |
P3:=(P3)+XX, EA:=((P3)) |
|
LD T,XX(PC) |
A0 XX |
10 |
PC relativ |
T:=((PC)+XX) |
|
LD T,XX(SP) |
A1 XX |
10 |
SP relativ |
T:=((SP)+XX) |
|
LD T,XX(P2) |
A2 XX |
10 |
P2 relativ |
T:=((P2)+XX) |
|
LD T,XX(P3) |
A3 XX |
10 |
P3 relativ |
T:=((P3)+XX) |
|
LD T,=XXYY |
A4 YY XX |
8 |
unmittelbar |
T:=XXYY |
|
LD T,XX |
A5 XX |
10 |
direkt |
T:=(FF00+XX) |
|
LD @T,XX(P2) |
A6 XX |
10 |
auto-indiziert |
P2:=(P2)+XX, T:=((P2)) |
|
LD @T,XX(P3) |
A7 XX |
10 |
auto-indiziert |
P3:=(P3)+XX, T:=((P3)) |
|
LD A,XX(PC) |
C0 XX |
7 |
PC relativ |
A:=((PC)+XX) |
|
LD A,XX(SP) |
C1 XX |
7 |
SP relativ |
A:=((SP)+XX) |
|
LD A,XX(P2) |
C2 XX |
7 |
P2 relativ |
A:=((P2)+XX) |
|
LD A,XX(P3) |
C3 XX |
7 |
P3 relativ |
A:=((P3)+XX) |
|
LD A,=XX |
C4 XX |
5 |
unmittelbar |
A:=XX |
|
LD A,XX |
C5 XX |
7 |
direkt |
A:=(FF00+XX) |
|
LD @A,XX(P2) |
C6 XX |
7 |
auto-indiziert |
P2:=(P2)+XX, A:=((P2)) |
|
LD @A,XX(P3) |
C7 XX |
7 |
auto-indiziert |
P3:=(P3)+XX, A:=((P3)) |
|
ST EA,XX(PC) |
88 XX |
10 |
PC relativ |
((PC)+XX):=(EA) |
|
ST EA,XX(SP) |
89 XX |
10 |
SP relativ |
((SP)+XX):=(EA) |
|
ST EA,XX(P2) |
8A XX |
10 |
P2 relativ |
((P2)+XX):=(EA) |
|
ST EA,XX(P3) |
8B XX |
10 |
P3 relativ |
((P3)+XX):=(EA) |
|
ST EA,XX |
8D XX |
10 |
direkt |
(FF00+XX):=(EA) |
|
ST @EA,XX(P2) |
8E XX |
10 |
auto-indiziert |
P2:=(P2)+XX, ((P2)):=(EA) |
|
ST @EA,XX(P3) |
8F XX |
10 |
auto-indiziert |
P3:=(P3)+XX, ((P3)):=(EA) |
|
ST A,XX(PC) |
C8 XX |
7 |
PC relativ |
((PC)+XX):=(A) |
|
ST A,XX(SP) |
C9 XX |
7 |
SP relativ |
((SP)+XX):=(A) |
|
ST A,XX(P2) |
CA XX |
7 |
P2 relativ |
((P2)+XX):=(A) |
|
ST A,XX(P3) |
CB XX |
7 |
P3 relativ |
((P3)+XX):=(A) |
|
ST A,XX |
CD XX |
7 |
direkt |
(FF00+XX):=(A) |
|
ST @A,XX(P2) |
CE XX |
7 |
auto-indiziert |
P2:=(P2)+XX, ((P2)):=(A) |
|
ST @A,XX(P3) |
CF XX |
7 |
auto-indiziert |
P3:=(P3)+XX, ((P3)):=(A) |
|
XCH A,E |
01 |
5 |
implizit |
A<->E |
|
XCH PC,EA |
4C |
7 |
implizit |
PC<->EA |
|
XCH EA,SP |
4D |
7 |
implizit |
EA<->SP |
|
XCH EA,P2 |
4E |
7 |
implizit |
EA<->P2 |
|
XCH EA,P3 |
4F |
7 |
implizit |
EA<->P3 |
Mnemonic |
Hex-Code |
Zyklen |
Status |
Adressierung |
Wirkung |
|---|---|---|---|---|---|
ADD A,E |
70 |
4 |
** |
implizit |
A:=(A)+(E) |
ADD EA,XX(PC) |
B0 XX |
10 |
** |
PC relativ |
EA:=(EA)+((PC)+XX) |
ADD EA,XX(SP) |
B1 XX |
10 |
** |
SP relativ |
EA:=(EA)+((SP)+XX) |
ADD EA,XX(P2) |
B2 XX |
10 |
** |
P2 relativ |
EA:=(EA)+((P2)+XX) |
ADD EA,XX(P3) |
B3 XX |
10 |
** |
P3 relativ |
EA:=(EA)+((P3)+XX) |
ADD EA,=XXYY |
B4 YY XX |
10 |
** |
unmittelbar |
EA:=(EA)+XXYY |
ADD EA,XX |
B5 XX |
10 |
** |
direkt |
EA:=(EA)+(FF00+XX) |
ADD @EA,XX(P2) |
B6 XX |
10 |
** |
auto-indiziert |
P2:=(P2)+XX, EA:=(EA)+((P2)) |
ADD @EA,XX(P3) |
B7 XX |
10 |
** |
auto-indiziert |
P3:=(P3)+XX, EA:=(EA)+((P3)) |
ADD A,XX(PC) |
F0 XX |
7 |
** |
PC relativ |
A:=(A)+((PC)+XX) |
ADD A,XX(SP) |
F1 XX |
7 |
** |
SP relativ |
A:=(A)+((SP)+XX) |
ADD A,XX(P2) |
F2 XX |
7 |
** |
P2 relativ |
A:=(A)+((P2)+XX) |
ADD A,XX(P3) |
F3 XX |
7 |
** |
P3 relativ |
A:=(A)+((P3)+XX) |
ADD A,=XX |
F4 XX |
7 |
** |
unmittelbar |
A:=(A)+XX |
ADD A,XX |
F5 XX |
7 |
** |
direkt |
A:=(A)+(FF00+XX) |
ADD @A,XX(P2) |
F6 XX |
7 |
** |
auto-indiziert |
P2:=(P2)+XX, A:=(A)+((P2)) |
ADD @A,XX(P3) |
F7 XX |
7 |
** |
auto-indiziert |
P3:=(P3)+XX, A:=(A)+((P3)) |
SUB A,E |
78 |
4 |
** |
implizit |
A:=(A)-(E) |
SUB EA,XX(PC) |
B8 XX |
10 |
** |
PC relativ |
EA:=(EA)-((PC)+XX) |
SUB EA,XX(SP) |
B9 XX |
10 |
** |
SP relativ |
EA:=(EA)-((SP)+XX) |
SUB EA,XX(P2) |
BA XX |
10 |
** |
P2 relativ |
EA:=(EA)-((P2)+XX) |
SUB EA,XX(P3) |
BB XX |
10 |
** |
P3 relativ |
EA:=(EA)-((P3)+XX) |
SUB EA,=XXYY |
BC YY XX |
10 |
** |
unmittelbar |
EA:=(EA)-XXYY |
SUB EA,XX |
BD XX |
10 |
** |
direkt |
EA:=(EA)-(FF00+XX) |
SUB @EA,XX(P2) |
BE XX |
10 |
** |
auto-indiziert |
P2:=(P2)+XX, EA:=(EA)-((P2)) |
SUB @EA,XX(P3) |
BF XX |
10 |
** |
auto-indiziert |
P3:=(P3)+XX, EA:=(EA)-((P3)) |
SUB A,XX(PC) |
F8 XX |
7 |
** |
PC relativ |
A:=(A)-((PC)+XX) |
SUB A,XX(SP) |
F9 XX |
7 |
** |
SP relativ |
A:=(A)-((SP)+XX) |
SUB A,XX(P2) |
FA XX |
7 |
** |
P2 relativ |
A:=(A)-((P2)+XX) |
SUB A,XX(P3) |
FB XX |
7 |
** |
P3 relativ |
A:=(A)-((P3)+XX) |
SUB A,=XX |
FC XX |
7 |
** |
unmittelbar |
A:=(A)-XX |
SUB A,XX |
FD XX |
7 |
** |
direkt |
A:=(A)-(FF00+XX) |
SUB @A,XX(P2) |
FE XX |
7 |
** |
auto-indiziert |
P2:=(P2)+XX, A:=(A)-((P2)) |
SUB @A,XX(P3) |
FF XX |
7 |
** |
auto-indiziert |
P3:=(P3)+XX, A:=(A)-((P3)) |
MPY EA,T |
2C |
37 |
** |
implizit |
EA:=[(EA)*(T)]32:16, |
DIV EA,T |
0D |
41 |
** |
implizit |
EA:=[(EA)/(T)]15:0, |
ILD A,XX(PC) |
90 XX |
8 |
PC relativ |
A:=++((PC)+XX) |
|
ILD A,XX(SP) |
91 XX |
8 |
SP relativ |
A:=++((SP)+XX) |
|
ILD A,XX(P2) |
92 XX |
8 |
P2 relativ |
A:=++((P2)+XX) |
|
ILD A,XX(P3) |
93 XX |
8 |
P3 relativ |
A:=++((P3)+XX) |
|
ILD A,XX |
95 XX |
8 |
direkt |
A:=++(FF00+XX) |
|
ILD @A,XX(P2) |
96 XX |
8 |
auto-indiziert |
P2:=(P2)+XX, A:=++((P2)) |
|
ILD @A,XX(P3) |
97 XX |
8 |
auto-indiziert |
P3:=(P3)+XX, A:=++((P3)) |
|
DLD A,XX(PC) |
98 XX |
8 |
PC relativ |
A:=--((PC)+XX) |
|
DLD A,XX(SP) |
99 XX |
8 |
SP relativ |
A:=--((SP)+XX) |
|
DLD A,XX(P2) |
9A XX |
8 |
P2 relativ |
A:=--((P2)+XX) |
|
DLD A,XX(P3) |
9B XX |
8 |
P3 relativ |
A:=--((P3)+XX) |
|
DLD A,XX |
9D XX |
8 |
direkt |
A:=--(FF00+XX) |
|
DLD @A,XX(P2) |
9E XX |
8 |
auto-indiziert |
P2:=(P2)+XX, A:=--((P2)) |
|
DLD @A,XX(P3) |
9F XX |
8 |
auto-indiziert |
P3:=(P3)+XX, A:=--((P3)) |
Mnemonic |
Hex-Code |
Zyklen |
Status |
Adressierung |
Wirkung |
|---|---|---|---|---|---|
AND S,=XX |
39 XX |
5 |
*** |
unmittelbar |
S:=(S)&XX |
AND A,E |
50 |
4 |
implizit |
A:=(A)&(E) |
|
AND A,XX(PC) |
D0 XX |
7 |
PC relativ |
A:=(A)&((PC)+XX) |
|
AND A,XX(SP) |
D1 XX |
7 |
SP relativ |
A:=(A)&((SP)+XX) |
|
AND A,XX(P2) |
D2 XX |
7 |
P2 relativ |
A:=(A)&((P2)+XX) |
|
AND A,XX(P3) |
D3 XX |
7 |
P3 relativ |
A:=(A)&((P3)+XX) |
|
AND A,=XX |
D4 XX |
7 |
unmittelbar |
A:=(A)&XX |
|
AND A,XX |
D5 XX |
7 |
direkt |
A:=(A)&(FF00+XX) |
|
AND @A,XX(P2) |
D6 XX |
7 |
auto-indiziert |
P2:=(P2)+XX, A:=(A)&((P2)) |
|
AND @A,XX(P3) |
D7 XX |
7 |
auto-indiziert |
P3:=(P3)+XX, A:=(A)&((P3)) |
|
OR S,=XX |
3B XX |
5 |
*** |
unmittelbar |
S:=(S)|XX |
OR A,E |
58 |
4 |
implizit |
A:=(A)|(E) |
|
OR A,XX(PC) |
D8 XX |
7 |
PC relativ |
A:=(A)|((PC)+XX) |
|
OR A,XX(SP) |
D9 XX |
7 |
SP relativ |
A:=(A)|((SP)+XX) |
|
OR A,XX(P2) |
DA XX |
7 |
P2 relativ |
A:=(A)|((P2)+XX) |
|
OR A,XX(P3) |
DB XX |
7 |
P3 relativ |
A:=(A)|((P3)+XX) |
|
OR A,=XX |
DC XX |
7 |
unmittelbar |
A:=(A)|XX |
|
OR A,XX |
DD XX |
7 |
direkt |
A:=(A)|(FF00+XX) |
|
OR @A,XX(P2) |
DE XX |
7 |
auto-indiziert |
P2:=(P2)+XX, A:=(A)|((P2)) |
|
OR @A,XX(P3) |
DF XX |
7 |
auto-indiziert |
P3:=(P3)+XX, A:=(A)|((P3)) |
|
XOR A,E |
60 |
4 |
implizit |
A:=(A)^(E) |
|
XOR A,XX(PC) |
E0 XX |
7 |
PC relativ |
A:=(A)^((PC)+XX) |
|
XOR A,XX(SP) |
E1 XX |
7 |
SP relativ |
A:=(A)^((SP)+XX) |
|
XOR A,XX(P2) |
E2 XX |
7 |
P2 relativ |
A:=(A)^((P2)+XX) |
|
XOR A,XX(P3) |
E3 XX |
7 |
P3 relativ |
A:=(A)^((P3)+XX) |
|
XOR A,=XX |
E4 XX |
7 |
unmittelbar |
A:=(A)^XX |
|
XOR A,XX |
E5 XX |
7 |
direkt |
A:=(A)^(FF00+XX) |
|
XOR @A,XX(P2) |
E6 XX |
7 |
auto-indiziert |
P2:=(P2)+XX, A:=(A)^((P2)) |
|
XOR @A,XX(P3) |
E7 XX |
7 |
auto-indiziert |
P3:=(P3)+XX, A:=(A)^((P3)) |
Mnemonic |
Hex-Code |
Zyklen |
Status |
Adressierung |
Wirkung |
|---|---|---|---|---|---|
BND XX |
2D XX |
? |
PC relativ |
siehe: BND |
|
BNZ XX |
7C XX |
5 |
PC relativ |
wenn (A)<>0 dann PC:=(PC)+XX |
|
BNZ XX(P2) |
7E XX |
5 |
P2 relativ |
wenn (A)<>0 dann PC:=(P2)+XX |
|
BNZ XX(P3) |
7F XX |
5 |
P3 relativ |
wenn (A)<>0 dann PC:=(P3)+XX |
|
BP XX |
64 XX |
5 |
PC relativ |
wenn (A)>0 dann PC:=(PC)+XX |
|
BP XX(P2) |
66 XX |
5 |
P2 relativ |
wenn (A)>0 dann PC:=(P2)+XX |
|
BP XX(P3) |
67 XX |
5 |
P3 relativ |
wenn (A)>0 dann PC:=(P3)+XX |
|
BRA XX |
74 XX |
5 |
PC relativ |
PC:=(PC)+XX |
|
BRA XX(P2) |
76 XX |
5 |
P2 relativ |
PC:=(P2)+XX |
|
BRA XX(P3) |
77 XX |
5 |
P3 relativ |
PC:=(P3)+XX |
|
BZ XX |
6C XX |
5 |
PC relativ |
wenn (A)=0 dann PC:=(PC)+XX |
|
BZ XX(P2) |
6E XX |
5 |
P2 relativ |
wenn (A)=0 dann PC:=(P2)+XX |
|
BZ XX(P3) |
6F XX |
5 |
P3 relativ |
wenn (A)=0 dann PC:=(P3)+XX |
|
CALL 0 |
10 |
17 |
indirekt |
(--(SP)):=(PC), PC:=(20h) |
|
CALL 1 |
11 |
17 |
indirekt |
(--(SP)):=(PC), PC:=(22h) |
|
CALL 2 |
12 |
17 |
indirekt |
(--(SP)):=(PC), PC:=(24h) |
|
CALL 3 |
13 |
17 |
indirekt |
(--(SP)):=(PC), PC:=(26h) |
|
CALL 4 |
14 |
17 |
indirekt |
(--(SP)):=(PC), PC:=(28h) |
|
CALL 5 |
15 |
17 |
indirekt |
(--(SP)):=(PC), PC:=(2Ah) |
|
CALL 6 |
16 |
17 |
indirekt |
(--(SP)):=(PC), PC:=(2Ch) |
|
CALL 7 |
17 |
17 |
indirekt |
(--(SP)):=(PC), PC:=(2Eh) |
|
CALL 8 |
18 |
17 |
indirekt |
(--(SP)):=(PC), PC:=(30h) |
|
CALL 9 |
19 |
17 |
indirekt |
(--(SP)):=(PC), PC:=(32h) |
|
CALL A |
1A |
17 |
indirekt |
(--(SP)):=(PC), PC:=(34h) |
|
CALL B |
1B |
17 |
indirekt |
(--(SP)):=(PC), PC:=(36h) |
|
CALL C |
1C |
17 |
indirekt |
(--(SP)):=(PC), PC:=(38h) |
|
CALL D |
1D |
17 |
indirekt |
(--(SP)):=(PC), PC:=(3Ah) |
|
CALL E |
1E |
17 |
indirekt |
(--(SP)):=(PC), PC:=(3Ch) |
|
CALL F |
1F |
17 |
indirekt |
(--(SP)):=(PC), PC:=(3Eh) |
|
JMP XXYY |
24 YY XX |
8 |
absolut |
PC:=XXYY |
|
JSR XXYY |
20 YY XX |
15 |
absolut |
(--(SP)):=(PC), PC:=XXYY |
|
RET |
5C |
10 |
implizit |
PCL:=((SP)++), PCH:=((SP)++) |
|
SSM (P2) |
2E |
? |
indiziert |
siehe: SSM |
|
SSM (P3) |
2F |
? |
indiziert |
siehe: SSM |
|
NOP |
00 |
3 |
implizit |
(PC)++ |
Für diesen Befehl ist die Anzahl der Zyklen nicht angegeben, weil sie vom Inhalt des Akkumulators abhängig ist.
Für diesen Befehl ist die Anzahl der Zyklen nicht angegeben, weil sie davon abhängt, wie viele Speicherplätze getestet werden müssen.
Mnemonic |
Hex-Code |
Zyklen |
Status |
Adressierung |
Wirkung |
|---|---|---|---|---|---|
PUSH EA |
08 |
8 |
implizit |
(--(SP)):=(EA) |
|
PUSH A |
0A |
5 |
implizit |
(--(SP)):=(A) |
|
PUSH PC |
54 |
8 |
implizit |
(--(SP)):=(PC) |
|
PUSH P2 |
56 |
8 |
implizit |
(--(SP)):=(P2) |
|
PUSH P3 |
57 |
8 |
implizit |
(--(SP)):=(P3) |
|
POP A |
38 |
6 |
implizit |
A:=((SP)++) |
|
POP EA |
3A |
9 |
implizit |
AE:=((SP)++) |
|
POP P2 |
5E |
10 |
implizit |
P2:=((SP)++) |
|
POP P3 |
5F |
10 |
implizit |
P3:=((SP)++) |
|
PLI P2,=XXYY |
22 YY XX |
15 |
unmittelbar |
(--(SP)):=(P2), P2:=XXYY |
|
PLI P3,=XXYY |
23 YY XX |
15 |
unmittelbar |
(--(SP)):=(P3), P3:=XXYY |
Mnemonic |
Hex-Code |
Zyklen |
Status |
Adressierung |
Wirkung |
|---|---|---|---|---|---|
SR A |
3C |
3 |
implizit |
0 nach rechts in A schieben |
|
SRL A |
3D |
3 |
implizit |
L nach rechts in A schieben |
|
SR EA |
0C |
4 |
implizit |
0 nach rechts in EA schieben |
|
SL A |
0E |
3 |
implizit |
0 nach links in A schieben |
|
SL EA |
0F |
4 |
implizit |
0 nach links in EA schieben |
|
RR A |
3E |
3 |
implizit |
A nach rechts rotieren |
|
RRL A |
3F |
3 |
* |
implizit |
A nach rechts durch L rotieren |
Paul Robson schreibt auf seiner
Seite
über den SC/MP Prozessor, dass bei den relativen Adressierungsarten mit dem
Offset -128 (80h) der tatsächliche
Offset aus dem E-Register geholt wird. Möglicherweise funktioniert das
auch mit dem INS8070 Prozessor im MC 6400.
Im Befehlssatz des INS8070 sind nur 192 von 256 möglichen Befehlsbytes definiert. Undefiniert sind die in folgender Tabelle durch ein Minuszeichen markierten Befehlsbytes:
0_ |
1_ |
2_ |
3_ |
4_ |
5_ |
6_ |
7_ |
8_ |
9_ |
A_ |
B_ |
C_ |
D_ |
E_ |
F_ |
|
_0 |
NOP |
CALL |
JSR |
LD |
LD |
AND |
XOR |
ADD |
LD |
ILD |
LD |
ADD |
LD |
AND |
XOR |
ADD |
_1 |
XCH |
CALL |
- |
LD |
- |
- |
- |
- |
LD |
ILD |
LD |
ADD |
LD |
AND |
XOR |
ADD |
_2 |
- |
CALL |
PLI |
LD |
- |
- |
- |
- |
LD |
ILD |
LD |
ADD |
LD |
AND |
XOR |
ADD |
_3 |
- |
CALL |
PLI |
LD |
- |
- |
- |
- |
LD |
ILD |
LD |
ADD |
LD |
AND |
XOR |
ADD |
_4 |
- |
CALL |
JMP |
- |
LD |
PUSH |
BP |
BRA |
LD |
- |
LD |
ADD |
LD |
AND |
XOR |
ADD |
_5 |
- |
CALL |
LD |
- |
LD |
- |
- |
- |
LD |
ILD |
LD |
ADD |
LD |
AND |
XOR |
ADD |
_6 |
LD |
CALL |
LD |
- |
LD |
PUSH |
BP |
BRA |
LD |
ILD |
LD |
ADD |
LD |
AND |
XOR |
ADD |
_7 |
LD |
CALL |
LD |
- |
LD |
PUSH |
BP |
BRA |
LD |
ILD |
LD |
ADD |
LD |
AND |
XOR |
ADD |
_8 |
PUSH |
CALL |
- |
POP |
LD |
OR |
- |
SUB |
ST |
DLD |
- |
SUB |
ST |
OR |
- |
SUB |
_9 |
LD |
CALL |
- |
AND |
- |
- |
- |
- |
ST |
DLD |
- |
SUB |
ST |
OR |
- |
SUB |
_A |
PUSH |
CALL |
- |
POP |
- |
- |
- |
- |
ST |
DLD |
- |
SUB |
ST |
OR |
- |
SUB |
_B |
LD |
CALL |
- |
OR |
- |
- |
- |
- |
ST |
DLD |
- |
SUB |
ST |
OR |
- |
SUB |
_C |
SR |
CALL |
MPY |
SR |
XCH |
RET |
BZ |
BNZ |
- |
- |
- |
SUB |
ST |
OR |
- |
SUB |
_D |
DIV |
CALL |
BND |
SRL |
XCH |
- |
- |
- |
ST |
DLD |
- |
SUB |
ST |
OR |
- |
SUB |
_E |
SL |
CALL |
SSM |
RR |
XCH |
POP |
BZ |
BNZ |
ST |
DLD |
- |
SUB |
ST |
OR |
- |
SUB |
_F |
SL |
CALL |
SSM |
RRL |
XCH |
POP |
BZ |
BNZ |
ST |
DLD |
- |
SUB |
ST |
OR |
- |
SUB |
Bisher sind zu jedem Mikroprozessor immer wieder "geheime" Befehle bekannt geworden. Es ist also zu vermuten, dass auch beim INS8070 einige der undefinierten Bytes durchaus sinnvolle Aufgaben erledigen. Was ich persönlich als erstes ausprobieren würde, wäre die Überprüfung, ob die Befehlsbytes 02, 03, 04 und 05 zum gezielten Setzen und Rücksetzen der Flags CY/L und IE genutzt werden können. Im SC/MP hatten sie jedenfalls diese Funktion.