--------p-155300----------------------------- INT 15 - Advanced Power Management v1.0+ - INSTALLATION CHECK AX = 5300h BX = device ID of system BIOS (0000h) Return: CF clear if successful AH = major version (BCD) AL = minor version (BCD) BX = 504Dh ("PM") CX = flags (see #00472) CF set on error AH = error code (06h,09h,86h) (see #00473) BUG: early versions of the Award Modular BIOS with built-in APM support reportedly do not set BX on return Bitfields for APM flags: Bit(s) Description (Table 00472) 0 16-bit protected mode interface supported 1 32-bit protected mode interface supported 2 CPU idle call reduces processor speed 3 BIOS power management disabled 4 BIOS power management disengaged (APM v1.1) 5-7 reserved (Table 00473) Values for APM error code: 01h power management functionality disabled 02h interface connection already in effect 03h interface not connected 04h real-mode interface not connected 05h 16-bit protected-mode interface already connected 06h 16-bit protected-mode interface not supported 07h 32-bit protected-mode interface already connected 08h 32-bit protected-mode interface not supported 09h unrecognized device ID 0Ah invalid parameter value in CX 0Bh (APM v1.1) interface not engaged 0Ch (APM v1.2) function not supported 0Dh (APM v1.2) Resume Timer disabled 0Eh-1Fh reserved for other interface and general errors 20h-3Fh reserved for CPU errors 40h-5Fh reserved for device errors 60h can't enter requested state 61h-7Fh reserved for other system errors 80h no power management events pending 81h-85h reserved for other power management event errors 86h APM not present 87h-9Fh reserved for other power management event errors A0h-FEh reserved FFh undefined --------p-155301----------------------------- INT 15 - Advanced Power Management v1.0+ - CONNECT REAL-MODE INTERFACE AX = 5301h BX = device ID of system BIOS (0000h) Return: CF clear if successful CF set on error AH = error code (02h,05h,07h,09h) (see #00473) Note: on connection, an APM v1.1 or v1.2 BIOS switches to APM v1.0 compatibility mode until it is informed that the user supports a newer version of APM (see AX=530Eh) SeeAlso: AX=5302h,AX=5303h,AX=5304h --------p-155302----------------------------- INT 15 R - Advanced Power Management v1.0+ - CONNECT 16-BIT PROTMODE INTERFACE AX = 5302h BX = device ID of system BIOS (0000h) Return: CF clear if successful AX = real-mode segment base address of protected-mode 16-bit code segment BX = offset of entry point CX = real-mode segment base address of protected-mode 16-bit data segment ---APM v1.1--- SI = APM BIOS code segment length DI = APM BIOS data segment length CF set on error AH = error code (02h,05h,06h,07h,09h) (see #00473) Notes: the caller must initialize two consecutive descriptors with the returned segment base addresses; these descriptors must be valid whenever the protected-mode interface is called, and will have their limits arbitrarily set to 64K. the protected mode interface is invoked by making a far call with the same register values as for INT 15; it must be invoked while CPL=0, the code segment descriptor must have a DPL of 0, the stack must be in a 16-bit segment and have enough room for BIOS use and possible interrupts, and the current I/O permission bit map must allow access to the I/O ports used for power management. functions 00h-03h are not available from protected mode on connection, an APM v1.1 or v1.2 BIOS switches to APM v1.0 compatibility mode until it is informed that the user supports a newer version of APM (see AX=530Eh) SeeAlso: AX=5301h,AX=5303h,AX=5304h --------p-155303----------------------------- INT 15 - Advanced Power Management v1.0+ - CONNECT 32-BIT PROTMODE INTERFACE AX = 5303h BX = device ID of system BIOS (0000h) Return: CF clear if successful AX = real-mode segment base address of protected-mode 32-bit code segment EBX = offset of entry point CX = real-mode segment base address of protected-mode 16-bit code segment DX = real-mode segment base address of protected-mode 16-bit data segment ---APM v1.1--- SI = APM BIOS code segment length DI = APM BIOS data segment length CF set on error AH = error code (02h,05h,07h,08h,09h) (see #00473) Notes: the caller must initialize three consecutive descriptors with the returned segment base addresses for 32-bit code, 16-bit code, and 16-bit data, respectively; these descriptors must be valid whenever the protected-mode interface is called, and will have their limits arbitrarily set to 64K. the protected mode interface is invoked by making a far call to the 32-bit code segment with the same register values as for INT 15; it must be invoked while CPL=0, the code segment descriptor must have a DPL of 0, the stack must be in a 32-bit segment and have enough room for BIOS use and possible interrupts, and the current I/O permission bit map must allow access to the I/O ports used for power management. functions 00h-03h are not available from protected mode on connection, an APM v1.1 or v1.2 BIOS switches to APM v1.0 compatibility mode until it is informed that the user supports a newer version of APM (see AX=530Eh) SeeAlso: AX=5301h,AX=5302h,AX=5304h --------p-155304----------------------------- INT 15 - Advanced Power Management v1.0+ - DISCONNECT INTERFACE AX = 5304h BX = device ID of system BIOS (0000h) Return: CF clear if successful CF set on error AH = error code (03h,09h) (see #00473) SeeAlso: AX=5301h,AX=5302h,AX=5303h --------p-155305----------------------------- INT 15 - Advanced Power Management v1.0+ - CPU IDLE AX = 5305h Return: CF clear if successful (after system leaves idle state) CF set on error AH = error code (03h,0Bh) (see #00473) Notes: call when the system is idle and should be suspended until the next system event or interrupt should not be called from within a hardware interrupt handler to avoid reentrance problems if an interrupt causes the system to resume normal processing, the interrupt may or may not have been handled when the BIOS returns from this call; thus, the caller should allow interrupts on return interrupt handlers may not retain control if the BIOS allows interrupts while in idle mode even if they are able to determine that they were called from idle mode the caller should issue this call continuously in a loop until it needs to perform some processing of its own SeeAlso: AX=1000h,AX=5306h,INT 2F/AX=1680h --------p-155306----------------------------- INT 15 - Advanced Power Management v1.0+ - CPU BUSY AX = 5306h Return: CF clear if successful CF set on error AH = error code (03h,0Bh) (see #00473) Notes: called to ensure that the system runs at full speed even on systems where the BIOS is unable to recognize increased activity (especially if interrupts are hooked by other programs and not chained to the BIOS) this call may be made even when the system is already running at full speed, but it will create unnecessary overhead should not be called from within a hardware interrupt handler to avoid reentrance problems SeeAlso: AX=5305h --------p-155307----------------------------- INT 15 - Advanced Power Management v1.0+ - SET POWER STATE AX = 5307h BX = device ID (see #00474) CX = system state ID (see #00475) Return: CF clear if successful CF set on error AH = error code (01h,03h,09h,0Ah,0Bh,60h) (see #00473) Note: should not be called from within a hardware interrupt handler to avoid reentrance problems SeeAlso: AX=530Ch (Table 00474) Values for APM device IDs: 0000h system BIOS 0001h all devices for which the system BIOS manages power 01xxh display (01FFh for all attached display devices) 02xxh secondary storage (02FFh for all attached secondary storage devices) 03xxh parallel ports (03FFh for all attached parallel ports) 04xxh serial ports (04FFh for all attached serial ports) ---APM v1.1+ --- 05xxh network adapters (05FFh for all attached network adapters) 06xxh PCMCIA sockets (06FFh for all) 0700h-7FFFh reserved 80xxh system battery devices (APM v1.2) 8100h-DFFFh reserved Exxxh OEM-defined power device IDs F000h-FFFFh reserved (Table 00475) Values for system state ID: 0000h ready (not supported for device ID 0001h) 0001h stand-by 0002h suspend 0003h off (not supported for device ID 0001h in APM v1.0) ---APM v1.1--- 0004h last request processing notification (only for device ID 0001h) 0005h last request rejected (only for device ID 0001h) 0006h-001Fh reserved system states 0020h-003Fh OEM-defined system states 0040h-007Fh OEM-defined device states 0080h-FFFFh reserved device states --------p-155307CX0001----------------------- INT 15 - Advanced Power Management v1.0+ - SYSTEM STAND-BY AX = 5307h CX = 0001h BX = 0001h (device ID for all power-managed devices) Return: CF clear Notes: puts the entire system into stand-by mode; normally called in response to a System Stand-by Request notification after any necessary processing, but may also be invoked at the caller's discretion should not be called from within a hardware interrupt handler to avoid reentrance problems the stand-by state is typically exited on an interrupt SeeAlso: AX=4280h,AX=5307h/CX=0002h"SUSPEND",AX=5307h/CX=0003h,AX=530Bh --------p-155307CX0002----------------------- INT 15 - Advanced Power Management v1.0+ - SUSPEND SYSTEM AX = 5307h CX = 0002h BX = 0001h (device ID for all power-managed devices) Return: after system is resumed CF clear Notes: puts the entire system into a low-power suspended state; normally called in response to a Suspend System Request notification after any necessary processing, but may also be invoked at the caller's discretion should not be called from within a hardware interrupt handler to avoid reentrance problems the caller may need to update its date and time values because the system could have been suspended for a long period of time SeeAlso: AX=5307h/CX=0001h"STAND-BY",AX=530Bh --------p-155307CX0003----------------------- INT 15 - Advanced Power Management v1.2 - TURN OFF SYSTEM AX = 5307h CX = 0003h BX = 0001h (device ID for all power-managed devices) Return: after system is resumed CF clear Notes: if supported by the system's power supply, turns off the system power SeeAlso: AX=5307h/CX=0001h"STAND-BY",AX=530Bh --------p-155308----------------------------- INT 15 - Advanced Power Management v1.0+ - ENABLE/DISABLE POWER MANAGEMENT AX = 5308h BX = device ID for all devices power-managed by APM 0001h (APM v1.1+) FFFFh (APM v1.0) CX = new state 0000h disabled 0001h enabled Return: CF clear if successful CF set on error AH = error code (01h,03h,09h,0Ah,0Bh) (see #00473) Notes: when power management is disabled, the system BIOS will not automatically power down devices, enter stand-by or suspended mode, or perform any power-saving actions in response to AX=5305h calls should not be called from within a hardware interrupt handler to avoid reentrance problems the APM BIOS should never be both disabled and disengaged at the same time SeeAlso: AX=5309h,AX=530Dh,AX=530Fh --------p-155309----------------------------- INT 15 - Advanced Power Management v1.0+ - RESTORE POWER-ON DEFAULTS AX = 5309h BX = device ID for all devices power-managed by APM 0001h (APM v1.1) FFFFh (APM v1.0) Return: CF clear if successful CF set on error AH = error code (03h,09h,0Bh) (see #00473) Note: should not be called from within a hardware interrupt handler to avoid reentrance problems SeeAlso: AX=5308h --------p-15530A----------------------------- INT 15 - Advanced Power Management v1.0+ - GET POWER STATUS AX = 530Ah BX = device ID 0001h all devices power-managed by APM 80xxh specific battery unit number XXh (01h-FFh) (APM v1.2) Return: CF clear if successful BH = AC line status 00h off-line 01h on-line 02h on backup power (APM v1.1) FFh unknown other reserved BL = battery status (see #00476) CH = battery flag (APM v1.1+) (see #00477) CL = remaining battery life, percentage 00h-64h (0-100) percentage of full charge FFh unknown DX = remaining battery life, time (APM v1.1) (see #00478) ---if specific battery unit specified--- SI = number of battery units currently installed CF set on error AH = error code (09h,0Ah) (see #00473) Notes: should not be called from within a hardware interrupt handler to avoid reentrance problems supported in real mode (INT 15) and both 16-bit and 32-bit protected mode (Table 00476) Values for APM v1.0+ battery status: 00h high 01h low 02h critical 03h charging FFh unknown other reserved SeeAlso: #00477,#00478 Bitfields for APM v1.1+ battery flag: Bit(s) Description (Table 00477) 0 high 1 low 2 critical 3 charging 4 selected battery not present (APM v1.2) 5-6 reserved (0) 7 no system battery Note: all bits set (FFh) if unknown SeeAlso: #00476,#00478 Bitfields for APM v1.1+ remaining battery life: Bit(s) Description (Table 00478) 15 time units: 0=seconds, 1=minutes 14-0 battery life in minutes or seconds Note: all bits set (FFFFh) if unknown SeeAlso: #00476,#00477 --------p-15530B----------------------------- INT 15 - Advanced Power Management v1.0+ - GET POWER MANAGEMENT EVENT AX = 530Bh Return: CF clear if successful BX = event code (see #00479) CX = event information (APM v1.2) if BX=0003h or BX=0004h bit 0: PCMCIA socket was powered down in suspend state CF set on error AH = error code (03h,0Bh,80h) (see #00473) Notes: although power management events are often asynchronous, notification will not be made until polled via this call to permit software to only receive event notification when it is prepared to process power management events; since these events are not very time- critical, it should be sufficient to poll once or twice per second the critical resume notification is made after the system resumes from an emergency suspension; normally, the system BIOS only notifies its partner that it wishes to suspend and relies on the partner to actually request the suspension, but no notification is made on an emergency suspension should not be called from within a hardware interrupt handler to avoid reentrance problems SeeAlso: AX=5307h,AX=5307h/CX=0001h"STAND-BY",AX=5307h/CX=0002h"SUSPEND" (Table 00479) Values for APM event code: 0001h system stand-by request 0002h system suspend request 0003h normal resume system notification 0004h critical resume system notification 0005h battery low notification ---APM v1.1--- 0006h power status change notification 0007h update time notification 0008h critical system suspend notification 0009h user system standby request notification 000Ah user system suspend request notification 000Bh system standby resume notification ---APM v1.2--- 000Ch capabilities change notification (see AX=5310h) ------ 000Dh-00FFh reserved system events 01xxh reserved device events 02xxh OEM-defined APM events 0300h-FFFFh reserved --------p-15530C----------------------------- INT 15 - Advanced Power Management v1.1+ - GET POWER STATE AX = 530Ch BX = device ID (see #00474) Return: CF clear if successful CX = system state ID (see #00475) CF set on error AH = error code (01h,09h) (see #00473) SeeAlso: AX=5307h --------p-15530D----------------------------- INT 15 - Advanced Power Management v1.1+ - EN/DISABLE DEVICE POWER MANAGEMENT AX = 530Dh BX = device ID (see #00474) CX = function 0000h disable power management 0001h enable power management Return: CF clear if successful CF set on error AH = error code (01h,03h,09h,0Ah,0Bh) (see #00473) Desc: specify whether automatic power management should be active for a given device SeeAlso: AX=5308h,AX=530Fh --------p-15530E----------------------------- INT 15 - Advanced Power Management v1.1+ - DRIVER VERSION AX = 530Eh BX = device ID of system BIOS (0000h) CH = APM driver major version (BCD) CL = APM driver minor version (BCD) (02h for APM v1.2) Return: CF clear if successful AH = APM connection major version (BCD) AL = APM connection minor version (BCD) CF set on error AH = error code (03h,09h,0Bh) (see #00473) SeeAlso: AX=5300h,AX=5303h --------p-15530F----------------------------- INT 15 - Advanced Power Management v1.1+ - ENGAGE/DISENGAGE POWER MANAGEMENT AX = 530Fh BX = device ID (see #00474) CX = function 0000h disengage power management 0001h engage power management Return: CF clear if successful CF set on error AH = error code (01h,09h) (see #00473) Notes: unlike AX=5308h, this call does not affect the functioning of the APM BIOS when cooperative power management is disengaged, the APM BIOS performs automatic power management of the system or device SeeAlso: AX=5308h,AX=530Dh --------p-155310----------------------------- INT 15 - Advanced Power Management v1.2 - GET CAPABILITIES AX = 5310h BX = device ID (see #00474) 0000h (APM BIOS) other reserved Return: CF clear if successful BL = number of battery units supported (00h if no system batteries) CX = capabilities flags (see #00480) CF set on error AH = error code (01h,09h,86h) (see #00473) Notes: this function is supported via the INT 15, 16-bit protected mode, and 32-bit protected mode interfaces; it does not require that a connection be established prior to use this function will return the capabilities currently in effect, not any new settings which have been made but do not take effect until a system restart SeeAlso: AX=5300h,AX=530Fh,AX=5311h,AX=5312h,AX=5313h Bitfields for APM v1.2 capabilities flags: Bit(s) Description (Table 00480) 15-8 reserved 7 PCMCIA Ring Indicator will wake up system from suspend mode 6 PCMCIA Ring Indicator will wake up system from standby mode 5 Resume on Ring Indicator will wake up system from suspend mode 4 Resume on Ring Indicator will wake up system from standby mode 3 resume timer will wake up system from suspend mode 2 resume timer will wake up system from standby mode 1 can enter global suspend state 0 can enter global standby state --------p-155311----------------------------- INT 15 - Advanced Power Management v1.2 - GET/SET/DISABLE RESUME TIMER AX = 5311h BX = device ID (see #00474) 0000h (APM BIOS) other reserved CL = function 00h disable Resume Timer 01h get Resume Timer 02h set Resume Timer CH = resume time, seconds (BCD) DL = resume time, minutes (BCD) DH = resume time, hours (BCD) SI = resume date (BCD), high byte = month, low byte = day DI = resume date, year (BCD) Return: CF clear if successful ---if getting timer--- CH = resume time, seconds (BCD) DL = resume time, minutes (BCD) DH = resume time, hours (BCD) SI = resume date (BCD), high byte = month, low byte = day DI = resume date, year (BCD) CF set on error AH = error code (03h,09h,0Ah,0Bh,0Ch,0Dh,86h) (see #00473) Notes: this function is supported via the INT 15, 16-bit protected mode, and 32-bit protected mode interfaces SeeAlso: AX=5300h,AX=5310h,AX=5312h,AX=5313h --------p-155312----------------------------- INT 15 - Advanced Power Management v1.2 - ENABLE/DISABLE RESUME ON RING AX = 5312h BX = device ID (see #00474) 0000h (APM BIOS) other reserved CL = function 00h disable Resume on Ring Indicator 01h enable Resume on Ring Indicator 02h get Resume on Ring Indicator status Return: CF clear if successful CX = resume status (0000h disabled, 0001h enabled) CF set on error AH = error code (03h,09h,0Ah,0Bh,0Ch,86h) (see #00473) Notes: this function is supported via the INT 15, 16-bit protected mode, and 32-bit protected mode interfaces SeeAlso: AX=5300h,AX=5310h,AX=5311h,AX=5313h --------p-155313----------------------------- INT 15 - Advanced Power Management v1.2 - ENABLE/DISABLE TIMER-BASED REQUESTS AX = 5313h BX = device ID (see #00474) 0000h (APM BIOS) other reserved CL = function 00h disable timer-based requests 01h enable timer-based requests 02h get timer-based requests status Return: CF clear if successful CX = timer-based requests status (0000h disabled, 0001h enabled) CF set on error AH = error code (03h,09h,0Ah,0Bh,86h) (see #00473) Notes: this function is supported via the INT 15, 16-bit protected mode, and 32-bit protected mode interfaces some BIOSes set AH on return even when successful SeeAlso: AX=5300h,AX=5310h,AX=5311h,AX=5312h