Interrupt
Als Interrupt wird eine Unterbrechungsanforderung bezeichnet, die die aktuelle Arbeit des Prozessors unterbricht und so den Prozessor veranlasst andere Prozesse zu verarbeiten, wobei danach üblicherweise wieder an der Stelle der Unterbrechung (ähnlich wie bei einem Unterprogrammaufruf) fortgefahren wird.
Beim C64 wird innerhalb von BASIC V2 der CIA1-Timer so eingestellt, dass 60 mal innerhalb einer Sekunde ein Interrupt Request (IRQ) ausgelöst wird. Die Interrupt-Routine kümmert sich dann um die Tastaturabfrage und die Systemuhr sowie um das Cursorblinken (Details siehe IRQ, Abschnitt "ISR des KERNAL"). Dadurch kann
- über die Systemvariablen TIME und TIME$ die aktuelle Systemzeit ermittelt,
- mit der Taste RUN/STOP ein laufendes BASIC-Programm unterbrochen bzw.
- mit der Taste CTRL das Listen verlangsamt
werden.
Strenggenommen ist auch der nichtmaskierbare NMI beim C64 ein "Interrupt", in der Praxis wird jedoch meist mit "Interrupt" das Auslösen eines IRQ gemeint. BASIC V2 benutzt von sich aus abseits von RUN/STOP +RESTORE und den RS232-Routinen keine NMIs.
Tipps & Tricks[Bearbeiten | Quelltext bearbeiten]
- Interrupt per BASIC abschalten:
POKE 56334, PEEK(56334) AND 254
- Hinweis: Durch die Abschaltung erfolgt auch die Deaktivierung der Abfrage der Tastatur. Der C64 ist somit in dieser Zeit nicht mehr direkt bedienbar. Daher ist diese Methode nur innerhalb von BASIC-Programmen zu empfehlen. Weiterhin muss das BASIC-Programm fehlerfrei arbeiten, damit der Interrupt wieder erfolgreich angeschaltet werden kann.
- Interrupt per BASIC einschalten:
POKE 56334, PEEK(56334) OR 1
- Interrupt per Tastatur einschalten: RUN/STOP +RESTORE
Weblinks[Bearbeiten | Quelltext bearbeiten]
Wikipedia: Interrupt |