You are here: The Oldskool PC/Oldskool PC Software/Throttle/DOS
Welcome to the DOS throttle homepage.
Throttle is a program that uses a new method of tackling the age old "my machine runs too fast to play this game" problem. Throttle has also been known to cool your CPU and save electricity at the same time!
Latest DOS version: build 27, Nov 05th 2016
Source code (x86 asm): build 27
Click here for the windows XP/NT/2K winThrottle page
Throttle is part of the flopper project: http://www.oldskool.org/pc/flopper
and may be distributed freely.
What it does:
Throttle uses your system hardware to modify the clock speed going to your CPU, rather than using software "delay loops" or HLT instructions to slow your machine down. This method provides very smooth slowdowns without any incompatibilies with software.
Throttle is not a TSR and uses no memory whatsoever.
When running, no program will be able to detect it, nor modify its settings.
Now for the caveats:
Throttle may not be the perfect solution to your speed problem.
In order for throttle to work its magic, it needs to talk directly to the chipset on your motherboard. Only certain chipsets (most chipsets created after 1996 or so) work with throttle.
To find out if your chipset is supported, just run throttle at the command line. If everything's good, you'll get a menu of available speed options.
If throttle couldn't find a compatible chipset, you'll get an error message and some instructions on what to do.
Chances are pretty good that if you've got a new PC, purchased within the last few years, you're set.
Throttle may also still run too fast on very new computers (1GHz or higher). As CPU speeds increase, even with maximum throttling, a machine this fast is still going to beat any IBM XT or AT based system. For super fast machines, it is suggested that you use throttle to do maximum throttling provided, then use a software based slowdown program such as mo-slo, bremze, or my own slowDOS (see below) to "fine tune" the delay settings until the desired speed is reached.
Because throttle is NOT a software delay, it will perfectly co-exist with existing software based slowdown programs.
Throttle works best in pure DOS. However, throttle will also work under a Win9x/ME DOS window, but the amount of slowdown will not be as effective.
Windows XP/NT/2K users should use winThrottle, the link to which is at the top of this page.
Throttle is still in development.
If throttle doesn't work on your machine, don't give up!
Contact me and see if your chipset can be added.
Currently supported chipsets:
AMD 755, 756, 766, 768
Intel PIIX4, ICH, ICH0, ICH2, ICH3s, ICH3m, ICH4, ICH4-M, ICH5, ICH6, ICH6m, ICH7, ICH7m, 440MX mobile
Nvidia Nforce1, Nforce2(maybe?)
SiS 85C503/5513 961 962
Via 596, 596B, 686, 8231, 8233, 8233A, 8235, 8237
Note: The above are Southbridges. Southbridges are 1/2 of a "chipset". Chipsets are commonly referred to only by the Northbridge name.
For example, you might have an Intel 810 chipset. Well, the 810 Northbridge uses an ICHx southbridge, so if you know your machine has an 810, your odds of throttle working are extremely high.
Southbridges change rather infrequently, and as so are often coupled with many different types of Northbridges. It is MUCH easier for me to only list the southbridge name simply because that's what throttle uses, and I'd wear my fingers to the bone trying to keep this web page up to date listing all the new Northbridges that are added daily.
Command line options:
<value> = select throttle option without displaying the menu
-? or -h = display the help screen.
-d = debug mode. Use this if throttle hangs up or doesn't perform any noticeable slowdown.
-p = creates a textfile containing a list of pci devices in your computer.
-c = do not disable the L1 cache. System slowdown is not as effective with this option, but may be required if your machine locks up. (contact me if this option is required to get it to run on your machine-something is definitely wrong with my code!)
By default, throttle will disable L1 cache to aid in slowdown.
If you're running throttle under windows, L1 will NOT be disabled.
Q) Why is throttle better than using already established programs like mo'slo or bremze?
A) Mo'slo and other cpu slowdown utilities are software controlled throttles that utilize system timers and interrupts to control the amount of slowdown. As processors get faster, larger delays must be added to keep the CPU speed under control, which results in jerky performance.
Software based slowdown utilities also have no control over other programs making changes to the same interrupt routines that the slowdown utilities use. Because throttle uses the hardware to achieve the slowdown effect, the results are very smooth slowdowns that cannot be changed by the software running in the slowed environment.
That being said...
Throttle is not intended as a complete replacement for software slowdowns. Because of the hardware based nature of how throttle works, it cannot
replace all software based slowdown utilities. There just aren't enough chipsets available that support the way throttle works.
Because throttle is also limited to the percentage of slowdown provided by the chipset manufacturer, you may even find that with CPU speeds over 800MHz at maximum throttling, the system STILL might be too fast for you.
You'll probably find that optimal results occur from a combination of using throttle and software based slowdowns at the same time.
Use throttle to slow your machine down significantly, then augment the slowdown with a tiny software delay to "fine tune" the performance to your
Q) How does throttle work?
A) Throttle enables power management bits in the chipset to control CPU clock. Any chipset that conforms to the ACPI (advanced configuration and power interface) specification has a means to enable and control the throttle.
The intended purpose of these bits is to provide a means of power savings, typically utilized in notebooks or other battery powered devices.
When the CPU is in a throttled state, it uses less power. It just so happens that a throttled CPU creates a perfect environment to emulate the performance of an older generation CPU!
Q) I have a chipset that supports ACPI. Why isn't it supported in throttle?
A) Probably because I don't know about it. Because the ACPI specification can be implemented in different ways by different chipset manufacturers, it's impossible to create one generic program that works with all ACPI compliant hardware. This creates the problem of constantly updating the internal database of known hardware. So far, the biggest problem has been finding the documentation for known ACPI compliant chipsets. Adding support for them is the easy part! You may also be using an older version of throttle. Contact me for the latest.
Q) Can I have more speed options than just the 8 (or 16) provided?
A) No. Throttle provides you with as many different CPU throttling options as the chipset allows. The ACPI spec only defines 8 different modes, each one 12.5% more throttled than the previous. VIA technologies has taken the spec 1 step further and allowed for throttling on 6.25% increments, thus doubling the amount of options available, which provides for more slowdown and a finer tunability.
If you want to run oldskool games, get a VIA motherboard!
There's nothing I can do to change the available options, and no further options will be available unless the ACPI spec changes.
build 27Changed Via 586-F to 6.25% stepping instead of 12.5. Must have been a typo all along. thanks Christoph
build 22Bugfixes, Added ICH7(m?)
release 21 was totally broken, so anyone who snagged it and wondered why it didn't slow your machine down should try this one.
build 21Added ICH6m
Added support to give a message on known unsupported chipsets.
AddedCheck to see if user is running in dos protected mode, rather than if user is running under windows. (for cache disable)
build 20 - Fix for Via 596B. It was looking for ACPI in the ISA/LPC bridge, but via moved in into it's own ACPI function now.
build 19 - Re-added VIA 8237. Somehow it had been removed. (durh!)
Slight change the L1 cache enable/disable routine. Might be better compatibility, might be worse.
Email me if it breaks for you and we'll try and work something out. Use the archive here if older versions work better.
Slight changes to the debug message output.
build 18 - Changed base address on ALI 153x chipsets.
Either this has been broken since day 1 and no one has complained, or ALI changed their hardware and didn't change their device ID.
luckily, we've got the back catalog here, so if your ALI machine no longer works, grab a release older than this one.
build 17 - added Intel's 440MX mobile chipset
build 16 - added Intel's ICH 6 and SiS 962 (untested)
build 15 - added via 8237
build 14 - little code cleanup, changed to build# instead of version. No new hardware
0.13b - added ICH4-M, ICH5, Nforce2 (hopefully)
0.12b - added another Via 8235 (for Epia motherboards) New device ID?
0.11b - added ALI 1535 (big thanks to Alan Cox!)
0.10b - added or updated: Nvidia Nforce1, Via 596B, 8233, 8233A, 8235
0.09b - added ICH3s, ICH3m and ICH4 support.
0.08b - added command line argument to select speed option and bypass menu. Useful for batch files.
0.07b - added SiS, Nvidia Nforce. Changed -p to dump all pci devices and registers.
0.06b - added AMD 755, 756, fixed device ID in AMD 768
0.05b - added support for AMD 766
0.04b - faster detection of chipsets. Scans only Bus 0 and 1.
0.03b - added better diagnostics with the -d command line switch.
added -p switch to display all PCI devices in the system
0.02b - added support for via and amd chipsets
0.01b - initial build. only supports intel ICH and piix4 chipset.
You may also be interested in a program I wrote in 2001 called SlowDOS.
SlowDOS is a software based slowdown utility, similar to Mo'slo and Bremze that allows you to customize the amount of slowdown in 0.05ms increments. A combination of throttle and SlowDOS should allow you to put any machine down to the good ole 4.77MHz days.
SlowDOS also has a /Q command line option to force the PC speaker off at every interval, so you can play those classic games without waking up the rest of the house.
Latest version is here:
version 1.03 source (x86 asm)