typedef struct _osheader { uint16_t os_entry; /* BRAnch-Instruktion zum Reset-Handler */ uint16_t os_version; /* TOS-Versionsnummer */ void *reseth; /* Zeiger auf Reset-Handler */ struct _osheader *os_beg; /* Basisadresse des Betriebssystems */ void *os_end; /* erstes nicht vom BS benutztes Byte */ int32_t os_rsvl; /* reserviert */ GEM_MUPB *os_magic; /* GEM-Memory-Usage-Parameter-Block */ int32_t os_date; /* TOS-Datum (englisch !) im BCD-Format */ uint16_t os_conf; /* verschiedene Konfigurationsbits */ uint16_t os_dosdate; /* TOS-Datum im GEMDOS-Format */ /* Die folgenden Komponenten stehen erst ab TOS-Version 1.02 (Blitter-TOS) zur Verfügung */ int8_t **p_root; /* Basisadresse des GEMDOS-Pools */ int8_t **pkbshift; /* Zeiger auf BIOS-Kbshift-Variable Für TOS 1.00 siehe Kbshift */ BASEPAGE **p_run; /* Adresse der Variablen, die einen Zeiger auf den aktuellen GEMDOS- Prozess enthält. */ int8_t *p_rsv2; /* reserviert */ /* Falls EmuTOS vorhanden, dann 'ETOS' */ } OSHEADER;
Die Struktur taucht auch unter dem Namen SYSHDR auf.
Hinweis:
os_conf | Die Komponente os_conf enthält im untersten Bit das
sogenannte NTSC/PAL-Flag; ist dieses Bit gesetzt, so handelt es sich
um ein PAL-Videosystem. Die restlichen Bits beinhalten eine
Länderkennung, die z.B. dazu dienen kann, die zu benutzende Sprache
zu erkennen. Es gilt die folgende Belegung:
Achtung: Um die zu benutzende Sprache zu ermitteln, sollte nach Möglichkeit nicht auf den OSHEADER, sondern auf den _AKP-Cookie bzw. auf die Funktion appl_getinfo (Opcode 3) zurückgegriffen werden. | ||||||
p_root | Bei TOS 1.00 befindet sich der Zeiger bei der Adresse 0x56FA
(0x7E0A im spanischem TOS).
| ||||||
p_run |
BASEPAGE **GetRun (void) { int32_t savessp = Super (0L); OSHEADER *O = *((OSHEADER **)(0x4f2L); Super ((void *) savessp ); O = O->os_beg; /* wegen eines Fehlers in alter AHDI-Version */ if (O->os_version < 0x102) { if ((O->os_conf >> 1) == 4) /* PAL-Modus wegshiften */ return ((BASEPAGE **)0x873c); /* Spanisches TOS 1.0 */ else return ((BASEPAGE **)0x602c); } else return O->p_run; } |
Querverweis: Kbshift _sysbase Systemvariablen Systemvektoren