Contributor: JOSEPH METCALF

{
From: regis@alpha2.csd.uwm.edu (Joseph William Metcalf)

There are been a couple posts looking for a way to read the device name for
CD audio play functions, so here it is (tested under TP7):
}

type DRIVELIST=Record
               unitcode:byte;
               doffset,dsegment:word;
               end;

var
  CDDL:DriveList;

function GetDriverName:string;
var
  CDNTemp:array[1..18] of byte;
  where:pointer;
  count:byte;
  CDSTemp:string[8];
begin
  asm
    mov ax,1501h
    mov bx,OFFSET CDDL
    mov dx,SEG CDDL
    mov es,dx
    int 2fh
  end;
  where:=ptr(CDDL.dsegment,CDDL.doffset);
  move(where^,CDNTEMP,18);
  count:=1;
  repeat
    CDStemp[count]:=chr(cdntemp[10+count]);
    inc(count);
  until (count>8) or (cdntemp[10+count]=32);
  cdstemp[0]:=chr(count-1);
 getdrivername:=cdstemp;
end;
{
This uses the MSCDEX function 1501h (Int 2fh) to read the drivelist and
segment/offset of the device driver header. Device name is 10 bytes into the
header, max 8 characters, padded with spaces if the name is less than 8
characters.
}
begin
  Writeln(GetDriverName);
end.