Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
elektronik:z8671 [2012/06/26 09:08] volkerpelektronik:z8671 [2022/05/11 06:14] (aktuell) – [Register] volkerp
Zeile 1: Zeile 1:
 ====== Zilog Z8671 ====== ====== 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. 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 InterpreterBASIC/DEBUG Software Reference Manual, Zilog, Incorporated, 1988 (BASIC/Debug Software Reference Manual #03-3149-02)", das liegt mir aber leider nicht vor :-+[[http://www.cpushack.com/2010/10/15/zilog-the-first-decade-z80-z8-and-the-z8000/|{{ :elektronik:zilogz8671ps-basic-dbg.jpg?300 |}}]]
-Ebenso (vielleicht in obigem Software Reference Manual?) gab es von Zilog das komplette Quelllisting des BASIC/DEBUG.+
  
-Der Z8671 wurde auch von SGS produziert.+Von Zilog gibt es neben den Z8-Datenbüchern auch ein zusätzliches Dokument "Z8671 Single-chip Interpreter, BASIC/DEBUG Software, Reference Manual, Zilog, Incorporated, 1988 (BASIC/Debug Software Reference Manual #03-3149-02)".
  
-Der in der DDR produzierte Z8-Clone [[tiny:u881|U883x]] mit integriertem BASIC ist **nicht** zum Z8671 kompatibel; er enthält ein völlig anderes (eigenständig entwickeltes) BASIC.+Der Z8671 wurde auch von SGS-Thomson und von ST Microelectronics produziert.
  
-===== BASIC/DEBUG =====+Der in der DDR produzierte Z8-Clone [[elektronik:u883|]] mit integriertem BASIC ist **nicht** zum Z8671 kompatibel; er enthält ein völlig anderes (eigenständig entwickeltes) BASIC.
  
 +===== Literatur =====
  
 +{{:elektronik:z8671_basic_debug.jpg?0x150|}} {{:elektronik:zilog_z8_technical_manual.jpg?0x150|}} {{:homecomputer:bert_buch.jpg?0x150|}} {{:elektronik:franzis_ledig.jpg?0x150|}} 
  
-===== Literatur =====+  * {{:elektronik:z8671_basic_debug.pdf|Z8671 Single-chip BASIC Interpreter: BASIC/DEBUG Software Reference Manual, Zilog, 1988}} 
 +  * "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)\\ Ersatz des Z8671 durch einen Z86C03 mit externem EPROM, leicht geänderte Software. Offenbar hatte der Autor das komplette Quelllisting des BASIC/DEBUG von ZILOG 
 +  * Z8_Family_Design_Handbook_Jun88.pdf (Zilog, 660 Seiten, 38 MB) (http://www.bitsavers.org/components/zilog/z8/
 +  * Z8 microcomputer family May86.pdf (SGS, 3th edition, 302 Seiten, 19 MB)\\ enthält Beispielapp. "Single Board Computer Using Z8671" und "A Programmer's Guide to the Z8 Microcomputer" 
 +  * Z8671-Emulator (http://z8671sim.web-log.nl/
 +  * "Einführung in die Mikroprozessor-Anwendung", Roland Schule; Axel Gruppe., Unter Mitarb. von Michael Zillgitt. Jean Pütz (Hrsg.)., - 1. Aufl. - Köln: vgs, 1987. (Experimente), ISBN 3-8025-1239-1\\ Ein deutsches Buch über einen [[homecomputer:bert|SBC "BERT"]] mit Z8671, enthält deutsche Beschreibung des Z8671 BASIC/DEBUG. 
 +  *  ZiLOG Z8671 BASIC/Debug chip Replacement (http://www.ntrd.com/joe/z8671.htm) (leider offline)  
 +  * FORTH for the Zilog Z8 Microcontroller http://maptools.home.comcast.net/~maptools/Z8/ \\ hier gibt es den Z8asm/link 32bit Version 3.02 von Zilog. 
 +  * [[https://web.archive.org/web/20091024152542/http://maptools.home.comcast.net/~maptools/Z8/]]
  
-  * "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) +  * [[http://www.bitsavers.org/components/zilog/z8/1983_Z8_Microcomputer_Technical_Manual.pdf]] 
-  * Z8671 Single-chip BASIC InterpreterBASIC/DEBUG Software Reference ManualZilog, 1988 +  * [[https://cdn.hackaday.io/files/260591114908256/Z8671%20App%20Note.pdf]] 
-  * +  * Das Buch "Mikroprozessoren in der Meßund Regeltechnik. Funktion - Aufbau und Programmierung" von Gerhard Ledig, Franzis-Verlag 1988, ist ein deutsches Lehrbuch zum Z8671 und enthält viele BASIC-Beispiele und auch den [[elektronik:z8671:assembler|Assembler]] (s.a. [[homecomputer:bert|]]) 
 + 
 + 
 +{{:elektronik:z8671_replacement_board.png?300|Z8671 Replacement Board circa 2001, http://www.ntrd.com/joe/z8671.htm}}\\ Z8671 Replacement Board circa 2001Bild von http://www.ntrd.com/joe/z8671.htm
  
 ===== Downloads ===== ===== Downloads =====
  
-  * ROM-Inhalt+  * {{:elektronik:z6871_rom.zip|}} Z8671BASIC-DBG.bin ist der korrekte Inhalt 
 +  * {{:einplatinenrechner:z8671.zip|}} z8671.bin, z8671_basic_debug.pdf, Z8_crd.txt, Zilog Z9671 datasheet pdf 
 +  * {{ :einplatinenrechner:z8671_app_note.pdf |}} 
 +  * **NEW 2021** {{ :elektronik:z8671-basic_debug_src.zip |}} meine reassemblierten und kommentierten Quellen (Z8 source, IL source, IL Decompiler)  
 + 
 + 
 +===== BASIC/DEBUG ===== 
 + 
 +s.a. [[elektronik:z8671: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 ===== 
 + 
 +<code> 
 +%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 
 +... 
 +%1F 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) 
 +</code> 
 + 
 +===== Aufbau ===== 
 + 
 +2021: 
 + 
 +Der orig. Quellcode war nicht aufzufinden.  
 + 
 +Der Basic-Interpreter wird intern durch eine eigene IL (interpreter language) abgearbeitet, nur so passt alles in 2K ROM :-) 
 + 
 +Der IL-Code erinnert sehr an die Implementierung von Tom Pittman. In seiner Bibliographie schreibt Pittman auch von einer Implementierung für den Z8 ("...1976   Implemented Tiny Basic (6800/6502/1802/Z8)..."). <del>Ob er der Autor dieses BASICs ist, ist allerdings nicht bekannt.</del> 
 + 
 +11/2021: Tom Pittman hat mir bestätigt, dass er dieses BASIC im Auftrag von Zilog programmiert hat. 
 + 
 +s.a. http://www.ittybittycomputers.com/IttyBitty/TinyBasic/ 
 + 
 +* {{ :elektronik:z8671-basic_debug_src.zip |}} meine reassemblierten und kommentierte Quellen (Z8 source, IL soure, IL Decompiler) 
  • elektronik/z8671.1340701725.txt.gz
  • Zuletzt geändert: 2012/06/26 09:08
  • von volkerp