Schneider / Amstrad CPC Forum
Amstrad / Schneider CPC => Programmierung => Topic started by: oobdoo on 08. January 2018, 21:02:29
Was muss man eigendlich tun um 100% Kontrolle über den CPC zu bekommen, so das kein OS oder Interrupt dazwischen fummelt?
In Assembler ? Einfach DI. Dann sind alle Interrupts aus und das Betriebssystem kommt nicht mehr dran. Wenn man dann selber Interrupte verwenden will, legt man ins Ram ab Adresse 0x38 einen Jump auf die eigene IRQ-Routine.
Beispiel:
DI
LD HL,#0X0038
LD (HL),#0XC3 ;JP
ld hl, #eigeneInterruptRoutine
ld ( #0x39 ), hl
ei
Und ab &0066 den Nicht-maskierbaren-Interrupt (NMI) abfangen, mit einem RETN.
Das ist aber nur wichtig, wenn man die PlayCity oder das Albireo dran hat, da (bisher) nur die beiden Karten NMI's auslösen können.
Der Vorteil des "CPC übernehmen" liegt klar auf der Hand: Man kann mit den Interrupts, RST's und Zweitregistern machen was man will (beim FutureOS habe ich auch darauf geachtet, dass die dem Programmierer zur Verfügung stehen).
Was willst denn am CPC coden?
Ich will aktuell nichts in Z80 programmieren. Aber hin und wieder schaue ich mir gerne Demos an (C64 :zunge0020:) und dann kam halt mal diese Frage auf. :D