h6. [[Portable]] h6(. » Portable Feature Matrix The tables on this page provide an overview of which Portable features are available in which variant of the module. Note that the contents of this page should only be used as a guide; programs wishing to use the Portable module should always use the appropriate interfaces (e.g. [[Portable_ReadFeatures]]) to determine the availability of the features they require. * "SWIs":#swis * "Service calls":#service_calls * "*Commands":#commands * "Portable_Control bits":#portable_control_bits * "BMU variables":#bmu_variables * "BMU variable 10":#bmu_variable_10 * "BMU commands":#bmu_commands * "Portable_Stop wakeup reasons":#portable_stop_wakeup_reasons * "Portable_Status bits":#portable_status_bits h4(#swis). SWIs This table lists the supported SWIs. The SWIs which the Stork version "Maybe" support are present in the source code, but are currently disabled. table(bordered). |_<^. # |_<^. Name |_<^{width:4em}. A4 |_<^{width:4em}. Stork |_<^{width:4em}. 75/CX |_<^{width:4em}. HAL |_<^{width:4em}. A9 |_<^. VirtualRPC |_<^{width:4em}. RPCEmu |_<^{width:4em}. Pyromaniac (PSUtil/OSX) | | 42FC0 | [[Portable_Speed]] | Y | - | - | Y | ? | ? | ? | - / - | | 42FC1 | [[Portable_Control]] | Y | Y | - | - | ? | ? | ? | - / - | | 42FC2 | [[Portable_ReadBMUVariable]] | Y | Y | - | - | Y | Y | ? | Y / Y | | 42FC3 | [[Portable_WriteBMUVariable]] | Y | Y | - | - | - | - | - | - / - | | 42FC4 | [[Portable_CommandBMU]] | Y | Y | - | - | ? | ? | ? | Y / Y | | 42FC5 | [[Portable_ReadFeatures]] | - | Y | Y | Y | Y? | Y? | Y? | Y / Y | | 42FC6 | [[Portable_Idle]] | - | Y | Y | Y | Y? | Y? | Y? | Y / Y | | 42FC7 | [[Portable_Stop]] | - | Y | - | - | ? | ? | ? | - / - | | 42FC8 | [[Portable_Status]] | - | Y | - | - | ? | ? | ? | - / - | | 42FC9 | [[Portable_Contrast]] | - | Maybe | - | - | ? | ? | ? | - / - | | 42FCA | [[Portable_Refresh]] | - | Maybe | - | - | ? | ? | ? | - / - | | 42FCB | [[Portable_Halt]] | - | Maybe | - | - | ? | ? | ? | - / - | | 42FCC | [[Portable_SleepTime]] | - | Maybe | - | - | ? | ? | ? | - / - | | 42FCD | [[Portable_SMBusOp]] | - | Maybe | - | - | ? | ? | ? | - / - | | 42FCE | [[Portable_Speed2]] | - | - | - | Y | - | - | - | - / - | | 42FCF | [[Portable_WakeTime]] | - | - | - | - | - | - | - | - / - | | 42FD0 | [[Portable_EnumerateBMU]] | - | - | - | Y | - | - | - | - / - | | 42FD1 | [[Portable_ReadBMUVariables]] | - | - | - | Y | - | - | - | - / - | h4(#service_calls). Service calls This table lists the reason codes supported by [[Service_Portable]]. table(bordered). |_<^. # |_<^. Name |_<^{width:4em}. A4 |_<^{width:4em}. Stork |_<^{width:4em}. 75/CX |_<^{width:4em}. HAL |_<^{width:4em}. A9 |_<^. VirtualRPC |_<^{width:4em}. RPCEmu |_<^{width:4em}. Pyromaniac (PSUtil/OSX) | | 0 | [[Service_Portable 0|PowerDown]] | Y | Y | - | - | ? | ? | ? | - | | 1 | [[Service_Portable 1|PowerUp]] | Y | Y | - | - | ? | ? | ? | - | | 2 | [[Service_Portable 2|TidyUp]] | - | - | - | - | ? | ? | ? | - | | 3 | [[Service_Portable 3|Freeze]] | - | Y | - | - | ? | ? | ? | - | | 4 | [[Service_Portable 4|Unfreeze]] | - | Y | - | - | ? | ? | ? | - | | 5 | [[Service_Portable 5|FreezeRequest]] | - | Y | - | - | ? | ? | ? | - | h4(#commands). *Commands This table lists the supported *Commands. table(bordered). |_<^. Name |_<^{width:4em}. A4 |_<^{width:4em}. Stork |_<^{width:4em}. 75/CX |_<^{width:4em}. HAL |_<^{width:4em}. A9 |_<^. VirtualRPC |_<^{width:4em}. RPCEmu |_<^{width:4em}. Pyromaniac (PSUtil/OSX) | | [[*FreezeTime]] | - | Y | - | - | - | - | ? | - | h4(#portable_control_bits). Portable_Control bits This table lists the status/control bits supported by [[Portable_Control]]. table(bordered). |_<^. # |_<^. Name |_<^{width:4em}. A4 |_<^{width:4em}. Stork |_<^{width:4em}. 75/CX |_<^{width:4em}. HAL |_<^{width:4em}. A9 |_<^. VirtualRPC |_<^{width:4em}. RPCEmu |_<^{width:4em}. Pyromaniac (PSUtil/OSX) | | 0 | Econet power | Y | - | - | - | ? | ? | ? | - | | 1 | LCD power | Y | Y | - | - | ? | ? | ? | - | | 2 | External display power | Y | Y | - | - | ? | ? | ? | - | | 3 | Serial buffer & oscillator | Y | Y | - | - | ? | ? | ? | - | | 4 | Dual panel mode | Y | - | - | - | ? | ? | ? | - | | 5,6 | Video clock control | Y | - | - | - | ? | ? | ? | - | | 7 | Invert video clock | Y | - | - | - | ? | ? | ? | - | | 8 | Backlight | Y | Y | - | - | ? | ? | ? | - | | 9 | 1/2 extra display lines | Y | - | - | - | ? | ? | ? | - | | 10 | 1/2 DRAMs | Y | - | - | - | ? | ? | ? | - | | 11 | Sound filters & amplifiers | - | Y | - | - | ? | ? | ? | - | | 12 | PCMCIA | - | Y | - | - | ? | ? | ? | - | | 13 | Parallel port | - | Y | - | - | ? | ? | ? | - | | 14 | FDC oscillator power | Y | Y | - | - | ? | ? | ? | - | | 15 | IDE hard disc | - | Y | - | - | ? | ? | ? | - | | 16 | Invert LCD palette | Y | Y | - | - | ? | ? | ? | - | | 17 | Internal tracker ball in use | - | Y | - | - | ? | ? | ? | - | | 18 | External mouse in use | - | Y | - | - | ? | ? | ? | - | | 19 | External kb & mouse power | - | Y | - | - | ? | ? | ? | - | h4(#bmu_variables). BMU variables This table lists the BMU variables supported by the BMU SWIs. Note that there is no HAL column in the below table; apart from variables 12-20, which are deprecated in PortableHAL, the set of supported variables is entirely device-dependent. Well-written programs should query for supported variables at runtime, by attempting to read from the relevant variables (e.g. using [[Portable_ReadBMUVariables]]) and looking at the result codes. table(bordered). |_<^. # |_<^. Name |_<^{width:4em}. A4 |_<^{width:4em}. Stork |_<^{width:4em}. 75/CX |_<^{width:4em}. A9 |_<^. VirtualRPC |_<^{width:4em}. RPCEmu |_<^{width:4em}. Pyromaniac (PSUtil/OSX) | | 0 | Version & BMU memory map | Y | - | - | Y | - | ? | - / - | | 1 | Nominal battery capacity | Y | - | - | Y | - | ? | - / Y | | 2 | Measured battery capacity | Y | - | - | Y | - | ? | - / Y | | 3 | Used battery capacity | Y | - | - | Y | - | ? | - / - | | 4 | Usable battery capacity | Y | - | - | Y | - | ? | - / - | | 5 | Reserved | Y | - | - | - | - | ? | - / - | | 6 | Charge estimate | Y | - | - | - | - | ? | - / - | | 7 | Instantaneous voltage | Y | Y | - | - | - | ? | - / Y | | 8 | Instantaneous current | Y | - | - | - | - | ? | - / Y | | 9 | Instantaneous temperature | Y | Y | - | - | - | ? | - / Y | | 10 | "Status flags":#bmu_variable_10 | Y | Y | - | Y | - | ? | Y / Y | | 11 | Charge rate | Y | Y | - | Y | - | ? | - / - | | 12 | Charge current | - | Y | - | - | - | ? | - / - | | 13 | Discharge current | - | Y | - | - | - | ? | - / - | | 14 | Voltage | - | Y | - | Y | - | ? | - / - | | 15 | Temperature 1 | - | Y | - | - | - | ? | - / - | | 16 | Temperature 2 | - | Y | - | - | - | ? | - / - | | 17 | Charge level | - | Y | - | - | - | ? | - / - | | 18 | Status flags (as variable 10) | - | Y | - | - | - | ? | - / - | | 19 | Input signals | - | Y | - | - | - | ? | - / - | | 20 | Battery capacity | - | Y | - | - | - | ? | - / - | | 21 | Battery time remaining, seconds | - | - | - | - | Y | ? | Y / Y | | 22 | Max battery life in seconds | - | - | - | - | Y | ? | - / - | | 23 | Battery percentage remaining | - | - | - | - | - | - | Y / Y | | 24 | Charge time remaining | - | - | - | - | - | - | - / Y | | 25 | Charge cycle count | - | - | - | - | - | - | - / Y | | 26 | Smoothed voltage | - | - | - | - | - | - | - / Y | | 27 | Smoothed current | - | - | - | - | - | - | - / Y | | 28 | Nominal available capacity | - | - | - | - | - | - | - / Y | | 29 | Compensated available capacity | - | - | - | - | - | - | - / - | h4(#bmu_variable_10). BMU variable 10 This table lists the supported flags in BMU variable 10, variable 18 (which is identical to 10), and by the [[Event 28|Portable BMU event]]. Note that there is some confusion over bit 0; the RISC OS Select documentation incorrectly lists it as "Battery replaced"[1], while the Stork module describes it as an extra threshold, "Battery charged". This latter meaning is used in PortableHAL. Note that there is no HAL column in the below table; well-written programs should query for supported bits at runtime, via [[Portable_EnumerateBMU]]. table(bordered). |_<^. # |_<^. Name |_<^{width:4em}. A4 |_<^{width:4em}. Stork |_<^{width:4em}. 75/CX |_<^{width:4em}. A9 |_<^. VirtualRPC |_<^{width:4em}. RPCEmu |_<^{width:4em}. Pyromaniac (PSUtil/OSX) | | 0 | Battery replaced | - | - | - | ? | - | ? | - / - | | - | Threshold 3 (battery charged) | - | Y | - | - | - | ? | Y / Y | | 1 | Lid open | Y | Y? | - | ? | - | ? | - / Y | | 2 | Threshold 2 (battery flat) | Y | Y? | - | ? | - | ? | - / - | | 3 | Threshold 1 (battery low) | Y | Y? | - | ? | - | ? | - / - | | 4 | Charge system fault | Y | Y? | - | ? | - | ? | Y / Y | | 5 | Charge state known | Y | Y? | - | ? | - | ? | Y / Y | | 6 | Battery present | Y | Y? | - | ? | - | ? | Y / Y | | 7 | Charger connected | Y | Y? | - | ? | - | ? | Y / Y | | 8 | Battery charging | - | - | - | - | - | - | Y / Y | | 9 | Battery failing | - | - | - | - | - | - | - / Y | h4(#bmu_commands). BMU commands This table lists the supported [[Portable_CommandBMU]] reason codes. Note that although most documentation lists reason codes 2 and 3 as being reserved, the A4 source suggests that they were used to control battery charging. table(bordered). |_<^. # |_<^. Name |_<^{width:4em}. A4 |_<^{width:4em}. Stork |_<^{width:4em}. 75/CX |_<^{width:4em}. HAL |_<^{width:4em}. A9 |_<^. VirtualRPC |_<^{width:4em}. RPCEmu |_<^{width:4em}. Pyromaniac (PSUtil/OSX) | | 1 | Remove power | Y | Y | - | - | ? | ? | ? | Y / Y | | 2 | Set part charge | Y | - | - | - | ? | ? | ? | - / - | | 3 | Set full charge | Y | - | - | - | ? | ? | ? | - / - | | 4 | Set autostart | Y | - | - | - | ? | ? | ? | - / - | | 5 | Turn off AC power | - | Y | - | - | ? | ? | ? | - / - | | 6 | Turn on AC power | - | Y | - | - | ? | ? | ? | - / - | | 7 | Disable [[Event 28|BMU event]] generation | - | Y | - | - | ? | ? | ? | - / - | | 8 | Enable [[Event 28|BMU event]] generation | - | Y | - | - | ? | ? | ? | - / - | h4(#portable_stop_wakeup_reasons). Portable_Stop wakeup reasons This table lists the supported [[Portable_Stop]] wakeup reasons. table(bordered). |_<^. # |_<^. Name |_<^{width:4em}. A4 |_<^{width:4em}. Stork |_<^{width:4em}. 75/CX |_<^{width:4em}. HAL |_<^{width:4em}. A9 |_<^. VirtualRPC |_<^{width:4em}. RPCEmu |_<^{width:4em}. Pyromaniac (PSUtil/OSX) | | 1 | Keyboard | - | Y | - | - | ? | ? | ? | - / - | | 2 | RTC | - | - | - | - | ? | ? | ? | - / - | h4(#portable_status_bits). Portable_Status bits This table lists the various bits returned by [[Portable_Status]]. table(bordered). |_<^. # |_<^. Name |_<^{width:4em}. A4 |_<^{width:4em}. Stork |_<^{width:4em}. 75/CX |_<^{width:4em}. HAL |_<^{width:4em}. A9 |_<^. VirtualRPC |_<^{width:4em}. RPCEmu |_<^{width:4em}. Pyromaniac (PSUtil/OSX) | | 0 | Docked | - | Y | - | - | ? | ? | ? | - / - | | 1 | External FDC connected | - | Y | - | - | ? | ? | ? | - / - | | 2 | External trackball connected | - | - | - | - | ? | ? | ? | - / - | | 3 | Internal display in use | - | Y | - | - | ? | ? | ? | - / - | fn1. As some point during the writing of the Select documentation, the wording was that bit 0 indicated that the battery had been `changed` (a typo of `charged`). During a review this got reworded without reference to the original source to indicate that the `battery has been replaced`, as a synonym for `changed`, probably because `battery changed` doesn't look very nice as a description. Thus confusion. Sorry.