Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
elektronik:z8671:basic_debug [2021/11/18 07:22] – [Downloads] volkerp | elektronik:z8671:basic_debug [2022/08/04 06:37] (aktuell) – ↷ Links angepasst, weil Seiten im Wiki verschoben wurden volkerp | ||
---|---|---|---|
Zeile 11: | Zeile 11: | ||
* Direktzugriff auf Register und Speicher | * Direktzugriff auf Register und Speicher | ||
- | Das BASIC ist im Handbuch | + | Das BASIC ist im Zilog-Handbuch |
Das Basic orientiert sich sehr stark an das TINY-BASIC von Tom Pittman (http:// | Das Basic orientiert sich sehr stark an das TINY-BASIC von Tom Pittman (http:// | ||
Literatur und Programme zu den dort beschriebenen BASICs für 1802, 6502, 6800-Controller passen auch zum BASIC/DEBUG des Z8671. | Literatur und Programme zu den dort beschriebenen BASICs für 1802, 6502, 6800-Controller passen auch zum BASIC/DEBUG des Z8671. | ||
+ | |||
+ | 11/2021: Tom Pittman hat mir bestätigt, dass er dieses BASIC Ende der 70er im Auftrag von Zilog programmiert hat. | ||
+ | |||
===== Downloads ===== | ===== Downloads ===== | ||
Zeile 22: | Zeile 25: | ||
* IL source + IL Makros | * IL source + IL Makros | ||
* IL Decompiler (perl) | * IL Decompiler (perl) | ||
+ | * {{ : | ||
- | zur Anpassung an andere Systeme und andere Adressen sowie Erweiterungen s. [[tiny: | + | zur Anpassung an andere Systeme und andere Adressen sowie Erweiterungen s. [[tiny:es40: |
===== Aufbau ===== | ===== Aufbau ===== | ||
Zeile 31: | Zeile 35: | ||
Das BASIC selbst ist nur 432 Byte groß. | Das BASIC selbst ist nur 432 Byte groß. | ||
- | In Z8-Code ist der Interpreter für diese Codesprache enthalten sowie Initialisierung und In/ | + | In Z8-Code ist der Interpreter für diese Codesprache enthalten, sowie Initialisierung und In/ |
Diese Art der Implementierung ist extrem speichersparend. Nur so konnten die umfangreichen Fähigkeiten | Diese Art der Implementierung ist extrem speichersparend. Nur so konnten die umfangreichen Fähigkeiten | ||
- | des BASIC/DEBUG in nur 20248 Byte untergebracht werden. | + | des BASIC/DEBUG in nur 2048 Byte untergebracht werden. |
- | Das Zwiebelmodell beschreibt sehr schön den Ablauf: Das BASIC-Anwenderprogramm | + | Das Zwiebelmodell |
wird vom BASIC-Interpreter (in TBIL) interpretiert. Dieser wiederum wird vom TBIL-Interpreter (in Z8-Code) interpretiert, | wird vom BASIC-Interpreter (in TBIL) interpretiert. Dieser wiederum wird vom TBIL-Interpreter (in Z8-Code) interpretiert, | ||
<WRAP clear/> | <WRAP clear/> | ||
Zeile 45: | Zeile 49: | ||
* Autostart eines Programms nach RESET | * Autostart eines Programms nach RESET | ||
* Editierzeichen für DEL, Zeilenende-Zeichenfolge frei vergebbar | * Editierzeichen für DEL, Zeilenende-Zeichenfolge frei vergebbar | ||
- | * eigene I/O-Treiber anstelle der Z8-SIO | + | * eigene I/O-Treiber anstelle |
===== Literatur ===== | ===== Literatur ===== | ||
- | * z8671_basic_debug.pdf von Zilog. (der Hochpfeil in der Doku ist das Zeichen " | + | * {{ : |
+ | * Buch „Mikroprozessoren in der Meß- und Regeltechnik. Funktion - Aufbau und Programmierung“ von Gerhard Ledig, Franzis-Verlag 1988 | ||
- | Literatur zu Tiny-BASIC: | + | weitere |
orig. Scans | orig. Scans | ||
Zeile 66: | Zeile 71: | ||
* The First Book of Tiny BASIC Programs\\ | * The First Book of Tiny BASIC Programs\\ | ||
* Tiny Basic Experimenters Kit\\ | * Tiny Basic Experimenters Kit\\ | ||
- | * Buch „Mikroprozessoren in der Meß- und Regeltechnik. Funktion - Aufbau und Programmierung“ von Gerhard Ledig, Franzis-Verlag 1988 | ||
* originale Scans und Beispiele und weitere Dokumente\\ http:// | * originale Scans und Beispiele und weitere Dokumente\\ http:// | ||
| | ||
Zeile 486: | Zeile 490: | ||
</ | </ | ||
- | Aufgrund der Beschränkungen bei LN (nur Werte 00xxh möglich) muss bei LIST ohne Parameter ein wenig gezaubert werden: Die Werte auf dem Stack werden durch Manipulation in kleinste und größtmögliche Zeilennummer gewandelt. Das entspricht dann dem Aufruf "LIST 1,32535". | + | Aufgrund der Beschränkungen bei LN (nur Werte 00xxh möglich) muss bei LIST ohne Parameter ein wenig gezaubert werden: Die Werte auf dem Stack werden durch Manipulation in kleinste und größtmögliche Zeilennummer gewandelt. Das entspricht dann dem Aufruf "LIST 1,32767". |
Die Division ist nur als vorzeichenlose 16-Bit-Division implementiert. Deshalb muss in der IL die Fallunterscheidung bzgl. Vorzeichen und Division durch 0 erfolgen. | Die Division ist nur als vorzeichenlose 16-Bit-Division implementiert. Deshalb muss in der IL die Fallunterscheidung bzgl. Vorzeichen und Division durch 0 erfolgen. | ||
- | Um Bytes zu sparen, wurden Unterprogramme verlegt und Codes zusammengeführt. Das erzeut | + | Um Bytes zu sparen, wurden Unterprogramme verlegt und Codes zusammengeführt. Das erzeugt |