NEC8201 +8192

Nach einem kleinen Ausflug auf einer großen Auktionsplattform landete einige Zeit später ein NEC 8201A bei mir auf dem Tisch. Kaum eingetroffen wurde umgehend der Bastelmodus aktiviert.

Die erste Frage, nachdem ich die Kiste zerlegt hatte, war dem Speicher gewidmet. Denn so viele Steckplätze und kein einziger Chip drin? Das schreit ja nach einer Speichererweiterung. Standardmäßig hat der Rechner ja auch nur ca. 12KB Speicher. Dafür aber reichlich Platz für weitere RAM-Bausteine. Darüber hinaus verfügt er über ein interessantes RAM-Banking-Konzept, soweit ich das dem Service-Manual entnehmen konnte.

Doch in die Steckplätze passen, entgegen den ROM-Bausteinen mit dem Betriebssystem und dem Option-ROM, keine üblichen Standardbausteine.

Zum Einen haben die Steckplätze eine gänzlich abweichende Pinbelegung und zum Anderen passen diese mechanisch überhaupt nicht hinein. Die Steckplätze sind einfach zu breit. Wenn man sich den internen Speicher ansieht, wird auch deutlich warum: Das 8K-RAM-Modul besteht nämlich aus vier einzelnen 2KB -Chips in SMD-Bauweise auf einem Platinenträger.

Im Netz gibt es zwar den einen oder anderen Ansatz für Speichererweiterungen. In diesem Zusammenhang auch ein paar ernstgemeinte Hinweise auf die teilweise fehlerhaften Schaltpläne des NEC-8201. Doch das sollte einen ja nicht davon abhalten, sich dem Problem einmal anzunehmen 😉

RAM im NEC8201

Grundlegend ist der RAM-Steckplatz im NEC in 4 einzelne Speicherblöcke zu je 2KB organisiert. Dazu werden auf dem Mainboard jeweils 4 getrennte CS-Signale aus den Adressleitungen mit Hilfe eines Decoders (74138) generiert.

Auf dieser Basis wurde nun ein etwas „unkonventioneller“ Ansatz für eine Speichererweiterung gewählt. Als Baustein kam dazu ein 62256 zum Einsatz. Die vier getrennten CS-Signale des NEC wurden kurzerhand als Adressleitungen zweckentfremdet. Dies ist, milde ausgedrückt, pure Verschwendung von Speicherplatz. Von den 32KB des Chips werden dadurch nur 8 genutzt. Die restlichen 24KB des Bausteins liegen brach. Aber die Alternative wäre, die CS-Erzeugung auf dem Mainboard zu umgehen, oder diese mit entsprechenden Encodern wieder zu 2 Adressleitungen zusammenzuführen. Aufgrund der Einfachheit wurden nun die 4 getrennten CS-Signale kurzerhand als „Speicherblockauswahl“ verwendet und mit Hilfe einem NAND-Chip das dann noch fehlende CS-Signal wieder zusammengeführt:

Eingriffe in das Mainboard oder ein heranholen der fehlenden Adressleitungen zu den Speicherplätzen mit zusätzlichen Leitungen entfällt dadurch. Die Platine ist aufgrund der recht einfachen Schaltung auch sehr übersichtlich:

Was soll ich sagen: Platine bestückt, Chipkonstruktion eingebaut: läuft:

🙂

Der Prototyp des RAM-Modules:

Der Entstörkondensator wurde aufgrund der Bauhöhe auf der Platinenrückseite montiert

Nun noch die restlichen Steckplätze mit der Chipkonstruktion bestücken und ran an die Speicher-Bank #2 und #3.

Zwei mal drei macht vier …

… und drei macht neun!

So war zu mindestens das Ergebnis der Rechnung wenn man Pippi Langstrumpf Glauben schenkte.

Dass andere, allen voran ein CoProzessor (FPU), eventuell auf ein anderes Ergebnis kommen, ist hier nur eine unwichtige Randnotiz.

Aber ich finde ja, dass 8 Bit völlig genügen, um Chaos im Leben anzurichten oder auch ein wenig Ordnung rein zu bringen. Kommt immer drauf an auf welcher Seite man sich gerade befindet….

Aber eines hat diese solide und erfahrende Technik ja immer: Rechenoperationen sind schon eine kleine Herausforderung. Zumal man von der heutigen Technologie schon ein wenig verwöhnt ist. Denn gerade in der Zahlenwelt hört die Welt nach 8 Bit nicht einfach auf zu existieren.

