•  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.9  XBRA-Verfahren                                                TOS

Das XBRA-Verfahren ("eXtended BRAner") geht auf eine Idee von Moshe 
Braner zurück, und sollte von allen Programmen benutzt werden, die 
Vektoren verbiegen.

Das Prinzip besteht darin, daß jedes vektorverbiegende Programm direkt 
vor seiner eigenen Einsprungadresse (also genau vor der Adresse auf 
die der Vektor gesetzt wurde), die folgende Struktur plaziert:

typedef struct
{
    int8_t  xb_magic[4];   /* "XBRA" = 0x58425241       */
    int8_t  xb_id[4];      /* ID aus vier ASCII-Zeichen */
    int32_t xb_oldvec;     /* alter Wert des Vektors    */
} XBRA;

Die Komponente xb_magic erlaubt eine sichere Erkennung der XBRA- 
Struktur; xb_id ist die ID des jeweiligen Programms, welches den 
Vektor verbiegt.

Mit Hilfe dieses Verfahrens ist es für ein Programm leicht möglich 
festzustellen, ob es schon installiert ist (das geht allerdings auch 
über den Cookie-Jar), und sich wieder aus der Vektorkette zu 
entfernen. Wichtig ist jedoch, daß sich alle (!) Programme an dieses 
Verfahren halten, da sonst die Vektorkette unterbrochen wird.

Hinweis zu MagiC: Programme, die sich in irgendwelche Systemvektoren 
hängen, sollten sich auch in den etv_term-Vektor einklinken. Falls das 
Programm abnormal beendet wird, springt das Betriebssystem zunächst 
über den etv_term-Vektor. Bei dieser Gelegenheit kann man sich dann in 
Ruhe aus allen veränderten Vektoren zurückziehen; da MagiC für jede 
Applikation einen eigenen etv_term-Vektor verwendet, kann es dabei 
nicht zu Kollisionen kommen.

Das XBRA-Verfahren hat sich im laufe der Zeit durchgesetzt, so daß es 
mittlerweile als schlechter Programmierstil gilt, wenn man es nicht 
benutzt.

Querverweis: Cookie-Jar   Cookie- und XBRA-Liste   Reset-Vektor