2015-08-02 12:12:44 +00:00
|
|
|
|
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)
|
2019-04-15 01:15:33 +00:00
|
|
|
|
IF port > 0 THEN LOCATE 26, 19: COLOR 11:
|
|
|
|
|
PRINT "Turn ALL Locks off to see each key's bit value!"
|
2015-08-02 12:12:44 +00:00
|
|
|
|
END IF
|
|
|
|
|
COLOR 14:LOCATE 2, 25
|
2019-04-15 01:15:33 +00:00
|
|
|
|
PRINT "PEEK(1047) ="; port; "present keyboard port byte value"
|
2015-08-02 12:12:44 +00:00
|
|
|
|
LOCATE 5, 35
|
2019-04-15 01:15:33 +00:00
|
|
|
|
IF (port {{Cl|AND}} 1) = 1 THEN COLOR 10: PRINT "R SHIFT PRESSED " ELSE COLOR 12: PRINT "R SHIFT RELEASED"
|
2015-08-02 12:12:44 +00:00
|
|
|
|
LOCATE 7, 35
|
2019-04-15 01:15:33 +00:00
|
|
|
|
IF (port AND 2) = 2 THEN COLOR 10: PRINT "L SHIFT PRESSED " ELSE COLOR 12: PRINT "L SHIFT RELEASED"
|
2015-08-02 12:12:44 +00:00
|
|
|
|
LOCATE 9, 35
|
2019-04-15 01:15:33 +00:00
|
|
|
|
IF (port AND 4) = 4 THEN COLOR 10: PRINT "CTRL KEY PRESSED " ELSE COLOR 12: PRINT "CTRL KEY RELEASED"
|
2015-08-02 12:12:44 +00:00
|
|
|
|
LOCATE 11, 35
|
2019-04-15 01:15:33 +00:00
|
|
|
|
IF (port AND 8) = 8 THEN COLOR 10: PRINT "ALT KEY PRESSED " ELSE COLOR 12: PRINT "ALT KEY RELEASED"
|
2015-08-02 12:12:44 +00:00
|
|
|
|
LOCATE 13, 35
|
2019-04-15 01:15:33 +00:00
|
|
|
|
IF (port AND 16) = 16 THEN COLOR 10: PRINT "SCROLL LOCK ON " ELSE COLOR 12: PRINT "SCROLL LOCK OFF"
|
2015-08-02 12:12:44 +00:00
|
|
|
|
LOCATE 15, 35
|
2019-04-15 01:15:33 +00:00
|
|
|
|
IF (port AND 32) = 32 THEN COLOR 10: PRINT "NUMBER LOCK ON " ELSE COLOR 12: PRINT "NUMBER LOCK OFF"
|
2015-08-02 12:12:44 +00:00
|
|
|
|
LOCATE 17, 35
|
2019-04-15 01:15:33 +00:00
|
|
|
|
IF (port AND 64) = 64 THEN COLOR 10: PRINT "CAPS LOCK ON " ELSE COLOR 12: PRINT "CAPS LOCK OFF"
|
2015-08-02 12:12:44 +00:00
|
|
|
|
LOCATE 19, 35
|
2019-04-15 01:15:33 +00:00
|
|
|
|
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!";
|
2015-08-02 12:12:44 +00:00
|
|
|
|
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]]
|
|
|
|
|
|
|
|
|
|
|
2019-04-15 01:15:33 +00:00
|
|
|
|
{{PageNavigation}}
|