var fIn,fOut:file;
buffIn:array[0..255]of byte;
buffOut:array[0..$1FFF]of byte;
d,e:byte;
fOutPos:word;
i:integer;
begin
writeln('переработчик образа диска (*.drv) в псевдо-диск (disk0000.tmp)');
if ParamStr(1)='' then
 begin
  writeln(' инструкция:');
  writeln('- скиньте make_drv.exe к disk0000.tmp {<форматированный диск A}');
  writeln('- используйте make_drv.exe [filename].drv');
  halt;
 end;
assign(fIn,ParamStr(1));
reset(fIn,1);
assign(fOut,'disk0000.tmp');
reset(fOut,1);
for d:=0 to 159 do
 begin
blockRead(fOut,buffOut,$2000);
seek(fOut,filePos(fOut)-$2000);
for e:=0 to $F do
 begin
  blockRead(fIn,buffIn,$100);
  fOutPos:=0;
 while (buffOut[fOutPos]<>$A1)or(buffOut[fOutPos+1]<>$A1)or(buffOut[fOutPos+2]<>$FE)or(buffOut[fOutPos+5]<>e+1)do inc(fOutPos);
 while (buffOut[fOutPos]<>$A1)or(buffOut[fOutPos+1]<>$A1)or(buffOut[fOutPos+2]<>$FB)do inc(fOutPos);
  inc(fOutPos,2);
  for i:=0 to 255 do
   begin
    inc(fOutPos);
    buffOut[fOutPos]:=buffIn[i];
   end;
 end;
blockWrite(fOut,buffOut,$2000);
 end;
close(fOut);
close(fIn);
writeln('Ok');
end.