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-File3.11.4 PUN_INFO TOS 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_cooptr; /* 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. 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..6: Reserviert. 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. P_Cokkie 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- Sektoeren. 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