Aber da war doch mal was mit Co-Prozessoren für die 8086/8088-Welt die man (für damals sauviel Geld) nachrüsten konnte. Die eine oder andere Software setzte auch einen solchen Prozessor voraus, allen voran AutoCAD. Aber auch da gab es bereits Softwarelösung mit dem 8087-Emulator wenn man sich keinen Co-Prozessor leisten konnte.

In einem alten Siemens Schaltungsbuch bin ich dann beim Schmökern auf einen SAB 8231 gestoßen. Nach ein paar weiteren Recherchen, vor allem im S100-Umfeld (CompuPro) und auch einer Apple II-Erweiterungskarte, fand ich ein paar Schaltungsideen und Anregungen, woraus dann eine fragwürdige Idee entstand: würde sowas auch für den MFA funktionieren?

Denn bei Rechenoperationen ist das MAT als auch das SP1-Basic bzw. dessen Tiny-Basic-Unterbau, auf reine 16 Bit Integer beschränkt. Routinen für Fließkommazahlen gibt es für verschiedene 8-Bit-Prozessoren zwar auch, doch viele diese Bibliotheken sind schon tief in der Ecke „aufwändig“ verwurzelt.

OK, Idee ist im Kopf platziert, dann kann es ja mal los gehen … ein paar Tage immer wieder mal drüber nachdenken, den einen oder anderen Schaltplan überfliegen und weiter an der Idee brüten. Doch ein Problem bleibt: erst mal einen 8231 bekommen, denn die klassischen Dealer haben das Zeug nicht mehr im Portfolio. Bleibt also nur noch Ebay. Uhps, nicht so richtig günstig, aber was soll’s, der Spaß ist es wert.

Nach ein paar Wochen lag nun dieser unscheinbare Chip aus den USA auf dem Tisch und die eine oder andere Doku daneben.

Das ganze erst mal dekorativ auf das Breadboard genagelt und mit einer Hand voll Drahtbrücken zu einem kleinen Chaoskunstwerk verfeinert.

Nachdem nun dieser Kabelverhau vollendet war, noch einmal drüber schauen, um eventuelle Fehler auszuschließen. Denn bei diesem Teil wird immerhin mit 5V und 12V gearbeitet. Fehlerhafte Leitungsverbindungen machen sich da echt nicht gut.

Nun noch die Anschlüsse an den MFA legen, und los gehts. Einschalten… es raucht nichts und der MFA verhält sich normal. Auch das Oszilloskop hat keine größeren Einwände bei den einzelnen Signalen, alles so oder so ähnlich wie erwartet.

In der bisher gefunden Doku war nun eine kleine Routine mit Testbefehlen um die Zahl Pi aus diesem kleinen Haufen Silzium im Keramikmantel zu locken:

$1A auf den Steuerport geben und den Datenport auslesen: $02 $C9 $0F $DA.

Wow, das Teil scheint zu funktionieren. Ich hatte aus der Schulzeit Pi zwar etwas anders in Erinnerung, aber das sind doch mittlerweile alles unwichtige Randbereiche… 😉

Gleich die nächste Testroutine ausprobieren: Zwei Werte in den Datenstack geben und die gewünschte Operation ins Steuerregister hinterherwerfen:

Datenstack ausgelesen und wer hätte es gedacht: $30 und $40 macht ziemlich genau $70

Der Prototyp scheint ja offensichtlich (wieder erwarten) zu funktionieren, denn insgeheim habe ich mit einer aufwändigen Fehlersuche gerechnet… Aufgrund des ersten Schaltungsentwurfes ging es nun direkt an die Leiterplatte und noch die eine oder andere Erweiterung des Schaltungsentwurfes. Eine Anzeige der abgeschlossenen Rechenoperation wäre doch auch ganz nett.

Das ist nun aktuell der Stand der Entwicklung:

So sieht aktuell die dazu passende Leiterplatte aus:

Was auch immer zu dieser durchgeknallten Idee führte, sie scheint zu funktionieren und könnte den MFA zu einem unerwarteten Leistungsschub verhelfen. Denn neben den relativ einfach anzuwendenden Rechenoperation im 32Bit Integer- oder Floatpoint-Umfeld des CoProzessors 8231, sehen die bisher gefundenen Unterroutinen und Bibliotheken aus dem 8085-Umfeld doch echt alt (und langsam) aus. Eventuell kann man die FPU-Karte ja auch im CP/M-Umfeld einsetzen, aber meine rudimentäre CP/M-Kenntnisse von damals sind mittlerweile leider völlig veraltet.

