Ich habe mir eine kleine C2N-Lib für den Arduino Uno am Tape-Port geschrieben, die ich eigentlich für die CBMs verwenden wollte, aber nur mit dem C64 (restliche Homecomputer ungetestet) funktioniert. Ein Oszi ist leider nicht vorhanden: mein altes Voltcraft Schätzeisen aus den 80iger ist defekt, die Picoscope-Software läuft plötzlich nicht mehr auf Linux und es ist bestenfalls ein DSO150 Khz-Döschen da. Ich kann allerdings ein Analyzer-Capture mit einem Salae-Adapter aufzeichnen.
Eingestellt wurde es letztlich mit der alten Justage-Software für den C64.
Und das klappt dann auch wunderbar. An den CBMs 2001N zieht das leider ohne Reaktion vorüber oder bei Mehrfachstart hängt der sich auf. Danach hatte ich dann mit einer alten C2N den Test gemacht: ein kleines Testprogramm mit dem C64 gespeichert "10 Print "test" " und der CBM lädt es sofort. Andersherum kam es zum gleichen Ergebnis. Laut Capture sind die Signale von der Datasette und dem Arduino augenscheinlich zu 99% identisch.
Zuletzt hatte ich noch diese Kleinigkeit zusätzlich eingebaut, die bei der C2N anders war:
Da war noch eine etwas gezogenes Signal nach der Header, also dem Motor-Stop Gap vor dem Laden (ca. 400ms). Wird sicher durch das Stoppen des Motors verursacht und der letzte Signalwechsel zieht sich dann etwas. Und ich habe auch bei der Synchronisation die wirklichen 80 anstatt der oft dokumentierten 60 Signalwechsel verwendet. In der Lib verwende ich "delayMicroseconds" mit unsigned int. Das ist immer mit etwas Anpassung verbunden, da alles Zyklen verbraucht. Der ideale shortpulse liegt im Moment z.B. bei 163µS, wobei der Mittelwert des PAL-C64 bei ca. 190µS liegt. Mir graut es davor, mit der Arduino-IDE etwas direkt mit dem Timer zu machen.
Hier kann man verschiedene Werte (am Ende der Seite) für die verschiedenen Tape-Ports nachlesen: https://www.ktverkko.fi/~msmak…2n232/firmware/c2n232.txt . Und das C2N232 funktionierte mit allen C= Tapeports, ist allerdings in Assembler geschrieben.
Der C64 ist scheinbar sehr tolerant was die Signalqualität angeht.
Wie muss ich es für die CBMs anpassen ? - Brauche ich eine Punktlandung im µS-Bereich, damit der überhaupt reagiert ? - Ich hätte bei meinen zahlreichen Versuchen zumindest mal eine verstümmelte Found-Meldung erwartet.
Am Arduino hängt im Moment ein 7414 Schmitt-Trigger und dahinter ein N-FET mit Pullup.
Edit: Habe testweise den PRGuino am CBM eingesteckt, der schafft es auch nicht bis zur Found-Meldung.