; > 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.