(*****************************************************
*
*               PEEK/POKE PROGRAM
*
*  Bob Harsch said he needed this for a program and
*  afterward thought someone else could use it so he
*  gave us a copy for the Pascal/Z Users Group.
*
*  August 1980
*
*******************************************************

{$E+ }
PROGRAM PEEKPOKE;

TYPE    BYTE= 0..255;
       CONTENTS= PACKED RECORD
                       BYT: BYTE { byte in memory }
               END; { of record }
       FORM=(INTEGR,ADDRESS);
       REFERENCE= RECORD
               CASE FORM OF
                       INTEGR:  (I: INTEGER);
                       ADDRESS: (P: ^CONTENTS)
               END;

VAR     K,I: INTEGER;

FUNCTION PEEK(ADDR: INTEGER): BYTE;
       VAR     TEMP: REFERENCE;
       BEGIN { of function peek }
               TEMP.I:= ADDR;
               PEEK:= TEMP.P^.BYT
       END; { of function peek }

PROCEDURE POKE(ADDR: INTEGER; BITS8: BYTE);
       VAR     TEMP: REFERENCE;
       BEGIN { of procedure poke }
               TEMP.I:= ADDR;
               TEMP.P^.BYT:= BITS8
       END; { of procedure poke }



BEGIN { of main program }
       K:= -1024 + 5*64;  { screen address }
       WRITE(PEEK(128):3,'--');
       FOR I:= 129 TO 160 DO
               BEGIN
               WRITE(CHR(PEEK(I)));
               POKE(K, PEEK(I));
               K:= K + 1;
               END;
       WRITELN
END.