Home BIOSBIOS VT-52-TerminalVT-52-Terminal BSIM-BIOS-ErweiterungenBSIM-BIOS-Erweiterungen

3.9 XBRA-Verfahren

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


Home BIOSBIOS VT-52-TerminalVT-52-Terminal BSIM-BIOS-ErweiterungenBSIM-BIOS-Erweiterungen