Hallo,
Wie gestern in “Heute so gebastelt” geschrieben, habe ich mir mal das an sich sinnbefreite Ziel ausgesucht, einen RasPi als SID-Ersatz zu verwenden. Die Emulation muss dabei reSID machen, mir ging es also nur darum reSID zusammen mit dem Abgreifen der Signale aus dem SID-Sockel auszuprobieren. Der Nebeneffekt ist der, dass ich jetzt so eine Art SID mit grafischer Benutzeroberfläche und SSH-Zugang habe
Hier ein paar Infos, falls jemand interessiert ist, Ideen hat, mal selbst ausprobieren will (wenn ich meinen Source mal aufgeräumt habe)... oder noch besser, mir helfen mag -- denn ich habe nicht viel Ahnung von SID-Interna.
Also auf dem RasPi (hier ein 2er) läuft Raspbian, also kein RTOS und somit genügend Probleme. Erst dachte ich, der RasPi ist locker schnell genug -- wenn ich mir die Timing-Diagramme anschaue, frage ich mich allerdings warum es tatsächlich einigermaßen tut
Diagramme siehe:
http://unusedino.de/ec64/techn…isc/sid6581/sidtech3.html und
https://www.waitingforfriday.com/?p=661
Also wie funktioniert’s? Zunächst mal räume ich 2 der Cores frei für die Anwendung (isolcpu), die dann zwei Threads verwendet (jeweils gepinned auf je einen Core). Ein Thread macht nichts anderes als die GPIOs auszulesen und die fallende Phi2-Flanke bei einem Write-Kommando zu finden, um sich dann Adress- und Datenleitungen zu merken, diese Werte zu Puffern. So in etwa 10x wird pro 10^-6 Sekunden ausgelesen (on average).
Der zweite Thread schnappt sich die Register-Updates und füttert reSID, die Ausgabe wird derzeit einfach im Speicher gehalten und am Ende rausgeschrieben. Was noch gar nicht implementiert ist, ist der RESET des SIDS (out of level converter error, konnte keine Strippe mehr ziehen) und das Lesen von Registern (ich vermute, daher klingen nicht alle SIDs richtig?)
Also, Hilfe willkommen!
Wer mal hören will:
https://www.dropbox.com/s/v4ys…4u/n_monster.wav.mp3?dl=0