Microsoft KB Archive/23868

{| = How to Access & Modify Memory in MS-DOS from a C Program =
 * width="100%"|

ID: Q23868

6.00 6.00a 6.00ax 7.00 | 1.00 1.50

MS-DOS                | WINDOWS kbprg The information in this article applies to:


 * Microsoft C for MS-DOS, versions 6.0, 6.0a, and 6.0ax
 * Microsoft C/C++ for MS-DOS, version 7.0
 * Microsoft Visual C++ for Windows, versions 1.0 and 1.5

SUMMARY
The code example below contains two functions to access memory in an application developed for the MS-DOS operating system. The peek function provides access to a memory location and the poke function allows an application to specify the value for a memory location.

Sample Code
/* * Compile options needed: None */

// The following function places a value into the specified // memory location segment:offset

void poke(unsigned int segment, unsigned int offset,         unsigned char val) {  unsigned char far *ptr;

ptr = (unsigned char far *)(((long)segment << 16) | (long)offset); *ptr = val; } // The following function returns the contents of the specified // memory location segment:offset unsigned char peek(unsigned int segment, unsigned int offset) { unsigned char far *ptr;

ptr = (unsigned char far *)(((long)segment << 16) | (long)offset); return *ptr; } Additional reference words: kbinf 6.00 6.00a 6.00ax 7.00 1.00 1.50 KBCategory: kbprg KBSubcategory: CLngIss Keywords : kb16bitonly
 * }