De codage van functiesreadabsolutesectors () en writeabsolutesectors () zijn gegeven daarna:
//// Functie om absolute sector (s) te lezen \\\\
int readabsolutesectors ( int drive,
unsigned long sectornumber,
int numofsectors,
void *buffer )
{
union REGS i, o ;
struct SREGS s ;
struct diskaddrpacket pp ;
pp.packetsize = 16 ; /* pakket grootte = 10H*/
pp.reserved = 0 ; /* Gereserveerd = 0*/
pp.blockcount = numofsectors ; /* Aantal te lezen sectoren */
/*Aantal te lezen sectoren */
pp.bufferaddress = (char far*) MK_FP ( FP_SEG((void
far*)buffer), FP_OFF((void far*)buffer));
pp.blocknumber[0] = sectornumber ; /* Het te lezen aantal van de sector */
pp.blocknumber[1] = 0 ; /* Het aantal van het blok */
i.h.ah = 0x42 ; /*Het Aantal van de functie*/
i.h.dl = drive ; /* Het fysieke Aantal van de Aandrijving*/
i.x.si = FP_OFF ( (void far*)&pp ) ; /* ds:si voor bufferparameters*/
s.ds = FP_SEG ( (void far*)&pp ) ; /*ds:si voor bufferparameters */
/* Haal de gespecificeerde Functie van int. 13H met de waarden van het segmentregister aan */
int86x ( 0x13, &i, &o, &s ) ;
if ( o.x.cflag==1)
return 0 ; /*mislukking */
else
return 1 ; /* succes*/
}
|