peek - read a byte from memory


v = peek(N)


Peek reads a byte from the specified memory location and returns it as an integer in the range 0 to 255.  The argument N may be any numeric expression with an integer value in the range -32768 to 32767.  The memory location read is at an offset of N from the beginning of the current segment as defined by the current value of the seg variable. 

Peek is the complementary function to the poke statement. 


The program
	   option base 1
	   dim src%(50), dst%(50)
	   srcoff% = varptr(src%)
	   srcseg% = seg
	   dstoff% = varptr(dst%)
	   dstseg% = seg
	   for i% = 1 to 100
	10 	def seg = srcseg%
	20 	temp% = peek(srcoff%)
		def seg = dstseg%
		poke dstoff%, temp%
		srcoff% = srcoff% + 1
		if srcoff% = 0% then srcseg% = srcseg% + 1%
		dstoff% = dstoff% +1
		if dstoff% = 0% then dstseg% = dstseg% + 1%
	   next i%
illustrates an unusual way of copying an array using peek.  In line 20, peek is used to assign the value located at the address of src% to the temporary variable temp% after the def seg statement in line 10 has been used to correctly set the high-order bits of the source address. 

Of course, there are better ways to copy arrays.  This method is shown only to illustrate the peek function. 


poke, varptr, def seg, seg


An "Overflow" error occurs if N is outside the range -32768 to 32767. 


When implemented in a 32-bit environment, Basmark QuickBASIC requires that the high-order 16 bits be predefined by means of the def seg statement, leaving the low-order 16 bits as an offset returned by varptr, and used as an argument by peek and poke.  The high order 16 bits of the address are stored in the seg variable. 

from The Basmark QuickBASIC Programmerís Manual by Lawrence Leinweber