Home BIOSBIOS BIOS-FunktionslisteBIOS-Funktionsliste XBIOSXBIOS

3.12 BIOS Strukturen


3.12.1 BPB

typedef struct
{
  WORD   recsiz;       /* Bytes pro Sektor                    */
  WORD   clsiz;        /* Sektoren pro Cluster                */
  WORD   clsizb;       /* Bytes pro Cluster                   */
  WORD   rdlen;        /* Verzeichnislänge                    */
  WORD   fsiz;         /* Länge der FAT in Sektoren           */
  WORD   fatrec;       /* Start der 2. FAT                    */
  WORD   datrec;       /* 1. freier Sektor                    */
  WORD   numcl;        /* Gesamtzahl an Cluster               */
  WORD   bflags;       /* Flags als Bitvektor                 */
                       /* Bit 0: 0 (12-Bit-FAT), 1 16-Bit-FAT */
                       /* Bit 1: 0 (zwei FATs), 1 (eine FAT)  */
                       /*        erst ab TOS 2.06 verfügbar   */
} BPB ;

Querverweis: Getbpb

3.12.2 MD

typedef struct
{
     MD *m_link;         /* next MD (or NULL)          */
     long m_start;       /* saddr of block             */
     long m_length;      /* # bytes in block           */
     PD *m_own;          /* owner's process descriptor */
} MD;

Querverweis: BIOS   Getmpb   MPB

3.12.3 MPB

typedef struct
{
    MD *mp_mfl;      /* Liste des freien Speicher   */
    MD *mp_mal;      /* Liste des belegten Speicher */
    MD *mp_rover;    /* verschiebbarer Zeiger       */
} MPB;

Querverweis: BIOS   Getmpb

3.12.4 patternrectdata

struct patternrectdata
{
  int16_t x1, y1;
  int16_t x2, y2;
  int32_t fg_color;
  int32_t bg_color;
  int16_t mode;
  int32_t *pattern;
  int32_t *patternmask;
}

Querverweis: _VDI

3.12.5 PUN_INFO

Diese Struktur ist wie folgt definiert:

typedef struct
{
    WORD puns;               /* Anzahl der Geräte               */
    BYTE pun[16];            /* diverse Flags                   */
    LONG part_start[16];     /* Partitionsanfänge               */
    LONG P_cookie;           /* muss "AHDI" sein                */
    LONG *P_cookptr;         /* zeigt auf das vorherige Element */
    UWORD P_version;         /* Versionsnummer (>= 0x0300)      */
    UWORD P_max_sector;      /* maximale Sektorgröße            */
    LONG  reserved[16];      /* reserviert                      */
} PUN_INFO;
puns Enthält die Anzahl vom Hard-Disk-Treiber gefundenen Festplatten. Mit zwei Dummyeinträgen (0xFF) für die Laufwerke A und B.
 
pun
 
Bit 0..2: Gerätenummer der Festplatte.
 
Bit 3: Bei gesetzem Bit handelt es sich um ein Gerät an der SCSI-Schnittstelle (sonst: ACSI): Diese Bit ist zwar noch nicht offiziell dokumentiert, kann aber wohl ohne Vorbehalt benutzt werden.
 
Bit 4: Falcon IDE
 
Bit 5: USB
 
Bit 6: Wechselmedien
 
Bit 7: Wenn dieses Bit gesetzt ist, dann wird das BIOS-Gerät nicht vom Plattentreiber verwaltet (gilt beispielsweise für die beiden Diskettenlaufwerke auf den Gerätenummern 0 und 1)
 
part_start Enthält für jede (unterstützte) Gerätenummer die Nummer des Startsektors auf der betreffenden Festplatte. Wieder mit zwei Dummyeinträge (0L) für Laufwerk A und B.
 
P_cookie Magic-Wert; immer "AHDI"
 
P_cookptr Sollte immer auf das vorherige Strukrurelement zeigen.
 
P_version Versionsnummer z.B. 0x0300
 
P_max_sector Beschreibt die größte auftretbare Blockgröße für BIOS-Sektoren.
 

Beispiel wie man die Adresse der Struktur bekommt:

PUN_INFO *GetPunPtr (void)
{
  PUN_INFO *P;
  int32_t oldstack;

  oldstack = Super (0L);
  P = *((PUN_INFO **)(0x516L));
  Super ((void *)oldstack);

  if (P)
    if (P->P_cookptr == &(P->P_cookie)) /* Cookie ok? */
      if (P->P_version >= 0x300)
        return P;

  return 0L;
}

Querverweis: XHDI-Spezifikation   pun_ptr

3.12.6 solidrectdata

struct solidrectdata
{
  int16_t x1, y1;
  int16_t x2, y2;
  int32_t fg_color;
  int32_t bg_color;
  int16_t mode;
}

Querverweis: _VDI


Home BIOSBIOS BIOS-FunktionslisteBIOS-Funktionsliste XBIOSXBIOS