Kurzer Schaltungsüberblick:

  • Adressselektion auf 7 Bit
  • Ready-Leitung mit Germaniumdiode an den MFA-Bus (zur gleichzeitigen Nutzung mit BUS-Signalgeber und Floppy-Baugruppe) – per Lötbrücke deaktivierbar
  • LED-Anzeige des Ready-Signals beim Ende einer Rechenoperation
    (Anzeige wird beim nächsten Steuerbefehl bzw. Reset gelöscht)
  • LED-Anzeige bei einem Zugriff auf den FPU (sieht irgendwie wichtiger aus wenn da was blinkt …)
  • Interrupt bei Ende einer Rechenoperation, per Jumper einstellbar
  • Auswahl des Interrupt-Signalverhaltens (Pulse/Dauerhaft)
  • Auswahl des END-Verhaltens (Pulse/Signal)

Zusätzlich ist auf der Platine noch Platz für einen Spannungswandler und separaten Taktgenerator vorgesehen. Dies ermöglicht z.B. den MFA nur mit einer 5V-Spannungsversorgung zu betreiben, denn normalerweise werden die 12-Volt-Pegel nicht immer zwingend benötigt. Denn die nächste durchgeknallte Idee ist schon am entstehen…. 😉

Rein oder raus

Schnittstellen hat man nie genug. So auch in der MFA-Umgebung. Ein Interface für den PC und gleichzeitig ein Interface für Load / Save Aufgaben in einer Karte, das war der Plan… der dann in diesen mündete:

Schaltplan der Multi-Seriell-Karte

Platinenlayout

Baudrate programmierbar

Immer wieder Karte raus/ Karte rein nur um die Baudrate mal schnell umzustellen? Das ist nicht nur lästig sondern echt nervig. Das führte zu einer programmierbaren Baudrate mit Hilfe eines OUT-Befehls über den Standardbaustein IC3 74273 und jeweils einen Zähler mit Voreinstellung (IC16/17 74193).

Beschreibung

Grundsätzlich wird der Takt des Quarzoszillators heruntergeteilt. Die Grundfrequenz für die anschließende Baudratenerzeugung kann mit JP2 auf :2 oder :4 eingestellt werden. (153 bzw. 311 kHz).

Achtung: Die Taktrate wird am Ende nochmals durch 2 geteilt (IC9 7474), damit das Signal des Zählers wieder symmetrisch wird.

Adresse
(DIP-Schalter)
Funktion
$x0UART 1, Datenregister
$x1UART 1, Steuerregister
$x2UART 2, Datenregister
$x3UART 2, Steuerregister
$x4UART 1 + 2: Baudrate
Low-Nibble        UART 1
High-Nibble       UART 2
Beispiel:
MVI A, $F8
OUT $F4
Programmierung der Baudrate für
UART 1 : 1200
UART 2 : 9600
(bei JP2 auf Stellung :2 und Teiler der UART /16)

Default (nach Reset): Baudrateneinstellung: 0
$x5 – xFnicht belegt

Baudratentabelle

Optionales Modul für RS232

Die Platine bietet für RS232-2 bzw. X3 auch die Alternative, ein RS232-Modul (z.B. erhältlich bei Reichelt) einzusetzen. Dadurch kann z.B. ein PC direkt mit Micro-USB-Kabel angeschlossen werden.

Beispiel FT232-Modul

Die USB-Buchse ragt dabei durch die Öffnung der unteren SUB-D-Buchse.

FT232 auf der Platine montiert

Jumper

Um nicht den Stecker bei einer abweichender Pinbelegung umlöten zu müssen, wurde eine Jumperleiste eingebaut. Diese ermöglicht die gängigsten Einstellungen für eine abweichende Pinbelegung im RS232-Umfeld direkt vorzunehmen.

Jumperleiste für die Verbindung zu den SUB-D-Buchsen
PinFunktion
CTS – 8CTS auf Pin 8 von X2/X3
RTS – 7RTS auf Pin 7 von X2/X3
CTS – 7CTS auf Pin 7 von X2/X3
RTS – 8RTS auf Pin 8 von X2/X3
CTS – RTS eCTS-RTS brücken (extern RS232-Anschluss)
CTS – RTS iCTS-RTS brücken (intern)
RxD – 2RxD auf Pin 2 von X2/X3
TxD – 3TxD auf Pin 3 von X2/X3
RxD – 3RxD auf Pin 3 von X2/X3
TxD – 2TxD auf Pin 2 von X2/X3
RxD – TxDRxD auf TxD intern gebrückt
(für Testzwecke)
Beispiel für eine Jumper-Belegung

