Willkommen

in Sven's digitaler Heimat

Nach einiger Zeit Pause konnte ich mich wieder mit dem Emulator beschäftigen und habe die Grafikausgabe, das laden von Band und die Möglichkeit zum Laden von PRG Dateien erweitert.

Continue reading...

Mit der Bildschirmausgabe nimmt das Projekt langsam Form an. Um mit dem Emulator zu interagieren fehlt allerdings noch eine Tastatur.

Diese wird in diesem Teil größtenteils implementiert. Das Mapping der Tasten ist noch statisch, was Raum zur Verbesserung für später offenlässt.

Also los geht's ...

Continue reading...

Videoausgabe und Interrupts

Im letzten Teil konnte man die Inhalte, die auf dem Bildschirm dargestellt werden sollten im Speicher erkennen. Jetzt wird es Zeit für den Textmodus eine Bildschirmausgabe zu programmieren.

Continue reading...

Nachdem die CPU Befehle initial implementiert wurden geht es an die Tests.

Dazu habe ich die Testfälle von Mike Naberezny als Basis genommen und daraus Tests für Mocha & Chai geschrieben. Damit ist die Anzahl der Tests auf aktuell 667 Tests gewachsen.

Zusätzlich wurde die CPU mit der Test-Suite von Klaus Dormann geprüft, um sämtliche Fehler im Code und in den Testfällen zu beseitigen.

Am Ende ist es möglich die C64 Firmware zu starten und die Willkommens-Nachricht im Speicher ab Position 0x0400 zu finden.

Continue reading...

Ein kleiner Zwischenstatus. Die CPU Instruktionen sind vollständig und die Betriebssystem ROM Dateien können geladen werden.

Außerdem kann man beliebige Speicherbereiche betrachten.

Continue reading...

Heute habe ich die Addressierungsarten der CPU und eine Opcode-Tabelle implementiert. In der Tabelle sind alle Opcodes mit Namen, Länge in Bytes und Dauer in CPU Zyklen hinterlegt. Mit dieser Tabelle konnte ich in der Statusseite einen einfachen Disassembler einfügen.

Continue reading...

Im diesem Artikel beginne ich, den ersten Teil des Emulators zu implementieren.

Der aktuelle Projektstand befindet sich in meinem Gitlab-Projekt TSC64Emu.

Continue reading...

C64 In dieser Reihe von Beiträgen habe ich vor, einen C64-Emulator von Grund auf als Webanwendung zu entwickeln.

Die auf dieser Reise gesammelte Erfahrung möchte ich hier dokumentieren. Das Projekt wurde stark von Johan Steenkamp's Blog inspiriert, da ich sein Vorgehen sehr schätze.

Warum beschreibe ich dann mein Vorgehen, wenn es so etwas schon gibt?

Zum einen, weil ich das Projekt in Typescript umsetzen werde und ich nicht immer den gleichen Weg gehen werde.

Zum anderen prüfe ich damit, ob ich das jeweilige Thema verstanden habe, denn wenn ich es verstehe, dann kann ich es auch beschreiben.

Ich werde immer wieder Verweise auf Dokumentation oder andere Blogs einfügen, die mir geholfen haben bestimmte Punkte zu verstehen, die mir noch nicht ganz klar waren.

Also viel Spaß beim lesen ...

NOTE OF THANKS

Hello Johan,

I would like to thank you very much for your blog. So you inspired me to start the journey myself and to write my own C64 emulator.

Your way of explaining the topics that were not known to me until then or only a little bit known helped me to get a better understanding of the subject matter.

I find the implementation of the addressing modes particularly elegant. That helped me a lot, since I first wrote an emulator (Space Invaders Arcade machine with the Intel 8080 CPU) on my first attempt to implement each statement multiple times without a test suite. The debugging was hell, but in the end I was able to run the attract mode, but the cpu had still some bugs that prevented me from playing the game. This is now 3 years ago and at the time I had very little experience of how a CPU works internally.

Today I ventured again to the topic and found your blog. Currently I have reached the point where the emulator boots and I can enter BASIC programs. With that I came further than I ever expected.

Again, many thanks. I will also describe my path in the blog, but in German, because it is easier for me. It should give others the opportunity to devote themselves to this exciting topic.

Greetings from Germany

Sven

My humble beginnings ...

Continue reading...