Do you currently work with or know anyone who is still using: * dBase/Clipper/CLARION/Paradox/other DOS RAD environments on period hardware to run business processes? * CNC…

293 points•mlaux•5 days ago•300 comments•
Do you currently work with or know anyone who is still using:

* dBase/Clipper/CLARION/Paradox/other DOS RAD environments on period hardware to run business processes?

* CNC mills/spectrometers/microscopes/other industrial instruments controlled by ISA cards (either bespoke or standards like GPIB)?

* Anything with a parallel port dongle?

If so, I'd be very interested in hearing your experience here, or feel free to send me an email at the address in my profile. I'm not trying to sell anything, just doing some research for an idea around keeping these going on modern hardware.

300 comments

freeli5 days ago
A certain nuclear power plant had a Windows NT 4.0 machine running as late as 2007. The reason is interesting.

The machine's purpose was to report status of the control rods that mitigate nuclear reactions. Basically, "are the rods inserted, and if so, how many / how far?". I want to emphasize that this was reporting only, NOT control.

The original software was written back in the 80's, when the plant was originally commissioned, for AmigaOS. Of course, it's hard to buy Amigas anymore, and the original one died long ago (nobody remembers when).

So in the mid '90s, the utility purchased an AmigaOS emulator that ran on Windows NT 4.0, which was current at the time. The emulator (IIRC) was developed by a firm in the UK. The firm went out of business sometime in the late '90s. The control rod monitoring software ran under this emulator on top of NT4.

Windows NT 4.0 was the last OS to allow the emulation software direct access to the physical hardware that produced the status signal. Later versions of Windows abstracted the hardware access away, and the monitoring software broke. Because the emulation company had gone belly up, there was no way to fix the incompatibility.

So the utility had a choice: get new hardware/software certified (by NRC?), or keep doing what they were doing with the software (and hardware) that they had. They chose the latter.

So this is how, in 2007, during a tour of the facility, I stumbled across a Pentium 1 system running an AmigaOS emulator on Windows NT 4.0 that was responsible for displaying the status of the control rods of a nuclear power plant.

Spare hardware for this setup was purchased off of eBay and stocked on an adjacent shelf.

justin664 days ago
To me the funny part of this story is that they used to show you this warning as part of the EULA when installing Windows NT 4, which I remember joking about:

NOTE ON JAVA SUPPORT. THE PRODUCT MAY CONTAIN SUPPORT FOR PROGRAMS WRITTEN IN JAVA. JAVA TECHNOLOGY IS NOT FAULT TOLERANT AND IS NOT DESIGNED, MANUFACTURED, OR INTENDED FOR USE OR RESALE AS ONLINE CONTROL EQUIPMENT IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE PERFORMANCE, SUCH AS IN THE OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, AIR TRAFFIC CONTROL, DIRECT LIFE SUPPORT MACHINES, OR WEAPONS SYSTEMS, IN WHICH THE FAILURE OF JAVA TECHNOLOGY COULD LEAD DIRECTLY TO DEATH, PERSONAL INJURY, OR SEVERE PHYSICAL OR ENVIRONMENTAL DAMAGE. Sun Microsystems, Inc. has contractually obligated Microsoft to make this disclaimer.

Also:

The machine's purpose was to report status of the control rods that mitigate nuclear reactions. Basically, "are the rods inserted, and if so, how many / how far?". I want to emphasize that this was reporting only, NOT control.

It would take a whole lot more context to make this somehow comforting. :D

SenHeng4 days ago
> It would take a whole lot more context to make this somehow comforting. :D

This is this fascinating 6 part documentary about the Chernobyl incident explaining how it was caused by bad control rods. But the main point is that control rods prevent the facility from going boom, so be glad it’s not the AmigaOS emulator on a NT machine handling it.

Froedlich5 days ago
A friend works for an airline as a flight simulator tech. Their entire software stack, including the compiler and OS, is FAA-certified.

Then their ancient Honeywell(?) mainframes reached end-of-life they scouted for compatible hardware, of which there was none. The cost of certifying new software, plus the time involved, was astronomical. So, after consulting with the FAA, they paid a hardware company to clone the ancient mainframes in modern silicon. The FAA signed off on it, and they had all-new computers - much smaller than the originals - running the old stack.

bitwize3 days ago
There's a mechanical tank simulator at the Swiss Military Museum that was built in the 1970s and used for actual service before being retired and becoming a museum piece:

https://www.youtube.com/watch?v=AcQifPHcMLE

