procedure help(name:str12);
type
      page=array[1..80,1..24] of char;
var aiuto:text;
    key,key2,tasto:char;
    video1,video2,video3:page;
    code,i:integer;
    testo,testo2:str80;
    tommorow,yesterday,nop:real;
    finish:boolean;

procedure azzera(var video:page);
var x,y:integer;
begin
  for y:=1 to 24 do
    for x:=1 to 80 do
      video[x,y]:=' ';
end;


procedure get_page(var video:page;var np:real);
var key:char;
    quit:boolean;
    x,y:integer;

procedure new_line;
begin
  y:=y+1;
  x:=1;
end;

begin
  azzera(video);
  y:=2;
  x:=1;
  if not(eof(aiuto)) then
  quit:=false;
  readln(aiuto,testo);
  val(testo,nop,code);
  readln(aiuto,testo);
  str(nop:2:2,testo2);
  testo:='Pag: '+testo2+copy(testo,6,length(testo)-6);
  for i:=1 to length(testo) do
    video[i,1]:=copy(testo,i,1);
  repeat
    read(aiuto,key);
    case ord(key) of
      13:new_line;
       9:if x<73 then
           x:=x+8
         else
           new_line;
       35:begin
            read(aiuto,key2);
          {#} if key2=key then
                begin
                  quit:=true;
                  y:=25;
                end
              else
                if x>80 then
                  begin
                    new_line;
                    video[x,y]:=key;
                    x:=x+1;
                    video[x,y]:=key2;
                  end
                else
                  begin
                    video[x,y]:=key;
                    x:=x+1;
                    if x>80 then
                      new_line;
                    video[x,y]:=key2;
                  end;
          end;
     else {case}
        begin
          if x>80 then
            new_line;
           if y<25 then
             begin
               video[x,y]:=key;
               x:=x+1;
             end; {if}
        end; {else case}
    end;{case}
  until eof(aiuto) or quit or (y>24);
  if eof(aiuto) then
    finish:=true;
end;

procedure display_page(video:page);
var x,y:integer;
begin
  clrscr;
  for y:=1 to 24 do
    for x:=1 to 80 do
      writexy(x,y,video[x,y]);
end;

procedure no_help;
begin
            mid('no help done');
            get_chr(30,20,'Non Š disponibile nessun men— di aiuto',key);
end;

begin
  assign(aiuto,name);
  if esiste(name) then
    begin
      reset(aiuto);
      if not(eof(aiuto))then
        begin
          nop:=0;
          yesterday:=0;
          finish:=false;
          azzera(video1);
          azzera(video2);
          get_page(video3,tommorow);
          repeat
            
            yesterday:=nop;
            video1:=video2;
            nop:=tommorow;
            video2:=video3;
            azzera(video3);
            display_page(video2);
            if not(tommorow=0) then
            get_page(video3,nop);
            get_real2(1,25,4,'Inserire: 0 per uscire, enter o numero pagina per contiuare. Pag:?',tommorow);
            if finish and not(tommorow=0) then
              begin
                nop:=tommorow;
                video2:=video3;
                display_page(video2);
                get_real2(1,25,4,'Inserire: 0 per uscire, enter o numero pagina per contiuare. Pag:?',tommorow);
                if tommorow<>0 then
                  begin
                     close(aiuto);
                     reset(aiuto);
                     finish:=false;
                     get_page(video3,tommorow);
                  end;
              end;
          until tommorow=0;
          end
        else
          no_help;
    end
  else
    no_help;
end;

