Running old DOS programs on Windows 7 64bit

mikeroq

Well-Known Member
Reaction score
1,352
Location
BFE
Hope this will help someone. In my case a customer is still using a dos version of CYMA, version 5 it looks like, from 1994. Seriously! Anyways this is what I did.

This also applies to Windows 8, Vista, Server, etc any version that no longer has DOS support.

First I used XP mode, but you cannot use dos programs full screen using integration mode. I wanted this to be easy for the customer.

I used DOSBox for this, specifically DosBox Megabuild 6. Because it has printing support. (Since DOSBox is geared mainly for old DOS games)

This guide assumes you are a tech and can handle minimal instructions. This guide is for running a dos program that prints to the parallel port.

Testing the program:
1. Install DOSBox
2. Run DOSBox. You should see a window like this:

D3jvUX2.png


3. We are going to assume the program you want to run is already located on the hard drive of the computer you installed DOSBox on. Since I don't have the CYMA with me I downloaded an old DOS accounting software.
4. We need to mount the folder that your program is located in, like so "mount driveletter path"

pTBgYtc.png


5. Run your program:

uX7ZKoB.png

xmr5w3x.png


6. Congrats your program now runs. Test fullscreen by pressing ALT+Enter

On my computer fullscreen works, but on my customers computer it put the monitor out of range. To fix this I edited the configuration file for DOSBox and changed these lines:
fullscreen=false (You can set this to true to launch in fullscreen)
fulldouble=false
fullresolution=0x0
windowresolution=original
output=ddraw

Now you might want to automatically launch your program when DOSBox launches:

1. Edit the config file, scroll down the bottom find
[autoexec]
# Lines in this section will be run at startup.
# You can put your MOUNT lines here.

2. Put your commands down there like so
[autoexec]
# Lines in this section will be run at startup.
# You can put your MOUNT lines here.
mount c c:\dos (mount command for your programs location)
c: (mount point)
a.bat (executes my program)

Enabling printing support: (This is how I did it)
1. Edit the config file again look for this section: (BOLD text is not present in the file!)
[printer]
# printer: Enable printer emulation.
# dpi: Resolution of printer (default 360).
# width: Width of paper in 1/10 inch (default 85 = 8.5'').
# height: Height of paper in 1/10 inch (default 110 = 11.0'').
# printoutput: Output method for finished pages:
# png : Creates PNG images (default)
# ps : Creates Postscript
# bmp : Creates BMP images (very huge files, not recommend)
# printer : Send to an actual printer (Print dialog will appear)
# multipage: Adds all pages to one Postscript file or printer job until CTRL-F2 is pressed.
# docpath: The path where the output files are stored.
# timeout: (in milliseconds) if nonzero: the time the page will
# be ejected automatically after when no more data
# arrives at the printer.

printer=true
dpi=360 Resolution
width=85 Page width, 8.5"
height=110 Page height, 11"
printoutput=png
multipage=false
docpath=.
timeout=0

[parallel]
# parallel1: parallel1-3 -- set type of device connected to lpt port.
# Can be:
# reallpt (direct parallel port passthrough using Porttalk),
# file (records data to a file or passes it to a device),
# printer (virtual dot-matrix printer, see [printer] section)
# Additional parameters must be in the same line in the form of
# parameter:value.
# for reallpt:
# Windows:
# realbase (the base address of your real parallel port).
# Default: 378
# ecpbase (base address of the ECP registers, optional).
# Linux: realport (the parallel port device i.e. /dev/parport0).
# for file:
# dev:<devname> (i.e. dev:lpt1) to forward data to a device,
# or append:<file> appends data to the specified file.
# Without the above parameters data is written to files in the capture dir.
# Additional parameters: timeout:<milliseconds> = how long to wait before
# closing the file on inactivity (default:500), addFF to add a formfeed when
# closing, addLF to add a linefeed if the app doesn't, cp:<codepage number>
# to perform codepage translation, i.e. cp:437
# for printer:
# printer still has it's own configuration section above.
# parallel2: see parallel1
# parallel3: see parallel1

parallel1=file dev:lpt1 Sets lpt1 in dosbox to lpt1 of the host
parallel2=disabled
parallel3=disabled
2. On your host system map your desired printer to LPT1. This printer must be network shared, even if local, just share it out.
net use lpt1 \\computer\printer /PERSISTENT:yes
3. Go back to DOSBox and run a simple test
dir > lpt1
A directory listing should print out on your printer!

To recap:

1. Install DOSBox Megabuild 6
2. Edit config file for fullscreen (if desired), printing, and your autoexec for launching the program.
3. Launch DOSBox
4. Profit!

I changed the shortcut to DOSBox to CYMA and changed the icon for the end user. All they have to do is launch it like they did in the past and have fun!

My apologies if this guide isn't well written. I don't do many of these.
 
Last edited by a moderator:
I used much the same solution for an old dBase application. They didn't have a problem with the screen, but I might suggest this full screen fix the next time I am out.

Nice post! Thanks for the time and effort this clearly took. +1 rep.

EDIT: I'll +1 you as soon as I get on my computer. Can't figure out how to do it on tapatalk :(
 
Wow, I wish I knew about that 6 months ago. Had a customer that wanted to Look up some old files that he created with this old Dos program.
 
Back
Top