home *** CD-ROM | disk | FTP | other *** search
/ SPACE 2 / SPACE - Library 2 - Volume 1.iso / program / 167 / pascal / getbpb.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1987-08-18  |  1.4 KB  |  39 lines

  1. {$U20}
  2. PROGRAM GET_BIOS_PARM_BLOCK;
  3.     var
  4.         result,i,disk,addrbpb:integer;
  5.         filler,buffer:long_integer;
  6.         sector,track,side,cnt,device:integer;
  7.         stackaddr:long_integer;
  8. {$I B:\include.pas\cursor.inc}
  9. {$I B:\include.pas\peekpoke.inc}
  10. function super(addr:long_integer): long_integer;
  11.     gemdos($20);
  12. FUNCTION GETBPB(DISK:INTEGER):integer;
  13.     bios(7);
  14. function floprd(buffer,filler:long_integer;
  15.                   device,sector,track,side,cnt:integer):integer;
  16.     xbios(8);
  17. function malloc(size:long_integer):long_integer;
  18.     gemdos($48);
  19. BEGIN
  20.     stackaddr := super(0);
  21.     buffer := malloc (1024);
  22.     buffer := buffer & $ffffff00;
  23.     clrscr;
  24.     writeln('The buffer address before adjustment was ',buffer,' ',buffer:0:h);
  25.     writeln('enter the disk to access:  0 = disk A, 1 = disk B : ');
  26.     readln(disk);
  27.     addrbpb := getbpb(0);
  28.     writeln(' The Bios Parameter Block address is - ',addrbpb,' ',addrbpb:0:h);
  29.     writeln(' The Buffer address is               - ',buffer,' ',buffer:0:h);
  30.     result := floprd (buffer,0,0,2,0,0,1);
  31.     writeln(buffer,' After the read sector');
  32.     writeln;writeln;
  33.     writeln('the first three bytes are ');
  34.     for I := 0 to 2 do
  35.       write(peek(buffer + I):0:h,' ');
  36.     readln;
  37.     stackaddr := super(stackaddr);
  38. end.