The simulator has a simulated cockpit for the user, which controls an armature with a camera attached that is piloted around a miniature battlefield environment and provides a video feed to the cockpit. A "foot" on the armature senses terrain elevation changes, which are then supplied as movement feedback to the simulated tank cockpit. All of this was controlled by a 1970s mainframe, for which replacement parts were unavailable so it was replaced, in the museum exhibit, with a Raspberry Pi.

It looks like hardware emulation was NOT used; rather, they translated the original program from paper printouts to a modern programming language: https://www.raspberrypi.com/news/simulate-driving-a-1970s-ta...

zx80805 days ago
It's _very_ hard to believe some company to simply "clone the mainframe" into chip. Mind sharing any link to this effort?
fsckboy4 days ago
>Then their ancient Honeywell(?) mainframes...

https://en.wikipedia.org/wiki/GE-600_series from the 36-bit era which turned out to be a sweet-spot for Lisp; also "famous" for running Multics (old joke flipped: "which was many of whatever unix is one of")

GE sold it's division to Honeywell, and from there to Group Bull (French) and then to NEC (Japan)

betaby5 days ago
That's interesting. That means there are fewer checks for hardware than software?
CobaltFire5 days ago
Having worked on nuclear plants (as a reactor operator) around that time this doesn't surprise me in the least.

Thats far more advanced than the systems I worked with, one of which reported rod position via resistance measurement on a brushed cylinder (one for angular and one for depth).

Cleaning and calibrating those was a constant maintenance item every time the reactor was shut down.

throwaway20375 days ago
This is a great post. How does someone write software that needs to run for ~50 years where the hardware will need to be replaced with non-equivalent, newer hardware? If I were facing this issue today, I might start with an OS that has excellent emulation. Example: Can I run 32-bit MS Windows 95 via emulation on a variety of current 64-bit OSes, like MS Windows, Linux, AIX, HP-UX, etc. If yes, then we can assume(?) this emulation will remain relatively stable even if we upgrade our hardware later. Maybe I am overthinking the whole problem: Can VMs do exactly what I want today? Will VMs running ancient OSes, such as 32-bit MS Windows 95, continue to be stable/viable in the future? I am unsure.
ninalanyon4 days ago
Make sure that you have as thorough a specification of what the system is supposed to do as you can.

Then define the version control system and the build process, specifying the dependencies, and so on.

Think about any opaque blobs in the system and try to eliminate them so that you have plain text source code so that no tools are needed to read the code.

Make sure that the build process runs entirely locally and never fetches anything from outside.

Simplify everything, use only tools and languages that are well understood and supported.

The real problems are not strictly technical but social: how do you prevent loss of the code, the tools, the specification, how do you maintain the expertise needed to maintain it. How do you ensure that all those things that are obvious to you now are written down in all their gory detail so that your great grandchildren will not apply their new and different preconceived ideas to the system?

Document all this on paper as well as electronic storage, make sure that version ids are recorded on every page as well as being available to the user of the machine or program.

In the industry in which I worked for the last thirty years of my career it was not uncommon to have things come back for repair after fifty years use and to be able to consult the original drawings and bill of materials so that exact replacement parts could be made.

jl64 days ago
> How does someone write software that needs to run for ~50 years where the hardware will need to be replaced with non-equivalent, newer hardware?

Some ideas:

Write it in a popular language/ecosystem, stick rigidly to well-defined APIs, use commodity hardware, flatten out any malignant cleverness, maintain documentation on why every part does the thing it does, and make the source code readily available.

This is based on working with some very old systems, and each point above is the opposite of something that made life harder.

pianopatrick4 days ago
Wasn't there some idea that went like "if something has been around for x years, it will likely be around for x more years"?

Maybe follow that. It's 2026 right now. What way of writing code would have worked 50 years ago (1976) that still works today?

Well, C, SQL and Lisp were all around 50 years ago and still exist today.

In terms of hardware, 50 years ago there was intel 8080. apparently code for that can still work via emulation today.

So if you wrote C for low level, Lisp for high level, and compiled the software to run in an Intel 8080 emulator, that combo would likely still work in 50 years.

brudgers4 days ago
run for ~50 years where the hardware will need to be replaced

If it needs to run for fifty years, specify hardware that has a long support cycle such as Mil-Spec.

That’s why the Z80 was around for so long and why so many companies in the 80’s and 90’s still deigned around it. (1)

If you let programmers drive system design, winding up with an “Amiga” in your certified design is a more probable outcome…

(1) there’s a moderate chance that new hardware that can run Z80 code will be around fifty years from now.

dmos625 days ago
> how does someone write software that needs to run for ~50 years where the hardware will need to be replaced with non-equivalent, newer hardware?

Make it open-source, or don't buy without source.

