Hi, I have uploaded an update for FDAPM: Version 2005 May 23
(as suggested by Martin S., I renamed everything in my download
area from name-daymonthyear.zip to name-yearmonthday.zip, I hope
you like the new style... but do not ask me to use numeric months
instead of named months right now, I deliberately use names to
avoid ambiguities...) :-).
The new version explicitly stops the floppy motor before entering
any of the standby variants (standby, suspend, flush, speed0...)
and fixes an old bug which made the idle time percentage display
tend to show nonsense values.
The internal POWER interface to select which of the 4 hooked interrupts
may trigger CPU sleep during idleness is now supported. Not that I would
know ANY software which uses it, but it might be nice for debugging in
cases where FDAPM causes unwanted slowdowns (you can now disable any of
the sleep handler groups at runtime for testing, but have to use DEBUG
for that unless somebody writes a nice user interface)...
Syntax errors are now flagged as such and the SPEEDn option family has
a new function: SPEED9 just reads out your current ACPI CPU throttle /
duty cycle setting without changing it. Note that some BIOSes boot up
with reserved settings which can cause displays like "0/8 of maximum
speed detected" (while you are actually running at 8/8 speed, in other
words at full normal speed). By the way, as the TSC (see RDTSC command
which is not supported in DEBUG yet but has opcode 0f 31 ;-)) count
keeps running while the CPU is periodically halted in "throttled mode",
I could find out that my mainboard decides 16k times per second whether
the CPU should be running or stopped. Quite often but not as smooth as
I had expected. So if your mainboard uses similar clocks, you may want
to combine ACPI throttle with other slowdown methods like disabling L1
cache to smoothly slow down your super-fast PC until your DOS games work
okay :-). Note that ACPI throttling can also reduce power consumption a
lot. When you are just idling at the DOS prompt and FDAPM APMDOS is in
resident mode (only 1kB TSR size), the CPU will be in low power mode
most of the time anyway, but you can do most of your everyday DOS work
with a forced maximum throttle of 50 or even 25% of your normal CPU
speed without noticeable problems, saving probably 30-75% of the CPU
energy. Most CPUs consume very little power in halted / low power idle
state, and with the SPEEDn option you force the CPU into that state for
a certain percentage of all "mainboard timeslices" :-).
The SPEED0 (halt system CPU until power or standby button pressed)
function now explicitly enables the button and explicitly states that
the PC is not yet waking up. This should solve two problems: First,
if the button was not properly enabled, pressing the power button only
turned your PC off instead of waking it up, and if the waking-up flag
was not properly cleared, the PC could wake up again at once. Both made
the SPEED0 function not very useful in previous versions. Should be a
lot better with the new FDAPM version.
Finally, the VGAON / VGAOFF functions now check if you actually have a
VGA or at least EGA graphics card and whether you are running mono mode.
Enjoy, and please report problems. If you have ACPI problems, please
use the SPEED9 option to get some status information and/or use PCISLEEP
... and be warned that SPEEDn can guess / force values to get control
over CPU duty cycle settings. Many BIOSes report wrong values here, but
it CAN happen that they do so intentionally, because the BIOS can use
duty cycle throttling as automatic "cooling" method when overheating is
detected. So you might want to use SPEED9 to check current speed before
you use SPEEDn to set a new speed. Raising the speed to higher-than-
current values can override some BIOS decision, so do it at your own risk.
PS: I got reports that QEMU can miss keyboard IRQs when FDAPM APMDOS
is used with EMM386. If you have QEMU and/or have TASM (to compile
modified test versions of EMM386) please contact me. Even if you do
not want to compile things, you can still help with other testing.