
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;  
        }
******

