Machine types
OSBYTE &00 and OSBYTE &81/INKEY-256 return values that can used to identify the system a program is running on.
OSBYTE 0,0 generates an error with the error string describing the host system, OSBYTE 0,<>0 returns a byte indicating what type of host hardware the program is running on. OSBYTE 129,255,0 (callable from BASIC with INKEY-256) returns a subvalue that indicates the specific type of host operating system.
OSBYTE 00 | INKEY-256 | Host system
---------------------------------------------------------------------
0 | &01 | Electron
---------------------------------------------------------------------
1 | | BBC B
| &FFFFFFFF | BBC OS 1.00/1.20
| &FE | BBC OS 1.10 (US)
| &FC | BBC OS 1.20 (Germany)
| &FA | Acorn Business Computer OS
---------------------------------------------------------------------
2 | | BBC B+
| &FB | BBC B+ OS 2.00
| &FF | Reuters Terminal (UK) (switchable with *UK)
| &FE | Reuters Terminal (US) (switchable with *US)
| &FA | Acorn Business Computer OS
---------------------------------------------------------------------
3 | &FD | Master OS 3.20
---------------------------------------------------------------------
4 | &F7 | Master ET OS 4.00
---------------------------------------------------------------------
5 | &F5 | Master Compact OS 5.00
---------------------------------------------------------------------
6 | &Ax | Archimedes/RISC OS system
| &A0 | Archimedes Arthur 1.20
| &A1 | RISC OS 2.00
| &A2 | RISC OS 2.01
| &A3 | RISC OS 3.00
| &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
| | (INKEY-256 AND &F0)=&A0 is TRUE for ARM systems
---------------------------------------------------------------------
7 | &AF | Springboard
| | (INKEY-256 AND &F0)=&A0 is TRUE for ARM systems
---------------------------------------------------------------------
8 | | UNIX-type OS
| &F6 | OpenBSD
| &F7 | FreeBSD
| &F9 | Linux
| &FE | NetBSD
---------------------------------------------------------------------
29 | &8x | TI Calculator
| &83 | TI-83+
| &84 | TI-84+
---------------------------------------------------------------------
30 | &Dx | Amstrad 464/664/6128, etc.
---------------------------------------------------------------------
31 | &Ex | ZX Spectrum
| &E0 | ZX Spectrum
---------------------------------------------------------------------
32 | | DOS or Windows
| &57 | BBC BASIC for Windows
| &FA | DOS with Brandy BASIC
| &FC | Windows 32 with Brandy BASIC
| --- | DOS BBCBASIC-86 does not support INKEY-256
---------------------------------------------------------------------
-- | &00 | RM Nimbus
-- | &F5 | Amiga (Brandy Basic)
-- | &F8 | MacOS X (Brandy Basic)
-- | &FB | Beos (Brandy Basic)
---------------------------------------------------------------------
Note that OSBYTE &00 and INKEY-256 return the host system, the main I/O hardware, which may not necessarily be the system the program is running on. For instance, a 6502 second processor emulator running on RISC OS will return 6 from OSBYTE 0 and an ARM CoProcessor connected to a BBC Master will return &03.
It is hard to determine what hardware the actual program is running on, but a BASIC program can easily find what version of BASIC it is running on, which in most cases is sufficient.
Jgharston 23:42, 2 December 2008 (UTC)