Download IDLEHALT 1.1

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
IDLEHALT 1.1
-------------------------------------------------------------------------Copyright (C) 1996 Donald J. Bindner <[email protected]>
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of
the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
02111-1307, USA.
-------------------------------------------------------------------------1. What IdleHalt Does
IdleHalt is a program written specifically to take advantage of
the energy saving features of the Cyrix 6x86 processor. I do not
know if it works on any other processors. The program does not
make a careful check of the processor, so you are on you honor to
use it correctly.
To understand what IdleHalt does, I first start with a paragraph
from Cyrix's Abbreviated Data Book (6xABDB.PDF available from
their web page). "The 6x86 CPU operates from a 3.3 volt power
supply resulting in a reasonable power consumption at all
frequencies. In addition the 6x86 incorporates a low power
suspend mode, stop clock capability, and system management mode
(SMM) for power sensitive applications."
The purpose of IdleHalt is to enable the low power suspend mode
of the 6x86 and convince DOS to use it when it is idle (for
example when waiting for a key to be pressed). This could be up
to 90% of the time, even when you are using your computer.
This is accomplished in two steps. The first step is enabling
the suspend mode on the 6x86. The suspend-on-halt mode is enabled
by writing the value 0x88 to register 0xC2 of the chip. The values
of various CPU registers and how to modify them are explained in
the Cyrix Abbreviated Data Book beginning on page 18.
The second step is to hook into the DOS Idle interrupt handler
0x28. This interrupt is called from various places in DOS, for
instance when a program is waiting for you to press a key.
IdleHalt waits, and when this interrupt is called a number of
times (10 actually) it issues a "halt" instruction to the
processor, causing it to go into suspend mode until the next
hardware interrupt, (i.e. key press, timer update, etc.)
2. Pleasant Side Effect
There is at least one benefit from running IdleHalt other than
its positive effect on the environment. When the processor is in
a low power consumption mode, it generates less heat. The
voltage regulator probably generates less heat as well since it
has a lighter load. When I run IdleHalt on my machine, the
corner of the case where the processor and voltage regulator are
located is noticeably cooler.
3. How to use IdleHalt
A word of caution is advised here. IdleHalt modifies
configuration registers on your CPU, something that
programs ordinarly don't do. Although the program is completely
automatic, some would consider it prudent to understand what the
program does before you run it on your system. This is one
reason that source code was included in the archive.
IdleHalt can be installed by typing the program name from the
command line, or automatically by placing it in your autoexec.bat
file. If there is high memory available it will automatically
attempt to load itself high. It can also be installed in the
config.sys file with the line:
install=idlehalt.com
I recommend installing it after memory managers (so it can load
high), but otherwise order does not matter.
There is no method to remove IdleHalt from memory except for
rebooting. If you do not want IdleHalt in memory, don't run it.
It can be toggled on/off however by running the program
again, in case of a conflict with another program.
4. Known Bugs and Conflicts:
PRINT: Since the PRINT spooling utility that comes with DOS uses
the idle interrupt to send characters to the printer, there is an
inevitable conflict with IdleHalt. Both programs still work, but
the spooler is slowed down so much that it is basically useless.
You can toggle IdleHalt off by running the program a second time
and PRINT will resume its previous speed.
Other Print spoolers: Other print spoolers will probably have a
similar conflict with IdleHalt for the same reason, but I haven't
tested any.
The sluggishness that other programs experienced is mostly
(completely?) eliminated with version 1.1. The change is that
IdleHalt will not issue the halt at times when there are a lot of
DOS interrupts being handled.
5. Inspiration
This program was inspired by a program for Linux which allows
users to change CPU registers. It is called set6x86.
6. Other
This archive was created with the InfoZIP compression utility.
IdleHalt was written with the A86 assembler. It follows Ralf
Brown's AMIS, Alternate Multiplex Interrupt Specification for
resident programs.
7. Comments, questions:
If you have a question or comment about IdleHalt, my email
address is Donald J. Bindner <[email protected]>
8. Files:
IDLEHALT.ZIP
Compressed archive
IDLEHALT.DOC
This documentation
IDLEHALT.COM
The program
IDLEHALT.A86
Source--Handles the Int21 and Int28 stuff
AMIS.A86
Source--Handles the AMIS stuff
NONRES.A86 Source--Handles the installation. Non-resident.
MAKE.BAT
Assembles the program
LICENSE.TXT
GNU General Public License version 2