Tatung Einstein TC01 Reparatur Thread

  • Toshi: Lohnt sich für den Einstein eine eigene Rubrik aufzumachen? Infos z.B. hier: https://de.wikipedia.org/wiki/Tatung_Einstein


    Beim Tatung Einstein handelt es sich um einen komplett in England entwickelten und produzierten 8-Bit Rechner mit Z80 CPU der taiwanischen Firma Tatung, hauptsächlich bekannt durch TV und Video-Geräte. In Deutschland sind die Computer meines Wissens sehr selten, da sie hauptsächlich für den britischen und taiwanischen Markt produziert wurden.

    Das Besondere an dem Computer sind die zwei 3" Diskettenlaufwerke und ein CP/M kompatibles Betriebssystem namens Xtal. Von der Hardware her ähnelt er den MSX-Computern, ist aber nicht damit kompatibel. Es gab aber eine ZX-Spectrum Erweiterung dafür, die den Einstein voll kompatibel dazu machte. Somit war der Computer gerade bei Software-Entwicklern für den ZX Spectrum sehr beliebt, weil er wesentlich robuster war und eine deutlich bessere Tastatur hatte. Der TC01 kam 1984 in England auf dem Markt. Leider gab es nur noch einen Nachfolger bevor Tatung die weitere Entwicklung dafür einstellte.


    Mein Einstein TC01 liegt schon einige Zeit bei mir zu Hause ungenutzt herum, weil er nach dem Einschalten nur ein schwarzes Bild zeigte und sonst keinerlei Reaktion. Das Netzteil scheint in Ordnung zu sein und auch sonst schieden die üblichen Verdächtigen aus. Ich kam mit meinem leihenhaften Elektronik-Wissen also nicht weiter.


    Gestern ergab sich dann die Möglichkeit das Mainboard mit Tastatur und Netzteil mit ins FabLab nach Nürnberg zunehmen (der gesamte Rechner ist ziemlich sperrig und misst in der Tiefe allein 52cm !! ) :)

    Dort hat sich dankenswerter Weise hauptsächlich michaelengel damit beschäftigt, richtig rein gefuchst und einige Erfolge erzielt. Zumindest zeigt der Computer nun mit dem RGB-Videokabel nun wieder ein sauberes Bild. Wie sich herausstellte, war die Z80 CPU defekt!


    Der Rechner bleibt jetzt jedoch beim Startvorgang hängen und zeigt keinerlei Reaktionen auf irgendwelche Tasteneingaben.

    Das Diagnose EPROM zeigt auch einen reproduzierbaren Fehler an, der uns allerdings noch nicht richtig weitergebracht hat


    michaelengel hat seine Erkenntnisse und die weitere Diagnose hier zusammengefasst: RE: Vintage Computing Treff in Nürnberg, Sa 23.09 und So 24.09 2023


    Toshi: Kannst du bitte den Beitrag von Michael in diesen Reparatur Thread verschieben?


    Kennt jemand diesen Computer? Hat sonst noch jemand Ideen, in welche Richtung wir die Diagnose fortführen könnten? Michael hat ja inzwischen sogar die Diagnostic Firmware analysiert und in dem o.g. Beitrag seine Erkenntnisse geteilt.

    Wäre schön, wenn wir diesen interessanten Rechner wieder zum Leben erwecken könnten. Wie würde Einstein darauf reagieren? Na klar: :P


    Hier ein paar Bilder vom Rechner und von der Diagnose. Inzwischen habe ich den Computer wieder zusammengeschraubt, um den Startvorgang auch mit Diskette zu testen.

    Der Rechner greift auf das Laufwerk 0 zu und beginnt dort die Bootdiskette zu lesen (siehe Bilder). Dann bleibt er allerdings hängen oder friert ein. Jedenfalls kommt kein Prompt und er reagiert auf keinerlei Tasten. Wenn man "ALPHA LOCK" drückt, sollte eigentlich die entsprechende LED leuchten, aber das tut sie ebenfalls nicht.



     


     


    Rechts zu sehen, dass der Computer nach dem Einschalten auf die Bootdiskette zugreift und auch die ALPHA LOCK LED kurz leuchtet.

    Der Lautsprecher knackt nur ganz kurz aber gibt keinen Beep-Ton ab.


     


    Links: die beiden ROMs inkl. Diagnose ROM (beide funktionieren nachweislich). Hier ist auch die gesockelte Z80 CPU zu sehen.

    Rechtes Bild: Sound-Chip, Logik Chips und Tastatur-Stecker


    Rechner bleibt beim Booten von Diskette 0 hängen.



    Diagnoses EPROM zeigt diesen Fehler.

    Hat jemand eine Idee dazu?

  • Naja die Diag-Software sagt dir doch, was nicht passt (https://github.com/fdivitto/TatungEinsteinDiagnosticFirmware) --> bei "Checking PSG": Fail hast du ein Problem mit Sound Generator / Keyboard Controller. Das passt auch zu deiner Fehlerbeschreibung wonach die Tastatur nicht reagiert. Der Controller Chip war zum Glück recht gebräuchlich und ist noch leicht zu bekommen, siehe z.B. https://www.ebay.at/itm/386141490147
    Ich würde also hier ansetzen und den tauschen, mit etwas Glück läuft dein Rechner dann.

  • Du hast natürlich recht und ich hätte die Geschichte von gestern zu Ende erzählen sollen.


    Den Sound-Chip AY-3-8910, der auf einem der Bilder oben zu erkennen ist, hatte Michael aufgrund der Diag-Fehlermeldung auch auf dem Schirm.

    Zufälligerweise hatte kkaempf gestern seinen Colour Genie EG2000 dabei, den er reparieren wollte. Davon haben wir uns den AY-3-8910 geliehen, weil wir davon ausgingen, dass der in Ordnung sein müsste. Vielleicht war es aber auch nicht. Jedenfalls hat sich durch den Tausch des Soundchips die Fehlermeldung nicht verändert.

    Als nächstes hat Michael auch noch IO28 getauscht (siehe im Bild an der oberen Kante). Dadurch ergab sich jedoch ebenfalls keine Änderung des Fehlerbilds.


    Sollten wirklich beide Sound Chips defekt gewesen sein?

    Da er jetzt gesockelt ist, kann ich natürlich nochmal den Versuch unternehmen, indem ich einen sicher geprüften Chip besorge.


    "Link arms,don't make them." - Du musst Gott für alles danken, sogar für einen Franken

  • Da fällt mir ein, ich hab ja selber noch einen Colour Genie rumstehen. Hab also jetzt auch nochmal den Soundchip von dort ausprobiert, aber leider mit dem gleichen Fehler Ergebnis wie oben beschrieben.

    Ich denke, das können wir damit fast ausschliessen, dass es der Sound Chip selber ist.

    "Link arms,don't make them." - Du musst Gott für alles danken, sogar für einen Franken

  • Guten Abend

    RetroGuy


    Da ihr vermutlich die Takterzeugung Clock nachgemessen habt, können wir dies wohl ausschliessen,


    Kannst du die Eingangspegel / Eingänge, und der Gates bei IO57 im Einschaltmoment nachmessen wie sich diese verhalten, dann ob die Verbindung von den Ausgängen IO56 niederohmig zu IO57 ist

  • Moin,

    da Sound und Keyboard ueber den gleichen weg in den Rechner kommen (so hatte ich es verstanden),

    koennte es nicht sein, das eine Taste von den vielen "haengt" (also ein dauergedrueckt signalisiert) und damit den Fehler erzeugt?

    Manchmal ist einfach doch zu einfach :)

    MfG

    Bernhard

  • Kannst du die Eingangspegel / Eingänge, und der Gates bei IO57 im Einschaltmoment nachmessen wie sich diese verhalten, dann ob die Verbindung von den Ausgängen IO56 niederohmig zu IO57 ist

    Ich stimme mich mit michaelengel ab, was er hier schon alles gemessen hat und dann soll er vielleicht hier im Thread nochmal ein Update geben.

    "Link arms,don't make them." - Du musst Gott für alles danken, sogar für einen Franken

  • Wir haben das Board auch komplett ohne Tastatur getestet.

    "Link arms,don't make them." - Du musst Gott für alles danken, sogar für einen Franken

  • Habe dies so interpretiert, daß die Matrix schon mal abgehängt war bei der Prüfung und keine Änderung sich ergab,

    Ja, die Matrix war abgeklemmt, die Tastenkontakte gesäubert, das Kabel und die Leiterbahnen bis zum AY-3-8910 durchgemessen, der AY-3-8910 und der 74LS02 (NOR-Gatter) an Pos. IO38 getauscht und alles soweit für gut befunden. Den 74LS138 an IO36 haben wir aus Zeitgründen jetzt noch nicht getauscht, der generiert aber zumindest den Chipselect für den VDP (TMS9129 Videocontroller) korrekt, sonst hätten wir kein Bild...


    Der Effekt ist auch nicht immer gleich – ab und zu funktionierten einige Tasten. Daher meine Vermutung mit einem Interruptproblem, was ja auch fanhistorie als nächsten zu messenden Schaltungsteil vermutet.


    Wenn ich das richtig im Kopf habe, verwendet der Einstein den Interrupt-Modus 2 (IM 2) des Z80:

    Zitat

    When an interrupt is requested, the Z80 reads the address of the interrupt handler from a vector table that is located at the following address in memory:

    (I register * 256) + Data bus value

    .. and then jumps to that address. E.g. if register I is $50 and the data bus value is $2A, the two-byte address of the interrupt handler is read from offset $502A onwards.

    Der /KYBDINT kommt an Pin 2 vom LS75 (IO55) an, wird da auf /IORQ und /M! einsynchronisiert, vom 8-zu-3 Encoder LS148 (IO56) dann (negierte Eingänge und low-active Interrupt-Signale) in binär 100 an /A2-/A0 (negierte Ausgänge!) des LS148 im Schaltplan gewandelt), was dann durch den LS244 an IO57 durch die Verdrahtung (Ausgangspin A0 vom LS148 an Eingangspin 1 vom LS244 usw.) um ein Bit nach links geshiftet (also mit Wert 8 = 1000) auf den Datenbus gelegt wird.


    Also ist es in der Tat erstmal sinnvoll zu prüfen, ob der Keyboard-Interrupt durchkommt. Der LS148 ist ein Prioritätsencoder und der Keyboard Interrupt an Eingang 3 hat die höchste (festverdrahtete) Prio (Eingänge 4-7 sind mit Pullup auf log. 1 gelegt), damit sollte auch kein anderer evtl. "hyperaktiver" :) Interrupt dazwischenfunken.


    Wenn der Interrupt kommt, müsste die CPU also an die Adresse (i-Reg << 8) + 8 springen. Das könnten wir mit dem Logicanalyzer-Setup sicher prüfen, aber 1. das Einstein-Board ist wieder bei RetroGuy und 2. der HP 1670A immer noch im FabLab Nürnberg...


    Das Hardwaremanual mit Schaltplänen usw. zum "Mitlesen" gibt's unter
    https://retrocmp.de/fdd/teac/Tatung-Einstein_01.pdf – freue mich, wenn jemand meine Schlussfolgerung mal gegenprüft...


    (Hint: bin immer noch auf der Suche nach einem LA – HP1670, 16500, 16700 oder so...)


    - Michael

  • Der Effekt ist auch nicht immer gleich – ab und zu funktionierten einige Tasten. Daher meine Vermutung mit einem Interruptproblem, was ja auch fanhistorie als nächsten zu messenden Schaltungsteil vermutet.

    Hmm ... ich hab den Einstein gestern bestimmt 20/30 mal ein- und wieder ausgeschaltet. Dabei hatte ich immer das gleiche Verhalten. Sprich, er reagiert auf keinerlei Tastenanschläge.

    "Link arms,don't make them." - Du musst Gott für alles danken, sogar für einen Franken

  • Ich denke, ich nehme den Einstein mit auf die CC. Vielleicht gibt es dort vor Ort nochmal die Gelegenheit, dass Problem genauer zu untersuchen.

    "Link arms,don't make them." - Du musst Gott für alles danken, sogar für einen Franken

  • Ich habe mir mal den Thread durchgelesen (überflogen) wegen der CC-LA Anfrage.

    Also ist es in der Tat erstmal sinnvoll zu prüfen, ob der Keyboard-Interrupt durchkommt.

    Habt ihr denn mal geschaut, ob alle Voraussetzungen für einen KYBDINT gegeben sind.


    Nachtrag:

    Die KYBD-Interrupts haben ja gar nichts mit dem PSG zu tun. Die Interrupts werden komplett unabhängig erzeugt.

    Also was sagt der PSG-Test aus?

    Die Entwickler haben sich viel Mühe gegeben.

    Ich würde erstmal mit dem LA das gesamte Interrupt-Verhalten testen.

    Weil wie gesagt PSG und KYBD-Interrupt haben nichts miteinander zu tun.

    ;------------------------------------
    ;----- ENABLE NMI INTERRUPTS
    (aus: IBM BIOS Source Listing)

  • Habt ihr euch den PSG-Test mal angeschaut?

    Es wird ein Software-Reset ausgelöst. Danach werden die Register auf den zu erwarteten Inhalt getestet. Bei einem Unterschied wird sofort abgebrochen. Erst danach werden einzelne Tasten getestet.

    Habt ihr mal getestet, ob der PSG richtig angesteuert wird? Also Pins BC1, BDIR.

    ;------------------------------------
    ;----- ENABLE NMI INTERRUPTS
    (aus: IBM BIOS Source Listing)

  • funkenzupfer und michaelengel: Könnt ihr euch dafür am Samstag evtl. mal ein wenig Zeit reservieren? Ich bringe den Einstein komplett mit. Wäre doch gelacht, wenn ihr das nicht hinbekommt. Ich unterstütze, indem ich nicht dumm dazwischen quatsche und mit "Hopfenblütentee" ;)

    "Link arms,don't make them." - Du musst Gott für alles danken, sogar für einen Franken

  • Um diesen Thread abzuschliessen gebe ich den aktuellen Stand auch hier noch einmal bekannt.


    Der Tatung Einstein TC01 läuft wieder! Auf der CC haben funkenzupfer und Toast_r entscheidende Analysen unternommen, die letztendlich zur Lösung des weiteren Problems geführt haben.


    Das erste Problem war eine defekte Z80 CPU (schwarzes Bild nach dem Einschalten). Das wurde bereits im Fablab Nürnberg eine Woche vor der CC von michaelengel gelöst.


    Das zweite Problem war dann etwas schwieriger zu fixen. Das Diagnose-Rom zeigte einen Fehler im Bereich PSG (AY-3-8910). Zuerst wurde deshalb der Logik-Chip IO28 (SN74LS02N) getauscht. Dabei wurden offenbar zwei Leiterbahnen beschädigt, die auf der CC gefixt werden konnten. Trotzdem zeigte das Diag ROM weiterhin einen Fehler im Bereich PSG und die Tastatur funktionierte auch nicht.


    Später haben wir dann festgestellt, dass der Rechner zumindest auf CTRL-Break reagierte, was zum Starten der Betriebssystem-Diskette von Laufwerk 0 führte. Das Xtal Betriebssystem wurde dann zwar geladen, aber danach reagierte der Computer auf keine weiteren Tastenanschläge. Nur die LED der Alpha-Lock Taste flackerte kurz, wenn man die Taste drückte. Eigentlich sollte man Alpha-Lock jedoch ein- und ausschalten können.


    An dieser Stelle lag die Vermutung nahe, dass der PSG Chip selbst doch ein Problem hat. Der AY-3-8910 ist nicht nur Sound-Chip, sondern hat auch I/O Ports zur Steuerung von Joysticks oder einer Tastatur-Matrix. Beim Einstein wird die Tastatur-Matrix darüber abgefragt.


    Zuhause konnte ich dann den AY-3-8910 PSG Chip tauschen und siehe da, der Rechner läuft und die Tastatur funktioniert. Das bedeutet, dass der ursprüngliche Chip tatsächlich einen Fehler hatte.


    Der Tatung Einstein geht nun wieder ohne Einschränkungen und auch das Diagnose ROM läuft bis zum Ende durch.


     


    Der Einstein hat zwei 3 Zoll Diskettenlaufwerke mit Direktantrieb (ohne Riemen). Die Laufwerke sind anscheinend recht zuverlässig, denn die beiden mitgelieferten Disketten funktionierten auf Anhieb.


    funkenzupfer: Könntest du hier evtl. noch deine Erkenntnisse ergänzen oder mich korrigieren, falls ich was falsch beschrieben habe? Danke.

    "Link arms,don't make them." - Du musst Gott für alles danken, sogar für einen Franken

  • Dann will ich mal meine Erfahrung beisteuern.

    Es war wieder eine Fehlersuche, bei der man sich selber auf den Fuessen steht. Messergebnisse mit dem LA muessen auch richtig interpretiert werden, sonst dreht man sich im Kreis.


    Durch eine getrennte Leitung wurde der PSG gar nicht angesteuert. (Bild in Post #1, "Checking PSG... FAILED")

    Dadurch war der Bus beim ersten Lesen des Registers am floaten, hatte also hauptsaechlich den Parameter des letzten Opcodes auf dem Bus. Das war mir nicht sofort klar. Nachdem wir die Leitungen vom LS02 zum PSG wieder repariert haben, lief der Test schon deutlich weiter, dann machte das Register 0E und/oder 0F Probleme.


    Und hier hat mich jemand richtig verar...t.

    Im Quelltext des Diagnoseprogramms steht

    Zitat


    ; read and check IO registers 0Eh and 0Fh (port A and B)

    im Datasheet liegen die IO-Ports auf R16 und R17.

    pasted-from-clipboard.png

    R14 und R15 hatten irgendwas mit dem Envelope zu tun. Irgendwie passte der Test nicht zu den Registern.

    Trotzdem passte der erwartete Registerinhalt von 0E und 0F nicht zum Datasheet. Nach dem Reset sollten alle Register 0 enthalten.

    An der Stelle habe ich das Diagnoseprogramm als fehlerhaft ignoriert.


    Aus den restlichen Erkenntnissen mit dem Ctrl-BREAK lag mein Verdacht beim PSG, was sich ja dann auch bestaetigt hat.


    Die Register des PSG sind nicht durchgaengig nummeriert.

    pasted-from-clipboard.png

    Waehrend der Messungen habe ich dem keine Bedeutung geschenkt, sowas gibt's ja oefter.

    Allerdings sind mir gestern in der inc-Datei des Diagnoseprogramms diese Definitionen aufgefallen:

    Die Registernummern haben nicht direkt mit dem Binaerwert zu tun. Register'wert' 0E und 0F sind also doch die IO-Ports.


    Und gerade merke ich, das die Nummer hinter dem R in Oktal gelesen dem Binaerwert des Registers entspricht.

    Das ist echt gemein!

    Wer kommt denn darauf?


    Aber gut, der Tatung laeuft, das Diagnoseprogramm ist doch richtig. Alles gut! Wieder was gelernt.

    ;------------------------------------
    ;----- ENABLE NMI INTERRUPTS
    (aus: IBM BIOS Source Listing)

  • zum Thema 'Wer die obere Zahl nicht lesen kann...' :tüdeldü:

    :)

    Ich kann sie ja lesen, aber in dem Format stellt man keine Oktalzahl dar.

    ;------------------------------------
    ;----- ENABLE NMI INTERRUPTS
    (aus: IBM BIOS Source Listing)