/* Structuur van het pakketformaat van het Adres van de Schijf, dat door de writeabsolutesectorsfunctie moet worden gebruikt*/
struct diskaddrpacket
{
char packetsize ; /* Grootte van Pakket, over het algemeen 10H */
char reserved ; /*Gereserveerde (0)*/
int blockcount ; /* Aantal Blokken aan Overdracht*/
char far *bufferaddress ; /*adres om Buffer over te brengen*/
unsigned long blocknumber[2] ; /* Het beginnende Absolute Aantal van het Blok */
} ;
///// Functie om de Parameters van de Aandrijving te krijgen\\\\\
unsigned long getdrivegeometry (int drive)
{
union REGS i, o ;
struct SREGS s ;
struct geometry g = { 26, 0, 0, 0, 0, 0, 0, 0 } ;
i.h.ah = 0x48 ; /* Het Aantal van de functie 0x48 Uitbreidingen van int. 13H */
i.h.dl = drive; /*Het Aantal van de aandrijving */
i.x.si = FP_OFF ( (void far*)&g ) ;
s.ds = FP_SEG ( (void far*)&g ) ;
/*Haal het gespecificeerde functieaantal van de uitbreiding van int. 13H met de Waarden van het Register van het Segment aan */
int86x ( 0x13, &i, &o, &s ) ;
printf("\n Head = %lu, Sectors Per Track = %lu, Cylinder =
%lu\n",
g.heads,g.spt,g.cyl);
|