Beiträge von Jotta im Thema „Startadresse C64 Basic“

    Auf diese Frage "was Kernel-Reset so macht" kann ich noch eine Erfahrung von meinem Mini-Emulator beisteuern: vom VIC wird ein Register (aktuelle Vertikal-Zeile, D012 und oder D011 (?)) in einer Schleife abgefragt, ob der VIC auch wirklich die Zeilen "zählt" oder hängt.

    Wird hier immer dasselbe gelesen, hängt sich der emulierte C64 in ebendieser Schleife auf.

    Ja, das "Problem" ist bekannt. Aber für einen einfachen Emulator reicht ja
    40x25er Text und minimale Chipsetsimulation:

    VICII:
    - einfach den Speicher ab 1024 als Text darstellen
    - D011 (?) gibt nur x00 zurück (=> Schleife im Kernal
    bleibt nicht hängen, beim Wert 00 bin ich mir aber
    nicht 100%ig sicher, es ist aber ein konstanter Wert)

    CIA:
    - paralleles IO (sehr einfach implementierbar)
    - Timer-IRQ: hier braucht man nur den 60Hz IRQ
    für die Tastatur (d.h. man muss nur das
    IRQ-Flag abfragen bzw. behandeln)

    Tastatur: (kann schnell sehr ekelig werden)
    - dazu den PC-Tastaturcode per Matrix auf die
    parallelen CIA-Ein/Ausgänge abbilden.
    Mit Shift/Ctrl und Sonderzeichen etc. kann das sehr
    schnell kompliziert werden. Im Endeffekt kommt
    man glaube ich nicht um einen Zustandsautomaten
    rum.

    PLA:
    - braucht man nicht, statt dessen einfache
    Buslogik mit simpler Addressauflösung

    Diesen Aufbau habe ich in vielen Projekten
    im Einsatz, BASIC lässt sich damit wunderbar
    benutzen. Die Komplexität liegt hier also nur
    in der 6502- bzw. 6510-Implementierung,
    die ist aber auch nicht so schlimm.