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-File16.9.14 OSHEADER TOStypedef 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 tauch 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:
Wert Land
0 bis 126 siehe bei der Beschreibung des _AKP-Cookie
127 Alle Länder werden unetrstützt.
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.
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 **)0x0x602c);
}
else
return O->p_run;
}
Querverweis: Kbshift_sysbaseSystemvariablenSystemvektoren