You are here: The Oldskool PC/The Guides/Getting Old Software Running on Newer PCs/Cripple Your PC |
It's been my experience (and I've had a lot of practice :-) that over 80% of all old software problems can be cured by slowing down the machine you're trying to run them on. In the early to mid 80's, game programmers didn't write the internal timing loops to speed-adjust correctly on future machines. Slowing down your machine to meet 1981 standards fixes that problem.
In the late 80's to early 90's, a subtle new problem for us was introduced: Game programmers figured out how to avoid traditional speed problems, but didn't anticipate the speed of the graphics hardware accelerating to the point where screen updates happened almost instantaneously (screen updates are traditionally the slowest portion of a game). Slowing down your machine to meet 1990 standards fixes this problem.
Lack of speed is your savior. Trust me on this one. If you've ever gotten a "Divide by zero" error on your new PC when the same program used to work perfectly on your older machine, you've got a speed problem. You need to slow down.
There are two methods of slowing down your machine to accomodate old games: Hardware and Software. Hardware methods are always desirable to software methods, because they result in a smooth, non-jerky slowdown that you and your games will love. Software methods are less desirable, because although they can be adjusted to taste, they result in a jerky, uneven slowdown.
Hardware slowdown can be defined as "a smooth, consistent lowering of the computer's operational speed, either through the addition of intentional bus/cycle delays, reducing the frequency of execution cycles, or hindering the efficiency of data retrieval." Well, not everyone likes technical definitions, so here's what that means:
While most PCs have the ability to disable memory caches, some have the ability to lower the CPU speed and introduce wait states as well. The distribution of most modern PCs is roughly this:
Percentage | Capabilities |
---|---|
30% | Can disable internal/external caches |
20% | Can introduce wait states into the flow of processing and/or flush cache on every clock cycle |
20% | Can lower the operating speed of the CPU |
20% | Can do all three :-D |
10% | No slowdown options at all :-( |
If you have a machine that can do all three, you're in the money--I've seen a Pentium 120 slow down to smooth, consistent "8MHz 80286" speed by throwing the book at it.
Before I go into details, you might be able to save yourself a lot of reading: Look at the front your computer. Does it have a "Turbo" button? If so, does the machine change speeds down when you toggle it? If not, you might want to open up your case and see if the wire from the turbo button is actually connected to something. :-) Run a benchmarking utility (I use MIPS, myself) for accurate testing, but you can also use "dir" on a long directory like C:\WINDOWS as a quick before-and-after test. If you perceive a noticable speed difference, then congratulations -- you've just found the easiest way to slow down your PC. Try experimenting with that finicky game and see if it works now.
Trivia: On a 486, when a turbo button is not pressed in ("deturbo"), it flags the BIOS to introduce wait states into processing. When pressed in ("turbo"), it does not perform any waiting. This means that "turbo" buttons on 486s are really "slowdown" buttons wired up in reverse! (386 turbo buttons really do what they're supposed to; when "off", then slow down the CPU's speed in MHz.)
Even if you don't have a turbo button per se, you might have this same functionality built into the BIOS as a keystroke combination. On some AMI BIOSes, hitting CTRL-ALT-+ (that's the gray "plus" key on the keypad) or CTRL-ALT-\ (that's the backslash key above ENTER) can toggle between slow and fast states, sometimes with an audible high or low beep. You can only do this sitting at the DOS prompt, however, and sometimes you have to be in real mode (no EMM386, QEMM386, Windows 3.1/95, or any other protected-mode memory manager loaded).
If you don't have a turbo button or turbo "keystroke", then you're going to have to say hello to your friendly internal BIOS setup to set some options. Sometimes called a CMOS setup by some motherboard manuals, the BIOS setup program built into your PC lets you set common CMOS variables, such as what the date and time are, the hard drive type, and other info. We're not interested in the common options, however; the options we want to fiddle with in order to slow down the machine are usually in sections called "Advanced CMOS Setup" or "Advanced Chipset Setup." By modifying these options, you can usually notice an immediate change in the speed of your PC. But first, we need to get there.
Most internal BIOS setup programs can be invoked by hitting a key while the machine is still booting up. The most common keystroke that comes to mind is hitting DEL while the memory is counting upward; this is commonly found on AMI BIOSes. Other keystrokes that come to mind include CTRL-ALT-ENTER (modern Dell Pentium Pros/Pentium IIs), CTRL-ALT-S (old Dell 386s), CTRL-ALT-ESC (old Phoenix 386 BIOSes), and simply ESC. If these don't work, just read your screen--many display a line like "Hit <DEL> to enter setup" or something similar, with the keystroke displayed.
Still can't find a way to get into the BIOS setup? Here's some additional tricks to try:
Okay, you're in the BIOS setup, but what next? The first thing to do is to go through all of the setup screens, getting familiar with all the options. Try hitting the Print Screen key to print out your existing settings, in case you forget what they originally were. (In fact, now is a good time to mention that you should probably write down everything you change, so that you can revert back to your original configuration in case you change something that causes problems.)
Next, start changing options that make sense. Here's a handy guide you can refer to (remember, these options slow down your machine, so make sure you write down their previous settings):
Option | Set it to: | Why | Effectiveness |
---|---|---|---|
Internal Cache | Disabled | Shuts off the CPU's internal cache if present, which slows down the retrieval of data to the CPU | Great |
External Cache | Disabled | Shuts off the CPU's external cache if present, which slows down the retrieval of data to the CPU | Good |
ROM Shadowing | Disabled | Prevents the shadowing (copying) of ROM code to RAM | Fair |
SHADOW CACHEABLE | Disabled | Prevents shadowed ROM from being cached by the internal/external caches | Fair |
Cache Write Wait State | As high as possible (1 W/S, 2 W/S, etc.) | Sets how many wait states before writing to cache memory | Fair |
System Cache | Disabled | Combination of the Internal Cache and External Cache settings (see above) | Great |
Boot Speed | Deturbo | Introduces wait states into normal processing | Great |
Bus Speed | 7.16MHz or 8MHz | Runs ISA cards at a normal, standard speed; helps reduce mysterious ISA card "misbehavior" and lock-ups | Good |
While the above is probably all you need to change to slow down your machine, it is by no means comprehensive. Feel free to tweak some other settings, like DRAM or CACHE TIMING SELECTION, Hidden Refresh, and anything else that sounds funky. But only tweak one thing at a time, because if you tweak several things and your PC won't boot any more, you won't have a clue as to which one to change back.
Finally, every 486 and higher has an internal cache (8K on the 486, more on the Pentium and higher). If you don't see a setting in your BIOS setup for disabling the internal cache, you can do it via a programming trick. The programs icd.exe and ice.exe will disable and enable that cache, respectively; you'll find them in the Resources section at the end of this Guide. (Make sure you don't have a protected-mode memory manager loaded, however, as it will prevent these little programs from doing their job.)
Note: All software programs mentioned in this section can be found at the end of this Guide in the Resources section.
Tried everything and your PC is as fast as ever? Well, you're one of the unlucky 10% of all PC owners that has to resort to software slowdown methods. A software slowdown is a brute-force trick: You hook a routine into the PC's timer that does nothing but a "busy loop": A loop whose sole purpose is to sit there and do nothing, wasting time. This "bottleneck" in processing is short, but since it's hooked into the timer, it happens at about 18.2 times a second. The end result is reduced processing, since your CPU is interrupted 18.2 times a second to sit around and do nothing for a couple of miliseconds.
Because it's in software, this method has two advantages over hardware slowdowns: It works on any PC, and you can adjust the severity of the slowdown by adjusting how long the busywait loop is. Unfortunately, the drawbacks outweight the advantages: Since it only happens 18.2 times a second, the resulting slowdown is extremely jerky. (The faster your system, the harder it is to get decent results out of this method.) You can speed up the timer past 18.2 times a second, of course, to maybe 512 or 1024 times a second, but that speeds up the DOS clock and other resident routines--and even if you compensate for those routines, an old game is probably going to hook the timer as well, change it, and as a result really screw up your system (your time/date may be way far ahead, disk caches may exhibit odd behavior, etc.).
I have to be honest here: I'm lying a bit about how bad software slowdowns are. The truth is, software slowdowns are only terrible if they're implemented badly. Some programs, like Mo'Slo, are much better at handling this and only get choppy when slowing down a really fast computer to really slow speeds.
So boys and girls, what have we learned?
There, now; I feel much better. Don't you?