Beispiel: kein Hardware-Handschake zwischen Sender und Empfänger (CTS/RTS intern und extern gebrückt) und eine übliche Pinbelegung für RxD und TxD

DTR/DSR

Beim Einsatz der Video 8.4-Karte wird unter anderem das DSR-Signal benötigt (DTR auf der Videokarte). Hierfür kann über den Lötpunkt /DSR.1(2) eine Brücke auf den Bus (Pin 28c) gelegt werden.

DTR und DSR

DTR und DRS sind hier jeweils für UART 1 und UART 2 als Pins zur freien Verwendung herausgeführt. Beim Einsatz der Video 8.4-Karte kann das DTR-Signal hierüber zur Verfügung gestellt werden.

Die fertige Multi-Seriell-Karte

Hunting high and low *

Es war nur ein beiläufiger Link, irgendwo in einem Internet-Beitrag, der mich auf die Seite von Prof. Dr.-Ing. Röbenack leitete. Diese dort beschriebene relativ einfache Schaltung, macht aus wenigen Bauteilen, einen TTL-Prüfstift. Ein kleiner Prüfstift um nicht immer sofort mit dem Digital-Oszilloskop auf Pegelsuche zu gehen, hörte sich interessant und irgendwie praktisch an. Zumal ich aktuell keinen TTL-Prüfer habe oder einen den ich mal hatte nicht mehr finde…

Quelle: Prof. Dr.-Ing. Röbenack - https://www.roebenack.de/content/ttl-logiktester
Quelle: Prof. Dr.-Ing. Röbenack – https://www.roebenack.de/content/ttl-logiktester

Die Original-Schaltung und Beschreibungen finden sich unter https://www.roebenack.de/content/ttl-logiktester

Angeregt durch diese Schaltungs-Idee, wurde als erstes der originale Schaltplan in EAGLE übernommen und mit einigen Konstruktionsteilen (PAD1/2/5/6, SHIELD) ergänzt:

Die Schaltung bietet sich, durch die überschaubare Anzahl an Komponenten, gerade zu für eine Miniaturbauweise an. So wurde nach einigen Experimenten die folgende Platinenvariante entworfen:

Die Ausmaße der Platine betragen ca. 68 x 13 mm.

Wegen Platzmangel musste allerdings ein Widerstand (R3) auf die Lötseite wandern, bzw. unter das IC, sofern ein Sockel dafür verwendet wird. Der Prüfanschluss erfolgt über einen 4mm-Laborstecker. Dadurch kann man den Prüfstift sowohl auf Standard-Prüfspitzen als auch Krokodilklemmen oder Prüfklemmen aufstecken. Für die Spannungsversorgung kommt ein Anschlusskabel mit USB-A-Stecker zum Einsatz. Dadurch ist die Spannungsversorgung mit jedem üblichen USB-Anschluss gesichert.

Die fertig bestückte Platine
Prüfspitze und Spannungsversorgung werden über Drahtbrücken auf der Platine fixiert
Der fertig montierte TTL – Prüfstift

Nun das ganze in ein passendes Gehäuse montieren und fertig ist der TTL-Prüfstift. Durch die kompakte Bauweise bieten sich hier verschiedene Alternativen an. Angefangen von klassischen Gehäuseformen bis zu dünnen Installationsrohr sind der Fantasie keine Grenzen gesetzt. Aber warum ein Gehäuse? Transparentes Epoxidharz bzw. Gießharz um die Technik gegen Kurzschluss und Beschädigung zu schützen, ist auch eine denkbare Alternative. Bleibt so doch der Blick auf die fertige Platine

*a-ha meinte mit dem Titel ihres Songs aber vermutlich keine logischen Pegel …

Speicher satt

Ein Problem hat mich schon immer beim MFA gestört: Das Speicherbild bzw. der Umgang mit den verschiedenen Speicherkarten. Es gab eine 8K-Karte die man in verschiedene Speicherbereiche einblenden konnte. Dann gab es irgendwann die 16K-Karte, und die Karten mit Boot-EPROM.

Bei all diesen Karten musste jeweils genau darauf geachtet werden welche mit welcher kombiniert und an welchen Speicherbereich diese jeweils aktiv war.

Eine Idee

Die ersten Ideen einer flexibleren Speicherkarte waren relativ schnell geboren. Sie sollte die vollen 64KB abdecken und wenn möglich sogar mehr über ein noch zu entwerfendes Banking-Verfahren. Auch die Boot-Eprom-Funktion sollte wieder realisiert werden.