TMWNN5 days ago
>So this is how, in 2007, during a tour of the facility, I stumbled across a Pentium 1 system running an AmigaOS emulator on Windows NT 4.0 that was responsible for displaying the status of the control rods of a nuclear power plant.

Vernor Vinge's A Deepness in the Sky depicts a human society thousands of years in the future, in which pretty much all software has already been written; it's just a matter of finding it. So programmer-archaeologists search archives and run code on emulators in emulators in emulators as far back as needed. <https://web.archive.org/web/20231114211656/http://www.gareth...>

(Heck, recently I migrated a VM to its third hypervisor. It began as a physical machine a quarter century ago.)

bryanwi4 days ago
[Source: Was NT developer - have code in NT 4.0...]

The big problem will almost always be some hardware dependency that breaks, almost always in I/O. I've seen video software used by TV producers that depended on an ISA (not EISA nor PCI, ISA) card to read NTSC input and impose text over it. And it broke as they were getting ready to add commentary to a live broadcast of a race (which I was driving in.)

The world is full of machine tools and metrology devices that are stuck on some ancient computer/software because they made a weird proprietary protocol over the top of a centronics connector, or some other "WHAT were they thinking??" construction...

All of these could be overcome with a new I/O device, and/or writing a device driver. So using say a raspberry PI that talks ethernet to your "monitor" PC is probably relatively change proof.

If there is any documentation, if anybody can find said docs, if there's budget for a new I/O card and the device driver to go with it. Often the parties who have those resources would rather sell you a new machine tool, metrology machine, or I suppose, nuclear reactor (:-)

Of course, certification is a big deal... A particular certification structure led to the 737 MAX tragedies. And since certifying authorities don't always have detailed tech knowledge of what things are, they have a hard time saying "no, you can't slide that by, you have to build and certify a new thing".

shakna5 days ago
dBase, MS-DOS 3.x, not using industrial anything. And as its a front of house tally machine, there's literally zero incentive to ever upgrade it. Downtime is measured in the yearly reboot, but there are non-operational business hours, so everything is just scheduled around that.

We've already got it running on modern hardware. It's running under qemu. And the dBase stuff gets ripped out and sent to a REST server for broad monitoring and so on.

We... Have one small oddity? There's a tape backup system, that throws everything through the soundcard. (Sound Blaster only.)

Would be nice if onboarders didn't see dBase and just throw everything at AI instead of actually learning the skills they'll need when data migrations happen. But that's a people problem that can't be solved with tech.

stevetron4 days ago
I wouldn't call them business-critical computers, but I do have about 3-4 computers under one of my workbenches dedicated to certain work I did for a client. One of them has an EPROM programmer set-up, which includes a custom ISA-card, and a ribbon cable to an external box with a ZIF-socket. The software for that requires MS-DOS. To network that box, which is a 486SX, I run WFWG 3.11. Since these never go on the enternet or anything outside 'the lab', I don't worry about the old MS networking.

A second computer has an MS-DOS program that captures data input on a pair of RS-422 ports (two more special ISA cards) That let me look at packet data at a low level and watch which serial port received what data, and track character-level handshaking of a proprietary protocol.

A third computer under Windows 2000 ran a 68HC11 cross-compiler that didn't require a dongle. I also used this to run a remote debugger that allowed me to single-step through the 68HC11 code running on the target but moved to the target's RAM. To do this 'properly' I was constantly generating hard-copies from the compiler which would show me the C-code, and the resulting assembler code that I'd track through the debugger. I used a lot of paper on a project sometimes.

A fourth computer with MS-DOS, with WFWG3.11 also installed on it, had all my old CAD programs on it, from before they required dongles, so that I could pull-up drawings of some of the hardware I designed. Some of those were finicky about which mouse I use. I still have an old Logitech mouse C7 that two of my CAD programs required.

I was working on a replacement platform that put this into an Atmel-based controller, shipped a couple of samples, then went blind in one eye, while my client had a stroke and was out of action for a year. Between both of our health problems, that project kind of died.

yitchelle4 days ago
Not MSDOS, but I feel obliged to shared the story of an auto shop in Poland using a Commodore 64 to run the calibration and wheel balancing some years back. It was viral news at the time but worth sharing again.

https://www.youtube.com/watch?v=tXdLtnt-nvE

Original Polish article - https://www.trojmiasto.pl/wiadomosci/Warszatat-samochodowy-z...

sgarland4 days ago
Or McLaren needing to use an ancient, very specific Compaq laptop to service the F1.

https://www.extremetech.com/cars/227828-the-mclaren-f1-super...

Read the full thread on Hacker News →