mirror of
https://github.com/QB64-Phoenix-Edition/QB64pe.git
synced 2024-09-16 13:13:55 +00:00
33adc04fc4
Just more initial setting on... nothing much to see here.
67 lines
2.9 KiB
Text
67 lines
2.9 KiB
Text
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}}
|
||
<
|