PicoX-8: Universalerweiterung für den Epson PX-8

  • Was für Probleme macht denn Dein Gerät? Vielleicht lohnt es sich, erstmal die Stromversorgung zu modernisieren?

    Die Akkus hab ich größtenteils schon ersetzt. Aber möglicherweise müssen noch ein paar Kondensatoren ran. Mein Problem ist die Erkennung der ROM-Module. Ganz selten klappt es, meistens wird kein ROM-Laufwerk angezeigt. Kam der Umzug dazwischen, deswegen ruht das Projekt seit Jahresanfang. Jetzt ist der neue Lötarbeitsplatz aber eingerichtet!

  • Mit den ROM-Modulen hatte ich auch schon meine Probleme, aber sie hatten letztlich mechanische Ursachen. Die Kontaktierung ist nicht sehr zuverlässig und die Kontakte verbiegen auch gerne mal. Ich würde mal mit dem Mikroskop prüfen, ob da vielleicht was verbogen ist, und die Sockel mit Kontaktspray reinigen.

  • Es ist hier zwar ein wenig off-topic, aber angeregt durch diesen Thread habe ich nun mein Spiel Deepspace auch auf dem PX-8 und PX-4 zum Laufen gebracht:



    Der z88dk-Compiler erzeugt eine .rom-Datei, mit der man im Takeda-Emulator die Datei basic.rom ersetzen kann, dann steht das Programm am Startbildschirm zur Auswahl.


    Ich besitze keinen PX-8 und ich weiß nicht, ob ihr die Möglichkeit habt, so eine Datei auf einem echten PX-8 zum Laufen zu bringen - wenn ja, dann probiert es bitte auf der echten Hardware aus.

  • Nachdem ich tagelang einen Fehler auf der zweiten Protoypen-Platine mit dem größeren CPLD gesucht und endlich auch gefunden habe, bin ich mit der Entwicklung jetzt gut weiter gekommen. Der Fehler war ein Kurzschluß auf dem PX-8-Adressbus unter dem IDC-Steckverbinder, zu 100% unsichtbar und nur mit dem Multimeter zu finden.


    Ich habe nun die RAM-Disk auf dem Raspberry Pi Pico in Python implementiert. Sie ist kompatibel zur Original-RAM-Disk von EPSON, d.h. der PX-8 erkennt sie bei der Initialisierung und bietet an, sie zu formatieren. Auf dem Pico werden die Daten im Flash gespeichert, und man kann entsprechend verschiedene RAM-Disks mit je 120kB verwenden. Obwohl ich bisher noch keine nennenswerten Optimierungen implementiert habe, ist der Zugriff deutlich schneller als auf EPROM-Module.






    Als nächstes möchte ich auch die Modem-Funktionalität komplett implementieren. Ausserdem braucht es ein Interface, mit dem man vom PX-8 aus die Emulation auf dem Pico konfigurieren kann.


    Quellcode ist auf GitHub: https://github.com/hanshuebner/picox-8

  • Du denkst an die begrenzten Schreib-Zyklen des internen Flash's? Ich meine gelesen zu haben, das es ca. 100K-Zyklen sein sollen

    Ich schreibe eventuelle Änderungen alle 15 Sekunden ins Flash. Das kann zwar dazu führen, dass ein inkonsistenter Zustand im Dateisystem landet, aber dank Akkubetrieb halte ich das Risiko für akzeptabel.

  • 100.000 Schreibzyklen / 15 Sekunden ergäben ganz einfach gerechnet 416,6 Stunden Betriebsdauer.

    Nach meiner Erfahrung mit Flash-Speichern kann man vielleicht mit einem Zehntel der angegebenen Zyklen rechnen.

    Kann man da nicht 'ne SD-Karte ranklöppeln?

    +++ ATH

  • SD-Karte ist ja auch Flash und daher in der Anzahl der Schreibzyklen begrenzt. Aber ja: Ich werde auf der Platine einen SD-Karten-Slot vorsehen, das erleichtert dann auch das Aufspielen vorbereiteter Images und hilft den WiFi-Allergikern :)

  • Hallo,


    meine Erweiterung für den PX-8 funktioniert soweit ganz gut, und dank der Hilfe von fritzeflink, tofro und Gardenman konnte ich jetzt auch mit TurboPascal die Kommunikation mit dem Raspberry Pi Pico herstellen. Aktuell kann ich über das Konfigurations-Utility auf dem Pico beliebige Files, die sich auf der SD-Karte befinden, als RAM-Disk unter CP/M anhängen.


    Der Pico emuliert dabei die "intelligente RAM-Disk", die 120 Kilobyte groß ist, und das doch ein bisschen wenig. Für mich stellt sich nun die Frage, wie ich das ändern kann. Eine Möglichkeit wäre, neben der RAM-Disk auch noch die Floppy-Laufwerke zu emulieren, die über die zweite serielle Schnittstelle angesprochen werden. Nachteil dabei wäre, dass ein externes Kabel notwendig ist, um den seriellen Port zum Pico zu führen.


    Eine andere Möglichkeit wäre, die "nicht intelligente RAM-Disk" zu emulieren. Sie bietet zwei Laufwerke (RAM und ROM), und mit entsprechend gepatchtem System-ROM erhält man bis zu 512 Kilobyte pro Laufwerk. Nachteil dieser Lösung ist, dass der Zugriff auf den Speicher vom PX-8 direkt, und nicht über einen Koprozessor ("intelligent") erfolgt. Diese Verfahrensweise ist mit dem Raspberry Pi Pico schwierig(er) zu implementieren, da sie eigentlich voraussetzt, dass der PX-8 direkt auf einen Speicherbaustein zugreifen kann. Man könnte Waitstates verwenden oder eben einen Speicherbaustein verwenden, aber eigentlich würde ich doch lieber eine einfachere Lösung bauen.


    Ich habe mir daher mal angesehen, wie die Initialisierung der intelligenten RAM-Disk im PX-8-ROM erfolgt. Es wird überprüft, ob 60 oder 120 Kilobyte Speicher vorhanden sind:




    Leider hat die Foren-Software die Absätze, die ich nach dem Bild geschrieben habe, alle gelöscht und jetzt muss ich zum Grill. Aber wenn Euch dazu was einfällt, lasst es mich wissen. Ich schreibe später nochmal.

  • Das mit der Floppy wäre zumindest als Option sinnvoll. Eventuell als zusätzliche Steckverbindung?

    Ich werde in jedem Fall die zweite serielle Schnittstelle vom Pico nach draußen führen. Ich habe auch schon probiert, ob ich das Floppy-Interface emuliert bekomme, aber irgendwas scheint da nicht zu funktionieren. Es wird scheinbar auf der seriellen Schnittstelle nach einem Laufwerk gesucht, aber irgendwie scheint die Baudrate (38.400?) nicht zu stimmen oder die Schnittstelle ist kaputt. Vielleicht bekomme ich ja nochmal ein zweites Gerät in die Finger, um es damit zu probieren.


    Was ich vorhin noch schreiben wollte: Ich könnte versuchen, das ROM so umzupatchen, dass die RAM-Disk mehr Kapazität hat. Neben der Anzahl der Blöcke wird es dann wohl aber notwendig sein, auch noch die Anzahl der Directory-Einträge zu vergrößern, denn mit den 32 Einträgen, die im RAM-Disk-Format vorgesehen sind, kommt man ja nicht so weit. Aber vielleicht hat ja noch jemand eine bessere Idee.

  • Hallo Hans,

    hier zwei Lösungsansätze zur RAM-Disk/Floppy:


    - Floppy-EMU nach William R.Cooke http://wrcooke.net/projects/pfbdk/pfbdk.html

    hier werden 4LW a 280kB emuliert über dir Serial-V24 mit 38kBoad

    Das funktioniert bei mir schon einige Jahre einwandfrei.


    Damit die V24 Anschlüsse besser kontaktiert werden können habe ich meine Erweiterung mit einem "Rucksack" versehen.

    Noch nicht schön aber so kann der Umbau rückstandslos entfernt werden

    Expansions-unit-12-300x169.jpgExpansions-unit-11-300x169.jpgExpansions-unit-13-300x169-1.jpg


    - RAM-DISK 512kB nach Mark Wahl aus den 80er

    px-8 - 512kb_ramdisk - FJKRAAN_SAVED_DOCS


    hier muss aber das BIOS gepacht werden, ist im Link hinterlegt.

    Zu dieser Erweiterung habe ich den Plan in KiCad neu gezeichnet ist aber noch nicht final.

    Siehe Anlage...


    LG Werner

  • Hallo Werner_8085,


    Danke für die Fotos und die Anregungen. Die Rucksack-Lösung finde ich ästhetisch nicht so schön, aber sie hat natürlich den Vorteil, dass sie mit dem normalen System-ROM funktioniert. Die 512k-Lösung gefällt mir nicht so sehr, da sie sowohl ein echtes RAM in der Erweiterung als auch ein gepatchtes ROM benötigt, wenn ich das korrekt verstanden habe. Ich forsche mal weiter, vielleicht kann ich etwas mit einem UserBIOS machen.


    Schöne Grüße,

    Hans