Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

spo_2 / other / LR_SPO_2

.PAS
Скачиваний:
18
Добавлен:
27.05.2013
Размер:
3.4 Кб
Скачать
{“Є § вм 楯®зЄЁ, ЇаҐ­ ¤«Ґ¦ йЁҐ г¤ «Ґ­­л¬ д ©« ¬}
Uses Crt,Dos;
Type mas=array[1..4320] of byte; {Њ ббЁў ¤«п Є« бвҐа®ў}
Dir_type=record {ќ«Ґ¬Ґ­в Є®а­Ґў®Ј® Є в «®Ј }
Name:array[1..8] of char; {Ё¬п д ©« }
Ext:array[1..3] of char; {а биЁаҐ­ЁҐ}
Fattr:byte; { ваЁЎгвл д ©« }
Reserv:array[1..10] of byte; {१Ґаў}
Time:word; {ўаҐ¬п б®§¤ ­Ёп}
Date:word; {¤ в  б®§¤ ­Ёп}
Firstc:word; {­®¬Ґа ЇҐаў®Ј® Є« бвҐа }
Size:longint; {а §¬Ґа д ©«  ў Ў ©в е}
end;
Var a,s,f,g :Word;
aa :mas;
d,n :byte;
FAT :array[0..2880] of word; {’ Ў«Ёж  FAT}
Dir :array[1..244] of dir_type; {Љ®а­Ґў®© Є в «®Ј}
del :boolean;
Size :word; {¤«Ё­  г¤ «Ґ­­®Ј® д ©« }
{Џа®жҐ¤га  з⥭Ёп б ¤ЁбЄ  ᥪв®а®ў}
Procedure Disk_read(disk,kol_sector,sector:word;buf:mas);
begin
asm
mov ax,disk {“Є §лў Ґ¬ ¤ЁбЄ a:\}
mov cx,kol_sector {Љ®«ЁзҐбвў® ᥪв®а®ў}
mov dx,sector {ЏҐаўл© ᥪв®а}
push seg aa
pop ds
mov bx,offset aa {“Є §лў Ґ¬ ᥪв®а}
int($25)
end;
end;
Begin
Clrscr;
Writeln('—Ёв Ґ¬ FAT ¤ЁбЄ .');
Disk_read(0,9,1,aa); {—Ёв Ґ¬ ᥪв®а б в Ў«ЁжҐ© FAT}
g:=0;
For a:=1 to 1440 Do {ЏаҐ®Ўа §гҐ¬ FAT12 ў ¤ҐбпвЁз­го д®а¬г}
Begin
FAT[g]:=(aa[a*3-1] And 15)*256+aa[a*3-2];Inc(g);
FAT[g]:=Trunc((aa[a*3-1] And 240)/16)+aa[a*3]*16;Inc(g);
end;
Disk_read(0,1,19,aa); {—Ёв Ґ¬ Є®а­Ґў®© Є в «®Ј}
g:=1;n:=0;
Repeat
Begin
inc(n);
For a:=1 to 8 Do {‚뤥«пҐ¬ Ё¬п д ©« }
Begin
Dir[n].name[a]:=chr(aa[g]);inc(g);
End;
For a:=1 to 3 Do
Begin
Dir[n].ext[a]:=chr(aa[g]);inc(g);{‚뤥«пҐ¬ а биЁаҐ­ЁҐ}
End;
Dir[n].Fattr:=aa[g];inc(g); {Џ®«гз Ґ¬  ваЁЎгвл}
For a:=1 to 10 Do
Begin
Dir[n].reserv[a]:=aa[g];inc(g);{Џа®ЇгбЄ Ґ¬ १Ґаў­лҐ д ©«л}
End;
g:=g+4;
Dir[n].firstc:=aa[g+1]*256+aa[g];
g:=g+2;
Dir[n].size:=aa[g]+aa[g+1]*256; {Џ®«гз Ґ¬ а §¬Ґа}
g:=g+4;
End;
Until Dir[n].name[1]=chr(0);
n:=1;
Writeln('—⥭ЁҐ Є®а­ҐЈ®Ј® Є в «®Ј  ¤ЁбЄ .');
Write('‘ЇЁб®Є г¤ «Ґ­­ле д ©«®ў: '); {‚лў®¤Ё¬ Ё­д®а¬ жЁо}
del:=false;
While Dir[n].name[1]<>chr(0) Do
begin
If (Dir[n].name[1]=#229) Then {Ќ и«Ё г¤ «Ґ­­л© д ©«}
begin
del:=true;
writeln('');
For a:=1 to 8 Do
If Dir[n].name[a] <> ' ' Then Write(Dir[n].name[a]);
Write('.');
For a:=1 to 3 Do
If Dir[n].ext[a] <> ' ' Then Write(Dir[n].ext[a]);
Delay(300);
Write(' use claster(s):');
Write(' ',Dir[n].firstc);
{ЋЇаҐ¤Ґ«пҐ¬ ¤«Ё­г д ©«  ў Є« бвҐа е}
Size:=Dir[n].Size mod 512;
Size:=trunc(Dir[n].Size/512);
If Size<>0 then Inc(Size);
For s:=1 to Size-1 do write(' ',Dir[n].firstc+s);
end;
Inc(n);
end;
If Not del then write('“¤ «Ґ­­лҐ д ©«л ®вбгвбвўгов.');
repeat until keypressed;
End.
Соседние файлы в папке other