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
homecomputer:bert [2012/06/26 12:27] – [Systembeschreibung] volkerphomecomputer:bert [2022/05/11 06:14] (aktuell) – [Sonstiges] volkerp
Zeile 1: Zeile 1:
 ====== BERT ====== ====== BERT ======
- 
-~~UNDERCONSTRUCTION~~ 
  
 Das Mikroprozessorsystem BERT ist ein Einplatinencomputer auf Z8-Basis ([[elektronik:z8671|Z8671]]), mit serieller Ansteuerung und vielfältigen Experimenten. Beschrieben wurde dieses System im Buch „Einführung in die Mikroprozessor-Anwendung“, vgs, 1987. Das Board konnte bei der vgs gekauft werden, ebenso diverse Zusatzplatinen des DIGIPROB-Systems. Das Mikroprozessorsystem BERT ist ein Einplatinencomputer auf Z8-Basis ([[elektronik:z8671|Z8671]]), mit serieller Ansteuerung und vielfältigen Experimenten. Beschrieben wurde dieses System im Buch „Einführung in die Mikroprozessor-Anwendung“, vgs, 1987. Das Board konnte bei der vgs gekauft werden, ebenso diverse Zusatzplatinen des DIGIPROB-Systems.
-Geplant war auch die Ausstrahlung einer 10teiligen Serie im WDR für 1987/1988((ob solche Folgen ausgestrahlt wurden und was gezeigt wurde/werden sollte, entzieht sich meiner Kenntnis)). 
  
-Die ersten drei Buchstaben von BERT stehen für "**B**asic **E**inplatinen **R**echner".+Geplant war eine 10teilige TV-Serie im WDR für 1987/1988. Allerdings ist es leider nie zu einer Realisierung gekommen, nur das Begleitbuch und BERT (der eigentliche Fernseh-Star) entstanden. 
 + 
 +Die Buchstaben von BERT stehen für "**B**asic **E**inplatinen **R**echner für **T**V-Serie" . 
 + 
 + 
 +**Nachbau**
  
 +Von Firma shotech können Leiterplatten und ganze Bausätze für einen Nachbau bezogen werden:
 +https://www.shotech.de/de/z8-basic-einplatiencomputer-rev-03.html
 ===== Systembeschreibung ===== ===== Systembeschreibung =====
  
Zeile 17: Zeile 21:
 Zum Betrieb des BERT werden zusätzlich ein Netzteil (6-9 V, 300 mA) und ein V24-Kopplung zum PC benötigt. Im Buch sind V24-Interfaceschaltungen für Commodore V20, IBM-PC,XT,AT und APPLE-II beschrieben. Es kann aber auch jedes beliebige andere System über eine serielle Schnittstelle angeschlossen werden. Zu beachten ist, dass BERT hier mit TTL-Pegeln arbeitet und ggf. eine Pegelwandlung erforderlich ist. Zum Betrieb des BERT werden zusätzlich ein Netzteil (6-9 V, 300 mA) und ein V24-Kopplung zum PC benötigt. Im Buch sind V24-Interfaceschaltungen für Commodore V20, IBM-PC,XT,AT und APPLE-II beschrieben. Es kann aber auch jedes beliebige andere System über eine serielle Schnittstelle angeschlossen werden. Zu beachten ist, dass BERT hier mit TTL-Pegeln arbeitet und ggf. eine Pegelwandlung erforderlich ist.
  
-Zusätzlich zu BERT müssen weitere Experimentierplatinen gebaut oder bei vgs erworben werden, z.B. eine Schalterplatine, LED-Platine, A/D-Wandler, Motor-Steuereinheit, 5x7-LED-Matrix, 4 stellige 7-Segment-Anzeige u.a. Im Buch finden sich zumindest Übersichts- und Teilstromlaufpläne, manchmal auch komplette Stromlaufpläne, aber leider keine Leiterplattenvorlagen.+Zusätzlich zu BERT mussten weitere Experimentierplatinen gebaut oder bei vgs erworben werden, z.B. eine Schalterplatine, LED-Platine, A/D-Wandler, Motor-Steuereinheit, 5x7-LED-Matrix, 4 stellige 7-Segment-Anzeige u.a. Im Buch finden sich zumindest Übersichts- und Teilstromlaufpläne, manchmal auch komplette Stromlaufpläne, aber leider keine Leiterplattenvorlagen.
  
 BERT stellt 5 sogenannte Ports A .. E zur Verfügung, die über Kommandos abgefragt bzw. gesetzt werden können. Das sind digitale Ein-/Ausgabeleitungen, 6 bzw. 8 Bit breit. BERT stellt 5 sogenannte Ports A .. E zur Verfügung, die über Kommandos abgefragt bzw. gesetzt werden können. Das sind digitale Ein-/Ausgabeleitungen, 6 bzw. 8 Bit breit.
