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

    Aber die 6502-Dokumentation hast Du gelesen, oder? Die sollte eigentlich schon die meisten Deiner Fragen beantworten, insbesondere wie Interrupts abgearbeitet werden. Bevor man einen Emulator schreibt, sollte man schon die grundlegenden Funktionen der CPU verstanden haben.

    Am C64 läuft der Systemtimer über IRQ, und die Restore-Taste löst den NMI aus. Daher kann durchaus ein weiterer Interrupt auftreten, während schon einer abgearbeitet wird.

    Interrupts könnte man natürlich auch ohne vollständige CIA-Emulation machen. Es ist ja nur ein schlichter Takt für das Interrupt-Signal erforderlich.

    Wenn man lediglich BASIC zum Laufen bringen will, muß man sicher keinen vollständigen C64 emulieren. VIC müßte lediglich den normalen Textmodus darstellen können. Und SID wird gar nicht benötigt. Und bei den CIAs dürfte ein Interrupt-Timer (der nichtmal programmierbar sein muß) und die Tastaturabfrage ausreichen.

    Wenn der ROM-Inhalt vor dem Reset ins RAM kopiert wird, was der Ausgangspost suggerierte, dann kann die PLA wohl auch stark vereinfacht werden, was dann lediglich bedeutet, daß CPU und VIC auf das selbe RAM zugreifen. Dann würde tatsächlich eine 6502 statt 6510 reichen, und der I/O-Bereich wäre fest im Adressraum vertreten, was das KERNAL ohnehin erwartet.

    Bei einem Reset wird $FFFC und $FFFD vom ROM in den PC geladen. Das sollte auch so in der 6502-Dokumentation drin stehen. Der C64 hat übrigens eine 6510. Und die PLA sollte man auch nicht vergessen.
    Die ROM-Routinen initialisieren dann die Hardware, den Speicher und springen dann ins BASIC.