Absread() : Read absolute disk sectors in C [dos.h function]

Declaration : absread()

int absread(int drive,int nsects,long lsect,void *buffer);

Remarks:

  1. absread uses DOS interrupt 0×25 to read specific disk sectors.
  2. absread reads absolute disk sectors
  3. It ignores the logical structure of a disk and pay no attention to files, FATs, or directories.
  4. The number of sectors to read is limited to 64K or the size of the buffer, whichever is smaller.

Parameters

Parameter
What It Is/Does ?
drive
Drive number to read (or write): 0 = A1 = Betc.
nsects
Number of sectors to read (or write)
lsect
Beginning logical sector number
buffer
Memory address where the data is to be read (or written)

Return Value:

  1. On success, return 0.
  2. On error, return -1 and set errno to the value of the AX register returned by the system call.

Live Example :

#include <stdio.h>
#include <conio.h>
#include <process.h>
#include <dos.h>
int main(void)
{
  int i, strt, ch_out, sector;
  char buf[512];
  printf("Insert a diskette into drive A and press any key\n");
  getch();
  sector = 0;
  if (absread(0, 1, sector, &buf) != 0)
  {
     perror("Disk problem");
     exit(1);
  }
  printf("Read OK\n");
  strt = 3;
  for (i=0; i<80; i++)
  {
     ch_out = buf[strt+i];
     putchar(ch_out);
  }
  printf("\n");
  return(0);
}

Output :

Insert a diskette into drive A and press any key

*It will show this output in newer versions of PC those do not have Floppy Disk Drives.