program mitmikro1; {einfache Version}
const nul: char = #0;
      esc: char = #27;
      sioc: byte = 6;  { SIO-A Control }
      siod: byte = 4;  { SIO-A Data }

var ch: char;
    fertig: boolean;

function getch: char;  { holt ein Zeichen von SIO-A }
var status: byte;
begin
  status:=port[sioc];
  if status and 1 = 1 then getch:=chr(port[siod])
  else getch:=nul;
end;

procedure putch(ch: char);  { sendet ein Zeichen ueber SIO-A }
var status: byte;
begin
  repeat
    status:=port[sioc];
  until status and 4 = 4;
  port[siod]:=ord(ch);
end;

begin                       { Main Loop }
  fertig:=false;
  repeat
    ch:=getch;
    if ch<>nul then write(ch);
    if KeyPressed then
      begin
        read(Kbd,ch);
        if ch=esc then fertig:=true
        else begin
               write(ch);
               putch(ch);
             end;
     end;
   until fertig;
end.

