{ (c) 1998 CREEQ <creeq@web.de> }
program Festplatte_fuellen;
uses Crt,Dos;
var lw : byte;
    f : text;
    frei,ge,fe : longint;
    voll : boolean;
label 1;

procedure f100;
begin
  fe := 100;
  writeln(f,'');
  dec(frei,100);
  inc(ge,100);
end;

procedure f10;
begin
  fe := 10;
  write(f,'');
  dec(frei,10);
  inc(ge,10);
end;

procedure f1;
begin
  fe := 1;
  write(f,'');
  dec(frei,1);
  inc(ge,1);
end;

function speicher(lw:byte):longint;
var regs : registers;
begin
  with regs do
  begin
  ax := $3600;
  dx := lw;
  msdos(regs);
  if ax = $FFFF then speicher := 0
                else speicher := longint(ax)*bx*cx;
  end;
end;

begin
  clrscr;
  writeln('Welches Laufwerk soll gefllt werden? (1=A,2=B,3=C, usw.');
  write('Laufwerk: ');
  readln(lw);
  if lw = 1 then assign(f,'a:\filldisk.fil');
  if lw = 2 then assign(f,'b:\filldisk.fil');
  if lw = 3 then assign(f,'c:\filldisk.fil');
  if lw = 4 then assign(f,'d:\filldisk.fil');
  if lw = 5 then assign(f,'e:\filldisk.fil');
  if lw = 6 then assign(f,'f:\filldisk.fil');
  if lw = 7 then assign(f,'g:\filldisk.fil');
  if lw = 8 then assign(f,'h:\filldisk.fil');
  if lw = 9 then assign(f,'i:\filldisk.fil');
  if lw = 10 then assign(f,'j:\filldisk.fil');
  if lw = 11 then assign(f,'k:\filldisk.fil');
  if lw = 12 then assign(f,'l:\filldisk.fil');
  if lw = 13 then assign(f,'m:\filldisk.fil');
  if lw = 14 then assign(f,'n:\filldisk.fil');
  if lw = 15 then assign(f,'o:\filldisk.fil');
  if lw = 16 then assign(f,'p:\filldisk.fil');
  if lw = 17 then assign(f,'q:\filldisk.fil');
  if lw = 18 then assign(f,'r:\filldisk.fil');
  if lw = 19 then assign(f,'s:\filldisk.fil');
  if lw = 20 then assign(f,'t:\filldisk.fil');
  if lw = 21 then assign(f,'u:\filldisk.fil');
  if lw = 22 then assign(f,'v:\filldisk.fil');
  if lw = 23 then assign(f,'w:\filldisk.fil');
  if lw = 24 then assign(f,'x:\filldisk.fil');
  if lw = 25 then assign(f,'y:\filldisk.fil');
  if lw = 26 then assign(f,'z:\filldisk.fil');
  rewrite(f);
  clrscr;
  speicher(lw);
  frei := speicher(lw);
  ge := 0;
  fe := 0;
  voll := false;
  repeat
    while frei >= 100 do begin
      if keypressed then goto 1;
      f100;
      gotoxy(1,1);
      writeln('Freier Speicherplatz: ',frei,'                    ');
      gotoxy(1,2);
      writeln('Laufwerk zu ',ge,' Byte gefllt');
    end;
    while frei >= 10 do begin
      if keypressed then goto 1;
      f10;
      gotoxy(1,1);
      writeln('Freier Speicherplatz: ',frei,'                    ');
      gotoxy(1,2);
      writeln('Laufwerk zu ',ge,' Byte gefllt');
    end;
    while frei >= 1 do begin
      if keypressed then goto 1;
      f1;
    end;
    gotoxy(1,1);
    writeln('Freier Speicherplatz: ',frei,'                    ');
    gotoxy(1,2);
    writeln('Laufwerk zu ',ge,' Byte gefllt');
    if frei = 0 then voll := true;
    if frei = 0 then goto 1;
  until keypressed;
  close(f);
1:if voll = true then begin
  textcolor(white+blink);
  gotoxy(30,5);
  writeln('Laufwerk aufgefllt');
  end;
  if voll = false then begin
  gotoxy(10,5);
  textcolor(white+blink);
  writeln('Laufwerk wurde nicht vollst„ndig aufgefllt');
  end;
  if voll = false then readkey;
  readkey;
end.
