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