NBZ80-S Nanocomputer

Z80 nanocomputer 

Erste Eindrücke

Der "Bastel"-Satz bestand aus fast 2 Einheiten, beim dem 2. fehlte die CPU-Platine (obere Hälfte) und das Netzteil. An dem ersten Gehäuse gab es ein größeres Loch von einem Rest-Taster und beide Gehäuse fielen wegen fehlender Schrauben auseinander. Keine unlösbaren Problemen, also aus 2 macht 1.

Wie es sich bei solchen Aktionen gehört, muss erstmal das Netzteil kontrolliert werden. Und schon die erste Sichtprüfung offenbart eine stark geschädigte Platine mit starken Brandspuren. Die Dioden sind schon an einer Seite abgeknipst. Da wartet noch einiges.

Das Netzteil

Also habe ich erstmal die Dioden getauscht. Beim ersten Test qualmte es etwas und die Dioden werden sehr heiss. Also wieder raus. Hinter dem Gleichrichter ist ein fetter Kurzschluß, es sind die Kondensatoren. Nachdem ich diese provisorisch ersetzt habe, sind schon mal die +5V und +12V da. Die -5V und -12V waren immer da, allerdings etwas ausser der Toleranz. Da beim anschliessen der Platinen nichts rauchte, konnte es weitergehen.

Erste Gehversuche

Also, das erste Einschalten, und ... es tut sich nichts. Na klar. Nach ein paar Messungen ist klar, alle Spannungen sind da, also müssen wieder große Geschütze aufgefahren werden, der LA.

NBZ80-S

Die ersten Messungen sind ernüchternd. Es passt vieles nicht zusammen . Die angezeigneten Daten passen nicht zum Verhalten. Nach etwas hin und her, wird klar, das der LA nicht anständig angeschlossen ist, einige Kontakte funktionieren nicht richtig. Grund sind u.a die IC-Fassungen mit Doppelfederkontakten, die einen "Kragen" haben und die Kontaktierung der IC-Testklammern behindert.

Nach dem dieses Problem erkannt und behoben war, lief es immer noch nicht rund. Ich hatte das Gefühl der Programmcode wird nicht immer gleich abgearbeitet. Die EPROMs, gut betagte 2708, haben auch eine gute Temperatur. Die 2708 brauchen leider 3 Spannungen, aber ich baue meinen EPROM-Leser entsprechend um und kann die EPROMs auslesen. Der Inhalt ist gleich mit einer Datei, die ich im Internet gefunden habe. Also sind die EPROMs in Ordnung.

Aber ich entscheide mich die Platine auf die 2716 EPROMs umzubauen. Dies geht alles über Lötbrücken und hat den Vorteil, das ich keine +12V und -5V mehr für die EPROMs brauche und statt des EPROMs ein EEPROM 28C16 einsetzen kann, das ich selber programmieren kann.

Nach dem Umbau fühlt sich das Systemverhalten deutlich besser an. Jetzt passen die Messungen auch zum disassemblierten EPROM-Inhalt.

 Wie kommt der Stack ins EPROM ?

Die Programmanalyse zeigt ein Kuriosum: Der Stack liegt im EPROM! Das geht eigentlich nicht.

Auf den Stack speichert die CPU Werte ab oder merkt sich die Rücksprungadresse bei einen Unterprogrammaufruf. Ins EPROM kann die CPU aber nichts speichern, sondern nur lesen.

Die Entwickler haben etwas geschaffen, was ich noch nie gesehen habe. Alles was die CPU liest, ist im EPROM gespeichert. Die Rücksprungadressen sind richtig abgelegt und auch Parameter sind gespeichert.

Und im ersten Unterprogramm verstehe ich den Trick. Es ist der Speichertest. Klar, ohne Speichertest weiss ich nicht, ob der Speicher funktioniert. Und ohne funktionierenden Speicher kann ich den Stack dort nicht abspeichern. Mit diesem Trick wird der Programmablauf sicher gestellt und dadurch bekommen ich in der Anzeige das Ergebnis des Speichertest dargestellt.

