(* Bei Eingaben bis zum Zeilenende kommt es zum Absturz ! *)
(* Grund ist vermutlich eine Inkompatibilitaet zwischen *)
(* Kernal-INPUT und screen.a *)
const
winit = $1000;
wquit = $1003;
wswitch = $1006;
wsplit = $1009;
wunsplit = $100c;
whcopy = $100f;
var
i: integer ;
line: array [40] of char ;
procedure print;
var i: integer ;
begin
 call (wswitch);
 i:= 0;
 while (line[i] <> 13) do
  begin
   write (chr(line[i]));
   i:= i + 1;
  end ;
  writeln ;
 call (wswitch);
end ;
procedure input;
var i: integer ;
begin
 repeat
  for i:= 0 to 40 do
   line[i] := 32;
  read (line);
  if line[0] <> "." then
   print;
 until line[0] = ".";
end ;
procedure hcopy;
begin
 call (wswitch);
 call (whcopy);
 call (wswitch);
end ;
procedure main ;
var
 c: char ;
begin
 repeat
  write (chr(147));
  write ("*");
  read (c);
  writeln (chr(c)); (* echo *)
  case c of
   "i": input;
   "p": hcopy;
   "q": begin ; end
   else
    begin
     writeln ("Falscher Befehl, bitte Taste druecken");
     read (c);
    end
  end ;
 until c = "q";
end ;
begin
load (8,$1000,0,"pas_screen.prg");
if invalid = 64 then
 begin
  call (winit);
  for i:=1 to 19 do
    writeln ;
  call (wsplit);
  call (wswitch);
  main;
  call (wquit);
 end
else
 writeln ("fehler: ", invalid );
end .