Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
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