program peek_poke(input,output);

type
   byte = 0..255;
   word = 0..65535;
   fudgerec =
     packed record
       case boolean of
         false : (addr : ^byte);
         true  : (int  : word)
     end;

var
   i : word;
  pi : byte;

function peek(address : word) : byte;
var
   fudge : fudgerec;
begin
   fudge.int:=address;
   peek:=fudge.addr^
end;

procedure poke(address : word; value : byte);
var
   fudge : fudgerec;
begin
   fudge.int:=address;
   fudge.addr^:=value
end;

begin
   for i := &8000 to &8100 do
      begin
        pi := peek(i);
        write(~i, ~pi);
        if pi > 31 then
           writeln(chr(pi) : 4)
        else
           writeln
      end
end.