Für die Auswahl des Paging-Bereiches kamen verschiedene Ideen in Frage. Allen voran über einen Out-Befehl. Doch hier wäre vermutlich irgendwann das Problem aufgetreten, dass es zu Überschneidungen bzw. überlappung mit bestehendenen Interfacekarten kommen könnte. Andere Alternativen mit PAL-Chips wurden ebenfalls verworfen, da aktuell keine entsprechende Programmierumgebung vorhanden ist und der Charme des MFA darunter leiden könnte. Auch das jederzeitige Auslesen sollte irgendwie machbar sein.

Heraus kam eine direkte 16-Bit Speicheradressierung die beliebig einstellbar ist. Durch das Schreiben in eine Speicherzelle wird die entsprechende Paging-Seite in einen einstellbaren Speicherbereich eingeblendet. Durch das Schreiben in die Speicherzelle kann diese im Programmcode jederzeit wieder in Erfahrung gebracht werden.

Auch eine Anzeige der aktuellen Paging-Seite wäre nett, und so kommt nun auch eine 7-Segment-Anzeige mit auf die Platine.

Der erste Entwurf der Platine, der eher einem Prototyp gleicht. Denn der erste Entwurf der Speicherkarte hatte 3 grobe Layout und Schaltungsfehler.

Peinlichkeit 1: Bei der Anzeige-LED zum aktiven ROM wurde doch glatt der Vorwiderstand vergessen.

Peinlichkeit 2-4: der 7485 reagiert nicht zuverlässig auf Low-Input, deshalb wurde nachträglich auf High-Signal für die Adress-Selektion umgestellt

Die überarbeitete Version der RAM/ROM-Paging-Karte

Die fertige RAM-Karte

Die Frontblende mit Anzeige-LED und Schalter für das manuelle aktivieren des EPROMs

Die Speicherkarte in Betrieb (Paging-Seite 7 ausgewählt)

Funktionsbeschreibung der Karte

Grundsätzliches

Die Karte besteht im wesentlichen aus vier 32kb Speicher-Chips (27256 und 2 x 62256 o.ä.). Ein zusätzlicher 32KB RAM-Chip ist das Paging-RAM.

Paging-Funktion

Der zusätzliche Paging-RAM-Chip (IC4) wird in 8 jeweils 4kb-Seiten in den vorhandenen MFA-Speicherbereich 8000 – E000 eingeblendet. Der gewünschte Bereich ist dabei über den DIP-Schalter SW1 auswählbar. Achtung: F000 macht beim MFA wenig sinn, denn dieser Bereich ist ja vom System belegt, unter anderen der Stack.

Die Auswahl der gewünschten Seite wird über einen Memory-Write-Befehl auf eine, über die Hex-Drehschalter (S1-S4) einstellbare, 16-Bit-Adresse vorgenommen. Über folgenden Code wird eine Seite des RAM-Paging aktiviert:Code

MVI A,03h    ; Seite 4
STA 0FE00h   ; In die per Schalter eingestellte Adress-Selektionsadresse schreiben

Dadurch dass hier gleichzeitig geschrieben wird (Pageselektor-Chip IC11 und System-Speicher) kann jederzeit die gerade aktuell eingestellte Paging-Seite wieder in Erfahrung gebracht werden.

Boot-Rom-Funktion

Die Boot-ROM-Funktion bzw. das Abschalten des EPROM erfolgt, wie beim Original auch, durch einen Schreib- oder Lesebefehl auf eine Adresse >= 8000h. Ein aktives EPROM wird zusätzlich über die grüne LED an der Frontblende angezeigt.

Da auch hier der untere Speicher parallel zur Verfügung steht, kann bei aktivem EPROM in den Speicher 0000h-7FFFh geschrieben werden. Dies kann man dafür nutzen, über ein den KMD+> – Befehl COPY den gesamten Bereich von 0000h-7FFFh in den Bereich 0000h zu kopieren und anschließend mit einem Lesebefehl auf eine Adresse im Bereich 8000h bis BFFFh das EPROM zu deaktivieren. Nun befindet man sich mit dem MAT-System im RAM. Das hat den Vorteil, nun kann man Inline am Systemcode herumspielen.

CP/M macht’s vor