Zeile 81: Zeile 85:
 | 7000-7fff  | Port E (Schalter) | | 7000-7fff  | Port E (Schalter) |
  
-Die Adressdekodierung ist unvollständig. A15 wird nicht ausgewertet. d.h. die oberen Adressen 8000h-ffffh werden auf die unteren Bereiche abgebildet. Speziell wird der DIP-Schalter auch im Adressbereich f000-ffff und speziell auf Adresse FFFD gefunden. Hier liest der [[elektronik:z8671|Z8671]] auf den Bits 2..0 die Baudrate für die serielle Kommunikation aus.+Die Adressdekodierung ist unvollständig. A15 wird nicht ausgewertet. d.h. die oberen Adressen %8000-%ffff werden auf die unteren Bereiche abgebildet. Speziell wird der DIP-Schalter auch im Adressbereich %f000-%ffff und speziell auf Adresse %FFFD gefunden. Hier liest der [[elektronik:z8671|Z8671]] auf den Bits 2..0 die Baudrate für die serielle Kommunikation aus.
  
 ^ DIP Schalter (Port E)  ^ Baudrate  ^ ^ DIP Schalter (Port E)  ^ Baudrate  ^
Zeile 104: Zeile 108:
 ===== Downloads ===== ===== Downloads =====
  
-  * meine Unterlagen +  * Listings etc. {{:einplatinenrechner:bert.zip|}} 
-  * Listings +  * Z8671-Unterlagen {{:einplatinenrechner:z8671.zip|}} (z8671_basic_debug.pdf, 1521969.pdf, z8671.bin, Circuit Cellar - Digital Library.mht, Z8_crd.txt) 
-  * Assembler-ROM+  * Assembler-ROM {{:einplatinenrechner:bert-assembler.zip|}} Vielen Dank an Steffen H. !!!
  
 {{:homecomputer:bert_bestueckung.jpg?300|}} {{:homecomputer:bert_stromlaufplan.jpg?300|}}\\ {{:homecomputer:bert_bestueckung.jpg?300|}} {{:homecomputer:bert_stromlaufplan.jpg?300|}}\\
Zeile 125: Zeile 129:
 ==== serielle Schnittstelle ==== ==== serielle Schnittstelle ====
  
-Der Z8671 kommuniziert über eine serielles Interface der Pins P30 und P37 (s. Unterlagen [[elektronik:z8671|Z8671]]). Der Anschluss an einen V24-Schnittstelle am PC erfordert einen Pegelwandler, z.B. mit MAX232. Passende Schaltungen sind im Buch Anhang B zu finden.+Der Z8671 kommuniziert über ein serielles Interface der Pins P30 und P37 (s. Unterlagen [[elektronik:z8671|Z8671]]). Der Anschluss an einen V24-Schnittstelle am PC erfordert einen Pegelwandler, z.B. mit MAX232. Passende Schaltungen sind im Buch Anhang B zu finden.
  
-Ich habe meinen VERT über einen USB-TTL-Anschluss (1,90€ bei ebay) angeschlossen.+Ich habe meinen BERT über einen USB2TTL-Anschluss (1,90€ bei ebay incl. Versand!) angeschlossen.
 Der PC übernimmt dabei dank USB auch gleich die Stromversorgung von BERT mit. Der PC übernimmt dabei dank USB auch gleich die Stromversorgung von BERT mit.
  
 +{{:homecomputer:bert_usb_1.jpg?300|}} {{:homecomputer:bert_usb_2.jpg?300|}}
 +
 +Anschluss an BERT: Serielle Verbindung über die Diodenbuchse; das rote Kabel (+5V) dient zur Stromversorgung über USB
 +
 +{{:homecomputer:teraterm1.gif|}} {{:homecomputer:teraterm2.gif|}} {{:homecomputer:teraterm3.gif|}}
 +
 +Einstellungen beim Terminal-Programm **TeraTerm**: serieller Anschluss, 9600 Baud; Test mit BASIC/DEBUG
 ==== Initialisierung ==== ==== Initialisierung ====
  
Zeile 138: Zeile 149:
   * PC sendet 'GO@%1018',ENTER (Aktivieren des Kommandomodus)   * PC sendet 'GO@%1018',ENTER (Aktivieren des Kommandomodus)
  
