•  Back 
  •  BIOS 
  •  Index 
  •  Tree View 
  •  Cross references 
  •  Help page 
  •  Show info about hypertext 
  •  View a new file 
Topic       : TOS - das Betriebssystem
Author      : 
Version     : tos.hyp (5. März 2013)
Subject     : Programmieren/Atari
Nodes       : 3001
Index Size  : 93602
HCP-Version : 5
Compiled on : Atari
@charset    : atarist
@lang       : 
@default    : Titel
@help       : 
@options    : +g -i -s +x +zz -t4
@width      : 70
View Ref-File3.3  Einklinken in den Reset-Vektor                                TOS

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