Hallo Besucher, der Thread wurde 4,7k mal aufgerufen und enthält 17 Antworten

letzter Beitrag von bigby am

Technik des Superkernal 36 in 1

  • Also erstmal möchte ich den Machern für die Verwirklichung dieses genialen Projekt gratulieren!



    Leider habe ich das verschlafen.
    Wenn ihr eine Neuauflage macht, würde ich gerne einen Superkernal erwerben. :)



    Was mich aber wirklich interessiert, wie habt ihr das gemacht???
    Wie habt ihr dieses Wunder vollbracht?


    Sehe ich das richtig, dass da außer einem STM32F405 nicht viel anderes drauf ist?


    Ganz ehrlich, hätte mich einer vorher gefragt, Ich hätte dies für unrelisierbar gehalten!


    Das Timing ist ja nicht gerade unkritisch beim C64, und es ist ja 3,3V Technik ...



    Dass ihr einen ROM Ersatz rein in Software realisiert habt!
    Es macht mich echt fassungslos ...


    ==========


    Die EPROMS sind ja 200ns Typen, der ARM hat einen Takt von 180 MHz, wie habt ihr das geschafft es Taktgenau hinzukriegen???
    Noch dazu, schnell genug hochohmig zu schalten, wenn kein CS da ist!!
    Ich bin schwer beeindruckt!!!


    Möchtet ihr uns etwas erleuchten, wie ihr das geschafft habt?



    Und warum kein billiger FPGA?


    Spartan 6 sind inzwischen total billig und die Software kann in einem Softcore laufen.

  • Da damit Geld verdient wird,

    Ich hab da keinerlei Ahnung und will das eigentlich auch nicht wissen, aber sind es denn Gewerbetreibende die das vertreiben um damit Geld zu verdienen? ( Ausgenommen Bobbel natürlich)

  • Da damit Geld verdient wird,

    hm, wie man bei der Verfügbarkeit was verdienen will erschließt sich mir nicht ganz ;)
    ist ja nun kein handgefertigter Pagani Zonda der zu Preisen verkauft wird, dass man mit einigen Exemplaren schon richtig gut Geld gemacht hat...
    ist auch alles nicht als Vorwurf gemeint nur birgt die dürftige Informationspolitik viel Raum für Spekulation und bei einigen auch für Unzufriedenheit, bei lemon64 gibt es auch Interessenten, man weiß halt einfach nicht ob noch was kommt und wenn ja wann, ob man helfen kann oder nicht, wie auch immer...

  • Ich muß diesen Thread hier noch einmal "anstupsen". Ich kann verstehen, warum die Macher des SuperKernal die technischen Details ihrer beachtlichen Leistung lieber für sich behalten wollen. Auch wenn es schade finde. Aber das muß den Rest von uns ja nicht davon abhalten, zumindest zu spekulieren.


    Neben der von @Diddl aufgeworfenen Frage, wie man es nur mit einem STM32F405 schafft, ein ROM zu emulieren, fände ich es auch spannend zu lernen, wie der "Rückkanal" vom C64 in den SuperKernal realisiert wurde. Das muß ja anscheinend über den Datenbus geschehen. Aber in der Position des Kernals sieht der Controller ja nur die untersten 13 Bit des Adreßbusses (plus sein CS Signal vom PLA). Wie würde man die Adressierung lösen? Woher weiß der Controller, wann er ein Byte vom Datenbus lesen muß? Vielleicht übersehe ich da ja etwas offensichtliches?

  • Ich würde mal denken, der Rückkanal ist wie bei den Dallas Uhren gelöst. CMD hat die so in der CMD HD und FD verwendet, um im ROM Adressraum eine Echtzeituhr unterzubringen.


    Hier gibt es ein Datenblatt vom DS1315:
    http://www.farnell.com/datasheets/57670.pdf

  • Ich würde mal denken, der Rückkanal ist wie bei den Dallas Uhren gelöst. CMD hat die so in der CMD HD und FD verwendet, um im ROM Adressraum eine Echtzeituhr unterzubringen.

    Du meinst, die Übertragung in Richtung SuperKernal erfolgt durch Lesevorgänge auf einer bestimmten Adresse (oder auf mehreren) im Kernal ROM? Also quasi über den Adreßbus, statt über den Datenbus? Das könnte funktionieren.

  • Wie würde man als SuperKernal am einfachsten/sichersten den Reset und Doppelreset erkennen? Am Lesezugriff auf den Reset-Vector? Wäre das nicht ein wenig anfällig für False Positives?

    Die CPU macht ja beim Reset ein wenig mehr als nur den Reset-Vektor zu lesen. Auch wenn der Superkernal nicht alle Adressleitungen "in Reichweite" hat könnte man zB noch prüfen, ob unmittelbar vor Lesen des Resetvektors alle sichtbaren Adressleitungen zu drei unterdrückten Stack-Schreibzyklen passen.

  • Die CPU macht ja beim Reset ein wenig mehr als nur den Reset-Vektor zu lesen.

    Guter Punkt! Die vollständige Sequenz ist z.B. hier recht detailliert beschrieben.


    Die Spartan sind aber immer noch um größen teurer als die STM32Fxxx

    Da stimme ich Dir zu. FPGA sind trotz allem leider noch unverhältnismäßig teuer, finde ich.

  • Ich muß diesen Thread hier noch einmal "anstupsen". Ich kann verstehen, warum die Macher des SuperKernal die technischen Details ihrer beachtlichen Leistung lieber für sich behalten wollen.

    Über die Funktionalität des SuperKernals halten sowohl @RetroJeck, der das SuperKernal / die STM-ROM-Emulation Entwickelt & Programmiert hat als auch meine Person immer mal wieder persönliche Vorträge wie z.b. auf der DoReCo. Da wird nichts "Geheim" halten, nur die Quellcodes werden bis auf weiteres nicht Veröffentlicht.


    Wer Fragen hat: Immer her damit !


    Die CPU macht ja beim Reset ein wenig mehr als nur den Reset-Vektor zu lesen.

    Genau, man kann halt am "Zugriff" auf das ROM sehen was die CPU gerade so "macht". Und dann wird der 6510 CPU "live" einfach neuer Code zur Laufzeit unter geschoben :-)


    Der STM ist trotz 168 MHz beim C64 nicht in der Lage das ROM Taktzyklen-Genau abzubilden um dann noch so nebenbei andere Rechenoperationen durchzuführen (Böser VIC :-). Der Trick besteht also darin nach einem Reset / Doppelreset dem CPU eine kleine Routine unterzuschieben die eine zweite Routine ins RAM kopiert und da erst einmal herum "loopt" und weitere Zugriff auf das Kernal ROM zu unterbinden. Dann kann man die STM-ROM-Emulation pausieren und im Kernal-Bereich neue Routinen einblenden und der Routine im RAM anzeigen: Da ist was neues - starte das mal.


    Aus diesem Grund kann der SuperKernal halt auch im Betrieb keine Floppy oder sonst irgendwas "Emulieren" - dem CPU fehlt ganz einfach die Rechenzeit dazu. Das war aber auch niemals irgendwie Geplant.


    Ja... und die 5Volt Toleranz ist eine weitere Hürde.


    Ja, ohne diese 5V Toleranz würde das SuperKernal nicht funktionieren. Dann bräuchte man noch nen ganzen Sack Level-Shifter und das Ding wäre Ruck-Zuck größer als der Originale Kernal ROM. Machbar aber nicht schöööööön ....