fouts@AMES-NAS.ARPA (07/27/86)
This is the peekpoke.pas.  It is part of my OSS Pascal demo.
I did not write the code for this part, but got it from the
OSS Buletin board
----- CUT HERE -----
  {$P-}
  FUNCTION peek( address: long_integer ): long_integer;
    TYPE
      byte_ptr = ^byte;
    VAR
      funny: RECORD
               CASE boolean OF
                 true:  ( a: long_integer );
                 false: ( p: byte_ptr );
             END;
    BEGIN
      funny.a := address;
      peek := funny.p^;
    END;
  FUNCTION wpeek( address: long_integer ): long_integer;
    TYPE
      int_ptr = ^integer;
    VAR
      funny: RECORD
               CASE boolean OF
                 true:  ( a: long_integer );
                 false: ( p: int_ptr );
             END;
    BEGIN
      funny.a := address;
      wpeek := funny.p^;
    END;
  FUNCTION lpeek( address: long_integer ): long_integer;
    TYPE
      lint_ptr = ^long_integer;
    VAR
      funny: RECORD
               CASE boolean OF
                 true:  ( a: long_integer );
                 false: ( p: lint_ptr );
             END;
    BEGIN
      funny.a := address;
      lpeek := funny.p^;
    END;
  PROCEDURE poke( address: long_integer; value: byte );
    TYPE
      lint_ptr = ^long_integer;
    VAR
      funny: RECORD
               CASE boolean OF
                 true:  ( a: long_integer );
                 false: ( p: lint_ptr );
             END;
    BEGIN
      funny.a := address;
      funny.p^ := value;
    END;
  PROCEDURE wpoke( address: long_integer; value: integer );
    TYPE
      int_ptr = ^integer;
    VAR
      funny: RECORD
               CASE boolean OF
                 true:  ( a: long_integer );
                 false: ( p: int_ptr );
             END;
    BEGIN
      funny.a := address;
      funny.p^ := value;
    END;
  PROCEDURE lpoke( address, value: long_integer );
    TYPE
      lint_ptr = ^long_integer;
    VAR
      funny: RECORD
               CASE boolean OF
                 true:  ( a: long_integer );
                 false: ( p: lint_ptr );
             END;
    BEGIN
      funny.a := address;
      funny.p^ := value;
    END;
  {$P=}