Hallo Besucher, der Thread wurde 25k mal aufgerufen und enthält 94 Antworten

letzter Beitrag von detlef am

C64 Emulator auf Arduino Teensy 3.6

  • Hi,
    habe einen c64-Emulator für den Teensy 3.6 geschrieben. Das ist ein Microcontroller mit 240MHz(ok, übertaktet).
    Emuliert wird ein kompletter c64, incl. SID und IEC Port, Joystick Ports. Divere Spiele und ältere Demos laufen... das ganz ist noch in einem relativ frühen Stadium, viele Spiele laufen aber bereits.


    Ich bin eher selten in Dt Foren unterwegs und hoffe dass es OK ist, wenn ich einen Link in ein US-Forum poste ?


    (Ansonsten kann ein MOD den auch gerne löschen - oder auch diesen ganzen Post, falls der hier nicht erwünscht ist.)
    https://forum.pjrc.com/threads…499&viewfull=1#post152499
    Der Code ist Open Source und auf Github (Link im anderen Forum)


    Eine VGA Version habe ich in Arbeit. VGA macht der Microcontroller "nebenbei" gleich mit.. allerdings mit 60Hz Refresh sodass es manchmal einbischen flackern könnte.



    <EDIT Syshack>Github Link des Projektes: https://github.com/FrankBoesing/Teensy64

  • @Frank B: Ich kann eine real 1541 anschließen?

  • Oben auf der Seite steht "Compatible to SD2IEC (real drives not tested so far)", ich vermute das heißt es ist bislang nur mit dem sd2iec getestet, aber nicht mit einer 1541. Kann aber auch was anderes heißen, je nachdem was man unter "real drive" versteht :) .


    Ein echter serial-Port ist natürlich ein ziemliches Alleinstellungsmerkmal, das ist super!


    Frank: hast Du auch mal Schnelllader mit dem sd2iec ausprobiert? Z.B. ein JiffyDOS kernal im C64 verwendet und damit geladen? Das ist vom Timing etwas kritischer als die normalen Kernalroutinen. Wenn das geht, ist die Kompatibilität des Serial Ports wohl schon ziemlich hoch.


    EDIT: oder noch einfacher, Cauldron soll auf dem sd2iec laufen und benutzt wohl den Dreamload-Schnelllader.

  • Ja. Liest sich so. Meine Frage war unpräzise. Anschließen kann ich sie. Aber wird sie aktuell oder in Zukunft vollumfänglich funktionieren? Wobei ein Teensy und eine echte 1541 auch komisch anmutet. Besser wäre ein Teensy, der so etwas wie 1541U2 drin hat :thumbsup: und open source ist :whistling: .

  • Zaadi:


    Also vorhanden sind bisher
    - Joystick-Ports (<-Achtung 3 Volt! - Joysticks mit 5V Elektronik drin werden wahrscheinlich nicht funktionieren)
    - IEC
    Mit dem Gedanken eines Userports hatte ich geliebäugelt, den aber irgendwann verworfen, weil ich dachte das den niemand benötigt.
    In der Software kann man den sicherlich nachpflegen.
    Die Hardwarseite ist aber interesssanter: Wie müssten Levelshifter dafür aussehen - und bekommt man das ohne SMD einigermassen klein hin ?
    Am Anfang war mein Ziel, das ganze so klein wie das Display zu machen. 5 * 8.6 cm - Das Ziel ist erreicht :)
    Userport und Lavelshifter dafür passen aber nicht mehr auf die Platine, jedenfalls nicht ohne SMD-Bauteile.


    Ein Expansionsport ist nicht machbar, dazu müsste man noch viel mehr Signale emulieren - dazu hat der Mikrocontroller einfach nicht die nötige Power.


    - USB Derzeit nur für die Tastatur - Joysticks über USB sind noch nicht möglich, da muss ich auch auf die weitere Entwicklung des USB-Host Codes für den Teensy warten, denke ich.


    thE rZA:
    Sagen wir mal so: Zumindest ist der Port dazu gedacht, daß man eine "echte" Floppy anschließt. Ich hatte sogar eine gekauft, allerdings hat sie nur wenige Tage überlebt (Hab vergessen sie auszuschalten, und eines Morgens war sie gehimmelt.. Reparaturversuch fehlgeschlagen - danach habe ich mir an einem Sony-Chip die Finger verbrannt und das Ding in den Keller entsorgt)
    Ich habe auch eine kurze Mail von einem User aus USA erhalten, der erfolgreich Programme von Floppy geladen hat - mehr, bzw. genaueres weiß ich aber nicht.
    thE rZA: Ja es gibt immer was, das besser wäre ;)



    Claus: Schnelllader: Nein, noch nicht probiert. Könnte ein bischen eng werden vom Timing her. Wenn ich morgen Zeit haben sollte, probiere ich das mal.
    Apropos Timing: Das ist recht eng. Die SID Emulation braucht nämlich mehr Zeit als mir lieb ist. Für IEC Zugriffe wird deshalb die SID-Emulation einfach abgeschaltet. Also: Laden + Ton gleichzeitig geht nicht.
    Ich habe noch eine Idee dazu, das zu umgehen, komme aber wohl erst später mal dazu das umzusetzen und zu testen.
    240MHz sind nicht viel .. nur 240 ARM-Takte pro C64 Takt. Und das für alles, vom VIC, PLA, SID, 2 CIA bis zur CPU..


    Auf meiner "Wunschliste" steht noch, den Sd2IEC direkt mit einzubauen - da kann ich aber nichts versprechen. Ich hatte noch keine Gelegenheit mir den Code genauer anzuschauen,
    Flash wäre mehr als genug da, an freier CPU-ZEIT und RAM mangelt es ein wenig...


    Im großen und ganzen bin ich schon froh, daß überhaupt schon so viel läuft.
    Was (NOCH) nicht geht, sind Sachen wie FLI oder DMA-Delay.

  • an freier CPU-ZEIT und RAM mangelt es ein wenig...

    Dann ist es einem richtigen C64 ja schon sehr nah ;-)

  • Danke für die Infos! Ja, 240 Zyklen ist natürlich nicht die Welt. Ich vermute, die letzten Feinheiten von SID und VIC wird man nicht darin unterbringen können. Aber ein sehr spannendes Projekt durch die echten Schnittstellen!

  • Wärt ihr denn sehr am User-Port interessiert ?


    Wenn ja, wofür ? Wären notfalls 3.3 Volt pegel auch OK ?
    ..oder .. wie würdet ihr die Pegelwandler für die ganzen Leitungen realisieren ?


    Für IEC 5V habe ich derzeit einfach 1 Tansistor + 3 Widerstände pro Signal benutzt. Für den Userport würde das ein Tansistor/Widerstands-Massengrab...

  • Ok, ich habe die aktuelle Version heute mit SJLOAD mit dem mitgelieferten CRCHECK ausprobiert. SJLOAD scheint etwas zickig zu sein - manchmal geht es garnicht, dann geht es wieder - als es ging, klappte auch die große CRCCHECK-Datei.
    Ich werde das ganze nochmal mit Jiffydos testen.

  • Mal ein kurzes Update..


    Die Chips sind unbrauchbar - zumindest für IEC. Ich hatte eine sogar eine Platine erstellt und geordert.
    Derzeit ist eine neue Platine unterwegs für VGA unterwegs.. (BSS138 für IEC Levelshifter) diese wird auch einen "Userport"-ähnlichen Anschluss haben - allerdings mit 3.3Volt Pegeln. Die Levelshifter dafür muss man dann halt notfalls, und falls benötigt, selbst dazubasteln.


    Fastloader:
    Mit der ILI9341-Display-Version habe ich Jiffydos getestet. Läuft bei mir problemlos mit SD2IEC. Ich habe dazu allerdings einen kleinen "Hack" eingebaut - wärend der IEC Zugriffe wird der Ton und das Display kurz pausiert.

  • Klasse das mit dem Fastloader! Ich glaube das Timing von JiffyDos ist schon mit eins der engsten, daher glaube ich dass andere Fastloader auch funktionieren dürften.

  • Heute ist mein Display angekommen, konnte es somit nun auch endlich in Betrieb nehmen. Allerdings bin ich zu blöd es selbst zu kompilieren, da kommt sofort, dass er die teensy64.h Datei nicht findet. Wie muss man denn den Sketch starten, damit er alle Dateien findet? Habe auch schon alles in ein Verzeichnis gepackt, geht aber irgendwie nicht, vielleicht habe ich aber auch eine Blockade im Kopf.


    Habe dann einfach das HEX-File geflasht, der Uploader dafür befindet sich übrigens im Arduino-Verzeichnis unter Hardware/Tools


    Viele Programme funktionieren leider noch nicht, aber das was läuft, ist total super!


    IMG_20171030_181728~01.jpg


    IMG_20171030_181602~01.jpg


    IMG_20171030_181437~01.jpg

  • @CapFut. Wo hast Du das Display her? Hast Du auch das 2,8" genommen? So sieht meins aus, der Versender hat hier beim verpacken ganze Arbeit geleistet :thumbdown: