Hello, Guest the thread was called93k times and contains 1334 replays

last post from Emwee at the

Projektvorstellung Sidekick64

  • Nachdem dieser Thread schon sehr lange - und damit auch unübersichtlich geworden ist - wird im ersten Eintrag ein kurzer Überblick aktuell gehalten:


    Aktuelle Zusammenfassung: Was ist das Sidekick?

    Das Sidekick64 ist ein Steckmodul für den Expansionsport sowohl des C64/C128 als auch für C16/+4 (über einen Adapter). Eine VC20-Variante ist in Vorbereitung. Das Sidekick emuliert andere Steckmodule und Erweiterungen in Software. Die Emulation läuft dabei auf einem Raspberry Pi 3A+/B+. Als Speichermedium dient eine MicroSD-Karte, auf deren Inhalt über ein Schnellstart-Menu und einem Filebrowser zugegriffen werden kann.


    Das Sidekick64 verfügt zudem über ein Display (RGB-Farbe 240x240 oder monochrom 128x64), auf dem Status und ggf. dynamische Inhalte (z.B. Logos, Oszilloskop, Peak-/VU-Meter) dargestellt werden.


    Software, Quelltexte und Gerber-Dateien für PCB-Herstellung gibt es hier: https://github.com/frntc/Sidekick64


    Features

    Derzeit werden folgende Erweiterungen nachgebildet bzw. Dateiformate unterstützt (dedizierte Unterstützung von C16/+4/C128 Features jeweils erwähnt):

    • GeoRAM/NeoRAM-kompatible Speichererweiterungen (C64, C128)
    • Freezer Module: Action Replay 4.x-7.x, Final Cartridge 3(+), Atomic/Nordic Power, KCS Power Cartridge, Super Snapshot V5
    • Standard 8KB/16KB/Ultimax C64-Module, sowie C16/+4 und C128 ROM-Module
    • Cartridges mit Bank Switching


      • Easyflash (mit EAPI support)
      • GMod2 (mit EEPROM-Emulation für Save Games)
      • MagicDesk/Domark/HES Australia (bis 1MB)
      • Ocean Type A and B (bis 512k)
      • RGCD und Hucky's cartridge
      • Prophet64
      • Dinamic
      • C64 Game System
      • Funplay/Powerplay
      • (Super) Zaxxon
      • Comal80
      • Epyx Fastload
      • Simons Basic
    • PRGs nahezu instantanes Laden (bis zu 62kb)
    • SID: PSID64 ist integriert und .SID-Dateien werden on-the-fly konvertiert und ausgeführt
    • D64/Dxx: Disk-Images können im Filebrowser navigiert werden und einzelne Programme gestartet werden. Via Disk2EasyFlash können sie für den C64-Betrieb „gemounted“ werden.
    • C64 Kernal-Ersatz (*)
    • Emulation des Function ROM des C128
    • Emulation von bis zu 8 SIDs (*) und des Sound Expander (FM Emulation)
    • einfache Emulation eines Datel und Sequential MIDI interfaces und eingebauter SoundFont-Synthesizer (leicht modifizierte Version von TinySoundFont)
    • TED-Sound und Digiblaster Emulation für C16/+4 (alle Sound-Devices an einem Ausgang)
    • GeoRAM-ähnliche Speichererweiterung für C16/+4, zwei angepasste Spiele (Alpharay und Pet's Rescue), die direkt aus dem Speicher starten (wie Cartridges) sind vorhanden


    (*) die Kernal- bzw. SID-Emulation erfordert das Abgreifen je eines Signals vom C64-Mainboard.



    ---- das Folgende ist der originale Thread-Beginn ----


    Hallo,


    ich dachte ich eröffne ein neues Thema, um mein Raspberry Pi-C64 Projekt in aufgeräumter Weise vorzustellen. Teile davon hatte ich schon in diesen Themen gepostet:


    RasPi 2/3 als In-Place SID Emulator (Vorsicht: sinnfreies Spaßprojekt)


    "Dead Test++" - Ideensammlung / Brainstorming




    Es handelt sich um ein kleines Framework, das demonstriert, wie man den Raspberry Pi 3B/3B+ am Bus des C64 kommunizieren lässt, um beispielsweise ein Cartridge, ein GeoRAM/NeoRAM oder DualSID+FM zu emulieren (das sind auch die 3 Beispielprogramme, die derzeit im Paket enthalten sind).




    Hier ist das Gihub-Repository:


    https://github.com/frntc/RasPIC64




    Danken möchte ich an dieser Stelle nochmal @kinzi, der sehr geduldig meine Fragen zu Elektronik beantwortet und mir erklärt wie ein C64 wirklich funktioniert und dem Autor von Circle (Baremetal RPi Framework), der auch immer mit Rat zur Seite stand, @bigby für seine Breakout Platine und allen anderen, die hier im Forum ihr Wissen teilen!




    Ich würde mich natürlich freuen, wenn sich jemand die Mühe macht, das Ganze nachzubauen :-) Der Nachbau geht am Steckbrett mit ein paar wenigen, günstigen ICs.

  • Danke für Deine beeindruckende Arbeit und Veröffentlichung des Codes auf github! Ich habe die anderen Threads in den letzten Wochen mitgelesen und hatte mir das Projekt zum Nachbau als Wunschprojekt für das Jahr 2019 vorgemerkt, nachdem ich gerade eine Pi1541 fertig gebastelt habe und derzeit alle Bare-Metal-Projekte auf dem Raspi sehr faszinierend finde!

  • Nochmal Respekt für das Projekt! Insbesondere auch dafür, daß Du den Code als Open Source veröffentlichst. Auch bei mir steht es für 2019 auf der Bastelliste. Ich kann noch nicht sagen, wann ich dazu komme, aber ich gebe dann auf jeden Fall Rückmeldung.


    Bei dem neuen Projektnamen würde ich allerdings an irgendeiner Stelle einen PIC Microcontroller erwarten. :-)


    EDIT: Ach, und noch eine kleine Empfehlung. Du hast ja schon ein schickes Bild vom Breadboard im Repo. Binde das doch direkt ins Markdown des Readme ein, das geht ja gut über einen relativen Pfad. Das lockert die Seite ungemein auf und lädt dann vielleicht noch "Laufkundschaft" ein. Ungefähr so:


    ![RasPIC64 on Breadboard](Interface/RasPIC64_breadboard.jpg)

  • Bei dem neuen Projektnamen würde ich allerdings an irgendeiner Stelle einen PIC Microcontroller erwarten. :-)

    Zum Projektnamen habe ich auch noch eine Anmerkung: Es ist schwierig, am Anfang den richtigen Namen zu finden, falls sich ein Projekt weiterentwickelt und erweitert. Beispiel: Pi1541 emuliert eine 1541, aber jetzt auch eine 1581. Außerdem sind bei Pi1541 noch CPU-Kerne ungenutzt und der Initiator will auch noch eine Datasetten-Emulation dazubauen. (Vielleicht kommt dann in 2 Jahren noch ein WLAN-Modem mit dazu...)


    Bei Deinem Projektnamen RasPIC64 hast Du Dich wohl um einen allgemeinen Namen bemüht, welcher von den Funktionen abstrahiert und nur die Komponenten erwähnt (Raspi + C64). Damit könnte es meines Erachtens eine Verwechslungsgefahr geben mit C64-Emulator-Projekten auf dem Raspi wie Combian oder dem neuen bmc64. Ich will mir nicht anmaßen, den richtigen Namen für Dein Projekt zu kennen, nur mal zwei drei Vorschläge als Brainstorming: PiConnect64, PiBridge64, Pi64Expander.

  • EDIT: Ach, und noch eine kleine Empfehlung. Du hast ja schon ein schickes Bild vom Breadboard im Repo. Binde das doch direkt ins Markdown des Readme ein, das geht ja gut über einen relativen Pfad. Das lockert die Seite ungemein auf und lädt dann vielleicht noch "Laufkundschaft" ein. Ungefähr so:

    das war auf meiner Liste, jetzt muss ich schon nicht mehr selbst herausfinden, wie man das macht ;-) Für die Namensgebung hätte ich vielleicht eine Marketingabteilung ge


    Freut mich, dass ihr das nachbauen wollt - bin gespannt auf die Erfahrungen damit...



    Aber passt besser auf, als ich - ein "Opfer" hat die Bastelei neulich gefordert :-( Ich hatte vergessen die Verbindung zu GAME, EXROM zu trennen, als ich ein EF3 angeschlossen hatte -- nachdem die Signale direkt auf den CPLD gehen, hat der das nicht vertragen. Daher: hat jemand zufällig einen XC95144XL und/oder eine ruhige Hand und die Möglichkeit ihn zu programmieren? ( @no parity ? :-))

  • Das mit dem EF3 ist ja ärgerlich. Aber wie hast Du das überhaupt gemacht? Mit einem Port-Expander? Oder habe ich da noch was falsch verstanden?


    Andere doofe Frage: Wie wichtig ist hier die Unterscheidung zwischen 74LVC und 74LVX? Könnte statt des 74LVX573 auch ein 74LVC573 gehen? Bzw. umgekehrt bei 245? Ich versuche schon mal zu sortieren, was ich einkaufen muß. :-)

  • Das mit dem EF3 ist ja ärgerlich. Aber wie hast Du das überhaupt gemacht? Mit einem Port-Expander? Oder habe ich da noch was falsch verstanden?

    Ja, mit Expander (einfach parallel angeschlossen) .. ist natürlich sehr praktisch bei der Entwicklung, wenn man Programme starten will. Jetzt muss ich das EF3 wohl für RasPIC64 implementieren ;-)



    Wie wichtig ist hier die Unterscheidung zwischen 74LVC und 74LVX? Könnte statt des 74LVX573 auch ein 74LVC573 gehen?

    Siehst Du, für sowas haben wir @kinzi :-) der hat gesagt der LVX wäre laut Datenblatt besser als ein VHC, aber letzterer müsste genauso wie der LVC gehen (meine Aussagen zu sowas ohne Gewähr). Ich habe das Latch von Reichelt, die anderen Bauteile aus China -- die Gesamtkosten für die Kabel sind höher als für die ICs ;-)

  • Aber passt besser auf, als ich - ein "Opfer" hat die Bastelei neulich gefordert Ich hatte vergessen die Verbindung zu GAME, EXROM zu trennen, als ich ein EF3 angeschlossen hatte -- nachdem die Signale direkt auf den CPLD gehen, hat der das nicht vertragen. Daher: hat jemand zufällig einen XC95144XL und/oder eine ruhige Hand und die Möglichkeit ihn zu programmieren? ( no parity ? :-))

    Von den XC95144XL habe ich noch welche hier. Kann ich Dir auch auflöten und flashen. Wenn Du mir die Platine schickst, mache ich Dir das.

  • Super Projekt! Damit sollte es eigentlich auch möglich sein, einen C64 von Aussen zu testen, oder? So eine Speichertest wäre so ja sehr einfach möglich. Und die Testergebnisse viel genauer darstellbar, als der Blink Code beim Deadtest.

    Genau! Dazu haben wir im Deadtest++ Thread ein paar Ideen gesammelt und ein paar Code-Fragmente/erste Tests gibt es auch. Um alles zu testen, würde man die Beschaltung aber noch etwas verändern (z.B. um A0-A15 zu lesen) und ich würde noch versuchen ein automatisches "Kalibrieren" der RPI-Timings hinzubekommen

  • Ich verlinke mal hierher, der vollstaendigkeit halber: Raspberry am Expansionsport und RFC: Zer0-64 Multifunktionsmodul mit R-Pi Zero

    Danke für den Link, letzteren kannte ich noch nicht! Mit einem RPi Zero halte ich verlässliche Kommunikation am Expansionsport für nicht machbar. Meine Versuche deuteten darauf hin, dass die GPIOs furchtbar langsam sind...

  • Andere doofe Frage: Wie wichtig ist hier die Unterscheidung zwischen 74LVC und 74LVX? Könnte statt des 74LVX573 auch ein 74LVC573 gehen? Bzw. umgekehrt bei 245? Ich versuche schon mal zu sortieren, was ich einkaufen muß.

    Gerade getestet: ein VHC573 geht auch, ist aber sensibler, was das Timing angeht. Einen LVC573 habe ich nicht hier... als Einkaufstipp: alle LVCs habe ich von Aliexpress (darf man hier verlinken?), den LVX von Reich***.

  • Von den XC95144XL habe ich noch welche hier. Kann ich Dir auch auflöten und flashen. Wenn Du mir die Platine schickst, mache ich Dir das.

    @no parity hat's wieder heile gemacht! Vielen herzlichen Dank!

  • Nachdem lange keine Zeit war, habe ich mich in den letzten Tagen (Nächten) endlich wieder etwas mit dem Projekt befassen können.




    Was noch (unter anderem) noch gefehlt hat, war ja die Emulation von Carts mit Bank Switching -- solche schienen mir in letzter Zeit populär ;-)


    Und herausgekommen ist zunächst mal eine EasyFlash-Emulation :-)




    Ich muss noch ein wenig Code aufräumen und herausfinden, ob ich den ein oder anderen hässlichen Trick im Code noch loswerden kann, dann wird’s in Repo gehen.




    Vielleicht mache ich mich dann mal an ein Auswahl-Menü und Laden der ROMs von SD... das wäre, glaube ich, eine nette Sache. Da muss ich mich dann mal wieder in C64-Programmierung eindenken :alt:

  • Immer noch kein Source-Release -- weil ich erst noch etwas einbauen wollte:


    Ich habe das Cartridge-Beispiel jetzt so erweitert, dass es ein .CRT File von SD-Karte liest. Unterstützt werden generische 8k/16k Carts, Easyflash und Magic Desk :-)


    (insb. zu letzterem habe ich nur ganz wenige Test-Carts, wenn zufällig jemand Pointer hat...)


    So wird's dann bald mal im Repo landen. Der nächste Schritt könnte dieser sein: ich statte das Ganze mit einem Bootloader aus (defakto ein spezielles Cart), der die SD-Karte nach .CRTs scannt und auf dem C64 ein Menu zum Auswählen darstellt. Also so ähnlich wie ein EF3, nur dass auf die SD-Karte ein paar mehr Carts passen.


    Prinzipiell könnte man auch .PRGs starten, wenn man Code zum Kopieren schreibt. Zum Glück sind meine C64-Programmierkünste auch gar nicht eingerostet ;-)

  • interessante sache. ich hätte da noch eine idee. ist aber wahrscheinlich eher schwierig zu realisieren.

    ich dachte dabei an eine art druckertreiber für den c64. also der c64 gibt zb. ein geowrite dokument ganz normal

    über den bus an den drucker aus. der raspi konvertiert das zu einem pdf dokument, so das man es an einem beliebigen

    pc ausdrucken kann.

    das hätte den vorteil das man kein drucker an den 64er friemeln muss für den es eh keinen treiber gibt.


    was denkt ihr ? nutzt einer den 64er oder 128er für ernsthafte aufgaben ?