Uses Dos;
Type MediaID = Record
InfoLevel : Word;
SerialN : LongInt;
VLabel : Array [0..10] of Char;
SysName : Array [0..7] of Char;
end;
Var IDbuffer : MediaID;
SerialNumber : LongInt;
VolumeLabel : String[12];
Reg : Registers;
loopc : Byte;
begin
Writeln;
Reg.AH := $30;
MsDos( Reg );
if ( Reg.AL < 4 ) or ( Reg.AL = 10 )
then begin
WriteLn( 'Dos version error',#7 );
Halt(1)
end;
Reg.AX := $6900;
Reg.BL := 0;
Reg.DS := Seg( IDbuffer );
Reg.DX := ofs( IDbuffer );
MsDos( Reg );
if ( Reg.FLAGS and 1 ) <> 0
then begin
WriteLn( 'Dos error getting Media ID',#7 );
Halt(2);
end;
SerialNumber := IDbuffer.SerialN;
WriteLn( 'Disk serial number: ', SerialNumber );
VolumeLabel := '';
loopc := 0;
While ( IDbuffer.VLabel[ loopc ] <> ' ' )
do begin
VolumeLabel[ loopc+1 ] := IDbuffer.VLabel[ loopc ];
inC( loopc );
end;
VolumeLabel[0] := CHR( loopc );
if ( loopc <> 0 ) then
WriteLn( 'Disk volume Label : ', VolumeLabel );
end.