Hallo Zusammen,
Ich habe heute die erste Version meines Datentransfersystems xlink für den C64 veröffentlicht.
Einige Features:
- Verbindung zum PC über einfaches Parallelport-Kabel oder speziellen USB-Adapter auf den Userport
- Server-Software auf dem C64 -- als einfaches Programm oder dauerhaft in einem gepatchten Kernal
- Client-Software auf dem PC -- Kommandozeilentool und Programmbibliothek für Linux und Windows
- Laden und Ausführen von Programmen vom PC aus auf den C64, Speichern von Programmen/Daten auf PC
- Zugriff auf alle Speicherkonfigurationen -- z.B. Beladen des RAMs unter dem IO-Bereich möglich
- Auslösen eines Hardware-Resets vom PC aus möglich
- Grundbefehle sind load, save, peek, poke, fill, jump run
- Zusätzliche Befehle für das Cross-Development: ping, ready, reset, identify
- Backup und Restore von Disk-Images auf eine am C64 betriebene Floppy möglich (allerdings sehr langsam)
- Intelligentes relocate eines im RAM betriebenen Servers bei Gefahr des Überschreibens
- Besonders geeignet für schnelles Cross-Development auf dem PC, Übertragung und Test auf echtem C64
- Übertragungsgeschwindigkeit von bis zu 20kb/s -- 64k in knapp drei Sekunden
- Open Source -- Open Hardware -- alles wird veröffentlicht
Hardware:
Die Verbindung zum Userport kann entweder über ein einfaches Parallel-Port-Kabel oder über einen speziellen USB-Adapter auf Basis eines Atmel at90usb162 hergestellt werden. Schaltplan und Platinenlayout stehen zur Verfügung.
Außerdem habe ich hier noch sieben Prototypen-Platinen des USB-Adapters, die ich an Interessierte zusammen mit den Bauteilen als Bausatz zum Selbstkostenpreis von 20€ plus Versand zur Verfügung stellen kann. Hierbei ist der SMD-Chip bereits gelötet. Bei Interesse bitte PM.
Anwendungsmöglichkeiten:
Cross-Development: Man editiert und assembliert eine prg Datei auf dem PC und testet dann z.B. mit dem Befehl
Hat man mehre Dateien kann man diese auch in einem Rutsch übertragen, z.B.:
Durch das Voranstellen des Befehls "ready" wird geprüft, ob der Server Erreichbar ist. Wenn nicht wird ein Reset ausgeführt und gewartet, bis der Server erreichbar ist. Das funktioniert natürlich nur, wenn der Server auch im Kernal integriert ist.
Ob man das ganze über Makefiles automatisiert oder den xlink-client als "Emulator" in seine IDE einfügt ist jedem selbst überlassen. Ich editiere z.B. im Emacs, die Tastenkombination Strg-Space ruft "make test" auf und das Makefile sorgt für den Rest...
Natürlich kann man .prg Dateien in seinem Dateimanager auch mit xlink verknüpfen -- und so Programme einfach über einen Doppelklick starten.
Ebenso könnte man .sid Dateien mit einer kleinen Batchdatei verknüpfen, die das sid mit hilfe von psid64 in ein prg konvertiert und danach über xlink überträgt und ausführt.
Den Server im Kernal zu haben bietet einige weitere Vorteile. z.B. stecke ich meinen Quickbyte-II Eprommer Expansionsport und übertrage vor dem Brennen die Daten einfach über xlink in den Speicher des C64 -- kein mühsames Kopieren auf Diskette mehr nötig.
Eine andere Möglichkeit ist das implementieren eines "Live-Previews" für PC-Basierte Editoren -- So habe ich mal als "proof-of-concept" einen rudimentären Charset-Editor auf dem PC programmiert, der über die entsprechenden poke- und load-Funktionen der Bibliothek die Änderungen am Zeichensatz sofort auf den C64 überträgt -- so sieht man das Ergebnis direkt auf dem PAL-Monitor. Das sind nur ein paar Zeilen code -- vielleicht kriegt man ja den ein oder anderen Autor von Editoren (SpritePad, Charpad, anyone?) dazu, einen optionalen Live-Preview Modus über xlink zu implementieren.
Die Programmbibliothek stellt für solche Zwecke alle Grundfunktionalitäten zur Verfügung. Darüber hinaus ist auch ein lowlevel-Interface vorhanden, über das eigene Protokolle für spezielle Anwendungen programmiert werden können. Eine ausführliche Dokumentation wird noch auf der Projektseite zur Verfügung gestellt werden.
Nachteile:
Natürlich hat das System auch seine Nachteile. Der Userport wird belegt, und die Server-Software muss auf dem C64 laufen. Im Kernal werden die Tape-Routinen geopfert, außerdem der Memory-Check beim Start unterdrückt, um schnelle Resets zu ermöglichen (durch drücken von CBM beim Reset kann er aber noch ausgeführt werden). Das Parallel-Port Kabel ist simpel -- dazu braucht es aber einen PC mit Parallelport. Die USB-Hardware ist etwas komplexer -- dafür sind PCs mit USB überall.
Also...
... wenn Ihr Interesse habt, weitere Details gibts auf der website. In eigener Sache möchte ich sagen, dass ich dieses Projekt in erster Linie für meine eigenen Zwecke programmiert habe und es aus einem gesunden open-source-Gedanken heraus veröffentliche, nach dem Motto "vielleicht braucht's ja jemand". Mir ist klar, das es bereits ähnliche Projekte wie dieses gibt, allerdings fehlten mir dort immer einige Features wie der Reset, vor allem aber die Bereitstellung der Funktionen als Bibliothek.
Im Grunde geht es mir um den Spaß an der Sache
In diesem Sinne,
Henning