Difference between revisions of "OSBYTE &00"

From BeebWiki
Jump to: navigation, search
m (Added 6809.)
(OSBYTE &00 (0) - Identify Host/Operating System)
Line 5: Line 5:
 
   
 
   
 
  On exit,  X=host/OS type:
 
  On exit,  X=host/OS type:
     0 Electron                   8 UNIX or UNIX-type system
+
     :d.dir.file/ext      dir/file.ext            :d.dir.file/ext        d:file.ext
    1 BBC                       9 6809/6309 system with "dir/file.ext"
+
  0 Electron           8 UNIX-type system
    2 BBC B+                   17 6809/6309 system with "dir.file/ext"
+
  1 BBC                 9 6809/6309 system     17 6809/6309 system
    3 Master 128
+
  2 BBC B+             10 Atom/System          18 Atom/System
    4 Master ET                 28 Commodore 64/128
+
  3 Master 128
    5 Master Compact           29 Texas Instruments calculator
+
  4 Master ET                                                         28 Commodore 64/128
    6 Arthur or RISC OS         30 Amstrad CPC
+
  5 Master Compact                                                   29 Texas Instruments calculator
    7 Springboard               31 Sinclair ZX Spectrum
+
  6 Arthur or RISC OS                                                 30 Amstrad CPC
  >=32 IBM PC-type system (DOS, Windows, etc.)
+
  7 Springboard                                                       31 Sinclair ZX Spectrum
 +
   
 +
    d:\dir\file.ext
 +
32 IBM PC-type system (DOS, Windows, etc.)
 +
39 6809/6309 system
 +
 
 +
The Atom/System entries are tentative values for an Atom or System with a BBC API and OSBYTE entry.
  
 
==Implementations==
 
==Implementations==

Revision as of 02:43, 2 February 2018

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:
   :d.dir.file/ext       dir/file.ext            :d.dir.file/ext        d:file.ext
 0 Electron            8 UNIX-type system
 1 BBC                 9 6809/6309 system     17 6809/6309 system
 2 BBC B+             10 Atom/System          18 Atom/System
 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

   d:\dir\file.ext
32 IBM PC-type system (DOS, Windows, etc.)
39 6809/6309 system

The Atom/System entries are tentative values for an Atom or System with a BBC API and OSBYTE entry.

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)