1
1
Fork 0
mirror of https://github.com/QB64-Phoenix-Edition/QB64pe.git synced 2024-07-01 13:50:36 +00:00
QB64-PE/internal/help/PEEK.txt

66 lines
3.1 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

The '''PEEK''' function returns the value that is contained at a certain memory address offset. '''QB64 currently has limited access!'''
{{PageSyntax}}
:: variable = PEEK(''segment_offset'')
* Reads the specified memory ''segment_offset'' value.
* Use [[DEF SEG]] before PEEK to specify which memory segment to work in.
* PEEK only reads the memory byte value. Not certain bits. (See [[AND]])
* Important [[SCREEN (statement)|SCREEN]] segments using [[PEEK]] and [[POKE]] include &HB800 (text segment) and &HA000 (graphics segment).
* To return to Basic default segment use [[DEF SEG]] without any arguments.
* '''Warning: DEF SEG, VARSEG , VARPTR, PEEK or POKE access QB64's emulated 16 bit conventional memory block!'''
: '''It is highly recommended that QB64's [[_MEM]] memory system be used to avoid running out of memory.'''
''Example:'' Checking the 8 keyboard bit settings using a PEEK return value.
{{CodeStart}} '' ''
SCREEN 12
{{Cl|DEF SEG}} = 0 ' BIOS area
oldvalue = PEEK(1047) ' IMPORTANT! save initial setting to reset later
DO: {{Cl|_LIMIT}} 100
port = {{Cl|PEEK}}(1047)
IF port > 0 THEN LOCATE 26, 19: COLOR 11:
PRINT "Turn ALL Locks off to see each key's bit value!"
END IF
COLOR 14:LOCATE 2, 25
PRINT "PEEK(1047) ="; port; "present keyboard port byte value"
LOCATE 5, 35
IF (port {{Cl|AND}} 1) = 1 THEN COLOR 10: PRINT "R SHIFT PRESSED  " ELSE COLOR 12: PRINT "R SHIFT RELEASED"
LOCATE 7, 35
IF (port AND 2) = 2 THEN COLOR 10: PRINT "L SHIFT PRESSED  " ELSE COLOR 12: PRINT "L SHIFT RELEASED"
LOCATE 9, 35
IF (port AND 4) = 4 THEN COLOR 10: PRINT "CTRL KEY PRESSED " ELSE COLOR 12: PRINT "CTRL KEY RELEASED"
LOCATE 11, 35
IF (port AND 8) = 8 THEN COLOR 10: PRINT "ALT KEY PRESSED " ELSE COLOR 12: PRINT "ALT KEY RELEASED"
LOCATE 13, 35
IF (port AND 16) = 16 THEN COLOR 10: PRINT "SCROLL LOCK ON " ELSE COLOR 12: PRINT "SCROLL LOCK OFF"
LOCATE 15, 35
IF (port AND 32) = 32 THEN COLOR 10: PRINT "NUMBER LOCK ON " ELSE COLOR 12: PRINT "NUMBER LOCK OFF"
LOCATE 17, 35
IF (port AND 64) = 64 THEN COLOR 10: PRINT "CAPS LOCK ON " ELSE COLOR 12: PRINT "CAPS LOCK OFF"
LOCATE 19, 35
IF (port AND 128) = 128 THEN COLOR 10: PRINT "INSERT MODE ON " ELSE COLOR 12: PRINT "INSERT MODE OFF"
COLOR 11: LOCATE 21, 20: PRINT "Press mode keys to change or [ESC] to quit!";
LOOP UNTIL {{Cl|INP}}(&H60) = 1 ' escape key exit
{{Cl|POKE}} 1047, oldvalue ' IMPORTANT reset to original settings
{{Cl|DEF SEG}} '' ''
{{CodeEnd}}
: '''NOTE: Keyboard Port function key settings cannot be reset on NT machines!'''
''See Example:'' [[SelectScreen]] (Screen 0 row highlighting)
''See also:''
* [[POKE]] {{text|(write to memory)}}, [[INP]] {{text|(read register)}}
* [[DEF SEG]], [[VARSEG]], [[VARPTR]]
* [[_MEMGET (function)]], [[_MEMPUT]]
* [[DEF SEG = 0]], [[Scancodes]] {{text|(demo)}}
* [[PEEK and POKE Library]]
* [[Screen Memory]]
{{PageNavigation}}