-Am PC wird GWBASIC für die Ansteuerung von BERT genutzt. Die Listings im Buch beginnen alle mit Zeilennummer 100. Vor jedes dieser Programme muss ein Initialisierungsprogramm gestellt werden, dass obige Schritte abarbeitet. Das lnitialisierungs-Programm INIT für den IBM-PC sieht z.B. so aus:+Am PC wird GWBASIC bzw. ehem. BASICA für die Ansteuerung von BERT genutzt. Die Listings im Buch beginnen alle mit Zeilennummer 100. Vor jedes dieser Programme muss ein Initialisierungsprogramm gestellt werden, dass obige Schritte abarbeitet. Das lnitialisierungs-Programm INIT für den IBM-PC sieht z.B. so aus:
  
 <code> <code>
Zeile 148: Zeile 159:
 25 WIDTH 40 : KEY OFF : CLS : COLOR 0,7 25 WIDTH 40 : KEY OFF : CLS : COLOR 0,7
 30 PRINT"         BERT-INTERFACE-BETRIEB         "; 30 PRINT"         BERT-INTERFACE-BETRIEB         ";
-35 PRINT"    1200 BAUD: PORT E AUF 5 = XXX201    "; : COLOR 7,0+35 PRINT"    1200 BAUD: PORT E AUF 5 = XXX101    "; : COLOR 7,0
 40 PRINT"   BITTE RESET-TASTE AN BERT DRUECKEN!  "; 40 PRINT"   BITTE RESET-TASTE AN BERT DRUECKEN!  ";
 45 IF EOF(2) THEN 45 45 IF EOF(2) THEN 45
Zeile 159: Zeile 170:
 </code> </code>
  
