Dann benutzt du einen C64 Core, wie adtbm es bereits vorschlug und schon hast du deine Opcodes.
Ich brauch die "illegalen" Opcodes nicht. Dafür habe ich u.a. den SiDi (MiST-Klon) mit C64-Core. Ich dachte, du möchtest sie haben.
Du bist in Begriff, Forum64 zu verlassen, um auf die folgende Adresse weitergeleitet zu werden:
Bitte beachte, dass wir für den Inhalt der Zielseite nicht verantwortlich sind und unsere Datenschutzbestimmungen dort keine Anwendung finden.
letzter Beitrag von adtbm am
Dann benutzt du einen C64 Core, wie adtbm es bereits vorschlug und schon hast du deine Opcodes.
Ich brauch die "illegalen" Opcodes nicht. Dafür habe ich u.a. den SiDi (MiST-Klon) mit C64-Core. Ich dachte, du möchtest sie haben.
... ist aber zum momentanen Zeitpunkt einfach nicht realisierbar (aus Zeitgründen).
Du weißt schon, dass zuviel Schlaf eher ungesund ist?
Dazu sagte adtbm, das die das in Erwägung gezogen haben. Aber da man Problemlos einen anderen Core starten kann, haben sie das verworfen.
Man muss es ja auch nicht unnötig komplex machen. Zuviel Konfigurationsoptionen, die dann eh keiner durchblickt und dann auch kaum verwendet werden.
Wenn ein Demo nicht funktioniert, dann startet man eben den anderen Core. Das ist kein Beinbruch und sicher auch nicht zuviel verlangt vom Benutzer.
Dann benutzt du einen C64 Core, wie adtbm es bereits vorschlug und schon hast du deine Opcodes.
Ich brauch die "illegalen" Opcodes nicht. Dafür habe ich u.a. den SiDi (MiST-Klon) mit C64-Core. Ich dachte, du möchtest sie haben.
Danke, aber ich mach seit dem Schulhof nix illegales mehr mit dem 64er.
Zum C64 Modus:
Beim 4510 fehlen die illegalen Opcodes.
Diese wurden gegen legale neue Opcodes ersetzt, die z.B. 32Bit Rechenfunktionen ermöglichen, oder einfacheren Zugriff auf den höheren Speicher, also die ganzen 384kB.
Im C64 Modus kann man diese neues Opcodes ‚einfach so‘ benutzen.
Den 80 Zeichen Modus des VIC IV kann man aktivieren, aber der Kernal des C64 kann nicht wirklich was damit anfangen. Das original 1000 Zeichen (25x40) Character Video RAM liegt ‚eingeklemmt‘ unten in den 64kB des C64. Für die 80 Zeichen benötigt man 2000 Zeichen (25x80), die man woanders hinlegen muss.
Also alles nicht so einfach.
Man benötigt da auf jeden Fall Anpassungen, um im C64 Modus mit 80 Zeichen Arbeiten zu können.
Dann benötigen die verbesserten Grafikmodi immer auch mehr Speicher.
Um 320x200 Pixel mit 256 Farben darzustellen benötigt man ziemlich genau 64kB RAM.
Also den ganzen Speicher des C64. Dann wäre nichts mehr für Kernal, Basic V2 und System vorhanden.
Man ist also gezwungen in diesem Fall den höheren Speicher zu verwenden, also z.B. Bank 1.
Der 4510 hilft da aber schon immens.
Mega65:
Technisch geht das alles, es muss nur jemand alles neu programmieren.
Aber wozu will man das. Der Mega65 Modus unterstützt doch alles schon durchgängig, vor allem auch durch das Basic65.
Wenn man doch alles neu für den C64 Modus programmieren muss, um die neue Hardware nutzen zu können, dann kann man auch gleich alles direkt auf dem Mega65 portieren bzw. programmieren.
Meine Meinung, der C64 Modus ist nett. Was darauf an original Software läuft ist ok. Wenn es nicht läuft, dann muss man damit leben.
Nicht falsch verstehen, es wird sehr viel Software laufen, denn der VIC II ist vollständig implementiert.
Nur dürfen keine illegalen Opcodes verwendet werden, und das 1541 darf nicht ‚benutzt‘ werden. Wobei, man kann ja ein echtes 1541 anschliessen, und dann…..
Es wird sicher bald einen separaten C64 Core geben, mit illegalen Opcodes und mit 99,9% Kompatibilität.
So lange der nicht da ist, wird man mit dem aktuellen C64 Modus des Mega65 klar kommen müssen.
Hui, und mit ein paar € Spende bin ich nun unsterblich verewigt...
Das ist ein kleines Dankeschön an all' diejenigen, die uns geholfen haben den MEGA65 Wirklichkeit werden zu lassen
https://files.mega65.org/manuals-upload/mega65-userguide.pdf
PS: ab Seite 221 ;-)
YEAH!
Ist der MEGA65 nach dem Einschalten im 40MHz-Modus? Oder im 3.5MHz-Modus? Kann ich die CPU-Frequenz auch in allen Betriebsarten beliebig umstellen? (also auch im C64-Modus)?
Hi ZeHa
das wollte ich noch kurz separat beantworten. In der Weihnachtsdemo die ich damals für deine Weihnachtshefte eingeschickt habe, kannst du gut sehen, wie ich im
C64 Modus (BASIC2) die Frequenzen ändere, abfragen kann, ob das Programm auf einem C64 mit VIC-II oder einem C65 mit VIC-III oder einem MEGA65 mit VIC-IV läuft, usw.
Ich habe dort auch gezeigt, wie ich mit BASIC2 den VIC-IV aktiviere und auf die VIC-IV features "durchgreife" um das 15 Farben Sprite des Weihnachtsbaums zu realisieren.
Stimmt, vielleicht sollte ich mir das mal genauer anschauen
In dem Zusammenhang zitiere ich mal einen Auszug aus dem "Großen MEGA65-Buch", in dem erklärt wird, dass das Hauptproblem der C64-Inkompatibiltät des C65 bei einigen Spiele weniger die fehlenden illegalen Opcodes sind, sondern der so genannte "Read-Modify-Write Instruction Bug", der beim MEGA65 so angegangen worden ist, dass deutlich mehr C64-Spiele auf ihm laufen als auf dem originalen C65.
Zitat von MEGA65 book (Seite G-4)Alles anzeigenRead-Modify-Write Instruction Bug Compatibility
The 65CE02 processor optimised a group of instructions called the Read-Modify-Write (RMW) instructions. For such instructions, such as INC, that increments the contents of a memory location, the 6502 would read the original value and then write it back unchanged, before writing it back with the new increased value. For most purposes, this did not cause any problems. However, it turned out to be a fast way to acknowledge VIC-II interrupts, because writing the original value back (which the instruction doesn’t need to do) acknowledges the interrupt. This method is faster and uses fewer bytes than any alternative, and so became widely used in C64 software.
The problem came with the C65 with its 65CE02 derived CSG4510 that didn’t do this extra write during the RMW instructions. This made the RMW instructions one cycle faster, which made software run slightly faster. Unfortunately, it also meant that a lot of existing C64 software simply won’t run on a C65, unless the interrupt acknowledgement code in each program is patched to work around this problem.
This is the single most common reason why many C64 games and other software titles won’t run on a C65. Because this problem is so common, the MEGA65’s 45GS02 includes bug compatibility with this commonly used feature of the original 6502. It does this by checking
if the target of an RMW instruction is $D019, i.e., the interrupt status register of the VIC-II. If it is, then the 45GS02 performs the dummy write, allowing many C64 software titles to run unmodified on the MEGA65, that do not run on a C65 prototype.
By only performing the dummy write if the address is $D019, the MEGA65 maintains C64 compatibility, without sacrificing the speed improvement for all other uses of these instructions.
Der Einfachheit halber auch die DeepL-Übersetzung ins Deutsche:
ZitatAlles anzeigenKompatibilität von Read-Modify-Write-Befehlen
Der 65CE02-Prozessor optimierte eine Gruppe von Befehlen, die so genannten Read-Modify-Write (RMW)-Befehle. Bei solchen Befehlen, wie z. B. INC, die den Inhalt einer Speicherstelle erhöhen, las der 6502 den ursprünglichen Wert und schrieb ihn dann unverändert zurück, bevor er ihn mit dem neuen, erhöhten Wert zurückschrieb. Für die meisten Zwecke bereitete dies keine Probleme. Es stellte sich jedoch heraus, dass dies ein schneller Weg ist, um VIC-II-Interrupts zu quittieren, da das Zurückschreiben des ursprünglichen Wertes (was der Befehl nicht tun muss) den Interrupt quittiert. Diese Methode ist schneller und benötigt weniger Bytes als jede andere und wurde daher in der C64-Software weit verbreitet.
Das Problem kam mit dem C65 und seinem vom 65CE02 abgeleiteten CSG4510, der diesen zusätzlichen Schreibvorgang während der RMW-Befehle nicht durchführte. Dadurch wurden die RMW-Befehle um einen Zyklus schneller, was die Software etwas schneller laufen ließ. Leider bedeutete dies auch, dass eine Menge bestehender C64-Software einfach nicht auf einem C65 laufen würde, es sei denn, der Interrupt-Acknowledgement-Code in jedem Programm wird gepatcht, um dieses Problem zu umgehen.
Dies ist der häufigste Grund, warum viele C64-Spiele und andere Software-Titel nicht auf einem C65 laufen. Weil dieses Problem so häufig auftritt, enthält der 45GS02 des MEGA65 eine Fehlerkompatibilität mit dieser häufig verwendeten Funktion des ursprünglichen 6502. Dies geschieht durch die Überprüfung
ob das Ziel einer RMW-Anweisung $D019 ist, d.h. das Interrupt-Statusregister des VIC-II. Ist dies der Fall, führt der 45GS02 den Dummy-Schreibvorgang aus, so dass viele C64-Soft Software-Titel auf dem MEGA65 laufen, die auf einem C65-Prototyp nicht laufen.
Indem der Dummy-Write nur durchgeführt wird, wenn die Adresse $D019 ist, behält der MEGA65 die C64-Kompatibilität, ohne die Geschwindigkeitssteigerung bei allen anderen Verwendungen dieser dieser Befehle.
Das habe ich so garnicht gewusst.
Ich hab mir schon einiges im Handbuch angeschaut, aber über den Passus bin ich noch nicht gestolpert.
Wird dieser ‚Read-Modify-Write‘ Bug nur in Verbindung mit der Adresse $D019 verwendet?
Könnte es nicht auch an anderer Stelle verwendet worden sein?
Und noch eine Frage, damals wurde ja bei zeitkritischen Sachen gerne jeder CPU Takt gezählt, um bei einem Programm ein bestimmtes Zeitverhalten zu erreichen.
Ich gehe jetzt mal davon aus, das der 4510 auch andere Befehle mit weniger Taktzyklen ausführt.
An der Stelle könnten doch auch Inkompatibilitäten auftreten.
Oder wenn, dann machts der 4510 in weniger Taktzyklen, und schneller sollte (fast) immer ok sein?
Wobei, wenn eine Routine aus bestimmten Gründen exakt 100 Taktzyklen brauchen muss, nicht mehr und auch nicht weniger, dann kann es mit dem 4510 auch da zu Inkompatibilitäten kommen.
Aber sehr interessant ist das alles, das muss ich sagen.
Übrigens, grosses Kompliment an euch (speziell an Paul) für die Dokumentation.
👍👍
das wurde schon auf FPGA-Ebene gemacht
Sonst hätte das mit der Synthese und den Timings nicht hingehauen ...
Ich meinte ich habe von diesem Bug der verschiedenen ‚Read-Write-Modify‘ Befehle im 6502/6510 nicht gewusst.
Das Paul dieses Verhalten dann im HDL-Programm im FPGA für den 4510 nachgebildet hat, steht ja im Handbuch an der von Snoopy zitierten Stelle.
Damit ist der FPGA 4510 kompatibler zum 6502 als der originale 4510.
Wobei er das Verhalten nur nachbildet, wenn ‚Read-Write-Modify‘ Befehle auf die Adresse $D019 zugreifen.
Sehr schön, sehr speziell.
😎😎
Wann werden eigentlich die Gehäuse für die Case-Funder der Top10 verschickt?
War das so angedacht? Kann ich mich gar nicht dran erinnern
Habe eine Mail bekommen was den Start der Pre-Order betrifft. Danke.
————————————————
Dear supporter,
another milestone in the MEGA65 project is reached. Pre-Order for the MEGA65 will start to be available sometime next week at the Trenz Electronic webshop http://trenz.org/mega65
Dear supporter,
another milestone in the MEGA65 project is reached. Pre-Order for the MEGA65 will start to be available sometime next week at the Trenz Electronic webshop http://trenz.org/mega65
Bleibt noch etwas Zeit, genug Cola, Chips und einen Nachttopf zu besorgen und ein Diesel-Not-Internet-Aggregat anzumieten. Nicht dass man gerade bei Verkaufsstart in der Küche isst, auf dem Klo sitzt oder gar die Internetverbindung ausfällt.
Ich habe auch gerade die Mail bekommen. Wollte schon fast spontan bestellen und sehe gerade dass das erst nächste Woche geht. Ganz gut so. Muss erstmal schauen was das Teil wirklich kostet.
Muss erstmal schauen was das Teil wirklich kostet.
Das ist nicht notwendig. Bei der Vorbestellung füllst du einfach eine Kontovollmacht aus. Die buchen dann schon ab, was es kostet.
Scheisse, Göttergatte hat sein Auto geschrottet. Totalschaden ...
Nix mega65 ....