Der Speichertest zeigt dann auch wirklich Speicherfehler auf. Das tolle ist jetzt, das diese für die Anzeige aufgearbeitet wird, ohne funktionierenden Speicher. Zum Glück hat das Display 8 Stellen, so das für jedes Bit eine Anzeigestelle vorhanden ist. Und so bekommt man nach dem Speichertest bit-genau die defekten Speicherstellen angezeigt.

Zwischenbemerkung

Einigen mag der Stack im EPROM zu komplziert zu sein, nur um ein Speicherfehler im Display anzuzeign. Das habe ich auch kurz gedacht.Schon beim nächsten Computer, dem microset 8080, zeigte sich das wohlüberlegte Vorgehen der NBZ80 Entwickler.

Die Tastatur des microset8080 reagierte nicht, nur wenige hardware-unterstützte Tasten zeigten eine Reaktion. Nach LA- und Software Analyse kam heraus, das die CPU nach einem Unterprogrammrücksprung (eine wesentliche Aufgabe des Stacks) eine falsche Adresse angesprungen hat. Das RAM war defekt, das Programmverhalten nicht nachvollziehbar, eine Fehleranalyse nicht möglich.

Hieran zeigt sich m.E. wie wichtig eine anständige Fehlerbearbeitung ist.

Fehler erkannt, aber ...

Die bisherigen Erkenntnisse habe ich nur durch den LA und das disassemblierte EPROM. Die Software macht eigentlich alles richtig, aber die Anzeige will nicht.Also erstmal die Tastatur/Anzeige aufmachen und reinschauen.Nachdem ich das Snap-In Gehäuse offen und den Platinen-Stack endlich auseinander hatte, war nichts auffälliges zu erkennen.

Also besser mit System suchen. Das Display wird über einen Dekoder und Transistoren angesteuert. Also mal sehen was an dieser Schaltung ankommt.

Die Signale kommen von einer Z80-PIO (Parallel I/O). Also hier rmal messen. Und hier tauchen schnell große Unterschiede auf zwischen Soll und Ist. Die Daten, die in die PIO geschrieben werden und die am Ausgang erscheinen passen nicht. Die Daten am Ausgang, die das Display steuern, ergeben kein Anzeige im Display. Die 1. Vermutung ist auch richtig, die PIO ist defekt. Mit der 2. PIO auf der Platine ist es schon besser. Jetzt habe ich eine Anzeige , aber sinnvoll sieht die nicht aus.

 

Ein Designfehler (?)

Durch eine nette Mail habe ich gesehen, das die Seite sehr unvollständig ist. Deshalb noch eine kleine Fortsetzung.

Die PIO war also deutlich defekt. Nach dem Tausch waren aber die Pegel an einigen Ports nicht nachvollziehbar. Also an das Bedienteil.

Mich wunderte, das an einem Transistorarry nur 5 von 8 Leitungen einen Basiswiderstand hatten. Und das war auch das Problem der seltsamen Pegel. Diese 3 PIO-Ports bekamen den ganzen Strom, der aus einem Transistor kommen kann, es bestand also faktisch ein Kurzschluss. Das dies den Ports auf Dauer nicht gut tut ist klar. Hier der Schaltplan-Ausschnitt:

Da im Bedienteil leider nicht richtig Platz fuer 3 weitere Widerstände ist und hierfür auch einige Leiterbahnunterbrechungen notwendig sind, hab ich mich entschlossen, SMD-Widerstände zwischen Leiterplatte und IC zu loeten. Dies ist der kleinste Eingriff, braucht keinen Platz und man sieht fast nichts. So sieht das dann aus:

Nachdem die Anzeige dann zufriedenstellend arbeitete, bekam man auch die Speicherfehler schön angezeigt. Dann erstmal den Speicher komplett getauscht und alles läuft wie gewünscht.

Da ich den Nanocomputer in der Zwischenzeit verkauft habe, ist diese Geschichte abgeschlossen.

 

 

Kontakt

Kommentare / Fragen an: email ( @ ) funkenzupfer ( . ) de
Letzte Änderung: 2021-04-18 FSt