Dies ist eine alte Version des Dokuments!
Zilog Z8671
~~UNDERCONSTRUCTION~~
Der Zilog Z8671 ist ein Einchip-Mikrorechner von Zilog. Er gehört zu Z8-Reihe. Im internen ROM ist ein BASIC-Interpreter enthalten.
Von Zilog gibt es neben den Z8-Datenbüchern auch ein zusätzliches Dokument „Z8671 Single-chip BASIC Interpreter: BASIC/DEBUG Software Reference Manual, Zilog, Incorporated, 1988 (BASIC/Debug Software Reference Manual #03-3149-02)“, das liegt mir aber leider nicht vor
Ebenso (vielleicht in obigem Software Reference Manual?) gab es von Zilog das komplette Quelllisting des BASIC/DEBUG.
Der Z8671 wurde auch von SGS produziert.
Der in der DDR produzierte Z8-Clone U883x mit integriertem BASIC ist nicht zum Z8671 kompatibel; er enthält ein völlig anderes (eigenständig entwickeltes) BASIC.
BASIC/DEBUG
Initialisierung
Wenn der Reset-Eingang des Z8671 auf L-Pegel geht, so stoppt er alle Aktivitäten. Beim Wiederanstieg dieses Signals beginnt der Z8, das Maschinenprogramm im internen Festwertspeicher ab Adresse %000C auszuführen; dieses bewirkt einen Betriebsprogramm-Neustart. In dessen Verlauf werden alle Programm-Unterbrechungen abgeschaltet und einige Register vorbesetzt. Dabei wird auch die Benutzung der Ports 0 bis 3, also der Prozessor-Ports festgelegt.
Danach wird die Übertragungsrate zum PC festgelegt, indem die Wert von Adresse %FFFD eingelesen wird. Dabei spielen nur die niedrigstwertigen drei Bits eine Rolle. Die höheren Bits sind beliebig und können für andere Zwecke verwendet werden.
Wert auf %FFFD | Baudrate |
---|---|
x x x x x 0 0 0 | 150 |
x x x x x 0 0 1 | 19200 |
x x x x x 0 1 0 | 9600 |
x x x x x 0 1 1 | 4800 |
x x x x x 1 0 0 | 2400 |
x x x x x 1 0 1 | 1200 |
x x x x x 1 1 0 | 110 |
x x x x x 1 1 1 | 300 |
In der Reset-Routine folgt dann das Überprüfen der Speicher-Bestückung. Je nach RAM-Ausbau wird den Variablen ihr Platz zugewiesen und der Stapelzeiger für Rücksprungadressen der Unterprogramme gesetzt; außerdem werden Zeiger auf Anfang und Ende des nutzbaren BASIC-Speichers gesetzt.
Wichtig ist bei der Reset-Routine jedoch auch das Prüfen des Speichers bei niedrigen Adressen. Insbesondere interessiert sich das Betriebssystem für den Inhalt des Speicherzellen-Paares %1020 und %1021. Sollte sich hier RAM befinden, dann nimmt der Z8671 über BASIC/DEBUG den Dialog mit dem Benutzer auf, indem er den Doppelpunkt sendet. Ist an %1020 Festwertspeicher, kommt es darauf an, ob an dieser Stelle eine Zahl steht, deren höherwertiges Byte gelöscht ist. Mit anderen Worten: die Zahl muß positiv und kleiner als 256 sein. Ist dies nicht der Fall, so wird ebenfalls der Dialog aufgenommen.
Wenn die Bedingung jedoch erfüllt ist, nimmt BASIC/DEBUG die in %1020 und %1021 stehende Zahl als die erste Zeilennummer eines BASIC/DEBUG-Programms und beginnt sofort mit der Ausführung desselben.
Register
%FF Stapelzeiger low %FE Stapelzeiger high %FD Registerblock-Zeiger %FC Flaggenregister %FB Programmunterbrechung Maskenregister %FA Programmunterbrechung Anforderungsregister %F9 Programmunterbrechung Prioritätsregister %F8 Betriebsartenregister P0 und P1 (Daten- und Adreßbus) %F7 Betriebsartenregister P3 %F6 Datenrichtungsregister P2 %F5 Vorteilerregister 0 %F4 Zähler-/Zeitgeberregister 0 %F3 Vorteilerregister 1 %F2 Zähler-/Zeitgeberregister 1 %F1 Betriebsartenregister Zähler/Zeitgeber %F0 Terminal Datenregister %EF-%80 unbelegt %7F Arithmetik-Stapelspeicher %6B Arithmetik-Stapelspeicher ... %48 Programmunterbrechung Quelle %47 Zählerüberlauf %46 Kopie des Registers %F6 %45 Abeitsregister bei Programmunterbrechungen %40 Arbeitsregister bei Programmunterbrechungen %3F Zeiger Arithmetik-Stapelspeicher (Kommandos) %3E Kopie der letzten Ausgabe an Port D %3D Kopie der letzten Ausgabe an Port B %3C Kopie der letzten Ausgabe an Port A %3B Kommandointerpreter Textzeiger low %3A -"- high %39 Kommandointerpreter Tabellenzeiger low %38 -"- high %37 Kommandointerpreter Kommandozeiger low %36 -"- high %35 Kommandointerpreter Arbeitsregister %30 Kommandointerpreter Arbeitsregister %2F Kommandointerpreter Eingabespeicher %20 Kommandointerpreter Eingabespeicher %IF Zeiger Arithmetik-Stapelspeicher (BASIC/DEBUG) %1E BASIC/DEBUG-Arbeitsregister %16 BASIC/DEBUG-Arbeitsregister %15 USR-Funktion 2. Argument low %14 -"- high %13 USR-Funktion 3. Argument low %12 -"- high %11 BASIC/DEBUG-Arbeitsregister %10 -"- %0F BASIC/DEBUG-Entnahmezeiger in Eingabespeicher low %0E -"- high %0D BASIC/DEBUG Aufnahmezeiger in Eingabespeicher low %0C -"- high %0B BASIC/DEBUG Obergrenze nutzbares RAM low %0A -"- RAM high %09 BASIC/DEBUG-Zeiger auf Programmanfang low %08 -"- high %07 BASIC/DEBUG-Zeiger Unterprogramm Stapelspeicher low %06 -"- high %05 BASIC/DEBUG-Zeiger auf Programmende low %04 -"- high %03 P3 %02 P2 %01 P1 = Daten-/Adreßbus (DAO bis DA7) %00 P0 = Adreßbus (A8 bis A15)
Literatur
- „New Life for the Z8671 BASIC Interpreter“ by Chris Howie (http://www.armory.com/~rstevew/Public/Micros/Z8/Z8671-BASIC/Z8671-BASIC_ROM_Main.htm)
- Z8671 Single-chip BASIC Interpreter: BASIC/DEBUG Software Reference Manual, Zilog, 1988
Downloads
- ROM-Inhalt