Hallo liebe C64 Community,
nach wochenlanger Suche habe ich mich dann doch mal entschlossen, Kontakt aufzunehmen, da ich mit meinem Problem einfach nicht weiterkomme
Ja, ich erfülle mir gerade einen langgehegten Traum, und baue den Computer meiner Kindheit, zumindest in Software nach. Auf gut Deutsch, ich schreibe meinen eigenen C64-Emulator (in C#). Primäres Ziel: Spass am Programmieren
Dank der ausgezeichneten C64 Wikis (de/en) und der wirklich guten Beschreibungen dort, bin ich auch relativ fix vorrangekommen. Aktueller Stand: Der 6510 verrichtet auch schon ganz gut seine Arbeit (VIC CIA etc fehlen noch - sind quasi Future Work) - der KERNAL wird gebootet und BASIC meldet sich auch freundlich.
Mein aktuelles Problem: Die Fließkommarechnungen bzw Ausgabe von Fließkommazahlen ist nicht ganz das, was es sein sollte.
PRINT 1/2
.50390625
allerdings
PRINT 0.5
.50234375
Wochenlanges debuggen, googeln, etc hat mich leider nicht weiter gebracht. Auch das Analysieren der entsprechenden KERNAL-Routinen gab mir nicht die zündende Idee.
Ich vermute stark, dass ein Status Flag irgendwo noch falsch gesetzt wird...?
Ich hoffe, dass es hier Experten gibt, die sich mit den Routinen auskennen und/oder selbst mal einen Emulator geschrieben haben und/oder auf ein ähnliches Problem gestoßen sind.
Anbei einen Screenshot des aktuellen Emulators.
Quellcode des Emulators kann ich gerne zur Verfügung stellen.
.50390625 --> 0.10000001 (binary)
was mir nahe legt, dass irgendwie eine 1 "zu wenig" weggeshiftet, wird, oder ähnliches?
Die Frage daher: Hat Jemand eine Idee/einen Tipp, wo ich noch ansetzen könnte bzw was genau falsch laufen könnte?
Viele Grüße und vielen Dank schon mal, für etwaige Ideen
niko