# PEEK( )

Compatible with:
DOS Maximite CMM MM150 MM170 MM+ MMX Picromite ArmiteL4 Armite F4 ArmiteH7 Picomite CMM2

Description:
Will return a byte or a word within the CPU’s virtual memory space.

Each device has a different set of available memory locations to PEEK
Note that 'addr%' should be an integer.

PEEK(BYTE addr%) | BYTE will return the byte (8-bits) located at 'addr%'
PEEK(SHORT addr%) | SHORT will return the short integer (16-bits) located at 'addr%'
PEEK(WORD addr%) | WORD will return the word (32-bits) located at 'addr%'
PEEK(INTEGER addr%) | INTEGER will return the integer (64-bits) located at 'addr%'
PEEK(FLOAT addr%) | FLOAT will return the floating point number (64-bits) located at 'addr%'
PEEK(VARADDR var) | VARADDR will return the address (32-bits) of the variable 'var' in memory. An array is specified as var().
PEEK(VARHEADER var) | VARHEADER will return the address (32-bits) of the variable descriptor of the variable var in memory. An array is specified as var()
PEEK(VAR var, ±offset) | VAR, will return a byte in the memory allocated to 'var'. An array is specified as var().
PEEK( VARTBL, ±offset) | VARTBL, will return a byte in the memory allocated to the variable table maintained by MMBasic. Note that there is a comma after VARTBL.
PEEK( PROGMEM, ±offset) | PROGMEM, will return a byte in the memory allocated to the program. Note that there is a comma after the keyword PROGMEM.

On the CMM2:

sample1$ = "Sample1 string was declared first! Variables are allocated memory starting at the top."
sample2$ = "The Colour Maximite 2 is the latest in a long series of microcomputers."
startBlock = peek(varaddr sample2$)
print
print " 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F"
for k = 0 to &h1f
a$ = " "
print hex$(startblock+k*16,8);" ";
for n = 0 to 15
b = peek(byte startBlock+n+k*16)
print hex$(b,2);" ";
if b > 31 and b < 128 then
a$ = a$ + chr$(b)
else
a$ = a$ + "."
endif
next n
print a$
next k
end

Last edited: 15 December, 2020