The recipe for hooking your own routines into the reset-vector runs as follows:
Set the system variable resvalid to the value 0x31415926, as
therwise resvector will be completely ignored by the BIOS ignore.
Write the address of your own function in the resvector vector.
Jump back from the function via jmp(a6).
Important: A jump back from the installed function via rts is not possible, since no stack has been initialised yet at this time. In practice one could proceed as follows, for instance:
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
Warning: So that multiple programs may install themselves, a clean de-installation must follow the handling of the function.
See also: System variables System vectors XBRA procedure