Contributor: ERIC GIVLER              

{
ERIC GIVLER

> about, evidentally), are two different things.  The serial
> number is only accessible in Dos v4.0+, and (I think), you
> have to use the FCBs to get it.

No, no FCBs, see:
}

Uses
  Dos,
  Crt;

Type
  MIDRecord = Record
    InfoLevel : Word;
    SerialNum : LongInt;   {This is the serial number...}
    VolLabel  : Array [1..11] of Char;
    FatType   : Array [1..8] of Char;
  end;

Function Label_Fat(Var Mid : MidRecord; Drive : Word) : Boolean;
Var
  Result : Word;
  Regs   : Registers;
begin
  FillChar(Mid,SizeOf(Mid),0);
  FillChar(Regs,SizeOf(Regs),0);
  With Regs DO
  begin
    AX := $440D;
    BX := Drive;
    CX := $0866;
    DS := Seg(Mid);
    DX := Ofs(Mid);
    Intr($21,Regs);
    Case AX of
      $01 : Label_Fat := False;
      $02 : Label_Fat := False;
      $05 : Label_Fat := False;
      else
        Label_Fat := True;
    end;
  end;
end;

Var
  Mid : MidRecord;
begin
  ClrScr;
  if Label_Fat(Mid,0) Then
  With Mid DO
  begin
    Writeln(SerialNum);
    Writeln(VolLabel);
    Writeln(FatType);
  end
  else
    Writeln('Error Occured');
end.