Difference between revisions of "OSBYTE &00"
(→Implementations) |
(→OSBYTE &00 (0) - Identify Host/Operating System) |
||
Line 1: | Line 1: | ||
[[Category:OSBYTE]] | [[Category:OSBYTE]] | ||
===OSBYTE &00 (0) - Identify Host/Operating System=== | ===OSBYTE &00 (0) - Identify Host/Operating System=== | ||
− | On entry, X=0 - Generate error giving host and OS type | + | On entry, X=0 - Generate error number 247 giving host and OS type |
X<>0 - Return host/OS in X | X<>0 - Return host/OS in X | ||
On exit, X=host/OS type: | On exit, X=host/OS type: | ||
− | + | 0 Electron 8 UNIX or UNIX-type system | |
− | 0 Electron | ||
1 BBC | 1 BBC | ||
2 BBC B+ | 2 BBC B+ | ||
3 Master 128 | 3 Master 128 | ||
− | 4 Master ET | + | 4 Master ET 28 Commodore 64/128 |
− | 5 Master Compact | + | 5 Master Compact 29 Texas Instruments calculator |
− | 6 Arthur or RISC OS | + | 6 Arthur or RISC OS 30 Amstrad CPC |
− | 7 Springboard | + | 7 Springboard 31 Sinclair ZX Spectrum |
− | |||
− | |||
− | |||
− | |||
− | |||
>=32 IBM PC-type system (DOS, Windows, etc.) | >=32 IBM PC-type system (DOS, Windows, etc.) | ||
Revision as of 22:25, 26 June 2017
Contents
OSBYTE &00 (0) - Identify Host/Operating System
On entry, X=0 - Generate error number 247 giving host and OS type X<>0 - Return host/OS in X On exit, X=host/OS type: 0 Electron 8 UNIX or UNIX-type system 1 BBC 2 BBC B+ 3 Master 128 4 Master ET 28 Commodore 64/128 5 Master Compact 29 Texas Instruments calculator 6 Arthur or RISC OS 30 Amstrad CPC 7 Springboard 31 Sinclair ZX Spectrum >=32 IBM PC-type system (DOS, Windows, etc.)
Implementations
Early documentation refers to OSBYTE 0 as returning the OS version. As more systems were developed, it became more correct to refer to it returning a value indicating the host. For example, code running on a second processor will always be told what the I/O host is regardless of what the host is and what the second processor is.
Platform capabilities
Over time the OSBYTE 0 return value has evolved to become a bitmap representing the capabilities of the host system, primarily of the file system structure.
-
%000x0xxx
Filenames are directory.filename/extension, eg BBC, RISC OS -
%000x1xxx
Filenames are directory/filename.extension, eg Unix, CP/M -
%nnnxxxxx
Filenames are directory\filename.extension, eg DOS, Windows
This can also be represented as:
-
%000x0xxx
Directory seperator is'.'
-
%000x1xxx
Directory seperator is'/'
-
%nnnxxxxx
Directory seperator is'\'
-
%000x0xxx
Extension seperator is'/'
-
%nnnxnxxx
Extension seperator is'.'
This allow programs to use code similar to the following:
A%=0:X%=1:os%=((USR&FFF4)AND&FF00)DIV256 d$=".":s$="/":IF(os%AND-24):d$="/":s$=".":IF(os%AND-32):d$="\" filename$=dir$+d$+name$+s$+ext$
See also
Jgharston 22:41, 6 September 2007 (BST)