Hallo,
ich habe vergangene Woche von explit einen Epson PX-8 erhalten, und zu meiner Freude kam diese schöne Maschine mit einer RAM-Disk-Erweiterung ("RAM DISK UNIT 60"), die auf 120 Kilobyte aufgerüstet ist. Natürlich waren die drei Akkus (NiCd) im Eimer und ich hatte erst geplant, sie durch neue NiCd's zu ersetzen, aber dann habe ich mir die Erweiterungkiste ein bisschen genauer angesehen und überlegt, dass es doch eigentlich viel schöner wäre, einen modernen LiPo-Akku dort einzubauen und damit das ganze System zu versorgen.
Die Erweiterungsbox ist eigentlich ziemlich groß, aber die Aussparung für den Akku ist ziemlich klein, und der Rest der Box wird für die monströse RAM-Disk (mit dynamischem RAM und eigenem Z80) verbraten:
Da liegt es doch eigentlich nahe, die Platine komplett durch etwas moderneres zu ersetzen: Ladeelektronik für LiPo-Akku, ein Raspberry Pi Pico für Modem- und RAM-Disk-Emulation und vielleicht noch mehr, und ein CPLD zur Pegelanpassung und für die Adressdekodierung. Ich habe also angefangen, einen Protypen zu bauen:
Für die Stromversorgung habe ich erstmal auf Fertigmodule (Ladecontroller und Boost-Converter von 3.7V auf 5V) zugegriffen, aber das soll natürlich dann auf die neue Platine integriert werden. Eine kleine Herausforderung wird dabei, das so zu gestalten, dass der Akku im Betrieb geladen werden kann. Es scheint, dass die meisten LiPo-Ladecontroller-Chips gern keine Last auf dem Akku haben wollen, wenn geladen wird, also muss ich einen Weg finden, den Rechner während des Ladevorgangs aus dem USB-Port zu speisen und unterbrechungsfrei zwischen Lade- und Akkubetrieb umzuschalten. Wenn jemand einen Tipp für eine fertige Schaltung hat, wäre ich interessiert.
Die vorhandenen Akkus habe ich ausgebaut, und ich versorge das gesamte System nun mit +5V aus dem Boost Converter (oder zum Testen aus dem USB-Port). Die ursprüngliche Ladeelektronik wird nicht mehr verwendet, und die 5V landen direkt auf der auch auf dem Erweiterungsbus vorhandenen Batteriespannungs-Leitung (VB).
Die einfachste Funktion der Erweiterungsbox ist das WiFi-Modem. Es gab im Original auch eine Modem-Erweiterung (wahlweise auch als Kombination mit RAM-Disk), daher ist die serielle Schnittstelle auch auf den Erweiterungsbus geführt. Der UART-Empfänger im Rechner kann über einen IO-Port zwischen der herausgeführten RS232-Schnittstelle und dem Erweiterungsbus umgeschaltet werden. Die Modem-Software kann über einen Port erkennen, ob ein Modem am Erweiterungsbus hängt, und dann eben entsprechend umschalten. Ich habe das Statusregister im CPLD realisiert, und damit funktioniert dann auch das "DAK Communications ROM":
Als Modem-Software verwende ich auf dem Pico das PicoWiFiModem, wobei ich noch kleinere Anpassungen machen muss, um es mit DAK Comm kompatibler zu machen.
Die nächste Aufgabe wird dann die Implementation der RAM-Disk. Es gibt eine funktionierende Emulation, die sich vermutlich recht einfach portieren lässt. Ich bin allerdings noch nicht sicher, ob ich die RAM-Disk und das Modem in einem Pico zum Laufen kriege. Theoretisch sollte das passen, aber praktisch ist es mir vielleicht zu viel Fummelei und ich packe einfach noch einen zweiten Pico W auf das Board.
Wenn jemand Interesse an so einer Erweiterung hat, bitte gerne hier äußern. Das Projekt ist auch auf GitHub.