Home TypdefinitionenTypdefinitionen OHEADEROHEADER PrintDescPrintDesc

I.14 OSHEADER

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:
 

Wert Land
0 bis 126 siehe bei der Beschreibung des _AKP-Cookie
127 Alle Länder werden unterstü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 (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


Home TypdefinitionenTypdefinitionen OHEADEROHEADER PrintDescPrintDesc