+=========================+ | E-Mail: dosidle@usa.net | +=========================+ DOSidle: FULL Documentation --------------------------------- Written by Marton Balog Version 2.10 [Build 0077] Copyright (C) by Marton Balog, 1998. All rights reserved. TABLE OF CONTENTS ========================= 1 - DESCRIPTION. 1.1 - What is DOSidle? 1.2 - DOSidle highlights. 1.3 - Usage. 1.4 - Installation. 2 - DOSidle FEATURES. 2.1 - DOSidle features. 2.2 - Command-line options. 3 - PROCESSORS. 3.1 - CPU detection. 3.2 - CPU features. 3.3 - CPU optimization. 4 - HISTORY. 4.1 - DOSidle V2.10 4.2 - DOSidle V2.00 4.3 - DOSidle V1.32 [Beta] 5 - MISCELLANEOUS. 5.1 - Frequently Asked Questions. 5.2 - Final words. 5.3 - Legal and Disclaimer. ------------------------------------------------------------------------------ 1 - DESCRIPTION. ====================== 1.1 - What is DOSidle? ---------------------- CPUidle for DOS (nicknamed DOSidle) is an MS-DOS based program that will take advantage of the integrated power saving features of the microprocessor and create an idle cycle in order to LOWER CPU TEMPERATURE CONSIDERABLY! DOSidle will also detect and enable integrated fine tuning features of the processor to enhance the cache policy, enable 32-bit memory access where possible, unlock some bus cycles, and more, so as to ACHIEVE HIGHER PROCESSOR EXECUTION SPEED! The above are achieved by programming the microprocessor at register level, accessing special internal configuration registers of the CPU. These registers can be set up for very efficient power saving and execution speed. This should be done by the BIOS of the computer, but unfortunately, most BIOS vendors do a poor job in optimizing CPUs. Therefore, an external program like DOSidle CAN actually cause a big change. DOSidle will also put the CPU in suspend mode when it is in an "idle" state. Waiting for user input via the keyboard/mouse is a typical idle situation and this is true about 95% of the time. In suspend mode, the CPU consumes A LOT LESS power than it normally would. What is more, the processor returns from suspend mode automatically, by hardware, thus the whole switch to and from suspend mode does not have an impact on performance. Placing the processor in suspend mode is achieved by eighter executing the HLT machine instruction or by calling the APM BIOS of the system. Of course, accessing the APM BIOS is only possible when it exists... Again, this whole thing is TOTALLY HARMLESS as it executes instructions that any other software can and does! ------------------------------------------------------------------------------ 1.2 - DOSidle highlights. ------------------------- - Automatically detects processors from Cyrix, IBM, SGS Thomson, Intel, AMD, IDT, UMC and NexGen. - Optimizes and automatically enables special power saving features of the Pentium, Pentium-MMX, Pentium II, 5x86, 6x86, 6x86L, 6x86MX, K5, K6-MMX, K6-3D, K6-Plus, WinChip C6, WinChip C6-Plus. For a complete list of supported processors, please refer to section 3 of this document. - 100% ASSEMBLY coded, therefore program should be both fast and small (the resident part of DOSidle is less than 3K). - Supports the Advanced Power Management specification V1.00 and above. - Powerful and flexible command-line interface allowing control of many features of DOSidle, including more aggressive cooling routines, self-debugging routines and more... - Can be suspended and activated any time after installation for maximum compatibility with other software. - Works with a wide range of program's and thus it cools the CPU reliably. This results in a more stable system and it expands CPU lifetime. - It's A MUST HAVE for overclockers! Stop thinking big fans, huge heat sinks and Peltiers, just think DOSidle! ;-) * To find out more about the differences between V2.10 and V2.00, please read the History section (and then the whole file :-). ------------------------------------------------------------------------------ 1.3 - Usage. ------------ DOSidle is a memory resident (TSR, for short) program, which needs to be started only once, each time you restart your computer. Therefore, starting DOSidle from AUTOEXEC.BAT is the preferred and recommended method. This has the following advantages: - It is done automatically, so you won't ever have to bother with it once you installed DOSidle. - Upon startup, only a limited number of drivers are installed (I am mainly talking about protected mode drivers) and DOSidle has better access to the CPU registers. DOSidle is designed to operate under MS-DOS. Since Windows95 appeared, the term "DOS" became a bit confusing. I will try to make this more clear now. Basically, Windows95/98 uses MS-DOS pretty much the same way Windows 3.1 did. The difference is that Windows95/98 starts up automatically, hiding the good old MS-DOS interface from the user. But if you examine your C:\ directory you will find that Windows95/98 also has its AUTOEXEC.BAT and CONFIG.SYS, in fact, the whole MS-DOS kernel exists (often referred to as MS-DOS 7.00) and loads BEFORE Windows95/98 does. So the term "DOS" can be used whenever the following situations are in effect: - MS-DOS 6.22 and earlier. Even if you have Windows 3.1 installed over it. - MS-DOS 7.00 and later. This is the DOS that Windows95/98 is built upon. It loads automatically before Windows does and it is there the whole time Windows runs! You can exclusively enter into this MS-DOS mode by eighter opening an MS-DOS Box from Windows95/98 or by restarting your computer in MS-DOS mode from the Start menu. DOSidle should be used in all of the above cases. Since Windows95/98 sits on top of MS-DOS 7.00 (or later), it is NOT ENOUGH to use Andreas Goetz's CpuIdle (unless you never-ever open an MS-DOS Box or restart in MS-DOS mode)! DOSidle will NOT conflict with CpuIdle, so if you have CpuIdle loaded in Windows95/98 and open an MS-DOS Box with DOSidle loaded, you are doing exactly what you should do!! NOTE: DOSidle will perform best under Real-mode CPU operation, or in other words, when no Memory Manager (such as EMM386) is active. But V86-mode (with EMM386) should be about as good... ------------------------------------------------------------------------------ 1.4 - Installation. ------------------- Setup: Unzip the DOSIDLE.ZIP package into a directory of your choice. Place a line in the AUTOEXEC.BAT file that will load DOSidle with the switches you prefer and reboot your computer. If you have multiple Operating Systems installed (Windows 3.1, Windows95/98, Windows NT, MS-DOS), then make sure the above line is placed in ALL AUTOEXEC files. If you are not exactly sure what the paragraph above means, please read on... Step 1: Unzip the DOSIDLE.ZIP package into a directory you prefer. In the later examples, I will assume you have chosen the C:\DOSIDLE directory. Step 2: If you know DOSidle well and/or decided to use it regularly, please go to Step 4. If you are completely new to DOSidle and haven't read this document then I strongly suggest doing so. Once you are finished, come back here. Step 3: You are new to DOSidle. Experiment with it. You can install DOSidle anytime by typing "DOSidle" at the DOS command prompt (even in a Windows MS-DOS Box). NOTE: If you try to load DOSidle from a Windows95/98 DOS Box, then Windows95/98 displays a warning message saying that DOSidle may not run well, unless in MS-DOS mode. Answer NO to the question and you are done. Step 4: You have decided to use DOSidle regularly. DOSidle should be loaded from your AUTOEXEC.BAT, this way, you won't have to bother with it each time you restart your computer. Windows95/98 has it's own AUTOEXEC.BAT file. Also, MS-DOS 6.22 (and earlier) has it's AUTOEXEC.BAT. If you have BOTH of these Operating Systems installed, then you will need to include a line in both of the AUTOEXEC.BAT files that will load DOSidle (later example: C:\DOSIDLE\DOSIDLE). Step 5: If you are using some sort of a boot manager (like System Commander), I assume you know how to find and edit your AUTOEXEC.BAT file(s) - please go to Step 7. If you are unsure about these files, I would suggest the following steps: Step 6: Locate the AUTOEXEC.BAT file(s). They should reside in the root directory of drive C. That is C:\ Look for the following files: AUTOEXEC.BAT, AUTOEXEC.DOS, AUTOEXEC.W40, AUTOEXEC.W41 If you find any of these files, just include a line somewhere at the end like this (Optionally specifying command-line parameters. They are described in detail in the next section.): C:\DOSIDLE\DOSIDLE Step 7: Restart your computer, and voila: DOSidle is resident now. You can check it to make sure using the "mem /c /p" command at the DOS prompt. If you find DOSidle in the list of resident drivers, it's installed! ------------------------------------------------------------------------------ 2 - DOSidle FEATURES. =========================== 2.1 - DOSidle features. ----------------------- Cooling methods: ---------------- DOSidle supports two ways of processor power management (later referred to as cooling methods): through the HLT instruction or through APM BIOS calls. The HLT method means executing the HLT opcode each time DOSidle detects that the system is idle. Since most processor enter suspend mode after a HLT is executed, this method is very useful for power management. The APM BIOS calls method means invoking the "CPU idle" APM call each time the system is detected idle. It is then up to the APM BIOS vendor how efficient this call will be. Cooling strategies: ------------------- Both power management methods can use three "strategies" to achieve cooling: Strong Force mode, Normal Force mode and No Force mode. Strong Force mode is the most aggressive method, which can cause some incompatibilities, but it is also by far the most efficient method. Running in this mode, DOSidle intercepts more system calls as "idle", and it issues multiple power saving calls (HLT or APM BIOS calls) from each idle cycle. Normal Force mode behaves pretty much the same way as Strong Force mode, except that only 1 power saving call will be executed from each idle cycle, so the cooling ratio is 1:1. No Force mode disabled forcing of power saving calls, only the most obvious system functions (like Read Key or similar) will be intercepted and treated as idle. The cooling ratio is the worst, but this mode should be very compatible. Anyway, I am definately against using this strategy. CPU optimization: ----------------- DOSidle will optimize the Central Processing Unit of the system if it is requested. To find out more about optimizations, please read the Processors section. Command-line: ------------- DOSidle is configured from the command-line. All characteristics of DOSidle can be controlled this way. To find out more about the command-line switches, please read the next section. ------------------------------------------------------------------------------ 2.2 - Command-line options. --------------------------- DOSidle supports various command-line switches that control how the program behaves. All switches are case-insensitive (so "-cpu" = "-Cpu") and they are as follows: Switches: --------- -H, -?: Displays a help message about command-line options, as well as some examples. -U: Uninstalls DOSidle (removes it from memory). Of course, this is only possible, if it has been installed already. If not, DOSidle will fail with an error message. Also, if some other program altered the interrupt vectors that DOSidle uses it won't be able to uninstall. NOTE: The changing of critical interrupt vectors is a problem for any memory resident program that wants to uninstall. Therefore, the higher number of programs you use after DOSidle has been loaded, the higher the chances that DOSidle won't be able to uninstall (else the system would crash). In this case, use the -Off switch. -Off: Suspends DOSidle. Use this switch if DOSidle conflicts with a certain application you are using. All features of DOSidle will be turned off as well as the program itself, but it will remain installed (in memory). Then when you finish using that application you can reactivate DOSidle with the -On switch. -On: Reactivates DOSidle after it has been suspended with the -Off switch. Read the paragraph above to find out why this is useful. -Cpu: Detects and optimizes the processor in the system. Currently, processors from Cyrix/IBM/SGS Thomson are optimized, but AMD, IDT and Intel processors will be supported in the near future as well. Please read the CPU Optimization section for more information. -Hlt: Selects cooling method: HLT instructions. This switch causes DOSidle to execute HLT instructions every time it detects that the system is idle. Since most processors have a "Suspend on HLT" feature, this instruction places them in suspend mode, thus saving energy and achieving very good cooling. This switch is enabled by default. -Apm: Selects cooling method: APM V1.00+ BIOS calls. This switch makes DOSidle use the Advanced Power Management (APM) BIOS in the system for cooling. That is, APM calls (to put the CPU in suspend mode) will be executed every time DOSidle detects that the system is idle. This yields to superb cooling. NOTE: DOSidle will automatically switch to HLT cooling method (-Hlt) if the APM BIOS is somehow inaccessible (disabled or disengaged). It will not turn on power management, that should be done by the user from the system setup. -Fm2: Selects cooling strategy: Strong Force mode. This switch makes DOSidle perform the most aggressive cooling strategy, which means better cooling ratio (several HLTs / APM calls will be made from each idle cycle). On the other hand, this might cause some incompatibilities, but it is highly unlikely. This switch is enabled by default and I definately recommend using it! -Fm1: Selects cooling strategy: Normal Force mode. This switch makes DOSidle use the cooling strategy that was introduced in DOSidle V1.32 [Beta]. The cooling ratio is 1:1, which means that exactly one HLT instruction / APM call will be made from each idle cycle. This means worse cooling than Strong Force mode (above paragraph), but should be more compatible. This switch is disabled by default, and it should only be enabled if Strong Force mode is causing strange behaviour. -Fm0: Selects cooling strategy: No Force mode. This switch disables any type of HLT / APM call forcing from idle cycles and therefore performance is very little. On the other hand, No Force mode should be compatible with every program. For the sake of performance, do not select this strategy for cooling!! Only use this switch if everything else fails. -Tm: Enables Test Mode. REMOVED! The -Tm switch is removed from DOSidle V2.10 and later! It was used to display information about the cooling ratio and the number of HLTs / APM calls executed, mainly for Beta testers. Examples: --------- DOSidle Installs and activates DOSidle. Selects HLT cooling method with Strong Force mode (-Fm2) strategy. This means that the following switches are enabled by default: -On, -Hlt, -Fm2. DOSidle -cpu Installs and activates DOSidle. Selects HLT cooling method with Strong Force mode strategy. Optimizes the CPU of the system. I recommend loading DOSidle this way! DOSidle -cpu -apm -fm1 Installs and activates DOSidle. Selects APM BIOS calls cooling method with Normal Force mode strategy. Optimizes the CPU of the system. DOSidle -off Suspends DOSidle temporarily, until you type: DOSidle -on ------------------------------------------------------------------------------ 3 - PROCESSORS. ===================== 3.1 - CPU detection. -------------------- DOSidle automatically detects the CPU in the system and enables special power saving features of the processor. Please note that even if DOSidle misidentifies your CPU, it will run at full cooling performance, only CPU optimization will not function. The following CPUs are detected and supported by DOSidle: Intel: - i486DX at 25/33 Mhz, i486DX at 50 Mhz. - i486 SX / SX2 / SL / DX2 / DX2-WB / DX4 / DX4-WB. - Pentium A-Step, Pentium, Pentium OverDrive, Pentium-MMX, Pentium Pro A-Step, Pentium Pro, Pentium II. AMD: - Am486 DX2 / DX2-WB / DX4 / DX4-WB. - Am5x86, Am5x86-WB. - AMD K5-SS/A, AMD K5, AMD K6-MMX, AMD K6-3D, AMD K6-Plus. All future AMD processors will be detected due to AMD's support for the Extended CPUID instruction. Cyrix: - Cx486S A-Step. - Cx486 SLC / DLC / SLC2 / DLC2 / SRx / DRx / SRx2 / DRx2 / SRu / DRu / SRu2 Cx486 DRu2 / S / S2 / Se / S2e / DX / DX2 / DX4. - Cx5x86, Cx6x86, Cx6x86L, Cx6x86MX. - Cx MediaGX, Cx GXm. All future Cyrix processors will be detected due to Cyrix's support for the Extended CPUID instruction. NexGen: - Nx586, Nx586 & Nx587, Nx686. IBM: - IBM 5x86, IBM 6x86, IBM 6x86L, IBM 6x86MX. IDT: - IDT WinChip C6, IDT WinChip C6-Plus. UMC: - UMC U5D, UMC U5S. Thomson: - SGS Thomson 6x86, SGS Thomson 6x86L. ------------------------------------------------------------------------------ 3.2 - CPU features. ------------------- Many CPUs support special power saving functions. Taking advantage of these integrated features is critical in efficient CPU power management. DOSidle can and does enable the following features on certain CPUs: Suspend on HLT: - AMD K5-SS/A, AMD K5, AMD K6-MMX, AMD K6-3D, AMD K6-Plus. - IBM 5x86, IBM 6x86, IBM 6x86L, IBM 6x86MX. - Cx5x86, Cx6x86, Cx6x86L, Cx6x86MX. - SGS Thomson 6x86, SGS Thomson 6x86L. Auto HLT: - Intel Pentium, Pentium-MMX. - IDT WinChip C6, IDT WinChip C6-Plus. Low Power on Auto HLT: - Pentium-MMX. ------------------------------------------------------------------------------ 3.3 - CPU optimization. ----------------------- With V2.00+, CPU detecting and optimizing features have been added to DOSidle. DOSidle will now automatically detect to CPU in the system and optionally (if you select it with the -cpu switch) optimize it. CPU optimization may cause some system instabilities, only experiment with it once you are sure that everything else is stable. If something goes wrong afterwards, you can be sure that the CPU optimization is the cause. The following CPUs are optimized: CPUs from Cyrix --------------- Cyrix 5x86 - Suspend on HLT, CPUID. Cyrix 6x86 - Suspend on HLT, CPUID, Weak Locking, Write Allocate. Cyrix 6x86L - Suspend on HLT, CPUID, Weak Locking, Write Allocate. Cyrix 6x86MX - Suspend on HLT, CPUID, Weak Locking, Write Allocate. ------------------------------------------------------------------------------ 4 - HISTORY. ================== DOSidle V2.10 ------------- - Added -Apm command-line switch to enable special APM features for DOSidle to implement even better cooling than in DOSidle V2.00!! - Added automatic Intel Pentium, Pentium-MMX and IDT WinChip C6 "Auto HLT" feature enable for Protected-mode (special thanks to Martin Malik)!! - Added automatic Intel Pentium-MMX "Low Power on Auto HLT" feature enable for Protected-mode (special thanks to Martin Malik)!! - Removed the -Tm switch (as in DOSidle V2.00 and earlier), which was not needed by general users, to shrink program size!! - Fixed a little bug in DOSidle V2.00 that was causing performance drop- down under MS-DOS V7.00+, when Windows95/98 was not loaded (when the system was restarted in MS-DOS mode from Windows95/98)!! - More bugfixes, as usual. DOSidle V2.00 ------------- - Recoded and optimized the WHOLE kernel for better performance, more features and easy future development (this is actually much more important than it sounds)!! - Added more powerful cooling routines to GREATLY ENHANCE performance!! Using the -Fm2, -Fm1, -Fm0 command-line switches you can now control DOSidle's cooling strategy directly!! - Added -On, -Off command-line switches to Activate and Suspend DOSidle at any time for a while, without removing it from memory!! - Added -Cpu command-line switch to Optimize the CPU!! - Added automatic CPU, Operating System and Protected Mode detection!! - Added automatic Cyrix/IBM/SGS Thomson 5x86, 6x86, 6x86L and 6x86MX "Suspend on HLT" feature enable!! - Added automatic Intel Pentium, Pentium-MMX and IDT WinChip C6 "Auto HLT" feature enable (Real-mode only)!! - Added automatic Intel Pentium-MMX "Low Power on Auto HLT" feature enable (Real-mode only)!! - Changed the command-line switch character from "/" to "-"!! - Fixed Modem and Mouse slowdown problem with DOSidle V1.32 [Beta]!! - Fixed at least five other bugs found in DOSidle V1.32 [Beta]!! DOSidle V1.32 [Beta] -------------------- - First release of the DOSidle kernel, together with CpuIdle V2.40. - Added some cooling routines to the basic ones. - Added /TM switch for Test Mode, so DOSidle can display information about program performance. - Added /NF switch to disable Force Mode for compatibility with software that might not work correctly with the new cooling routines. DOSidle V1.10 ------------- - The first usable version of DOSidle, which was never released. I have coded it together with Andreas Goetz. Thanks Andi! ------------------------------------------------------------------------------ 5 - MISCELLANEOUS. ======================== 5.1 - Frequently Asked Questions. --------------------------------- Q: So what the heck is this program?? A: DOSidle is a program that will take advantage of the power management features of your microprocessor so as to reduce heat buildup. Windows95/98 and MS-DOS does not support these features, therefore a lot of heat is generated unnecessarily when the system is idle (waiting for user input). Several measurements indicate that DOSidle can even cause a 16 C degrees (29 F degrees) temperature drop. Many good heatsinks and fans would envy this :) Q: I already have CpuIdle from Andreas Goetz, why would I want to use DOSidle? A: Simple. CpuIdle does a superb job in cooling the system under Windows95/98. On the other hand, DOSidle does a great job (hopefully) in cooling the system under MS-DOS 6.22 and earlier, MS-DOS 7.00 and later (Windows95/98 MS-DOS) AND in a Window95/98 MS-DOS Box. Since users of Windows95/98 generally use MS-DOS in one of the above ways, DOSidle is needed to reduce heat just as CpuIdle does in pure Windows95/98. Q: I know CpuIdle quite well and I have observed that it can cause a temperature drop of 20 C degrees. How come DOSidle sometimes achieves better, but sometimes worse performance? A: MS-DOS is a lot different story from Windows95/98. Whereas the Windows operating system handles idle threads quite naturally (and thus it's easier to know when the system is idle), MS-DOS is a place of total chaos. There is NO standard way of user I/O, therefore DOSidle must make a lot of assumptions. These assumptions are sometimes correct and the cooling is highly efficient, but sometimes wrong and cooling performance drops. And of course, if a program manages its I/O in a quirky behaviour, DOSidle is tricked and it won't be able to cool effectively. Believe me, DOSidle does EVERYTHING that is possible under MS-DOS! Q: Will DOSidle slow my system in some way? A: No, no and NO! It definately shouldn't. If you notice program slowdown that is caused by DOSidle, please report it to me immediately! Q: Can DOSidle damage my CPU? A: NO!! Q: Can I have the assembly source code of DOSidle? A: If you pay for it... maybe. Otherwise no. ------------------------------------------------------------------------------ 5.2 - Final words. ------------------ If anybody knows how to execute CPL0 (Ring 0) instructions under DPMI 0.9 or DPMI 1.0, please let me know right away!! Also, I would greatly appreciate any feedback regarding DOSidle: notes, ideas, comments, bugs or any E-mail for any reason. Your opinion is the most important to me, but I will never know it unless I hear (or read) it :). I would like to thank Andi (Andreas Goetz) for his help and support, Martin Malik (author of HWiNFO) for his source code, and Zsuzsi (Zsuzsa Petro) for her patience in first place. Many thanks go to the Beta testers of DOSidle as well. They are: - David Szots - Vito DeFilippo - and finally, Andi and myself... Enjoy, Marton Balog - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Address: Zsolt Fejedelem u.6 Budapest, 1029 Hungary, Europe. E-Mail: dosidle@usa.net ------------------------------------------------------------------------------ 5.3 - Legal and Disclaimer. --------------------------- This software can be used freely without any obligations to the author in non-commercial enviroments. For use of commercial purposes, you have to contact the author, Marton Balog, and receive explicit permission. Commercial purposes include CD-ROMs with bundled free software as well as integration of this software into other programs. THIS SOFTWARE PACKAGE (DOSIDLE.ZIP) INCLUDING ALL ACCOMPANYING FILES ARE DISTRIBUTED "AS IS", WITHOUT ANY WARRANTIES, EIGHTER EXPRESSED OR IMPLIED. THE AUTHOR (MARTON BALOG) DOES NOT TAKE ANY RESPONSIBILITIES FOR POSSIBLE DAMAGES OR FUNCTIONALITY AND CAN NOT BE HELD LIABLE FOR ANY DAMAGE CAUSED DIRECTLY OR INDIRECTLY BY THIS SOFTWARE. USE EVERYTHING AT YOUR OWN RISK! ALL TRADMARKS MENTIONED IN THIS DOCUMENTATION ARE PROPERTIES OF THEIR RESPECTIVE OWNERS. +=========================+ | E-Mail: dosidle@usa.net | +=========================+