С помощью следущей конители можно считать загрузочный сектор дискеты (и не только) и там я нашел метку тома, какой FAT, но серийник так и не обнаружил. Если найдеш напиши!
Код
Uses DOS;
var
a : Integer;
Buf: array [1..512] of Byte;
Reg: Registers;
f : Text;
Procedure ReadSector(Disk,Head: Byte;CSec: Word;var Buf);
begin
with Reg do
begin
ah := 2; {Операция чтения}
dl := Disk; {Номер привода}
dh := Head; {Номер головки}
cx := CSec; {Цилиндр/сектор}
al := 1; {Читать один сектор}
es := seg(Buf);
bx := ofs(Buf);
Intr($13,Reg);
end;
end;
begin
ReadSector(0,0,1,Buf);
Writeln;Writeln;
Assign(f, 'ser_numb.buf');
ReWrite(f);
for a:=1 to 512 do
begin
write(Buf[a]);writeln(' *-* ',chr(Buf[a]));
write(f,Buf[a]);writeln(f,' *-* ',chr(Buf[a]));
end;
Writeln;
Close(f);
Readln;
end.
А с помощью это процедуры можно записать в главный
загрузочный сектор содержимое Buf
Код
Procedure SaveInBoot(var Buf);
begin
with Reg do
begin
ah := 3; {Операция записи}
al := 1; {Кол-во секторов}
dl := 0; {1-й ГД}
dh := 0; {Головка 0}
cx := 1; {1-й сектор 0-й дорожки}
es := seg(Buf);
bx := ofs(Buf);
Intr($13,Reg);
end;
end;