My Programs

DOS USB Drivers (New as of July 1, 2009 -- Last Update January 30, 2010)

THIS downloads a zip file containing the complete set of DOS USB drivers (545 kB, UPDATED January 30, 2010 ).

The programs are all still in a testing phase (alpha/beta), so do not yet include complete documentation. Read the included USBINTRO.DOC file for documentation and information on how to use the programs.

The zip file contains more than 20 different programs, and includes drivers for keyboards, mice, joysticks, printers, disk drives, and hubs, as well as several different test and support programs. Unfortunately, the only type of host controller currently supported is UHCI (full-speed controllers made by Intel and Via Technologies). Support for additional host controllers (OHCI, EHCI, WHCI, XHCI) and devices will be added in the future.

I fully expect there to be several updates over the next couple of months, as everyone tries these out on their systems and begins to discover all the bugs that I didn't find. Hopefully, there won't be very many bugs and they will all be relatively easy to locate and fix. Check back here every once in a while to see if there are any updates. Usually, updates will be initiated from something in the Forum . That is the best place to keep up to date about the current status.

Some people are confused when I say that it only supports UHCI controllers, and assume this won't work for them because they have an EHCI controller. If your computer was made before the end of 2009, and your computer has an EHCI (USB 2.0 / high-speed) controller, you are also GUARANTEED to have a USB 1.x (low-speed / full-speed) controller, which will be UHCI (if it is made by Intel or Via) or OHCI (if it is made by anybody except Intel or Via).

Unfortunately, at the end of 2009, Intel introduced their P55 series of motherboard chipset, which does not work the way their old chipsets did. Instead of integrating EHCI and UHCI companion host controllers, the P55 has an EHCI controller (or controllers) and an integral multi-port USB 2.0-compatible hub (or hubs).

This is very unfortunate, since it means you will need to wait both for an EHCI host controller driver to be developed, in addition to needing a USB 2.0-compatible hub driver. This is not going to happen any time soon, unless I can get some volunteers to help write the appropriate drivers.

I know this is confusing, especially if you're unfamiliar with the technical details of how USB actually works. The bottom line is that you will need to do some testing on your computer before you dismiss this "out-of-hand" and just assume it will not work for you.

If you end up getting a computer with one of these P55 chipsets, or another computer with a similar issue, there is a workaround. Unfortunately, the workaround may involve spending some money. What you can do is obtain an external USB host controller (one that plugs into an available PCI slot), making sure that it is UHCI- compatible (with the main USB controller chip being made by Intel or Via). The P55 chipset is only used on USB controllers that are integrated into the motherboard, and are not used on external USB host controller cards. All external host USB controller cards available today use companion host controllers (EHCI + UHCI, or EHCI + OHCI), though that could certainly change in the future.

THIS downloads a zip file containing the source code for all of the programs in DOS USB driver package above (1.7 MB, UPDATED January 30, 2010 ). Most of the programs are written in Assembly Language, but some are written in C++.

Other Programs

The following programs are all free (gratuities are gladly accepted, however). I have written them over the last several years. They are all DOS TSR (Terminate but Stay Resident) programs. They are all in a ZIP format.

They are very small and very fast (most written in Assembly Language), and, as you will hopefully find, very useful as well. The ALL file contains the latest versions of all the programs, and will only take a few minutes (at the most) to download. It's well worth the effort!

If you want to be notified when new programs or updated programs are added to the site, just e-mail and let me know ( or ). I'll add you to my list and notify you when something changes.

I'm also making available the Source Code for some of my programs. You can use it to begin writing your own Assembly Language TSR's. I've also got some Links to Other Places where you may be able to find other useful utilities, or information on how to start writing your own utilities.

These utilities are pretty complete and will do most anything you ask of them. If they don't do exactly what you want, contact me ( or ). Many times, there is a way to do what you want with the program as it is (you just may need help figuring out how). If not, I can sometimes add options to an existing program to have it do exactly what you want. You can also go the the Discussion Forum and see if there's any information there that may help. I'm also available to do custom programs.

NOTE: These are DOS programs, and are designed to work with DOS programs. They are not specifically designed to work with MS-Windows. However, Windows is itself a DOS program, even though Microsoft successfully hides this fact from the majority of users. Therefore, under certain circumstances, some of these programs can work with Windows-native programs. For instance, SCANCODE can "type" automatically while you are in Windows, JOYKEYS can let you use your Joysticks in Windows, and SLOWDOWN will actually Slow Down Windows. Don't assume that you can't use these programs just because they're not Windows-native!

