How to run an old dos program ( dos4wg ) on a 64 bit OS

Posted on 2011-03-02
Last Modified: 2012-05-11

I have a Windows 2008 64 bits server.  I also have a really old Fortran programs that was build using Watcom and the DOS4WG.exe program.

However, this programs does not work anymore because DOS4WG.exe is a 16 bits applications, and therefore it does not run anymore on that OS.

We tried DOSBOX to validate the problem, and our programs runs fine in that emulator.  However, for our problem, we need to be able to call the programs multiple times from scripts.

So we see two possible solutions...

1) Have a DOS4WG.exe 32 bits version, which I was not able to find so far ( or something similar that I could adapt my code for )
2) Using scripts to automatically launch DOSBOX, mount drives and launch commands

I got the code and it compiles fine with the latest version of Open Watcom Fortran compiler.

Thanks for your advices!
Question by:Francois_Tremblay
LVL 94

Expert Comment

by:John Hurst
ID: 35021677
For certain a 16-bit program will not run on a 64-bit machine and there is no way to make it so natively.

So you need to run DOS in some sort of emulator. You chose DOSBOX (fine); I use VMware.  So far, so good.

Now, you say run scripts to launch DOSBOX, mount drives and launch commands. Have you done this? My DOS 6.3 machine talks to 32-bit XP, but does not talk to 64-bit Windows 7. I have not figured out yet (a) will this even work? and then (b) if so how?  I don't think it will work.

I am not certain how to answer your question, but if you have not tested option 2, I don't know how it can work. .... Thinkpads_User

Author Comment

ID: 35021833
Hi again!

We already have a VM  ( Hyper-V ), but it's exactly where we don't wan to go.  We got a very nice server running fast on Windows Server 2008 with 64 bits application ( mainly Matlab ).  A small part of our engineering process use the legacy code.

We want to run several hundred thousands of run and , sadly, we need the input from the legacy part at each run.  They are meshed together.  

For this reason, a VM is of no help.  We could simply run it on a Windows XP box, but we would not have the power of our 12 cores, higher clocks, etc.

It's why we are looking at a way of running this in the 64 bits environment.  We also have a project to migrate the old code but it's going to take time and we would like to have a nice little workaround for the time being.

LVL 94

Assisted Solution

by:John Hurst
John Hurst earned 125 total points
ID: 35021884
If I were doing this, I would be inclined to get a Windows 2003 server to do what you want. I have played around with my DOS machine for a while and it simply does not work with 64-bits. A small server could do what you want (it must have before Server 2008 64-bit came along), so I would keep it in a legacy environment until your code migration is done. .... Thinkpads_User
NEW Veeam Agent for Microsoft Windows

Backup and recover physical and cloud-based servers and workstations, as well as endpoint devices that belong to remote users. Avoid downtime and data loss quickly and easily for Windows-based physical or public cloud-based workloads!

LVL 59

Assisted Solution

by:Darius Ghassem
Darius Ghassem earned 125 total points
ID: 35023154
16-bit programs will not run on 64-bit systems.

There is no way around this.

Even if you did get it to run you would not be using the 12 cores or memory that is installed on the server 16-bit applications can only use what they are limited too.

Only work around would be to install 32-bit system to run the 16-bit code

Assisted Solution

ednetman earned 125 total points
ID: 35023980
VMware Workstation running in Unuity?  I know you want to take advantage of all the extra horsepower of the new server, but the 16bit application isn't going to recognize or utilize it anyway.
At least with Unity (or with VPC Windows XP Mode) you will be able to emulate a locally installed app.

Accepted Solution

CSI-Windows earned 125 total points
ID: 35026692
It sounds like you were able to recompile the code in 32-bit with the latest compiler?

I would advise that you try to get off the 16-bit version while you have your attention on it (and many some resources from management?):

*) Trying to stay away from VMs is a good approach - especially when this software is providing a dependency direct to other software on the native machine.  Using VMs makes more sense for software that end users use directly in a self-contained manner (the software does not depend on or provide dependencies to other processes).

*) Test your re-compiled version extensively - make a test plan.  Ask users if they know of data that would help reveal possible problems with the fortran code.

*) Perhaps use a crowdsourcing site like to locate a fortran expert and have them validate that the recompile is truly going without a hitch - they may be able to tell by the code that where there is legacy fortran code that would change the core behavior of the software.

Author Comment

ID: 35030264
Here is what we found out.

DOSBOX configuration file contains an [AUTOEXEC] section.  This way, we can mount and run our script in that emulator and it works fine.

We just need to build a small wrapper to launch that DOSBOX process instead of our application directly from Matlab.

We also noticed that this old legacy code was done in Watcom with some Fortran 66 in it.  We will redo the code so that the input/output are not so strongly integrated, no common variables everywhere and do apply some very modern concepts called object oriented programming ( for what can be done in Fortran ).

To give you an idea, the people that worked on that were ph.Ds that retired a long time ago.

At least in the meantime we got something working.


Featured Post

Announcing the Most Valuable Experts of 2016

MVEs are more concerned with the satisfaction of those they help than with the considerable points they can earn. They are the types of people you feel privileged to call colleagues. Join us in honoring this amazing group of Experts.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Introduction: Recently, I got a requirement to zip all files individually with batch file script in Windows OS. I don't know much about scripting, but I searched Google and found a lot of examples and websites to complete my task. Finally, I was ab…
Restoring deleted objects in Active Directory has been a standard feature in Active Directory for many years, yet some admins may not know what is available.
This tutorial will give a an overview on how to deploy remote agents in Backup Exec 2012 to new servers. Click on the Backup Exec button in the upper left corner. From here, are global settings for the application such as connecting to a remote Back…
This tutorial will show how to configure a new Backup Exec 2012 server and move an existing database to that server with the use of the BEUtility. Install Backup Exec 2012 on the new server and apply all of the latest hotfixes and service packs. The…

733 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question