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=}