* 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.
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.
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
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.
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.
Compuserve also had a software dependency on the PDP-10 and Decsystem 20, and when those machines were no longer available they bought a company making clones so they could continue to manufacture them for themselves. The company they bought, Microsolutions, was Mark Cuban's first startup.
making clones of mainframes (IBM's) had been a big area of intellectual property litigation, but also facing monopolization investigations, IBM had to allow them. They were referred to as "plug compatibles".
It's not hard to imagine a similar system fabricated around an open or licensed processor core today being well within the budget of a major airline today.
Software emulation would no doubt be less expensive, but there could have been regulatory reasons for building plug-compatible hardware.
[1] https://en.wikipedia.org/wiki/PC-based_IBM_mainframe-compati...
Cannot refrain myself from asking why ...
Time-evolution: P1 is deprecated, replaced by uncertified P2, but S1 remains certified.. just nowhere certified to run yet.
Solution: There's another software S2 which originally vouched for P1, itself still certified, which can still be used to certify P2.
Counterfactual?: If S1 were deprecated in favor of new S3.. there'd be no plan to certify it!
The problem: None of this actually makes any sense! But we're trying to fake due diligence. Everyone knows the hardware/platforms kinda need to be certified with respect to each other anyway, but if we did it that way it would all be even more expensive an time-consuming.
In a case where something is safety critical the computer is super important as very subtle errors could cause catastrophic consequences. This is why you get into things like running software on 3+ computers concurrently depending on how fail-safe something has to be.
Particularly when the task here is "just" to measure some rod positions in a constrained 3D space ...
https://www.computerhistory.org/collections/catalog/10277383... https://www.twenex.org/?network
as far as i know the control plane on their equipment is still a pdp-10 compatible
FWIW I'm developing "tiny-titan", a stand-in for Cambridge's Titan mainframe that talks to Heinz Lemke's 1972 PIXIE program over an emulated version of Neil Wiseman's PDP-7 <=> Titan link. It doesn't emulate Titan itself, just the conversation PIXIE had with it, so the unmodified 1972 PDP-7 code dials home and uploads its drawings.
https://en.wikipedia.org/wiki/Titan_(1963_computer)
>Titan was the prototype of the Atlas 2 computer developed by Ferranti and the University of Cambridge Mathematical Laboratory in Cambridge, England. It was designed starting in 1963, and in operation from 1964 to 1973.
https://news.ycombinator.com/item?id=49407938
https://news.ycombinator.com/item?id=40617894
Flight of the PIXIE - Yuja Wang:
https://www.youtube.com/watch?v=jDrqR9XssJI
UNIVERSITY MATHEMATICAL LABORATORY, CAMBRIDGE: Cambridge Supervisor - Planning Document 10 Software for the Titan/PDP-7 link:
https://cucps.soc.srcf.net/titan/supplan/pd10.htm
Here is a photo of Heinz Lemke operating PIXIE with the light pen and 340 display on the PDP-7 (also seen in the video above):
https://www.facebook.com/groups/779220482206901/posts/629772...
I am interested in how firmware is treated, since perhaps in the case of these old machines it's small enough to be analyzable or at least cloned bit-for-bit.
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)
[1] https://man.freebsd.org/cgi/man.cgi?query=passwd&apropos=0&s...
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.
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.
I’d go for “universal and timeless”, which has meant C for several decades now. There is, I’d concede, a reasonable chance that Rust obtains that label in our lifetimes.
Neither is popular when compared to for example Python or PHP, but they both have cultures that care about stability in the core runtime and the libraries. Most folks probably don’t know that about Erlang and maybe think it’s some new whiz-bang thing, but Erlang is incredibly stable and well supported by a dedicated team that has been doing it for years and years at this point. I don’t know if Erlang will be more or less popular in 20 years but it 100% will be around and be receiving updates, I would put money on it.
Today’s landscape is shaped by the pandemic. In between, there were many years of impracticality.
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.
Then it becomes impossible to introduce database connection pool. Well, probably possible, but in single-process multithread server this is BSc grade job, and in multi-process server this is PhD grade job. libmysqlserver and others maintain some context near to the socket, in opaque way. Hard to pass context between processes. At least, hard to return used connection back to pool in main process. Proxy is also not an easy walk.
On client side although Windows NT had POSIX layer, and XP/2003 still had Interix SFU. But Windows Vista broke SFU. But then Vista has got SUA. But SUA was not binary compatible, required recompilation. And as of Windows 10 there was surely no SUA. Was it dropped in Windows 8? Windows 10 has got WSL eventually, but there was a gap between SUA and WSL. And deploying Windows application with SFU, SUA or WSL part is not easy walk. Writing installer is MSc grade job.
Then comes iPhone OS and Android. They are POSIX OSes. Kind of. But spawning external processes is prohibited or not desirable. This is what was blocking LaTeX adoption on mobiles.
That may not work for network connected software with lots of requests per second. But such software did not exist too much in 1976 either as there was not very much networking going on.
As for networking, both the ARPANET and Ethernet predate 1976, though neither were ubiqutitous and most high-volume networking would have been mainframes and related hardware connected via leased lines.
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.
Make it open-source, or don't buy without source.
Or, more broadly, in the context of any situation where the software is closely coupled to a specific operating system and/or hardware.
Having the source code would have helped tremendously, but might not have been sufficient because of the hardware story and the regulatory approval factor.
I thought "but what is the problem to generate EXE with relocation?" and tried GCC GNAT (from 2017), and GCC said no. EXE and DLL formats are very much the same, but GCC is completely unable to generate relocatable EXE. A very suprising discovery. More recent toolkits became aware that adding relocation to EXE is not a rocket science, just do the same like in DLL. But these recent toolkits may call APIs that HX DOS Extender does not support yet.
You in a lot of ways have to respect the ability to have done this in the first place, compared to todays slopware which manages to break within 1-2 mandatory OS update cycles.
IBM SOM executes on Windows 10. I have checked Visual Age for C++ Direct2SOM extensions, OpenDoc for Windows. Very good. 32-bit i386, but otherwise runnable, usable.
And Java is hard to build, hard to execute on modern Java toolkit. Java seemingly had no List, and authors made their own List, but when Java also got its List, that breaks the build. When building problems are resolved, runtime problems come. Original Java was seemingly fine with Property key being object, but modern Java only wants strings. And Property-based dictionaries are all around. PMtW is about building VMT, and there is multiple class inheritance in PMtW model, not matching Java's comparably limited OOP. So PMtW is building dictionaries for methods to support what is described in book, and foundational Java class is malfunctioning.
I did not finish this road, don't know so what does it take after all to run Java code from 1998 on modern Java toolkit. So far looks pathetic compared to Win32 programming.
But Windows 95 would be a poor choice, as you'd be stuck emulating a bunch of very specific aspects of both Windows (non-Unicode APIs, 16-bit application support, etc.) and the PC archictecture (BIOS, A20 gate, etc.) that exist only to maintain backwards compatibility.
If Windows is a requirement, you'd be better off building against something like the subset of Win32 APIs that has been stable since Windows Server 2003 and ideally testing against Wine, contributing patches as necessary.
If it were me, though, and it was something that required a general-purpose, non-realtime OS, and wasn't so performance-sensitive as to require deep integration with platform-specific APIs, my first thought is to target a Linux-compatible subset of FreeBSD, which should be enough to get you most of POSIX and then some, plus a full-featured GUI if necessary, portable between two open-source OSes that run on a wide variety of hardware.
ChatGPT says, "likely to need manual conversion". So no Fortran hasn't been stable. In another post I showed that C hasn't either.
Though people often decry it (due to the many, many footguns), writing something in Shell/BASH will make it trivial to move to newer machines.
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.
Coincidently, that's where my father was working as a programmer until the shutdown of the plant.
Anyways, he was maintaining a bunch of systems related to collecting data from environment monitoring sensors around the plant. In mid 2000s or so he showed me some data collecting machines using what looked like DOS text UI that mentioned being written in Leningrad, 1989 or 1988.
The software was running in an emulator on Linux, which my father used to replace original x86-compatible machines runninh dos.
Pretty sure thr whole thing was running for quite a while since my family moved elsewhere.
(Probably not literally true. But functionally true in the sense that they were likely transmitted via infected floppy disks, of which there'd be virtually none left in the wild in 2007)
https://en.wikipedia.org/wiki/Lamer_Exterminator
(Also, in my experience, what the auditors think the rules are and what is written down can often be divergent and even contradictory)
Sounds interesting, could you elaborate?
The next level is that the rules are kind of vague or unclear and so different auditors will have different interpretation of it. You can try to fight it but ultimately the auditor is who needs to sign off on it. This is also why switching auditors can be a right pain.
Then you get interpretations which are flat out contradicted by the rules. Sometimes this is necessary to make the rules work (there's some blanket rule that's impractical to impossible to apply literally, so the auditors contort some interpretation that's more workable), sometimes it's just incompetence, and when it's wrong enough to matter sometimes it's easier to just go along with it than try to escalate the issue with the auditor.
You can also get situations where the auditor has their own pet rules, which aren't written down anywhere, but they will become much more adversarial if they are not followed (sometimes they'll outright tell you what they are, sometimes it's a guessing game).
I'm curious what changed in Windows 2000 that would have broken the emulator, though, as direct hardware access in any version of Window NT requires a driver, and I don't recall any major breaking changes to the driver architecture between NT 4 and Vista.
* https://news.ycombinator.com/item?id=49763972
They've reportedly already tried, and failed, to replace it with a more modern system.
lol. I know a ... factory, that had a BBC model B (with a rather complicated wiring loom) still doing a job around that time.
The IT supplier at the same factory went to a museum in Cambs. around late '90s, early '00s to ask if they could buy an exhibit because something had failed locally. The museum gave them the part.
That was just aerospace and nothing fancy like your nuke plant!
https://nixsys.com/products/nx370-t90
There are some things I don't understand about the OP's constraints (are you sure you can't run that Amiga VM on a newer version of Windows, or better yet, run that Amiga-based software on one of the currently supported Amiga VMs?). But they can probably pretty easily keep going as they're going with this software until some other, more significant thing in that plant becomes fully obsolete and the place is shut down.
Far more concerning from a RISKS point of view is the spare parts being physically in the same place as the live machine.
What other program? Most DOS versions were not multi-tasking beyond "terminate-and-stay-resident" (TSR) programs like mouse drivers.
Whatever application you ran on DOS was THE application your computer was running.
Top parent of this thread is talking about a package for AmigaOS being run on a bespoke emulator (as the Unusable Amiga Emulator of the 90s wasn’t really a thing that could be used for that)
To put this in perspective, NT 4 was released in 1996, 11 years before 2007. That’s roughly the same as someone running Windows 10 today, which a lot of people still do. The Pentium 1 was only 14 years old at most. These parts of the system shouldn’t be surprising.
The AmigaOS and software from the 80s are of course the older more interesting bits, but for critical infrastructure and safety, shouldn’t we expect and design for our hardware and software to last a long time, and not try to keep up with tech fads every decade? I feel like the main problem isn’t hardware or software that’s old, but that there wasn’t a longevity plan.
It’s always been an interesting question how to write software that will last a hundred years. Maybe with AI this is the first time in history that planning to port & upgrade to new hardware every 5-10 years seems totally reasonable.
While true the situation is different. Hardware and software moved a lot faster in the 90's and early 2000's. Everything has matured, is far more standardized, and moves more slowly now. Hardware from 11 years ago when Win10 was released isn't that different from today's hardware. Same goes for Win10 and Win11.
Windows 2000 (NT 5.0) was released in 1999. Vista was NT 6, and released in 2006.
It wouldn’t make a huge difference to me if 6 was released either 6 months earlier or 6 months later. In 2007, NT4 was only 1 major version behind for most people; adoption takes time. The broad timing of major versions being 4-5 years apart didn’t change until Windows 11, and we don’t know if that’s an outlier yet, but we do know that Microsoft has been changing the Windows release strategy, with more frequent updates. https://endoflife.date/windows
If it ain't broke, don't 'fix' it.
I completely get the decisions over time here, but it's unsettling having a relevant piece of software (reports are important too!) working on with parts from ebay, in 50 years time they might be gone.
That's to say nothing about opinions of open source that rival early 2000s Microsoft.
For old ass critical software and hardware, the org can always have a backlog of hardware and contingency plans (paying someone to fix the hardware, paying someone to create a fully certified and modern solution..) for when they start running out of parts.
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.)
This is how we would end up with nuclear disasters, not because the technology is bad, but purely because of mismanagement and human negligence.
Safety and reliability come from understanding the system. Something that's old but that you know everything about is far safer than something new. This risk is that the people who know move on, or the sources of replacement parts stop working, or that other things around the system change. Then the risk curve inverts and you find the old system more of a liability than a asset.
Almost always people choose to update things either too early or too late. Knowing when to do something is hard.
I guess that kind of thinking is what led to the collapse of ancient civilisations like why even bother to improve anything and let everything decay and die out
I think almost nobody from that era would have believed you if you told them that more than 50 years later not a single human would have traveled beyond low Earth orbit, and that we'd now be struggling to recreate what we did in 1969. Furthermore a significant chunk of the world doesn't even believe we landed on the Moon anymore, no doubt in part because of this apparent anachronism.
It's not like there was any sort of collective or even singular decision to just let things die out. I mean sure Nixon did his thing intentionally, but even as a President in the golden years of the US, he was still just one man.
- profit, if a system generates it, people will keep the system running.
- dilligence, usually driven by personal idealism, and unrewarded.
- legal or financial penalties, or insurance costs.
- it has collapsed to a temporarily stable state for now.
For another comment I was looking at the Grenfell Tower fire in the UK around 2017 and the people who lived there had been raising fire risks for years and the landlord (management organization) and the council had been ignoring them, and ignoring the fire department. The companies which replaced the cladding on the tower with flammable cladding were choosing the cheaper flammable option and pointing fingers as well. And during the fire, the fire service had never dealt with such a big fire and didn't have a truck with a long ladder, didn't have extended-breathing gear, had radio problems, water pressure problems from the local water company (who deny that).
This kind of backstory is typical for disasters, and for IT outages - and I've taken to believing that if something "should work" but wasn't tested recently then you should expect that it doesn't work. This is a common saying in backups (you need to test restoring), but it seems to apply everywhere. Backup internet connections that don't have enough bandwidth for the company to keep running. Disaster recovery sites that share resources with the production site. 'Disaster recovery' that recovered into a remote site, but they couldn't do CAD work remotely over their slow connection so it was still disastrous. Multiple power feeds but they were cross-wired so one failing still functionall took down everything.
If knowledge transfer "should be happening" but it's not critical to a job, or it's not profitable, or it's not legally required and audited, then it isn't happening. Subject to the dilligent idealist employee mentioned above who are temporary in the long view. Management's involvement seems not to arrange the larger system to effectively shoulder responsibility, but rather find ways to avoid personal blame while cutting costs beyond the point where everything that needs to happen keeps happening.
That's just lazy thinking, and probably a sign you've never been a manager. For all the responsibility to lie with management you'd have to be leading people who enthusiastically do what they're asked to do, raise problems, document things, follow processes, and make sure everything is handed over to the next person when they leave.
That's not how people are. They'll have times when they're unmotivated, underpaid, grumpy, over-worked so they miss things, etc. That's when the organisational tech debt starts piling up, and there's nothing a manager can do to stop it except manage it as best they can even though they're under the same pressure, with the same lack of motivation and crap pay as everyone else.
It's so easy to think you can fix it just by keeping on top of it and micromanaging where it starts to show up. It doesn't work that way.
These two (and many others) are well within management’s purview.
> … there's nothing a manager can do … [emphasis added]
Right, but Management (capitalized and plural) can. A manager should report, and management should fix - if not, it’s management’s fault.
The fact that you're willing to absolve an individual manager but still believe Management can fix the problems is a big part of the problem. The Management usually includes the last person in the chain who has the ultimate decision making power. If you assume that when I said 'a manager' I meant that person, it should be fairly obvious that even they don't have unlimited budget or unlimited time, and they can only try to fix problems they hear about. Within those constraints Management are still going to find fixing systemic problems hard.
It's very easy to look at something with hindsight and think the outcome should have been predicted and corrected. If you look at the real world you'll see that just isn't the case. Personally, I wish we had a lot more people applying some systems thinking approaches to at least consider the second- and third-order impacts of their decisions but I imagine that won't ever happen. It makes me sad because it's actually really interesting.
I'm pretty sure constant upgrading would be more likely to cause disasters.
Same reason why MTA in NYC still operates subway using 100 y/o signaling hardware on most of the lines.
In a way, your comment and the responses you get is a perfect allegory to inexperienced vs experienced engineering.
The designs for the electrified track switches were made by one company which was sold, re-sold, and then burned down and the designs lost, and there isn't anywhere else to buy them because nowhere else uses such old track design anymore, so not only is Toronto struggling to buy parts to continue electrifying the manual junctions, it's struggling to custom-make enough replacement parts to keep the aging electric switches working faster than they fail.
And they were using trolley poles to connect to the overhead power lines instead of Pantographs until 2017, 50-100 years after everywhere else, which meant a) they couldn't get enough power through them to run air conditioning, and b) they are more likely to fall off the power line and the tram stops and the driver has to get out and reconnect them, and c) their newer trams now have to have custom dual-power connections to go through older parts of the network, and d) the carbon shoes on the trolley poles wear out quicker which means the trams are dirtier and taken out of service for maintenance more often in the wet which is when people want to use trams more.
[1] https://youtu.be/HhQxNHrD6fA?t=2311
Also, I happen to be familiar with NotJustBikes, watch regularly. I don't see this as the same kind of problem. What you explained is clearly BROKE. What we're talking about works just fine and migration to newer technology doesn't provide advantages outside easier maintenance. It can't be justifies by costs, either.
I understand that way of thinking for a small business computer system. Not for a critical infrastructure. Also if people actually thought about like that we would still be in stone age, like why invent something new or use a new technology? Keep on using rocks to crack nuts and kill animals
Replacing the relays in old telephone switches is a problem because they use so many weirdly specific types of relays - but those systems are only found in museums now. I believe track control uses fairly ordinary DPDT, etc., relay designs.
They moved a booth or something and the compartment it was stuffed in was missed during the cleanout. The thing was working for at least 20 years and may still be there!
I worked with a client that had a cash disbursement system working on an ancient dBase 16-bit application. They had a very difficult to change process that required multiple transactions because the system couldn't represent the dollar amounts appropriately.
For non-perishable things - i.e technologies, ideas, books, institutions - the expected remaining lifespan is roughly proportional to how long they have already survived
Time acts as a filter: what has already withstood a long stretch of disorder is more robust, so the longer it lasts, the longer it is expected to last.
The old nuclear software running on mainframes have passed the test of time. The new software, has yet to.
Nassim Taleb talks about this at length in his book, Antifragile.
Same reason they don't modernize health care infrastructure. It's too expensive, people die if they get it wrong and they get voted out of office for their troubles.
Relevant: https://www.joelonsoftware.com/2000/04/06/things-you-should-...
Chernobyl is the perfect example to not use outdated old technology. Had they used the modern western technology at that time to upgrade their nuclear reactors the kill switch would have prevented the whole disaster instead of increasing the neutrons make the core a nuclear bomb.
Next time educate yourself with facts before making a fool out of yourself
Wikipedia's pages on Chernobyl say that construction started in 1972 and the problem with the control rods causing an initial spike of power was discovered in 1983 ?
[1] https://en.wikipedia.org/wiki/Chernobyl_Nuclear_Power_Plant
[2] https://en.wikipedia.org/wiki/Chernobyl_disaster#Accident_se... (search 'Ignalina nuclear power plant')
But you are aware that this thread is about a reactor in the west, that "updated" their certified hardware to a VM instead running on windows NT?
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".
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.
https://www.youtube.com/watch?v=tXdLtnt-nvE
Original Polish article - https://www.trojmiasto.pl/wiadomosci/Warszatat-samochodowy-z...
https://www.extremetech.com/cars/227828-the-mclaren-f1-super...
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.
The newer version of that anaylzer, STA Compact Max [2] has mostly the same analyzer hardware, but newer ITX board inside. It runs Windows (XP, 7, 10...). Bugs galore.
I know labs that used a Beckman-Coulter HmX hematology analyzer [3] until 2015 or so. That machine is attached to an external MS-DOS computer via a very thick cable and an ISA board. The cable connector looked a bit like a 68-pin SCSI-3. The software used VGA graphics mode.
Some of theses solutions are built upon common PLCs but some are built as standalone solutions when I/O are simple enough (modbus mainly, RS232/422/485, ethernet/IP, controlnet, ...). Seen lot of them in breeding nutrition management systems, in-house developped processes, ...
With the advent of USB and SATA we ceased to be able to source industrial embedded x86 boards which could run the application. At the time this was with Novell DR-DOS, which was relatively modern in terms of hardware support but still behind the times and we were struggling to manufacture new systems. The company was very small, so a full rewrite was investigated--I did a prototype using PostgreSQL and Gtkmm--but it wasn't realistic. Today, an AI could probably do a full rewrite in a day or two, including migration tooling. Back then, it would have been a multi-year effort for one person given the application's size and complexity.
My solution was to run Linux since it had full support for the hardware. Debian Sarge at the time. This used a Perl frontend and dialog(1) to present a simple menu system at startup. This did backups, software updates (over dialup!), remote access for support (again over dialup), ran backups and ran the main application. It would start DOSEMU which provided the application with VGA display, COM ports and parallel ports for the application to drive "directly" (from its perspective). It also used Samba and CUPS to provide the DOS environment with shared network drives with exclusive byte-range file locking needed for the multi-user network database to work with concurrent users without data corruption, and also multi-user report printing and receipt printing.
I left the company a year after this was put into full production, but the last I heard it kept the company viable with a supportable product for many years after until its owners retired. This kept software from the early 1990s running well into the 2010s, and there are likely still sites running it to this day.
A FTSE 100 company I used to work for, still maintains a SCO UNIX machine that was first installed in 1993. It hasn't had any upgrades since, has specialist hardware in it, and still has an IP stack that is classful (ie. no subnet masks, 10.x.x.x is always a /8). It runs in a 100% airgapped network, and it isn't essential to keeping the core companies operations, but it is a ticking time bomb nobody seems to want to address that will cause a lot of distruption when it finally dies.
Also I was recently (very lightly) involved in a consultancy project to remove an OS/2 based point of sale system for a small local retailer with 6 stores.
They do not even have an OS!
After September 11, 2001, somebody came in from the federal government and ordered Windows XP to be the minimum OS for some security issue. The person who had to update that system said a 233 MHz machine was too-slow for XP, and she didn't have a replacement computer, she was already short on computers.
The next time I saw it, it was running XP.
They run on punch tape.
So this Apple ][ is connected to simulate the punch tape reader, and send the (I think) G-code commands to the machine. So it's now a CNC, managed by an Apple ][.
In 30 years time it will all be outdated... But emulators will exist and a business process in 2050 that still depended on something I built today could still run with minimal effort or risk.
Closest I got was with a GOTEK and an ESP32 emulating a USB. But it was flaky so I dropped it for now.
The bevel gear generator setup was some formula calculations running in version 1 of TK!solver, which would have been a $5000 upgrade to get the latest version, so they ran them under MS-DOS in DOSbox, and saved the grief.
Without that software, they would have to pay Gleason $500+ to do the calculations for each new gear setup.
There are strong and reasonable reasons to keep very old systems alive in offline production environments.
Edit: There is no required hardware, however maintaining a stable serial connection through a VM and timing issues due to faster hardware has been fun.
We managed to virtualise it and then run it in a VM, and it needed a couple of USB-to-serial adapters passing through as well.
We're also finding some kiosks are running Shockwave Flash apps provided by companies that are no longer trading. We can decompile the files to extract the assets but at some point it's easier to just replace completely.
What do you use for VMs these days?
I have a client with some business software that runs on DOS. They have a dozen seats. A single Linux server gives serves a dozen VNC sessions with the software running in DOSEMU. Printing is done with the Linux print stack and three Ethernet print servers.
It has been working without a hitch since 2008. Oh, so has the server, which is a VirtualBox VM.
Keeping old hardware running is very fragile. Most spare parts are decades old now too, and nobody knows if they still work properly.
The DMA might actually be the easy part.
The main concern is how many VM exits per second a modern CPU can handle. Even though the interface is "slow", you can probably do ~500k to 1 million IN/OUTs or MOVs per second to ISA. You'd have to trap (VM exit) every access to a IO port or memory within the ISA window.
During the pandemic I cobbled together a KVM-accelerated emulator for an old 386EX based board I had and trapping every memory access to IO was slower than the real hardware.
https://en.wikipedia.org/wiki/Low_Pin_Count#ISA-compatible_o...
https://www.youtube.com/watch?v=putHMSzu5og&t=208s
https://github.com/rasteri/dISAppointment
ISA motherboards still work and have been mass produced in the hundreds of millions. (I have about a dozen in my retro closet.)
The esoteric ISA expansion cards would be the bottleneck, not the motherboards.
With a modern 4 GHz CPU, that means your budget is only 4000 clocks per interrupt. The context save alone can make it hard to hit 1MHz, and you really want to have your interrupt code pinned to the L1 cache because a few memory reads will blow your entire budget.
As nice as USB4 is, I’ve never heard anyone claim it has single-digit microsecond latency, to say nothing of sub-microsecond latency. The typically-quoted ~20 usec latency of USB4 limits it to around 50 kHz for an emulated ISA card.
At the same time ISA card will never reach 40Gbps throughout with CPU clocking at tens of MHz only or often less.
https://www.reddit.com/r/vintagecomputing/comments/jbaw38/is... (2020)
ISA-over-USB, using real ISA cards in an emulator
https://github.com/Manawyrm/ISASTM/
Your use of “when” is interesting - suggests it’s not that occasional. Wonder what people are doing with these nowadays.
I suspect he could have found a way to use a newer computer, but if it ain’t broke…
The cost of upgrading to modern software and hardware is substantial, plus the learning curve for something I only do rarely nowadays.
They have what are called "supertitles" [0] so that people can follow along with what the opera singers are actually saying. There is one on the back of each seat in the theater.
As near as I can figure, it's basically hundreds of LCD displays on some kind of bus network and connected to a computer via serial connection aka "D pin connector".
The software only runs on Windows XP and he has to keep finding old Windows XP machines on eBay in order to keep it working. I think he also has a couple hard drive images of the working OS + software.
I had suggested using a USB to D pin adapter and then use an LLM to sniff the protocol and then reverse engineer it.
His response:
"It HAS to work correctly. In 30 years we've never had an outage with the old system."
0 - https://en.wikipedia.org/wiki/Surtitles
You're right, it is a bunch of LCDs on a bus (iirc rs485).
The Field PG has also another special port called "MPI/Profibus" for S7 PLCs, 2 Ethernet ports and a DVD drive.
https://support.industry.siemens.com/cs/document/109766662/d...
To give you an idea of the complexity of the manufacturing lines, shutting the machines down and starting them back up again was measured in days. Upgrading them would be obscenely expensive, let alone replacing them, just in the opportunity cost of not making anything alone.
The last machines with dock port have 6th gen Core CPUs (Latitude E5x70), or 7th gen for Precision 7x20.
It is possible, perhaps almost a certainly, that the company did not own the source code for the application and could or would not attempt to rewrite it to work with a modern operating system.
This is a top brand name company, so it isn't like they couldn't throw money at the problem, but with the number of lines in the number of plants they had, there wasn't really any reason to not keep the old hardware running (sans Internet connection).
i do not have exp myself but i found it a delightful reasoning. i told him modern PC could also do the same on modern OS (ncurses or ratatui or so maybe) but that if he ask a programmer to make an upgrade he'd need to find the right kind of guy. He had someone do it few times but they came back with web interfaces.
I'm pretty sure they moved on from them, but a while ago I did seasonal work for a company that rented out scanners for year end inventory (tax related, IIRC). The scanners had to be "cooked" (flashed) on racks, boxed, and sent. The flashing usually worked, but on occasion, the scanner would fail the checksum or something and drop you into a DOS prompt.
(He was a good contractor, so clearly having the latest billing software is not the deciding factor in that.)
And I would even bet that in most cases you could run a solution on a sub $10 board from aliexpress.
I have two Customers who use DOS applications under DOSBox (a Clipper-based accounting package at one, and a Symantec Q&A-based application at another).
We still use dBase files in some point as transient format, not using dBase as such though. Oh, and plenty of positional text files, but that's more a question of interop with partners.
It was a test/repair bench for military aircraft avionics, with the only flying platform left using it being the legacy F/A-18 (A/B/C/D). Harris H-100 minicomputer hooked to an HP terminal and several full racks of GPIB test equipment with half of a rack of solenoids for switching between stimulus and response and which pin.
Not what you asked, but the question brought back memories.
My opinion is that if these guys are still running this gear, they already have a strategy in place (no matter how flawed) and would likely retire before throwing money at something they consider a non problem.
Good luck with the idea. It likely is a tiny niche market with customisation for every customer and given they are normally hardware constrained AI may not be much of a help.
All of them have no money as well.
Lots of forkable code exists to get started with this, QEMU, 86Box, DOSBox, PCjs, MAME, …
And if you do want to go the route of implementing DOS and BIOS interrupts yourself, DOSBox does this.
The BASIC code is very simple by modern standards, and Tcl overlaps BASIC neatly, making conversion easy.
Unfortunately it's just a short-term stopgap to add some features management suddenly can't live without, that weren't practical to implement in BASIC/DOS. They'll replace the whole stack with a commercial product and support contract when they find something they like.
If you don't know, you'd have to pay an expert big money to do that and the migration abandoned just like before, so another decade will go buy until AI does that without permission just because it found a possibility for optimization and it is instructed to do so without human approval, because governments
Just as long as you still have all the documentation and the spec was done right and updated as things changed over the whole lifetime of the system up to now. And a good test harness. And industry-specific knowledge.
The so called "load-bearing gap" you pay experts for.
And by the end of all that, the order will be Faxed. Manually.
Did they tried to email it or automate it. Hell yes. Did it work? No.
[1] https://news.ycombinator.com/item?id=49808023
[2] https://news.ycombinator.com/item?id=49811716
They simply have no reason to modernize. The one big benefit they’d have is an online inventory system but they make most of their money from negotiated bulk orders so there’s zero incentive.
Most of the stuff I've moved over to run in DOSbox but it's still in use occasionally for the software that's difficult to port over.
I recall seeing it connected via a parallel port to a large board that then operates the switches/relays of the hammers.
...which was so the operators could sneakernet their NC tape files into an IBM PC 5150 that thought it was talking to a floppy drive, of course...
...which hosted an ISA card that emulated the punch-tape reader that the NC lathe had originally been designed with.
The NC lathe hadn't missed a beat in 50+ years, why mess with what works?
In other words, these are embedded systems.
If it's a new car dealership, though, they're surely using (relatively) modern systems as well, as there's no way they're using an old DOS system to communicate with manufacturers to order cars, file warranty claims, submit financial reports, obtain service information, …
If I were a serious gamer (I'm not), then I'd get a hardware rig, but otherwise, I've not needed it.
I had a doctor that kept an original NT machine, for many years, because his bespoke app worked on it.
(I can certainly understand why organisations with niche requirements might hang on to old systems for as long as they continue to work, but I'd have thought that school payroll and attendance were much too commonplace to fall into that category)
The company I worked at in the late nineties, used Managing Your Money (MYM) for bookkeeping - initially on a dedicated DOS machine. My colleague set up a DOSEMU-based emulator and moved the software to it (bye-bye, dedicated DOS machine!). Later, he re-wrote it in STk (Scheme w/ Tk bindings, running natively in Linux) as ageneral-purpose transaction storage. ¯\_(ツ)_/¯
I had a job working on VAX/VMS around 2009, but it was actually an emulator running on a PC because they just couldn't find any hardware to fix the VAX. At some point before I joined they had to get a ton of government approvals to use the emulator.
Fortunately they had a project to modernize the whole stack. And it was going to Solaris :-/
In a world that requires security audits etc here's some notes that might help:
Scenarios: You have a device that only talks NetBIOS or even NetBEUI for file sharing. You need to get files to and from it and your CAD workstations run Windows 11 and anything less than SMB 3, with signing and sealing and all that jazz is laughable.
... Devices requiring ftp, telnet, serial over carrier pidgeon
Solution options:
Networking: The first job is to segregate your industrial gear from your general network and you might want to create two or more industrial gear and internet of things type networks with differing access policies. Start with one for now, you can improve it later.
You use 801.1Q VLANS logically or physically (why the hell did I want to write literally?) separate via separate switches.
Please do not skimp on this step. Buy a network bod to sort it out or put your IT bod on a course or hopefully they will have labbed this up at home already!
Comms: Samba is bloody wonderful and speaks everything that MS has ever done and deprecated. Even Samba does need to be asked to start speaking some of those dialects again but it will.
Put a Linux (other Unices are available) box on the same VLAN as your machines. You will need to set quite a few options relating to the minimum version for its server version. When talking to the machines, Samba is the server and when talking to your file server, Samba is the client.
Create a data share on a Windows box on the corp LAN. For example it might be on a file server for multiple access or just a single CAD PC.
Get the Samba box to mount that share to itself at say /srv/data_share_mc1
Now get the Samba box to create a share from /srv/data_share_mc1 which it calls DAT_MC1 (8.3 chars for NetBIOS)
With luck, you should be able to map DAT_MC1 on your machine.
I was in Fairbanks visiting family, I had some downtime, so I decided to do some “slumming” to break up the monotony and relive some of the good old days before I was more boardroom than server room.
Besides, a cool grand for what I figured was 2 hours work appealed to me on some “miss the struggles” level, and it was better than walking around the tourist traps or doing video calls at some depressingly fecund coffee shop.
So, I drive up in my borrowed SUV with peeling paint, grab my trusty tool bag I leave with family for adventures like this, and walk boldly through the doors of this apparently normal retail establishment, clipboard in hand. It was 2019, and the smell of denim and factory pressed shirts wafted through my sensorium as I walked through the awkwardly desynchronized automatic doors.
It was a perfectly normal, somewhat 90s nostalgic retail store.., but walking up the stairs (the elevator was out of service) to the second floor, I could just sense that something was a little off.
The office had a smell. I can’t say what it was, it was businesslike, and not unpleasant, but it spoke to me in an unknown language and I was at that moment curiously heartened that my contract was being paid by a 3rd party. It smelled of stagnant ideas, missed opportunities, and a fossilized board of directors.
I’m not just being colorful here in prose. All of these thoughts were projected into my forebrain by some lizard sense I had developed in 40 years of skulking the halls of enterprises large and small. I was involuntarily imagining a half used tin of bengay on the boardroom table, right by the shiny beige speakerphone with the long stroke buttons and the filthy woven grill.
Curious by now about the flood of intuitions, I treaded the slightly dingy burnt orange carpet tiles up to the POC office, checked in, and was shown the door tot the server room. Through there she said, gesturing at a plain flat golden pine door with the elbow thingy at the top. “Through there, straight through, the door at the back. You can’t miss it. I think it’s unlocked.”
Unconcerned with the casual lack of escort (pretty common really), I opened the door and was immediately transported to surreal alternative world. It was dark, there were tens of flickering screens across to the right and one half hanging, flashing fluorescent fixture dangling precariously from the uni-strut above. The suspended ceiling tiles were about 50 percent in attendance.
Fragments littered the floor, and the door closed behind me with a loud thump. for just a moment I was touched by a singular thought….. (run). I shook it off, by now, far too curious to turn back, come what may.
Briefly thinking of my heavy tool bag as a potential weapon, then realizing the ridiculousness of the notion, I let my eyes adjust as I took in the scene with what I confess could only be described as some kind of unhealthy delight.
This was a large room, easily 800 square feet, and a was clearly dedicated to loss prevention surveillance. There was an epic workstation with 2 giant flat screen monitors front and center, and ten smaller monitors on either side. Most of them were dark, and most of the others were flickering with static.a singular monitor had a poor but recognizable image of a small nondescript room with a small desk and two metal chairs, one on each side of the desk in an overtly adversarial position. The image smelled of stale sweat and musty cardboard.
There was seating for two pilots at the helm of this derelict craft, replete with an impressive array of buttons, strange industrial joysticks, and an oddly out of place black dell workstation keyboard with the cord ripped in half. As I made my way up to admire the helm, I nearly tripped on an extension cord, only catching myself on a water filled trashcan with plastic sheeting aspiring to the heavens up through the dark abyss of the half-intact ceiling, which I only now noticed was comprised entirely (if sparsely) of black painted tiles.
Somehow this jolted me out of my entranced state, and I looked for the door I was supposed to find, quickly locating it towards the back of the room, just as I had been told.
Somehow it seemed like not an ordinary door now. It was with great anticipation and not a little trepidation that I examined the door. It was quite ordinary, really, and the knob was less dusty than it might have been. This was encouraging.
I tried the door, and it opened easily. Opened, that is, to a time 30 years in the past.
The buzzing fluorescent lamps were on and radiating furiously, instantly shattering the wreckage of the surveillance spaceship to smithereens. There was a gigantic, wheeled, beige machine in the middle of the room, about the size of an industrial floor scrubber. It hummed patiently, and featured a dim 10 inch green CRT, a beautifully sculpted beige keyboard, and a little less than a quarter inch of dust. I froze like a tourist gaping at a stegosaur’s nose, but quickly recovered my composure as I remembered I was here on purpose. Conveniently, someone had swept a path through the center of the room, back to the newly installed floor rack with a couple of ciscos, a backup cellular telemetry box, and a pile of screws and a throwaway screwdriver scattered haphazardly on top of one of the routers.
The UPS I was to replace was actually pretty complex to configure, but I very carefully completed it in about 45 minutes including some firmware regressions to accommodate some nonstandard plugin the vendor installed. By very carefully I mean without stepping too hard on the floor, dropping any tools, and afraid to sneeze even though I was under intense respiratory assault from the unavoidable clouds of fine carpet dander that had accumulated on the linoleum tile over years of janitorial malfeasance.
I was terrified to make any sudden moves, because sitting on a stackable plastic chair next to the pliestocene PBX was a beige box. Its fans groaned with the wails of a thousand parched capacitors, and its hard drive made a crunchy rattling sound that seemed entirely improbable for a functioning device. Just visible under the dust on the front was a badge proudly displaying “pentium pro” and a giant cable was fed from the back of the artifact, like an implant from the borg, something I strangely remember as “IBM type 1” token ring wire, though I can’t be sure anymore that means anything at all.
At any rate, it was obvious that the entire on-prem server infrastructure was this ancient and faltering nightmare box, and I knew that a fly landing on it could bring it down. The easy money contract was starting to look like a setup.
With terror in my heart, I finished my work, carefully closed the door, and put as much distance between me and that roiling cauldron of liability as I could. I don’t even remember going back through the wrecked starship, just checking out, and thanking Voltaire that I made it out of there in time.
It now made abundant sense that the job had been left on the board for nearly a month and the contract had kept rising… god only knows how many sensible technicians had noped out of there before I was hypnotized into compliance by the sheer bizarre fascination of the thing.
Poking around afterward, I found that the box apparently was the server that ran the terminals in the tire service area. They also had that fat cable that looked more like waveguide than wire, and it must have been an absolute nightmare to install. It was definitely token ring, humming along in 2019.
Sears closed for good a few months later.
If it goes down, the company gets fined. It happened in the gap between my predecessor leaving, and me being hired.
Fortunately, I don't have to deal with swapping parts. There's an outside contractor on call 24/7 for that.
The last time I saw it was about two years ago when I taped yet another piece of paper to the filing cabinet it sits on reading "DO NOT TURN OFF UNDER PENALTY OF LAW!"
Someone keeps taking the paper down.
Also worked ~2014 DOS slot machines - in next year we ported to Linux
These were for some industrial CNC machines with a poorly version-controlled app (send us the single-file .c for the program, we'll make changes & recompile for you, then send back a new .c and .exe file) that would just malloc() all the memory on the machine for a million element array instead of tracking the 1k or so unit IDs a more efficient way. They were six digits long, it worked... mostly.
I kept a 3.5 floppy with the contents of sys a: that I used to run sys c: after restoring a machine from backup in my office.
EDIT: oh, and of course by "restoring from backup" I mean reversing the xcopy to copy everything from the network drive's copy back to C:
EDIT2: My memory is going, they didn't use malloc() at all, anywhere in the programs, they just had a static million element array.
The box running the QEMU emulators had a bunch of old US Robotics modems hanging off it via USB serial dongles.
https://news.ycombinator.com/item?id=46849567
https://freedos.org/