Dadurch dass das gesamte MAT85+-System zur Verfügung steht, sind auch alle Floppy-Funktionen vorhanden. Somit kann man sein MAT85+-System, das man sich vorher auf Diskette gespeichert hat, nun im „Boot-Vorgang“ in den Speicher laden, auf RAM umschalten und durchstarten. Da die Datei sich den Startbereich ja gemerkt hat, muss man dazu nicht mehr viel auswählen, außer dem gewünschten Dateinamen (sprich „OS“-Variante).

Entdeckte Fehler

Bei der ersten Inbetriebnahme ist nach dem Einschalten immer wieder das EPROM abgeschaltet worden und das System lief buchstäblich ins leere.

Erst nach einiger Suche und Einzelschrittmodus des Startvorganges (waren schon einige Schritte die das System durchführt bevor da was passierte) ist ein „Bug“ des Systems aufgefallen. Dazu ein Auszug aus dem MAT85-Quellcodes:

RESET:  LXI SP,MONSTK ;STACK INITIALISIEREN
[-]     CALL   BPTREM         ;Breakpointtabelle löschen <-- jetzt schon?
        CALL   CASINIT        ;CASSETTEN I/O INITIALISIEREN
        MVI    A,$C3
        STA    SERIN          ;ADRESSEN DER SERIELLEN ROUTINEN VORBESETZEN
        STA    SEROUT         ;MIT DEN NORMALEN ROUTINEN
        LXI    H,SERI
        SHLD   SERIN+1
        LXI    H,SERO
        SHLD   SEROUT+1
        LXI    H,RESBUF       ;POWER UP ODER WARMSTART ?
        MVI    A,$5A
        CMP    M
        JZ     TASTERRESET    ;WARMSTART, RAM IST SCHON INITIALISIERT
        MOV    M,A            ;POWER UP, BZW. KALTSTART
        LXI    H,BRAM         ;RAM INITIALISIEREN (=0 SETZEN)
        MVI    C,ERAM-BRAM
RESET2: MVI    M,$0
        INX    H
        DCR    C
        JNZ    RESET2
[+]     CALL   BPTREM         ;Die Breakpoint-Tabelle erst hier zu
                              ; löschen macht irgendwie mehr Sinn
        LXI    H,USRSTK       ;ANWENDER-STACK INITIALISIEREN
        SHLD   SPWERT
        MVI    A,'H'
        ...

Die Zeile 192 müsste meines Erachtens an seiner Stelle entfernt und nach der Zeile 212 wieder eingefügt werden. Denn nach der Initialisierung des Systemspeichers (ab Zeile 208 ERAM-BRAM) darf er gerne seine Breakpoint-Tabelle löschen. Direkt nach dem Einschalten eine noch nicht initialisierte Breakpoint-Tabelle zu löschen, macht zum einen wenig Sinn und kann durchaus zu Schreibvorgängen in einen Speicher >=8000h führen. Dadurch wird aber „aus versehen“ das Boot-Eprom abgeschaltet. Da aber das parallele RAM noch keinen vernünftigen Code enthält, geht das schief und das System bleibt hängen (man könnte auch von einem Blue-Screen reden, das wäre gegenüber dem MFA aber fast eine Beleidigung … 😉 )

Erweiterungen

Nichts ist perfekt, so auch diese RAM-Karte. Derzeit sind folgende Erweiterungen geplant:

  • Erweiterung auf 64KB Paging-RAM (Seiten 0-F)
    Dazu muss ich aber noch ein wenig Platz auf der Platine schaffen oder die 62256 in der, nur schwer erhältlichen, schmalen Gehäuseform wählen oder in SMD ausführen
  • Batteriepufferung
    Der komplette Speicher über eine Batterie (oder Akku) puffern. Ich verspreche auch, dass ich dafür keine Freileitungen verwende …  MFA – Reaktivierung nach über 30 Jahren
    Das hätte den Vorteil, dass das Betriebssystem nicht immer neu gebootet werden muss, z.B. bei Anpassungen am Programmcode (Löschtaste sollte aber noch vorhanden sein)
  • EEPROM-Unterstützung
    Eventuelle Anpassungen zur Nutzung von EEPROM-Bausteinen

Wenn jemand noch weitere Ideen hat, gerne her damit. Wenn diese umsetzbar sind, kann die Karte ja nur noch besser werden.

Hey CPU – was machst Du denn gerade?

Die nur halbfertig montierte CPU-Karte sollte nun auch fertiggestellt werden. Nur eine Frontblende mit einem Loch für den Resettaster ist aber irgendwie zu wenig.

