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