Vor einiger Zeit entdeckte ich den Raspberry Pi Pico W und in mir keimte die Idee, damit per Wifi meine CrossDev Dateien zu senden. Als Programmier-Plattform diente die Arduino-IDE, die den schönen Vorteil hat , dass man auf eine große Auswahl verwendbarer Libs zurückgreifen kann.
Das Ergebnis ist nun im meinem GIT: https://github.com/cbmuser/c2net Die Software ist im Moment etwas mehr als ein "proof of concept" und unterstützt nur Standard LOAD.
Um diesen Adapter so nachzubilden, braucht man ein paar low-cost Komponenten, einen C2N-Stecker und natürlich seine WLAN Zugangsdaten. Die werden in das Programm des Pi Pico kompiliert, was einerseits sicherer ist, aber auch das Verscherbeln auf Ebay unmöglich macht. Dazu müsste man die dann wieder auslagern.
Zur Arduino-IDE wird ein Zusatz benötigt, damit man den Pico dort verwenden kann: https://github.com/earlephilhower/arduino-pico . Das ist schnell integriert, dann fehlen nur noch ein paar Libs aus dem Arduino-Fundus, danach kann der Quelltext kompiliert werden.
Im Bild sieht man den Aufbau auf meinem schon wieder staubigen Steckboard. Die Taster von rechts nach links: Reset, Umschalten von Wifi auf Cardreader, Auswahl vom Cardreader. Der Pico Pi arbeitet mit 3.3V I/Os, deshalb muss ein Levelshifter dazwischen, damit das CBM TTL 5V nicht die Ports zerstört. Die Motor-Leitung benötigt einen Spannungsteiler vor dem Levelshifter, dieser besteht aus zwei 1K-Widerständen.
Allein das I2C-Display kann direkt angeschlossen werden, obwohl es mit 5V betrieben wird, da nur Schreibzugriffe auf den I2C-Adapter ausgeführt werden. Hinter dem Display ist einer dieser PC8574-Adapter aufgelötet. Die Adresse muss ggf. im Source auch angepasst werden, meist ist es 0x27, bei mir war es 0x3F. Auf dem Foto erkennt man, dass die Software bei ASCII ->PETSCII nur "A-Z" passend konvertert, da wollte ich heute noch ran.
Den Aufbau kann man gestalten wie man lustig ist: "wild wired" , Lochraster oder selbst eine Trägerplatine entwerfen.
Der Cardreader wird (je nach Kauf) bei mir mit 3.3V betrieben. Die Speicherkarte hat im Moment nur die Aufgabe gesendete Dateien zu sichern. Da gehen bei der aktuellen Version keine Unterverzeichnisse und es befindet sich immer eine Datei namens "DIR" auf der Karte. Diese Datei wird nach jedem Transfer aktualisiert und ist der temporäre Speicher für den Server, der diese nach Aufruf ausgibt.
Der Transfer vom PC
Dazu wird "curl" verwendet: https://curl.se/ und es kann nur in Richtung Adapter gesendet werden. Wenn ein Dateiname schon vorhanden ist, wird dieser beim erneuten Senden überschrieben ! - Das habe ich so belassen, damit ich meine CrossDev-Experiment immer wieder nach Neukompilieren überschreibe.
curl 192.168.2.105 listet den Inhalt der Speicherkarte auf, das geht natürlich auch im Browser.
curl -T programm.prg 192.168.2.105 sendet die Datei programm.prg und schreibt oder überschreibt diese auf der SD-Card.
Die Speicherkarte
Die Speicherkarte dient im Moment als billiger Massenspeicher. Ich hatte erst über FRAM oder EEPROM nachgedacht, letztlich ist die SD-Card einfacher. Man kann das Filesystem nutzen und bei Defekt eine andere, alte Karte verwenden.
Die Cardreader-Funktion
Die ist noch sehr rudimentär. Man kann mit einem Button auf den Cardreader umschalten. Dann erscheint "DATASETTE" im Display und es kann mit einem weiteren Button durchs Verzeichnis gescrollt werden. Wenn man die passende Datei gefunden hat, schaltet man über den ersten Taster wieder um, es erscheint "C2Net active !" und der gewählte Dateinamen in der zweiten Zeile. Jetzt kann die Datei mit LOAD in den Commodore-Computer geladen werden. Beim CBM kann man einfach nur warten, beim C64 muss die "C="-Taste gedrückt werden, bis ein kurzes "Found" aufblinkt.
Zukunftsgedanken
Für den Pi Pico ist das alles natürlich nur eine Kleinigkeit und da geht viel mehr. Speichern vom CBM, ein TAP-Player, Fastloader oder TWI. Mal sehen ...