-==== Kommandos ====+==== Kommandomodus ==== 
 + 
 +Mit dem BASIC/DEBUG-Befehl "GO@%1018" wird der Kommandomodus gestartet. Statt Basic übernimmt eine eigene Kommandoroutine die Kommunikation. 
 +Man kann mit einem Terminalprogramm (z.B. TeraTerm) die BERT-Kommandos interaktiv ausprobieren. Oder ein PC-Steuerprogramm kommuniziert mit BERT, indem die BERT-Kommandos mit PRINT #2"..." gesendet werden. Mit INPUT#2 werden Werte gelesen. 
 + 
 +Das Buch Kapitel 4 bis 7 arbeitet auf letztere Weise- PC-BASIC-Programme kommunizieren mit BERT, indem sie über Kanal 2 ASCII-Zeichen senden bzw. empfangen.
  
 Im Kommandomodus werden Kommandos als ASCII-Zeichenketten an BERT gesendet. Ein Kommando wird mit ENTER (0Dh) abgeschlossen. Zahlen werden als Dezimalzahlen übertragen. Die Befehle sind alle gleich aufgebaut: Buchstaben benennen den Port, eventuell gefolgt von einer Bit-Nummer (z.B. 'C3', oder aber eine Abkürzung des Kommandos ('M'). Der Befehl wird mit **=** oder **?** abgeschlossen. Es schließt sich die Ausgabe bzw. das Einlesen eines Zahlenwertes an. Im Kommandomodus werden Kommandos als ASCII-Zeichenketten an BERT gesendet. Ein Kommando wird mit ENTER (0Dh) abgeschlossen. Zahlen werden als Dezimalzahlen übertragen. Die Befehle sind alle gleich aufgebaut: Buchstaben benennen den Port, eventuell gefolgt von einer Bit-Nummer (z.B. 'C3', oder aber eine Abkürzung des Kommandos ('M'). Der Befehl wird mit **=** oder **?** abgeschlossen. Es schließt sich die Ausgabe bzw. das Einlesen eines Zahlenwertes an.
  
-**=** bedeutet Ausgabebefehl: Es wird ein Wert an BERT übertragen. +**=** bedeutet Ausgabebefehl: Es wird ein Wert an BERT übertragen. Nach dem '=' muss eine 16-bit-Zahl (dezimal) stehen.
  
-**?** bedeutet Abfrage (Eingabebefehl): BERT sendet nach Ausführung des Befehls eine mit ENTER (0Dh) abgeschlossene Zeichenkette an den PC. Meist ist das ein Zahlenwert (dezimal).+**?** bedeutet Abfrage (Eingabebefehl): BERT sendet nach Ausführung des Befehls eine mit ENTER (0Dh) abgeschlossene Zeichenkette (16-Bit-Zahlenwert, dezimal) an den PC.
  
 <code> <code>
Zeile 285: Zeile 301:
 Adresse expr beginnt.  Adresse expr beginnt. 
 'G=',expr  'G=',expr 
 +
 +G=0 beendet den Kommandomodus und startet wieder den BASIC/DEBUG-Modus (Soft-Reset)
  
 **Ergänzende Hinweise** **Ergänzende Hinweise**
Zeile 297: Zeile 315:
 ==== BASIC/DEBUG-Modus ==== ==== BASIC/DEBUG-Modus ====
  
-Nach einem Reset befindet sich BERT bzw. der [[elektronik:z8671|Z8671]] im BASIC/DEBUG-Modus. Wird kein Programm auf Adresse 1020h gefunden, sendet das BASIC/DEBUG des Z8671 einen ':' als Bereitschaftszeichen für eine mögliche Kommunikation. Für die Umschaltung in den Kommandomodus wird nun mittels BASIC/DEBUG-Direktkommando 'GO@%1018' das Kommandomodusprogramm gestartet. Im BASIC/DEBUG-Modus können beliebige BASIC/DEBUG-Befehle an den Z8671 gesendet werden, z.B.+Nach einem Reset befindet sich BERT bzw. der [[elektronik:z8671|Z8671]] im BASIC/DEBUG-Modus. Wird kein Programm auf Adresse 1020h gefunden, sendet das [[elektronik:z8671:handbuch|BASIC/DEBUG]] des Z8671 einen ':' als Bereitschaftszeichen für eine mögliche Kommunikation. Für die Umschaltung in den BERT-Kommandomodus wird nun mittels BASIC/DEBUG-Direktkommando 'GO@%1018' das Kommandomodusprogramm gestartet. Im BASIC/DEBUG-Modus dagegen können beliebige BASIC/DEBUG-Befehle an den Z8671 gesendet werden, z.B.
  
     10 PRINT "HALLO BERT"     10 PRINT "HALLO BERT"
Zeile 311: Zeile 329:
 === Hex/Ascii-Speicherdump === === Hex/Ascii-Speicherdump ===
  
-  GO@1010B,anfangsadr,endadr+1+  GO@%101B,anfangsadr,endadr+1
  
 Gibt des Speicher zeilenweise zu je 8 Byte hexadezimal und Ascii aus. Gibt des Speicher zeilenweise zu je 8 Byte hexadezimal und Ascii aus.
 In der Ascii-Ausgabe wird Bit7 ignoriert; Steuerzeichen werden als '.' ausgegeben. In der Ascii-Ausgabe wird Bit7 ignoriert; Steuerzeichen werden als '.' ausgegeben.
 +
 +=== Z8-Register anzeigen ===
 +
 +  GO@%17C3,anfangsadr,endadr+1
 +
 +=== Z8-Register ändern ===
 +
 +Register werden direkt mit BASIC/DEBUG-Befehlen geändert. Beispiel
 +
 +  ^8=%2100
 +  NEW
 +
 +setzt den Anfang des BASIC/DEBUG-Speichers auf %2100.
 +
 +  @%0C=@%0C-2
 +  @%0A=@%0A-2
 +  NEW
 +
 +verschiebt den Bereich für Variabeln und den Stack um 512 Byte nach unten.
 +
 +=== RAM ändern ===
 +
 +  GO@%1830,anfangsadr.
 +
 +Es wird die Adresse angezeigt. Jetzt wird der Speicherinhalt als Hexzahl (ohne %) eingegeben. Nach Enter erscheint die nächste Adr. usw. Beendet wird der RAm-Editor durch sofortiges Enter ohne Eingabe einer Hexzahl.
 +
 +Alternativ kann der RAM auch mit dem Indirektionsoperator ^ geändert werden.
 +
  
 === EPROM-Programmierung === === EPROM-Programmierung ===
  
-TODO+Über eine kleine Zusatzschaltung (Buch S. 196) können mit BERT anwendungsspezifische EPROMs 2732 (25V) und 2732A (21V) programmiert werden. Dabei wird eine Kopie des BERT-EPROMs erstellt und zusätzlich ein Anwender-BASIC/DEBUG-Programm aus dem RAM an die Adresse %1020 kopiert, so dass dieses bei RESET sofort ausgeführt wird.
  
 +  GO@%17C0
 +  
 +startet den kompletten Programmierungszyklus:
  
 +  * Löschtest: Es wird getestet, ob der EPROM gelöscht ist, d.h. überall mit %FF gefüllt ist. Andernfalls gibt es eine Fehlermeldung 'EPROM FEHLER'
 +  * Formatierung: die Kommandoroutinen und die Sprungvektoren aus BERT werden in den EPROM gebrannt. Anschließend wird der EPROM kontrollgelesen. Bei Fehlern erfolgt ein Abbruch mit Fehlermeldung 'EPROM FEHLER'.
 +  * Das BASIC/DEBUG-Programm aus dem RAM wird nach %1020 bis max. %1BA8 kopiert. Reicht der Platz nicht aus, wird auch hier mit einer Fehlermeldung abgebrochen.
 +  * War alles erfolgreich, erscheint die Ausschrift 'EPROM OK'
 +
 +Die einzelnen Programmierungsabschnitte können auch einzeln aufgerufen werden. Details siehe Monitorprogramm.
 +
 +==== Mini-Assembler ====
 +
 +Im Buch wird ein zusätzlicher EPROM von B. Holzhauer beschrieben, der mit BERT genutzt werden kann und einen kleinen Z8-Assembler enthält. Dieser Assembler läuft auf Adresse %0800-%0FFF. um ihn im Steckplatz für RAM2 betreiben zu können, müssen am EPROM Pin 18 und 21 abgewinkelt werden, und Pin 21 mit +5V und Pin 18 mit Lötpunkt %800 verbunden werden.
 +
 +Der Mini-Assembler arbeitet mit Zeilennummern. Er kennt keine Kommentare. Der Code wird als Basicprogramm erfasst. Mit GO@%800[,zeile] wird der Assemblerlauf gestartet.
 +
 +Beispiel: Einlesen einer zweistelligen BCD-Zahl an Port C\\
 +Binärzahl := Einerziffer + 2 * Zehnerziffer + 2*4 * Zehnerziffer
 +<code>
 +10 $ABS %13FD
 +20 LD R4,%50
 +30 LDC R3,@RR4
 +40 LD R2,R3
 +50 AND R3, #%0F
 +60 AND R2, #%F0
 +70 SWAP R2
 +80 RL R2
 +90 ADD R3,R2
 +100 RL R2
 +110 RL R2
 +120 ADD R3,R2
 +130 CLR R2
 +140 RET
 +</code>
 +
 +Nach dem Assemblieren mit GO@%800 kann anschließend die übersetzte Maschinencode-Routine mit USR(%13FD) aufgerufen werden.
 +
 +Um sie als **neues Kommando 'BCD?'** für den Kommandomodus bereitzustellen, muss die Kommandotabelle im System-EPROM ergänzt werden. Ab %1A87 sind 11 Byte dafür freigehalten (s. Monitorprogramm).
 +
 +%1A87: 'B'+%80, 'C', 'D', '?', %13FD>>7, %13FD&&%7F (die Startadr. wird in 2x7Bit aufgeteilt)
 +
 +2019: Der beschriebene Assembler-ROM galt als verschollen, es war nichts mehr darüber zu finden, auch B. Holzhauer hat nichts mehr. Es handelt sich aber mit sehr hoher Wahrscheinlichkeit um den [[elektronik:z8671:assembler|Mini-Assembler]] von Arcom Ltd. Im Buch "G. Ledig, Mikroprozessoren in der Meß- und Regeltechnik, Franzis Verlag 1988, ISBN 3772394418" ist er beschrieben und auch als Hex-Dump zu finden. Download: 
 +
 +https://www.shotech.de/Datasheet/BERT2/BERT-Assembler.zip
  
 ===== Sonstiges ===== ===== Sonstiges =====
Zeile 338: Zeile 428:
  
 Ich habe zwar seinerzeit den BERT entwickelt, aber die Rechte daran liegen bei der vgs (www.vgs.de) in Köln. Den Schaltplan des BERT können Sie sich sicher aus den Beschreibungen im Begleitbuch und den Unterlagen des Z8671 ableiten. Das Platinen-Layout liegt mir nicht vor; es wurde von der Fa. Thomsen-Elektronik (www.thomsen-elektronik.de) entwickelt, die auch den Computer produzierte." Ich habe zwar seinerzeit den BERT entwickelt, aber die Rechte daran liegen bei der vgs (www.vgs.de) in Köln. Den Schaltplan des BERT können Sie sich sicher aus den Beschreibungen im Begleitbuch und den Unterlagen des Z8671 ableiten. Das Platinen-Layout liegt mir nicht vor; es wurde von der Fa. Thomsen-Elektronik (www.thomsen-elektronik.de) entwickelt, die auch den Computer produzierte."
 +
 +Register:
 +
 +<code>
 +%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
 +</code>
  • homecomputer/bert.1340713665.txt.gz
  • Zuletzt geändert: 2012/06/26 12:27
  • von volkerp