Posts by cbmhardware

    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.




    Eigentlich mehr programmiert: eine C2N-Lib für den Arduino Uno. Habe die Spurlage mit dem alten Justage-Programm an eine originale C2N angepasst. Der C64 lädt es anstandslos, die alten CBM 2001N, egal mit welchem BASIC, stehen mit "searching" wie Holzköpfe da und merken nichts. Eigentlich sollte es nicht (nur) für den C64 werden, eher für CBMs besonders mit BASIC 1, da die noch keine funktionstüchtigen Floppy-Routinen haben.


    Ob die alten ROMs da etwas erwarten, was der C64 nicht braucht ?



    Staubiger Arduino mit einem 7414 Schmitt-Trigger als Inverter.

    Ein bisschen Testprogramm mit passendem Puffer im Array.



    Auf dem C64 läuft es gut. Brauche es aber für die CBMs ... mal sehen.

    Ich hab dein Programm mal ausprobiert und scheitere an ein paar Themen:

    - Erstellte Zeichen werden nicht in der Leiste unten dargestellt (sie besteht einfach aus inversen Linien)

    Das ist normal bei dieser PRG-Version. Wenn Du den originalen PCG6500 oder einen Nachbau hast, müssen auch die seriellen Routinen für den Adapter drin sein. Diese: https://github.com/mnaberez/pc…ain/demo/demo-174d-ml.txt . Die kann man problemlos einbauen.


    - Laden/Speichern geht nicht

    Das kann so nicht funktionieren, das Programm ist für Basic 2. Ich hatte mir eben die älteste BASIC1-Version auf den RAM/ROM-Adapter geflashed, dann kann es auch eine Version für BASIC1 werden. PETSD hängt damit, hatte ich aber auch erwartet. Mal sehen was die CBM2031 damit macht.

    ABER: Ich verwende einen echten 2001er mit Basic 1- der hat noch keine funktionsfähigen IEEE Routinen, ich muss also die Datasette nehmen.

    Erstellte Zeichen sollte ich aber dennoch sehen, vermutlich?

    Nein, so nicht. Da müssen die seriellen Routinen vorhanden sein, wenn es der alte PCG6500 ist. Bei den Floppy-Routinen bin ich nicht sicher, aber ansonsten lassen sich verschieden Versionen: Basic 1,2 und 4 (ohne 6545) erstellen, die grundlegend funktionieren sollten. Also das ganz alte Board und auch der dyanamic PET 2001N. Ich werde das berücksichtigen und verschiedene Versionen erstellen. Also verschiedene BASIC-Versionen mit DMA@$A000,$9000 (PET 2001N) oder der seriellen Verbindung mit dem Userport (Ur-PET mit BASIC1).


    Ich werde Dir vorab eine BASIC1-Version mit den seriellen Routinen zum Testen erstellen und hier hochladen. Mal sehen was noch geht, habe irgend einen fiebrigen, grippalen Infekt.

    Moment... Der PET kann mit einem C64 Charakter ROM betrieben werden...?! :emojiSmiley-15:


    Sicher...?! Dann erschließt sich mir nicht, warum man um das ROM zu ersetzen so einen komplizierten Adapter mit 74HCT138 drauf benötigt... Dann müsste doch auch ein einfacher EPROM Adapter für den C64 genügen um ein 2732er EPROM nutzen zu können...?


    Oh, sehe jetzt, es ist das ganz alte Board. Wenn es die 1540-ROMs sind, dann passt es nicht.


    Hier ist ein Pinout: http://cbmhardware.de/show.php?r=14&id=77


    x1541: Hattest Du nicht damals Adapter angefertigt ?

    Schade, wäre doch zu schön gewesen, wenn es einfach wäre. Einen Adapter auf 2332 habe ich leider nicht da. Hast Du einen C64, der sein Char-ROM 901225-01 kurz ausleihen kann ? - Damit sollte der CBM auch eine Einschaltmeldung bringen. Wäre eine kleine Ausschussdiagnose, um zu sehen, ob das ROM wirklich defekt ist.

    Sieht nicht willkürlich aus. CHARROM ist OK.

    Ja, das könnte Kontaktschwierigkeiten haben, wäre dann eines der üblichsten Probleme bei den alten Kisten. Für mich sieht es willkürlich aus, wenn mal Bit 5 fehlt, woanders wieder passend da ist, und alle anderen Bits auch keine sichere Diagnose zulassen.

    Schwer zu sagen, ich würde beim Char-ROM anfangen. Vielleicht sind es Kontaktschwierigkeiten mit einem Sockel darunter ? Man kann anhand der dargestellten Zeichen nicht sagen, da ist dieses oder jenes Bit immer wieder falsch gesetzt. Das sieht sehr willkürlich aus.

    Ja, gerne, ist für BASIC 2. Ein D64 mit dem Programm und Charsets hängt an. Nach dem Programmstart wird der Puffer ($1500) und auch das etwaige Char-RAM (@A000) gelöscht. Wenn man ein Zeichen neu anlegt oder modifiziert, bleibt das immer zuerst nur im Pufferspeicher. Mit der Taste "W" kann man es ins Char-RAM laden. Da könnte man auch die Routine für die alte PCG-Version einbauen.



    So sieht es dann im Vice aus. Da fehlt natürlich die Möglichkeit zum richtigen Anzeigen der unteren Auswahlzeilen.



    So sieht es dann mit dem Adapter aus. Da ist der Zeichensatz vom alten Future Writer 1 geladen und ich hatte einen mäßigen Space-Invader erstellt.


    Die Zeichensatzdatei sollte 64 Chars in 512 und mit Ladeadresse 514 Byte enthalten. Die Ladeadresse ist von keiner Bedeutung, da darf alles drin stehen, es wird immer nach $1500 geladen. Den Edit-Mode aktiviert und deaktiviert man mit der Taste E . Dann kann man sich in der Auswahl bewegen und einzelne Pixel in der 8x8 Matrix mit Space ändern. Wenn es fertig ist, kann es auch gespeichert werden. Die Lade- und Speicher-Routinen sind Standard Kernal-Routinen, die bei Fehlbedienung das Programm aufhängen. Da muss ich in der Zukunft nochmals ran.

    Man kann auch mit dem Editor x-beliebige Zeichensätze bearbeiten und dann in das alte HAL PCG laden. Komfortabler wäre natürlich der direkte Zugriff, da fehlt mir leider die Testmöglichkeit. Ich werde dieses "mess" an Source-Code dazu noch vorzeigbar gestalten und in meinem Git veröffentlichen.

    Die Directory-Routine kommt auch noch später dazu, hatte nichts verwertbares da. Vielleicht kann man das dann mit der Laderoutine als Auswahl gestalten.


    Soweit sollte es ansonsten ohne Fehler zum Testen funktionieren.

    Files

    • charedit.d64

      (174.85 kB, downloaded 2 times, last: )

    Damit auch neben den über 40 Jahre alten Programm etwas neues entstehen kann: ein Char-Editor. Im Bild ein erster Test-Mockup mit einem Charset vom C64 (I-Ball). Später könnte noch Tile und Map-Editor dazu kommen.



    Den Adapter werde ich wahrscheinlich auf IDT 7130 mit einem 7400-TLL kürzen. Das zuletzt verbaute Banking wird sowieso niemand verwenden.

    Einige haben das Forum wohl schon wieder verlassen: CBM 4064 / Teachers Pet / PET-64 / Educator 64 , hier ist noch jemand zum direkt anschreiben: Commodore 4064 & Green Screen


    Hier sieht man auch die originale Stromversorgung sehr gut:

    123855-20170509-163658-jpg


    Der Trafo hat drei sekundäre Ausgänge: einmal für die 5V-Gleichrichtung, dann 9v~ und die 14~ Volt(?), aus denen der Monitor 12V und die Spannung für die Röhre generiert. Der Netztrafo bei Deinem ist bekannt, aber der andere erinnert mich sehr an die 1541-1, der wohl die Spannung für den Monitor erzeugt.

    Die alten Spiele laufen auch. Einfach den Charset nach $a000 geladen und das serielle Gebimmel drin gelassen. Das geht natürlich besser. Ein unbenutzter Keramik-IDT hatte schon mal einen Schuss in der Adressierung, jetzt ist eine Plastik-Version drin.


    Hier und da noch ein kleines Problemchen zu lösen, aber 64 Chars lassen sich schon mal ändern. Grundlegend funktioniert es. IDT @A000 funktioniert und das Banking-Flipflop wollte noch nicht. Ist im Moment Bank=0 mit GND. Aber das wird auch noch.



    In dem von mir verlinkten Verzeichnis liegen wohl teilweise oder gänzlich Stücke des Vibrants JCH Music-Editor. Den Autor findet man hier: https://blog.chordian.net/2015…/c64_jch_music_editor_v2/ . Soll gar nicht so schlecht sein und es gab wohl später noch eine aktualisierte Version.


    Habe ein Stück laut Header: "-COLDITZ TITLE BY RICHARD RINN!-" erfolgreich reassembliert, angepasst und das läuft auch mit dem CBM. Bei einem Stück aus dem "Jens Christian Huus/"-Verzeichnis hatte ich keinen Erfolg, das hängt merkwürdigerweise nach einiger Zeit. Auf dem C64 läuft es durch. Die Playroutinen sind scheinbar alle unterschiedlich.


    Anbei der erwähnte SID für den CBM 2001N mit SID@$8f00. Läuft im VICE XPET mit entsprechenden Einstellungen und wahrscheinlich dem echten CBM. Da will der SID noch nicht.

    Files

    • tune.prg

      (6.82 kB, downloaded 0 times)

    Gibt es zu diesem Format: https://www.commodore.ca/manua…audio/Vibrants/index.html irgendwo eine Beschreibung ? - Sind die üblichen $1000 Init und $1003 play mit lda#$00 SIDs. Das Datensegment liegt scheinbar ab $1660 im Speicher und in der Play-Routine scheint noch etwas Header eingebettet zu sein.

    Ich suche ein ruhig altes und einfaches Format für den CBM PET2001N, der bei mir einen SID @8f00 hat. Mir ist durchaus bekannt, dass es heute bessere Formate (Goattracker, etc.) gibt. Ich habe einen dieser Tunes aus dem Vibrants-Verzeichnis angepasst und das läuft auch. Nun möchte ich natürlich nicht jedes mal die komplette Play-Routine anpassen, wenn das auch einfacher geht.


    Wie nennen die sich überhaupt ? Init $1000, Play $1003


    Bekannt sind mir noch (ohne Relokation):

    Soundmonitor (von Chris Hülsbeck) Playroutine: $c000

    Romuzak: $1800 (wohl ähnlich ?)

    Future Composer: $8000


    Ich höre sonst nur SIDs, wenn ich da selbst etwas versuche, klingt das wie eine unter Schmerzen sterbende Katze. :)


    Das verwende ich im Moment zum Abspielen:


    Muss mich irgendwie an die originale Geschwindigkeit heran tasten.

    Noch ein paar Korrekturen: Schreibzugriff aufs Banking-Bit, passendes PLCC-Bauteil angelegt, SEL8 ist raus, 2 Bit fürs Banking und weitere Kleinigkeiten. Vielleicht möchte jemand mal drauf sehen und sieht noch einen Fehler ?



    So etwa sieht es dann am Ende aus. Ist noch nichts gerouted.



    Edit: einen Fehler sehe ich eben. Wenn ich aus $0600 lesen möchte, fühlen sich wohl SRAM und Char-ROM angesprochen. Braucht wahrscheinlich noch einen Inverter zwischen den Chip-Selects.


    Edit: Schaltplan ausgetauscht.