Das Kochrezept, um eigene Funktionen in den Reset-Vektor einklinken zu können, lautet wie folgt:
Die Systemvariable resvalid auf den Wert 0x31415926 setzen,
denn anderenfalls wird resvector vom BIOS gar nicht beachtet.
Adresse der eigenen Funktion in den resvector-Vektor schreiben.
Per jmp(a6) aus der Funktion zurückspringen.
Wichtig: Ein Rücksprung per rts aus der installierten Funktion ist nicht möglich, da zu diesem Zeitpunkt noch kein Stack initialisiert ist. In der Praxis könnte man z.B. so vorgehen:
RESMAGIC equ $31415926
_resvalid equ $426
_resvector equ $42a
.text
install: move.l _resvalid,oldvalid
move.l #RESMAGIC,resvalid
move.l _resvector,oldreset
move.l #newreset,_resvector
rts
dc.b "XBRARESV"
oldreset: dc.l 0
newreset: move.l oldreset,_resvector
move.l oldvalid,_resvalid
jmp (a6)
.bss
oldvalid: .ds.l 1
Achtung: Damit sich mehrere Programme installieren können, muß nach Abarbeitung der Funktion eine saubere De-Installation erfolgen.
Querverweis: Systemvariablen Systemvektoren XBRA-Verfahren