; > Doc.ReadSysInf

 Title:         ReadSysInf
 Author:        Tim Dobson
 Version:       0.03
 Started:       19-Mar-91
 Last updated:  21-Oct-91
 Status:        Preliminary
 History:
  19-Mar-91 TMD         Created
  04-Apr-91 TMD         Updated OS_ReadSysInfo(2)

 Extensions to SWI OS_ReadSysInfo in RISC OS 2.11 and later versions
 ===================================================================

SWI OS_ReadSysInfo has been extended since RISC OS 2.00 - the full
specification is as follows:-

*****************************************************************************

        SWI OS_ReadSysInfo - Read various system information

 in:    R0 = reason code

 out:   Depends on reason code

 Reason codes:-

-------------------------------------------------------------------------

 in:    R0 = 0
 out:   R0 = amount of configured screen memory, in bytes

This sub-call is the same as on RISC OS 2.00, with the exception that two
bugs in the call have been fixed:-

 a) It no longer goes wrong if less than 20K configured on 8K or 16K page
size machine;

 b) It now properly ignores the top bit of the CMOS location holding the
configured value.

-------------------------------------------------------------------------

 in:    R0 = 1
 out:   R0 = Configured Mode/WimpMode
        R1 = Configured MonitorType
        R2 = Configured Sync

Note that from RISC OS 2.09 onwards, the configured Mode and WimpMode have
been merged. Both *Configure Mode and *Configure WimpMode control the same
CMOS RAM location.

Note also that if any of Mode/WimpMode, MonitorType or Sync have been
configured to Auto (see "Doc.MonLead"), then the appropriate value for the
attached monitor will be returned.

-------------------------------------------------------------------------

 in:    R0 = 2
 out:   R0 = IOEB ASIC presence flag
             0 => absent
             1 => present (type 1)
             Other values are reserved for future versions of IOEB which are
              not backwards compatible.

        R1 = 82C710 (or similar) presence flag
             0 => absent
             1 => present

        R2 = LCD ASIC presence flag
             0 => absent
             1 => present (type 1)
             Other values are reserved for future versions of LCD ASIC which
              are not backwards compatible.

        R3 = word 0 of unique machine ID
        R4 = word 1 of unique machine ID

Some RISC OS computers are fitted with a chip providing a machine ID number
which is unique to each computer. Machines not fitted with an ID will return
zero in both R3 and R4.

-------------------------------------------------------------------------

 in:    R0 = 3 (*** Only available from RISC OS 3.01 onwards ***)
 out:   R0 = 82C710/82C711 basic features mask       82C710  82C711
                Bits 0..3   Basic IDE type              1       1
                Bits 4..7   Basic FDC type              1       1
                Bits 8..11  Basic parallel port type    1       1
                Bits 12..15 Basic 1st serial port type  1       1
                Bits 16..19 Basic 2nd serial port type  0       1
                Bits 20..23 Basic Configuration type    1       2
                Bits 24..31 Reserved

        R1 = 82C710/82C711 extra features mask
                Reserved for upwards compatible additional functionality

        R2-R4 Undefined (reserved for future expansion)

The 82C710 family of chips are composed of several sub-units, each of which
might change under future revisions of the chip. Current sub-units are as
follows:

        IDE hard disc interface
        Floppy disc interface
        Parallel port
        Serial port 1
        Serial port 2 (only present in 82C711)
        Chip configuration (different on 82C710 and 82C711)

New versions of the chip may have some sub-units which are incompatible with
earlier versions, while leaving the functionality of other sub-units
unchanged.

This call allows drivers which are only interested in particular sub-units
to tell whether they can work on the particular hardware running in the
machine.

Different values of each sub-field correspond to incompatible versions of
the corresponding sub-unit. A sub-field of zero indicates that the sub-unit
is not present.

If a sub-unit gains additional backwards-compatible functionality in future
versions of the chip, this will be indicated by having bits set in the value
returned in R1.

Information on extra sub-units will be accomodated in the remaining bits of
R0, or in R2-R4.