Gerade im Entwicklungsmodus wäre es doch nett, wenn die auf der BUS-Signalanzeige herausgeführten Signale auch ohne diesen angezeigt werden könnten. Diese Idee führte dann zu einer sehr einfachen LED-Anzeige der wichtigsten CPU- bzw. IO/Memory-Signale.

Diese kleine Platine findet auch als Huckepack-Einheit auf der CPU-Karte platz und wird direkt am ECB-Steckplatz verdrahtet.

Die Zusatzplatine wird mit Abstandshalter direkt auf die CPU-Karte montiert

Die Frontblende nun im professionellen Outfit

Neue Stromversorgung für den MFA

Nachdem nun die ersten Schritte zur Reaktivierung des MFA-Computers erfolgt sind, musste unbedingt eine vernünftige Stromversorgung her. Denn dieser Schandfleck aus der Bastelzeit war nicht nur grauslich, da geht es schließlich auch um Sicherheit.

Doch das MFA-Originalnetzteil ist auch nicht gerade der Brüller. Denn diese Einheit dient mehr der Wärmeerhaltung anstatt der Stromversorgung. Vielleicht sollte man hier zuerst über einen Kaffeetassenhalter zur Wärmerückgewinnung nachdenken …

Nach ein wenig Recherche bei den einschlägigen Elektronik-Dealern habe ich mich dann für das Schaltnetzteil RT-65B entschieden. Neben der kompakten Bauform liefert dieses Netzteil auch die MFA-typischen Spannungen.

Bezugsquelle: Reichelt, Artikel-Nr. MW RT-65B

Für die Montage wurde dazu kurzerhand eine Lochrasterplatine als Träger zweckentfremdet und die Anschlüsse entsprechend verdrahtet:

Jetzt noch die Zugentlastungen montieren, und ab ins Gehäuse.

Da fehlt doch jetzt was?

Doch wie sieht es jetzt mit der Blende bzw. den typischen 4mm-Laborbuchsen der ursprünglichen MFA-Spannungsversorgung? Eine Spannungsstabilisierung ist ja nun nicht mehr erforderlich, denn das Schaltnetzteil liefert sehr saubere Spannungen. Erst mal die Doku des Originalnetzteils raussuchen und mal schauen was man daraus machen kann. Denn mit dem freien gewordenen Steckplatz kann man ja eventuell etwas nützlicheres anfangen.

Die 4mm-Buchsen und die Kontroll-LEDs sollten auf jeden Fall wieder rein. Auch das (noch nie benutzte und fragwürdig erzeugte) Taktsignal wäre schön, wenn das (auch nur aus Nostalgiegründen) wieder verfügbar wäre. Und wie wäre es mit USB-Anschluss für reine Stromversorgung? Denn heut zu Tage werden viele Komponenten über USB mit Strom versorgt und von solchen Steckplätzen hat man ja nie genug.

EAGLE ist wie Fahrrad fahren

Nein, definitiv nicht! Meine letzte Eagle-Erfahrungen liegen auch schon 30 Jahre zurück und seit der Zeit hat sich offensichtlich einiges getan im PCB-Bereich. Aber nach ein wenig Lektüre und viel rumprobieren, kamen dann wieder die Erinnerungen zurück und diese Platine dabei heraus:

Das ganze jetzt nur noch zum PCB-Hersteller (JLCPCB macht echt einen super Job für überschaubares Geld!) und beim Frontplattenhersteller (Schaeffer AG) eine hübsche Blende fräsen lassen:

Über den USB-Anschluss können nun verschiedene Geräte mit Strom versorgt werden und die Anschlüsse für +5V und GND sind nun auch mehrfach vorhanden (denn meist war immer einer zu wenig).

Der Taktausgang kann nun zusätzlich an der Frontblende abgegriffen werden. Diese Signal ist über den NE555 sowie das Potentiometer auch im Bereich von 30 Hz bis. ca. 200 Hz regelbar. Das symmetrische Rechtecksignal wird durch eine klassische Flip-Flop-Schaltung (TTL 7474) erzeugt. Da in dem Baustein 2 FlipFlops enthalten sind, war auch noch eine Option zum einstellen des Teiler (:2/:4) möglich.

MFA resurrection

M ATRIX FA resurrection oder besser „aus dem Regal wieder zurück ins digitale Leben“.

Nach über 30 Jahren den dieser Computer im Tiefschlaf verbrachte, überkam mich ein schwer zu beschreibender Drang, diesen kleinen Schatz wieder zu bergen und zurück in das digitale Zeitalter zu befördern.