DOS TSR Programs created by Bret Johnson
ALL n/a 2011-09-24 472k All of the files listed below.
CLOCK 2.12 1998-03-06 20k Shows a clock on your screen all the time. Also has two alarms that beep at you when it's time for an appointment.
JOYKEYS 2.00 1999-09-27 84k Lets you use your Joysticks with any program. Can also be used to test your Joysticks, and to "fix" your Joystick BIOS so that it will work with other programs.
MOUSKEYS 3.05 1996-11-22 43k Lets you use your mouse with any program.
PRTSCR 2.01 2011-09-24 76k Sends all of your PrintScreens to a file instead of a printer. A good way to transfer data between two programs, even if they won't normally "talk" to each other.
PRTSCRFF 1.03 1997-10-09 4k Modifies your PrintScreen so that each new PrintScreen gets put on a new sheet of paper (especially useful if you have a Laser or InkJet printer).
SCANCODE 5.90 1999-04-23 122k Automatically "types" for you when you are in the middle of another program. Can also be used to create macros, create screen savers, or to "remap" the keyboard. Now includes support for over forty different keyboard layouts, and can even work with Windows. NOTE: This is a beta version!
SDWRGMPD 1.10 1999-11-08 33k DOS Driver for a Microsoft SideWinder digital GamePad. Microsoft doesn't make a DOS driver for any of their SideWinder products - they want to force you into using Win95. SDWRGMPD will let you use your GamePad in just plain old DOS.
SERIAL 2.02 1999-09-30 18k Shows the status of your serial (COM) ports on screen. Shows the bit rate, parity, status of the leads (DTR, DSR, etc.). An excellent way to troubleshoot modem problems.
SLOWDOWN 3.10 2002-11-19 75k Slows down a fast computer so you can run older programs, or as a troubleshooting aid.

New Address and Phone Number

The documentation for all of the older programs contains a mailing address and phone number for my old home in Colorado. I now live in New Mexico, and here is my new contact information. My e-mail addresses have not changed, though I have added a third one ( ). I'm very upset with America OnLine, who had hosted my web site for many years. In November, 2008, they stopped hosting any web sites, so I had to move out on my own. It turned out to be a very good thing, but it was sure a hassle right after AOL did it (for me and a LOT of other people, too). Anyway, although my old AOL address still works and I will check it periodically, I will not be publishing it anywhere any more. Frankly, it would make me very happy if nobody ever used AOL for anything ever again.

Bret Johnson
5811 Miller Rd NE
Rio Rancho, NM 87144

(505) 994-3023 or

Bug Reports


Some computers are reported to have a problem with the SLOWDOWN program above. The problems are related to SLOWDOWN's ability to manipulate (Disable/Enable) the CPU's L1 Cache. More specifically, the problems are related to bugs in certain versions of Microsoft's HIMEM.SYS & EMM386.EXE, the Extended & Expanded Memory Managers. The details on exactly what the problem appears to be are described in the SLOWDOWN documentation, so I won't explain them here.

On certain computers, the problem can be fixed by replacing the "buggy" versions of HIMEM.SYS/EMM386.EXE with newer versions of HIMEM.SYS & EMM386.EXE (such as the ones included here). These particular versions of HIMEM.SYS and EMM386.EXE are the ones that Microsoft distributed with Windows 98 Second Edition (a.k.a. "MS-DOS 7.10"). These are some of the last versions of the programs that Microsoft ever made, so they should be fairly bug-free. If you're not currently having a problem using SLOWDOWN, you probably don't need to download this one.



The versions of JOYKEYS (2.00) and SCANCODE (5.90-beta) above contain a problem that has been reported on certain computers. When you first run the program, the computer will totally lock up, and the only way to restore it to normal is with a power boot. This does not happen on all computers, but it does happen on some.

What is happening is that the keyboard BIOS on those particular computers is incompatible with Scan Code Typing Method 2 (if you have absolutely no idea what a "Scan Code Typing Method" is, you need to read the program documentation). When you run the JOYKEYS or SCANCODE programs, one of the things they do is perform a Test to see which of the 3 Scan Code Typing Methods they should use. As a part of the Test, the program must actually "type" a Scan Code using the Typing Method it is trying to verify.

If your computer locks up, it means your computer is not compatible with Scan Code Typing Method 1 (if it was, neither JOYKEYS or SCANCODE would even perform the Method 2 Test). Obviously, your computer is not compatible with Scan Code Typing Method 2, either, or your computer would not lock up. What you have to do is FORCE the program to use Scan Code Typing Method 3. If you tell the program which Typing Method to use either from the command-line or from the appropriate environment variable, it will never perform the test that locks up the computer.

To fix JOYKEYS, do one of the following:
JOYKEYS /Method:3 {other command-line Options}
SET JOYKEYS=/Method:3 {other environment variable Options}

To fix SCANCODE, do one of the following:
SCANCODE M3 {other command-line Options}
SET SCANCODE=M3 {other environment variable Options)

I will try to figure out a fix for this and update the programs accordingly. I am very sorry if this has caused you any problems!

Discussion Forum

My Source Code

Links to Other Places

E-mail: or