INKEY
From BeebWiki
INKEY and INKEY$ are BASIC functions to:
- wait a specified time for a character from the input stream
- test for a keypress
- return a value indicating the machine host/operating system type
| Availability | Present in all versions of BBC BASIC. | |
| Syntax | <numeric> = INKEY<numeric>
| <string> = INKEY$<numeric>
|
| Token (hex) | A6 (function)
| BF (function)
|
| Description | Reads an character from the input stream. | |
Contents |
Description
INKEY and INKEY$ call OSBYTE &81.
INKEY returns a character or -1 for no character, INKEY$
returns a one-character string or a null string if nothing returned.
Wait for input character
Argument: >=0
Returns: >=0, character returned
-1, timed out
Example: key%=INKEY(200)
REPEAT:k%=INKEY(10):PROCtick:UNTIL k%>-1
Some systems allow a delay value with b15 set to return a 16-bit "deep"
keyvalue distinguishing between special keys, such as function keys, and
top-bit characters.[1][2]
Example: REPEAT:key%=INKEY(&80C8):UNTIL key%>-1
IF key%=&190 THEN PRINT "Shift-f0 pressed"
Scan for a particular key
Argument: -1..-128, negative key number
Returns: TRUE, key pressed
FALSE, key not pressed
Scan for a range of keys
Argument: -129...-255, lowest internal key number to start at EOR&7F Returns: internal key number pressed, or 255 for none
Check machine type
Argument: -256
Returns: A value indicating the host (I/O) machine type:
&00 BBC B with MOS 0.10
&00 RM Nimus[3]
&01 Acorn Electron MOS
&FF BBC Micro OS 1.00/1.20
&FE BBC Micro (American MOS 1.10)
&FE NetBSD
&FD Master 128 MOS 3.20
&FC BBC Micro (West German MOS)
&FC Windows 32
&FB BBC B+ 64/128 (MOS2.00)
&FB Beos (Brandy Basic)
&FA Acorn ABC
&FA DOS with Brandy BASIC
&F9 Linux
&F8 MacOS X (Brandy Basic)
&F7 Master ET OS 4.00
&F7 FreeBSD
&F6 OpenBSD
&F5 Compact
&F5 Amiga (Brandy Basic)
&F4 Master 128 MOS 3.26
&Ex Spectrum
&Dx Amstrad 464/664/6128, etc.
&Ax Arthur/RISC OS
&A0 Arthur 1.20
&A1 RISC OS 2.00
&A2 RISC OS 2.01
&A3 RISC OS 3.0x
&A4 RISC OS 3.1x
&A5 RISC OS 3.50
&A6 RISC OS 3.60
&A7 RISC OS 3.7x
&A8 RISC OS 4.0x
&A9 RISC OS 4.3x
&AA RISC OS 5.xx
&AF Springboard
(INKEY-256 AND &F0)=&A0 gives TRUE for ARM hardware
&57 BBC BASIC for Windows
Depending on what the program needs to know, [[OSBYTE &00] may also need
to be called.
See Also
- http://mdfs.net/Docs/Comp/BBC/Osbyte80
- http://mdfs.net/Docs/Comp/Acorn/HostVals
- http://mdfs.net/Docs/Comp/Acorn/Hosts
- What BASIC is running
- Negative INKEY numbers
References
- ↑ http://mdfs.net/Docs/Comp/KeyMap/Regular
- ↑ http://mdfs/net/System/C/Lib/console.txt
- ↑ Network User, Jan/Feb 1988, p9
Jgharston 12:27, 28 May 2009 (UTC)

