Добавил:
salavat
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:
Uses Crt,Modul;
Var n,i,j,s:word;
File1,File2:word;
FAT16:array[1..4608] of word;
BadSec:array[1..2880] of word;
l:boolean;
Label 1,2,3;
Begin
ReadSector(Disk,1,9,FAT12); { —Ёв Ґ¬ FAT ¤ЁбЄ }
if RError=0 then VFAT:=true;{ …б«Ё Ґв ®иЁЎ®Є, в® ¤Ґ« Ґ¬ }
{ ЇҐаў®Ґ Ё ўв®а®Ґ § ¤ ЁҐ ¤®бвгЇл¬ }
ReadDir; { —Ёв Ґ¬ Є®аҐў®© Є в «®Ј ¤ЁбЄ }
2:clrscr; { ЋзЁбвЄ нЄа }
SetWin(30,1,33,6,$1E,'‡ ¤ ЁҐ:'); { \ ‚лў®¤ ®Є }
gotoxy(30,23);
if not VFAT then write('‚ FAT ®иЁЎЄ !!!');
KursorZad; { / б § ¤ Ёп¬Ё }
KursorFile; { ‚лў®¤ ®Є Є®аҐў®Ј® Є в «®Ј }
1:EnterZad; { ‚лЎ®а § ¤ Ёп }
case Zadanie of
1:begin
{ ‡ ¤ ЁҐ - Ї®ЁбЄ бЄ«Ґле д ©«®ў }
if (Count=0) or (not VFAT) then goto 1;
textattr:=$07;
clrscr;
fillchar(FAT16,4608,0);
for i:=1 to Count do
begin
s:=Dir[Indexs[i]].FirstC; { ЏҐаҐе®¤ Є б«Ґ¤.ᥪв®аг }
while s<$0FF8 do
if FAT16[s]<>0 then
begin
writeln;
write('ЋЎ а㦥л бЄ«ҐҐлҐ д ©«л !!! ');
PutFName(Dir[Indexs[FindFile(s)]]);
write(' Ё ');
PutFName(Dir[Indexs[i]]);
writeln;
writeln('Press any key ...');
repeat until keypressed and(readkey<>#0);
s:=$0FFF; { „«п ўл室 Ё§ жЁЄ« }
end else
begin
FAT16[s]:=ElemFAT(s);
s:=ElemFAT(s);
end;
end;
writeln('Љ®Ґж Їа®ўҐаЄЁ.');
writeln('Press any key ...');
repeat until keypressed and(readkey<>#0);
goto 2;
end;
2:begin
{ ‡ ¤ ЁҐ - бЄ«ҐЁвм д ©«л }
if (Count=0) or (not VFAT) then goto 1;
SetWin(30,10,22,2,$2E,'‚лЎҐаЁвҐ 1-л© д ©«');
Position:=1;
KursorFile;
EnterFile(File1); { ‚лЎ®а ЇҐаў®Ј® д ©« }
gotoxy(35,11);
textattr:=$21;
PutFName(Dir[Indexs[File1]]);
{-----}
SetWin(30,15,22,2,$2E,'‚лЎҐаЁвҐ 2-®© д ©«');
KursorFile;
EnterFile(File2); { ‚лЎ®а ўв®а®Ј® д ©« }
gotoxy(34,16);
textattr:=$21;
PutFName(Dir[Indexs[File2]]);
{-----}
n:=Dir[Indexs[File2]].FirstC;
s:=Dir[Indexs[File1]].FirstC;
while s<$0FF8 do { \ }
begin { \ }
i:=s; { Ќ 室Ё¬ Є®Ґж ЇҐаў®Ј® д ©« }
s:=ElemFAT(s); { / }
end; { / }
SetElemFAT(i,n); { “Є §лў Ґ¬ ҐЈ® Є®Ґж з «® ўв®а®Ј® }
{ ‘зЁв Ґ¬ ¤«Ё¬г ¤«п ЇҐаў®Ј® д ©« }
Dir[Indexs[File1]].Size:=(((Dir[Indexs[File1]].Size div 512)+1)*512)+
Dir[Indexs[File2]].Size;
{-----}
SaveSector(0,1,9,FAT12); { ‡ ЇЁблў Ґ¬ ЇҐаўго Є®ЇЁо FAT }
SaveSector(0,10,9,FAT12);{ ‡ ЇЁблў Ґ¬ ўв®аго Є®ЇЁо FAT }
SaveSector(0,19,14,Dir); { ‡ ЇЁблў Ґ¬ Є®аҐў®© Є в «®Ј }
SetWin(30,20,25,3,$2E,'');
gotoxy(35,21);
write('” ©«л бЄ«ҐҐл !!!');
gotoxy(32,22);
write('Ќ ¦¬ЁвҐ «оЎго Є« ўЁиг.');
repeat until keypressed and (readkey<>#0);
textattr:=$07;
goto 2;
end;
3:begin
{ ‡ ¤ ЁҐ Ї®ЁбЄ Ї«®еЁе ᥪв®а®ў }
fillchar(BadSec,2880,0); { ЋЎг«ҐЁҐ ¬ ббЁў }
textattr:=$07;
clrscr;
n:=0;
writeln('’ҐбвЁа®ў ЁҐ ᥪв®а®ў:');
for s:=1 to 2879 do
begin
l:=false; { ‘Ўа блў Ґ¬ д« Ј «ЁзЁп ®иЁЎ®Є }
ReadSector(Disk,s,1,buf); { —Ёв Ґ¬ ᥪв®а }
if RError<>0 then { …б«Ё ЇаЁ з⥨Ё Ўл« ®иЁЎЄ , }
begin { в® нв® Ї«®е®© ᥪв®а, Ё в®Ј¤ }
l:=true; { гбв ў«Ёў Ґ¬ д« Ј «ЁзЁп ®иЁЎЄЁ }
inc(n); BadSec[n]:=s; { Ё § Ї®¬Ё Ґ¬ ®¬Ґа ᥪв®а }
end;
if s=2879 then goto 3;
inc(s); { ЏҐаҐе®¤Ё¬ Є б«Ґ¤го饬г ᥪв®аг }
ReadSector(Disk,s,1,buf); { —Ёв Ґ¬ ᥪв®а }
if RError<>0 then { …б«Ё ЇаЁ з⥨Ё Ўл« ®иЁЎЄ , }
begin { в® нв® Ї«®е®© ᥪв®а, Ё в®Ј¤ }
l:=true; { гбв ў«Ёў Ґ¬ д« Ј «ЁзЁп ®иЁЎЄЁ }
inc(n); BadSec[n]:=s; { Ё § Ї®¬Ё Ґ¬ ®¬Ґа ᥪв®а }
end;
3:if l then begin
textcolor(red);
write('B');
sound(1000);
delay(100);nosound;
end else begin
textcolor(blue);
write(#$0f9);
end;
if keypressed and (readkey=#27) then break;
end;
writeln;
if n<>0 then { …б«Ё Ґбвм Ї«®еЁҐ ᥪв®а , в® ўлў®¤Ё¬ Ёе ®¬Ґа }
begin
textcolor(white);
write('Ќ ©¤Ґл Ї«®еЁҐ ᥪв®а : ');
for i:=1 to n do write(BadSec[i],',');
writeln;
end;
writeln('Press any key ...');
sound(3000);
delay(200);nosound;
sound(4000);
delay(100);nosound;
repeat until keypressed and(readkey<>#0);
goto 2;
end;
4:begin
{ ‚л室 Ё§ Їа®Ја ¬¬л }
textattr:=$07;
clrscr;
halt(0);
end;
end;
End.
Var n,i,j,s:word;
File1,File2:word;
FAT16:array[1..4608] of word;
BadSec:array[1..2880] of word;
l:boolean;
Label 1,2,3;
Begin
ReadSector(Disk,1,9,FAT12); { —Ёв Ґ¬ FAT ¤ЁбЄ }
if RError=0 then VFAT:=true;{ …б«Ё Ґв ®иЁЎ®Є, в® ¤Ґ« Ґ¬ }
{ ЇҐаў®Ґ Ё ўв®а®Ґ § ¤ ЁҐ ¤®бвгЇл¬ }
ReadDir; { —Ёв Ґ¬ Є®аҐў®© Є в «®Ј ¤ЁбЄ }
2:clrscr; { ЋзЁбвЄ нЄа }
SetWin(30,1,33,6,$1E,'‡ ¤ ЁҐ:'); { \ ‚лў®¤ ®Є }
gotoxy(30,23);
if not VFAT then write('‚ FAT ®иЁЎЄ !!!');
KursorZad; { / б § ¤ Ёп¬Ё }
KursorFile; { ‚лў®¤ ®Є Є®аҐў®Ј® Є в «®Ј }
1:EnterZad; { ‚лЎ®а § ¤ Ёп }
case Zadanie of
1:begin
{ ‡ ¤ ЁҐ - Ї®ЁбЄ бЄ«Ґле д ©«®ў }
if (Count=0) or (not VFAT) then goto 1;
textattr:=$07;
clrscr;
fillchar(FAT16,4608,0);
for i:=1 to Count do
begin
s:=Dir[Indexs[i]].FirstC; { ЏҐаҐе®¤ Є б«Ґ¤.ᥪв®аг }
while s<$0FF8 do
if FAT16[s]<>0 then
begin
writeln;
write('ЋЎ а㦥л бЄ«ҐҐлҐ д ©«л !!! ');
PutFName(Dir[Indexs[FindFile(s)]]);
write(' Ё ');
PutFName(Dir[Indexs[i]]);
writeln;
writeln('Press any key ...');
repeat until keypressed and(readkey<>#0);
s:=$0FFF; { „«п ўл室 Ё§ жЁЄ« }
end else
begin
FAT16[s]:=ElemFAT(s);
s:=ElemFAT(s);
end;
end;
writeln('Љ®Ґж Їа®ўҐаЄЁ.');
writeln('Press any key ...');
repeat until keypressed and(readkey<>#0);
goto 2;
end;
2:begin
{ ‡ ¤ ЁҐ - бЄ«ҐЁвм д ©«л }
if (Count=0) or (not VFAT) then goto 1;
SetWin(30,10,22,2,$2E,'‚лЎҐаЁвҐ 1-л© д ©«');
Position:=1;
KursorFile;
EnterFile(File1); { ‚лЎ®а ЇҐаў®Ј® д ©« }
gotoxy(35,11);
textattr:=$21;
PutFName(Dir[Indexs[File1]]);
{-----}
SetWin(30,15,22,2,$2E,'‚лЎҐаЁвҐ 2-®© д ©«');
KursorFile;
EnterFile(File2); { ‚лЎ®а ўв®а®Ј® д ©« }
gotoxy(34,16);
textattr:=$21;
PutFName(Dir[Indexs[File2]]);
{-----}
n:=Dir[Indexs[File2]].FirstC;
s:=Dir[Indexs[File1]].FirstC;
while s<$0FF8 do { \ }
begin { \ }
i:=s; { Ќ 室Ё¬ Є®Ґж ЇҐаў®Ј® д ©« }
s:=ElemFAT(s); { / }
end; { / }
SetElemFAT(i,n); { “Є §лў Ґ¬ ҐЈ® Є®Ґж з «® ўв®а®Ј® }
{ ‘зЁв Ґ¬ ¤«Ё¬г ¤«п ЇҐаў®Ј® д ©« }
Dir[Indexs[File1]].Size:=(((Dir[Indexs[File1]].Size div 512)+1)*512)+
Dir[Indexs[File2]].Size;
{-----}
SaveSector(0,1,9,FAT12); { ‡ ЇЁблў Ґ¬ ЇҐаўго Є®ЇЁо FAT }
SaveSector(0,10,9,FAT12);{ ‡ ЇЁблў Ґ¬ ўв®аго Є®ЇЁо FAT }
SaveSector(0,19,14,Dir); { ‡ ЇЁблў Ґ¬ Є®аҐў®© Є в «®Ј }
SetWin(30,20,25,3,$2E,'');
gotoxy(35,21);
write('” ©«л бЄ«ҐҐл !!!');
gotoxy(32,22);
write('Ќ ¦¬ЁвҐ «оЎго Є« ўЁиг.');
repeat until keypressed and (readkey<>#0);
textattr:=$07;
goto 2;
end;
3:begin
{ ‡ ¤ ЁҐ Ї®ЁбЄ Ї«®еЁе ᥪв®а®ў }
fillchar(BadSec,2880,0); { ЋЎг«ҐЁҐ ¬ ббЁў }
textattr:=$07;
clrscr;
n:=0;
writeln('’ҐбвЁа®ў ЁҐ ᥪв®а®ў:');
for s:=1 to 2879 do
begin
l:=false; { ‘Ўа блў Ґ¬ д« Ј «ЁзЁп ®иЁЎ®Є }
ReadSector(Disk,s,1,buf); { —Ёв Ґ¬ ᥪв®а }
if RError<>0 then { …б«Ё ЇаЁ з⥨Ё Ўл« ®иЁЎЄ , }
begin { в® нв® Ї«®е®© ᥪв®а, Ё в®Ј¤ }
l:=true; { гбв ў«Ёў Ґ¬ д« Ј «ЁзЁп ®иЁЎЄЁ }
inc(n); BadSec[n]:=s; { Ё § Ї®¬Ё Ґ¬ ®¬Ґа ᥪв®а }
end;
if s=2879 then goto 3;
inc(s); { ЏҐаҐе®¤Ё¬ Є б«Ґ¤го饬г ᥪв®аг }
ReadSector(Disk,s,1,buf); { —Ёв Ґ¬ ᥪв®а }
if RError<>0 then { …б«Ё ЇаЁ з⥨Ё Ўл« ®иЁЎЄ , }
begin { в® нв® Ї«®е®© ᥪв®а, Ё в®Ј¤ }
l:=true; { гбв ў«Ёў Ґ¬ д« Ј «ЁзЁп ®иЁЎЄЁ }
inc(n); BadSec[n]:=s; { Ё § Ї®¬Ё Ґ¬ ®¬Ґа ᥪв®а }
end;
3:if l then begin
textcolor(red);
write('B');
sound(1000);
delay(100);nosound;
end else begin
textcolor(blue);
write(#$0f9);
end;
if keypressed and (readkey=#27) then break;
end;
writeln;
if n<>0 then { …б«Ё Ґбвм Ї«®еЁҐ ᥪв®а , в® ўлў®¤Ё¬ Ёе ®¬Ґа }
begin
textcolor(white);
write('Ќ ©¤Ґл Ї«®еЁҐ ᥪв®а : ');
for i:=1 to n do write(BadSec[i],',');
writeln;
end;
writeln('Press any key ...');
sound(3000);
delay(200);nosound;
sound(4000);
delay(100);nosound;
repeat until keypressed and(readkey<>#0);
goto 2;
end;
4:begin
{ ‚л室 Ё§ Їа®Ја ¬¬л }
textattr:=$07;
clrscr;
halt(0);
end;
end;
End.
