How to Run DOS Programs on Windows 7/8/10 and Other Windows Tips
There's a lot of older telecom and other software out there that is very specialized, not upgradeable, not replaceable, and won't run on modern Windows operating systems like Vista, XP, W7 or W8. But it works just fine and spending a lot of money to replace it seems crazy.
There are many Windows 95/98 and even 3.1 computers out there running these special apps today.
When Vista and XP came out many of the DOS programs that ran fine under W95/98 wouldn't run at all on those operating systems.
The good news is that Windows 7 and Windows 8 32 bit (not 64 bit) has changed that! I don't know about W10 that's supposed to come out some time next year.
Note that if you use a 32 bit operating system, you have to make sure you are using the 32 bit versions of any Windows programs you're using (not the 64 bit versions).
It turns out that Vista and XP didn't handle the DOS programs and their memory needs very well. There were problems converting 16 bit (DOS stuff) to the 32 bit memory addressing scheme in Vista and XP (and the 64 bit versions of all Windows systems). If you're interested in the nitty gritties this is a good explanation of how "thunking" (the ability to share data between 16 and 32 bit stuff) was broken in Vista and XP:
Only the 32 bit versions of W7 & W8 work correctly with DOS programs!
The DOS stuff we use in our office never worked in Vista or XP. All of the installs of W7 I had were 64 bit, so the DOS stuff never worked on W7 for me either.
Then I decided to try the W7 32 bit just to see what happened, and the programs worked about 80% fine. That meant that I could now use the DOS program on a machine with a modern browser, which happened to be one of the requirements for us to migrate that machine from W98SE. I couldn't find a modern browser that runs in W98SE.
Luckily for us I wrote the DOS programs we use and could change them easily. For some DOS programs the original authors aren't around anymore, so it might take some extra tweaking to make it work on W7 if it's possible at all. There's a pretty good chance there won't be a problem if you take a look at some of my tips, below.
One of the benefits of using a DOS program is that it's very quick and easy to use without a mouse.
DOS programs seem to run a lot slower on W7 32 bit than they did on a W98 box. The DOS programs we use are blindingly fast on W98 machines. Not on W7, but perfectly usable.
If all you have is a 64 bit system to play with there's a program called DOSBOX that will let you run DOS programs on both 32 bit and 64 bit systems (really designed for playing old DOS games), going back to Vista and XP (as well as W7 & W8). You can check it out at:
The DIR Command is Different!
We do a lot of reading directories for new files. We do that by doing a DIR command and reading the output into memory and massaging the results. It turns out that in Vista and above they added a line to the top section of the DIR output, which was easy to fix by throwing away 5 lines instead of 4 before we started looking for file names.
They also changed the format of each
line with a file name in the DIR, but that didn't matter for us.
Boot Problems with Network Drives
W7 often has a problem connecting to network drives from any workstation. In the case of our machines they're involved with automating processes. I really needed the machine to boot up and connect to the network drives automatically, without my manually clicking on the disconnected drives to reconnect.
I run a batch file with the net use command to reconnect the drives, but it doesn't reconnect the drives unless you wait about 20 seconds after the W7 machine starts loading stuff in the Startup Group. This is in a batchfile called reconn.bat:
net use L: \\Serverd\Ddrive
net use M: \\Serverd\Edrive
net use P: \\Backup1\C
net use Q: \\Backup2\D
The fix is to delay reconn.bat so it waits 20 seconds...
Delaying Running Programs
I couldn't just drop the reconn.bat batch file into the startup group because the drives wouldn't reconnect unless I waited 20 seconds to run the batch file. To fix that I bought a program called Startup Delayer (the free version would also work, but won't save the configurations for testing):
In addition to delaying the batch file to reconnect the network drives, I also had to delay any programs that use those drives from starting before reconn.bat. Startup Delayer let me set all the programs that need to see the networked drive to run after the drives were reconnected. That really saved a lot of time and hassle!
Wow. I almost had a Windows 7 32 bit machine that worked as good as W98SE!
Printing from DOS Programs
It turns out that you probably need a little help getting print statements in DOS programs to work on a network or USB printer. It might work without help, but it was a problem for us. A quick fix was a program called Printfil:
This lets you specify a local or network printer. Seems to work fine, and there are lots of options to play with.
We run some reports by doing a screen print of the DOS screen. We used a DOS TSR (Terminate and Stay Resident) on the old W98 machines to print the screen to a page on the printer, and then send a form feed to eject the page from the laser printer. That's worked well for us for a long time, but the TSR won't run in the DOS box in W7 32 bit. Greenshot solved that problems for us:
This program lets you tell it to grab the Print Screen when you push that button (you can tell it to use any button), and send it to a printer with a form feed. I save toner on the laser printer by telling the program to only print in black and white, and in our case inverting the colors so the blue background on the DOS screen doesn't show up in black on the printer. It's easy to setup, free, and really handy!
CAPS & Number Lock
We need the caps lock and num lock to be set differently in different DOS screens. With the old DOS and W98 machines I simply peeked and poked memory to determine the status and set the caps and num lock. Those peeks and pokes definitely don't work on W7!
This is the easiest way I found to set the caps and num lock from the DOS program on the W7 machine. I simply call a batch file from the DOS program which runs "capslock on" or "capslock off" in the batch file. Same with numlock.
Running this program is a lot slower than the pokes, but it works for us.
Arranging the ICONS on the Desktop so They'll Stay!
We leave the DOS program open all the time on the W7 desktop in the upper left corner. It turns out that W7 puts other icons at the upper left corner so they're always covered up by our DOS program. W7 likes to rearrange icons after you move them, from time to time.
The fix I found for that is a Windows program called DesktopOK:
It lets you save your icon arrangement and restore it when the system boots. It lets us put the icons anywhere we need them, and they return to the correct position after the system restarts.
Digging Around in a Windows Machine to See What's There...
In the old days with DOS I used a program called XTREE to give me the lowdown on any PC I sat down at. Before you start changing stuff it's a really good idea to know exactly what's on the machine. XTREE (and then XTREE Gold) did a great job of giving me a graphical tree view of everything on a disk, and let me install or fix stuff without screwing up the machine further.
Today I use a clone of XTREE called ZTREE that runs on all versions of Windows. The author of ZTREE used all the same commands as XTREE so you don't have to use a mouse to do anything :
It gives a much clearer picture of what's on a hard drive, local or remote, than My Computer or Windows Explorer. If you've never used XTREE it will take a little while for your fingers to learn what they have to do to get you where you want, but once your fingers learn it it's incredibly fast.
Having WiFi Problems, and You Have W7 or W8?
In W7 and W8 they added some capabilities to the netsh (network shell) command that really helps diagnose why WiFi connections aren't working well. To access netsh, click the START button in W7 and type cmd into the little text box at the bottom, and hit enter. I don't use W8 so I don't know where you find the place to get to cmd in W8 since there's no START button.
When the command box opens, at the prompt type:
netsh wlan show
You can get a little more information with:
netsh wlan show
It will give you a list of all the WiFi networks that can be seen. The important thing is to see what Channel your WiFi is on, and what all the other WiFi routers are on. In the example above you can see that all the networks are on Channel 11. In this case it doesn't matter much because the signal is so bad on the second two networks listed (there are two more when I scroll down), but having two or more WiFi routers set to the same channel is a recipe for crummy WiFi for everybody.
If you have a router that does both 2.4 and 5 gig, you'll see two SSIDs for your location. Make sure neither one is on the same channel as a nearby router, unless maybe if the signal strength from the other routers is really low.
The fix is to go into your router and change the channel, or both channels if you have a 5G router with 2 SSIDs.
There is a wonderful app called Wifi Analyzer by farproc in the Android Google Play and Kindle app stores that works great, and gives you the same information as the netsh wlan commands in W7/8.
When you open the free app after downloading it, touch View and choose AP list from the drop down. It gives you all the WiFi routers it can see, signal strength and the Channel number.
I haven't found an app that will do that on ios for iPhones/iPads, but there may be one.
Finding Utility Programs on the Internet is DANGEROUS!
The links I provided for the various utilities on this page are safe as far as I can tell.
BUT, if the utility is free you'll probably find it on many other sites on the Internet. The problem with almost all of those sites that let you download free software is that they "wrap" the software in their own installer, which is there to put all kinds of other questionable software on your PC along with the free software you want.
CNET is probably the safest place to download free programs because they give you the option to use a Direct Download Link (if you know to do that), or use their Installer which will probably screw up your computer. See the Two ways to download software from CNET circled in red:
Even SourceForge, the place that says it's "Trusted for Open Source," wraps their downloads in an installer:
They do tell you a second time that you're going to be using an installer when I tried to download Filezilla. If I install any of the junk in the installer by accident, Filezilla shares in some of the money they get from SourceForge. Other software on SourceForge may or may not have an installer?
So maybe it doesn't contain malware?
I did check and they tell you in BIG letters that you can opt out of two goofy
programs they want to put on your PC (I opted out). I think when I tried the
direct link it was still wrapped in their installer, but I'm not positive. I
didn't want to spend much time trying to get bad stuff onto my computer!
In general I think I'd trust CNET only with the direct download link. I guess they need to charge money to pay for the servers, and the makers of the junk software they install generally pay them per install.
SourceForge lets savvy users opt out of installing the junk in their installer. Any time you are downloading something take the time to read the bullshit on the screen! Don't just click ACCEPT. Being really careful can save you A LOT of headaches.
Almost ALL of the other sites with collections of "free software" that you can download may really screw up your computer with junk when you use their installer, or they may even install malware that would be very difficult to get rid of (if you can at all).
If a site says you should use their Installer to make downloads faster (or for any other reason), DON'T DOWNLOAD IT! Look for the original author's site which probably has a direct download link. If they also have a link to get it from one of the free software sites, go for the direct link!