Die ganze Hardware erst mal sichten und zusammen mit der Doku einen ersten Überblick verschaffen. Neben viel Staub wurden auch die ersten Erinnerungen wieder aufgewirbelt. Das waren noch Zeiten, als der Lötkolben nie kalt wurde und die alte Cherry-Klappertastatur etliche Programmier- (und meist verbunden mit Wut-) Ausbrüchen ertragen musste…

Neben den ganzen Karten gab es aber ja noch die entsprechende Doku und Aufzeichnungen die sich aus der damaligen Zeit auch noch in Ordnern, Mappen und als lose Blätter irgendwo angesammelt hatten.

Hier gilt es jetzt erst einmal einen Überblick zu verschaffen. Denn unter anderem musste auch mal geklärt werden, für was diese teilweise schon als merkwürdig anmutenden Umbauten gut waren.

So fand sich auf der 8-Bit-Ausgabebaugruppe eine zusätzliche Lochrasterplatine wieder:

Diese Erweiterung könnte ein Soundgenerator sein, der zwei kaskadierte 74193 zu einen „programmierbaren“ Frequenzgenerator zweckentfremdet. Aber sicher bin ich mir da nicht mehr so richtig. Würde aber auch den Taktgenerator (4093) erklären. Der Schalter war vermutlich nur für den Nervmodus ein/aus.

Ein ebenso interessantes Bild, gibt die Änderung auf der 8KB-Speicherkarte ab:

Eine interessante Verdrahtung bei dieser Speichererweiterung. Auch hier liegt die Wahrheit mehr in der Vermutung. Definitiv aber eine Aufrüstung der 2K-RAM-Bausteine auf 8K und zusätzlich (vermutlich) eine Akku-Pufferung der RAM-Chips, denn sonst machen die 10kOhm-Widerstände am OE-Signal nicht so richtig Sinn. Da aber kein Akku montiert war, blieb mir hier zum Glück die aufwändige Sanierung der Hinterlassenschaften von „inkontinenten Akkus“ erspart.

Apropo Strom: ohne Strom brennt auch in der kleinsten Hütte kein Lichtlein. Aber diese Stromversorgungs-Einheit an der Stelle des Original-MFA-Netzteils kommt definitiv in die Kategorie: „elektrische (Jugend-)Sünden“. Denn professionell sieht definitiv anders aus und besteht nicht aus einem ausgeschlachteten und provisorisch eingebauten PC-Netzteil…

Andere Karten sind meist nur geringfügig modifiziert bzw. nicht vollständig aufgebaut. Allen voran eine der CPU-Karten mit dem per Zweikomponentenkleber „montierten“ Reset-Taster. Damals ging mir eben Funktion vor Perfektion. Der Quarz der CPU befand sich hier übrigens auf der Rückseite der Platine. Fragt mich bitte nicht warum …

Und was kommt jetzt?

Doch wie geht es jetzt mit dem ganzen Zeug weiter ? Sichten, entstauben und wieder einmotten?

Nix, da! Zurück in die gute alte Welt der 8-Bit-Mikrocomputer. Scheiß auf grafische, überzüchtete 64Bit-Umgebungen, Mausgeschubse und perfekt gestylte Oberflächen. Ein blinkender Cursor reicht doch, oder?

Um eine so alte Kiste aber wieder in Betrieb zu nehmen, stehen ja grundsätzlich zwei Varianten zur Verfügung: Strom drauf und schauen wo es knallt, raucht und stinkt oder alles akribisch durchprüfen, messen und das ganze schrittweise und vorsichtig in Betrieb nehmen.

Ich habe mich dann für die Version „no-risk-no-fun“ entschieden und siehe da: Ta-ta die Maschine läuft!

Da noch ein falsches EPROM auf der Speicherkarte steckte, kam hier noch nicht der (unbewusst lang vermisste) MFA-Monitor. Dieses Problem lies sich aber durch einen Tausch mit dem korrekten EPROM schnell beheben und der Tunnel in die Vergangenheit war geöffnet.

Alle Karten liefen übrigens auf Anhieb wieder (!) und die eine oder andere Testfunktion war über den BUS-Signalgeber auch schnell wieder aus dem gedanklichen Archiv hervorgekramt.

Zum rumspielen dann mal die eine andere Zeile in Assemblercode zusammengenagelt und über den AD-Wandler visualisiert.

Fazit?

Das ganze sieht doch mal richtig gut aus, die Kiste läuft wieder als wenn Sie gerade eben erst ausgeschaltet wurde.

OK, nun kann’s ja wieder los gehen.

Fortsetzung folgt … 🙂