Entry | |
---|---|
R0 | 2 |
Exit | |
---|---|
R0 | Hardware configuration word 0 |
R1 | Hardware configuration word 1 |
R2 | Hardware configuration word 2 |
R3 | Low half of machine ID |
R4 | High half of machine ID |
Word | Bits | Use | Values |
---|---|---|---|
0 | 0-7 | Special functions chip type | 0 = none/unspecified |
1 = IOEB | |||
0 | 8-15 | I/O controller chip type | 0 = IOC |
1 = IOMD | |||
255 = unspecified | |||
0 | 16-23 | Memory controller chip type | 0 = MEMC1/MEMC1a |
1 = IOMD | |||
255 = unspecified | |||
0 | 24-31 | Video controller chip type | 0 = VIDC1a |
1 = VIDC20 | |||
255 = unspecified | |||
1 | 0-7 | I/O chip type | 0 = none/unspecified |
1 = 82C710 or similar | |||
1 | 8-31 | Reserved | 0 |
2 | 0-7 | LCD controller type | 0 = none |
1 = type 1 (e.g. A4 portable) | |||
2 = type 2 (e.g. Stork portable) | |||
2 | 8-15 | IOMD variant | 0 = IOMD |
1 = IOMDL (i.e. ARM7500) | |||
2 | 16-23 | VIDC20 variant | 0 = VIDC20 |
1 = VIDC2L (i.e. ARM7500) | |||
2 | 24 | IIC bus speed | 0 = slow (100kHz) |
1 = fast (400kHz) | |||
2 | 25 | Clock state during idle | 0 = Keep I/O clocks running during idle |
1 = Stop I/O clocks during idle | |||
2 | 26-31 | Reserved | 0 |
The purpose of this call is to check for the presence of various chips, returning flags.
It also reads the unique machine ID if a suitable chip is fitted to the computer; if none is, an ID of zero is returned.
The content of hardware information word 2 is generally only correct if the system is IOC or IOMD based. Modern HAL based systems typically return 0 for the whole word.
When using this call to read the machine ID, it is recommended that programs first check with OS_ReadSysInfo 12 to see if an extended machine ID is available.
If you only wish to read the old-style 64 bit machine ID, then OS_ReadSysInfo 5 can be used instead.