Hallo zusammen,
beim Basteln meines Emulators bin ich grade dabei "Buggy Boy" zum laufen zu bekommen, und gehe daher Traces durch und gucke nach unterschiedlichem Verhalten zwischen meinem Emulator und C64Debugger.
Dabei bin ich bei Buggy Boy auf etwas gestoßen, was sich mir nicht erklärt (vielleicht bin ich auch einfach zu blind mittlerweile).
Wenn man zu diesem Zeitpunkt einen Breakpoint setzt auf 0x0991 (Buggy Boy - REMEMBER release), kommt man in dieser Subroutine an:
Es wird ein neuer IRQ Vektor gesetzt, die Rasterline Interrupts eingeschaltet, es wird jedoch keine tatsächliche Zeile gesetzt - das D012 Register ist die gesamte Zeit auf 0000!
Der RTS springt dann zurück zu:
Hier führt mein Emulator nun den JSR zu 0x0AB4 aus, der C64Debugger jedoch handelt stattdessen anscheinend einen Interrupt ab, und landet im neugesetzten IRQ-Vektor:
Jetzt meine Frage: WIE UND WARUM?
Zu diesem Zeitpunkt sind wir weit weg von Zeile 0, und auch der CIA1 counter is weit weg davon abzulaufen. Das D019 Register zeigt auch 0x00 an.
Also, was genau passiert hier? Habe ich irgendwas offensichtliche übersehen? Oder gibt es besonderes Verhalten mit Rasterline IRQs wenn keine Zeile gesetzt wurde? Oder ist es etwas wirklich simples was ich nicht beachte?
Wenn mir jemand dabei aushelfen könnte, wäre ich wirklich dankbar. Ich versuche schon seit letzter Nacht dahinter zu steigen, komme aber leider überhaupt nicht weiter.
Vielen lieben Dank schon mal im Voraus!
LilaQ