Computing > Vintage Computing

Running 486-era software on modern hardware at the right speed

(1/3) > >>

We have a machine  that was bought around the year 2000. It came with an IBM PC/ValuePoint 433dx/s, with an i486 processor and PC-DOS. The original PC is still in use, but I am seriously concerned about its reliability. The PC runs software that came with the machine and talks to it over the serial port (it doesn’t seem like any weird low level stuff is happening).

Long story (short story below):
The first thing I thought about was making an image of the hard drive with Linux on a mid 2000’s machine (so that I have IDE, floppies and USB). Turns out that the last time someone attempted to do a backup on that hard drive it didn’t go well at all,  so we are hesitant to touch it. Fair enough, I’m not in the mood for risks.

So, instead found the original install floppies for the software. I made a live USB with Linux, found a 2008 machine with a floppy drive and began making images of all the floppies with ddrescue. It worked perfectly. Then I went to a modern computer and installed Virtualbox. I grabbed a copy of PC-DOS and installed that. Then I installed the software. But when I run it, I get “Runtime Error 200” when trying to execute some functions/programs. Info on the internet says it’s because of the way a library in TurboPascal 7 was programmed. It had to calibrate a delay routine, and this code breaks when ran at over 200MHz because of a division overflow. I need a way to run the software at a consistent speed, and to talk to the serial port.

Short story:
We have a 486 PC that is about to die, so we need to migrate to modern hardware. I need to run software that was made with TurboPascal 7, which came with a bug that causes a division overflow when it’s run at over 200Mhz. I cannot recompile the software because I don’t have the source (it came with the machine). It needs access to the serial port.

What are my options?
- Virtualbox: causes runtime error 200 (when the execution cap is set to 1% of the CPU, more code runs, but it’s inconsistent and 1% of 4GHz is not the same as 1% of 2GHz...).
- Patch the software: attempted to patch with PatchCRT but it didn’t work on all but one of the executables (there are 20+). The executables may be compressed. I haven’t tried that yet. I’m a bit worried about breaking the executables with the patch (the patch may introduce other issues).
- DOSbox: I saw that you can alter the amount of “cycles” the emulation but it’s not clear to me if this is independent of the host CPU frequency. If I set it at 3000 cycles on a 2GHz processor and then change to a 4GHz processors, will it go twice as fast inside DOS? Also, I’d rather run the software in PC-DOS if possible, to be as close as possible to the original. I don’t know how close DOSbox is to DOS for things that aren’t games.
- QEMU: I can’t seem to find a way to specify frequency or execution speed in absolute terms. I haven’t looked into serial.
- Specialized hardware: is there modern hardware that could handle this? It can be niche hardware, and I guess we could allocate up to a couple of grand on it but not much more than that. If someone makes a 486 system-on-board or something like that I think it would be a solid option, if it’s new stock. I don’t want to get out of a ’93 computer into a ‘98 computer.
- Regular hardware: is there a way to make a modern computer run in a legacy mode? 90’s PCs had a turbo button to slow them down, but that isn’t a thing anymore, is it? I am guessing the software would run under FreeDOS for maximum compatibility.

I think they all have the pros and cons... what do you think?  :-//

This looks promising

PC104 seems to be a motherboard / system-on-board standard that supports many legacy architectures. I also found a SoC called Vortex86. I’m going to look into it tomorrow. Let me know what you guys think. I think it would be cheaper if I found something like a Vortex86 micro ATX or mini ITX motherboard, because the PC104 is going to need a lot of custom stuff like chassis, power supply and adapters.

One vague idea I can think of is that laptop systems in particular have a way of slowing down the processor to run cooler and save power. Could you find software that can directly set the processor speed on a modern system to make it run really slowly? I have an idea modern systems have power management abilities like this, since if the system is idle the processor really doesn't need to be doing anything, so it can slow down almost to a standstill.

The config file for dosbox claims if set to 3000 cycles it will run at 3 MIPs, presumably independent of host machine clock.

I had an inkling I'd read about this bug before and there's a patch for binaries. Maybe this will help?


[0] Message Index

[#] Next page

There was an error while thanking
Go to full version