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
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;
typedef struct
{
MD *mp_mfl; /* Liste des freien Speicher */
MD *mp_mal; /* Liste des belegten Speicher */
MD *mp_rover; /* verschiebbarer Zeiger */
} MPB;
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
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 |
| ||||||||||||
| 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
struct solidrectdata
{
int16_t x1, y1;
int16_t x2, y2;
int32_t fg_color;
int32_t bg_color;
int16_t mode;
}
Querverweis: _VDI