Listing 2

#include <stdio.h>
#include <dos. h>

#define SIZE_CLUSTER 2048      /* This may need to be changed */
#define SECTOR_OFFSET 145      /* This may also need to be changed */

get_cluster(cluster, drive, buffer)
unsigned int cluster;   /* Cluster to get */
int drive;     /* 0 = A, 1 = B, etc. */
unsigned char buffer[];
      {
       union REGS inregs, outregs;
       struct SREGS segregs;
       unsigned int cluster;
       unsigned int sector;
       int dos_ret;
       int ret;
       int i;

       char dir_name[100];
       char filename[100];
       char textname[100];
       segregs.ds = ( (unsigned long) buffer) >> 16;
       sector = cluster * 4 + SECTOR_OFFSET;
       inregs.h.ah = 0;
       inregs.h.al = 0x2;
       inregs.x.cx = 4;
       inregs.x.bx = ((long) buffer) & 0XFFFF;
       inregs.x.dx = sector;
       dos_ret = int86x( 0x25, &inregs, &outregs , &segregs);
       /* The dos_ret could be checked here if int86x returns it */
       return ret;
       }
/* End of File */