3 ms·
A few years ago I (briefly) worked for a defense contractor maintaining Jovial and assembly language code for an embedded system using 286 processors and runnin
by jlarocco 14y ago
A few years ago I (briefly) worked for a defense contractor maintaining Jovial and assembly language code for an embedded system using 286 processors and running iRMX.
Work was in progress to create the next generation using more modern hardware and software, but the old system had to be kept up and enhanced until the new version was finished and deployed to all of the remote sites. The biggest impetus for change was the difficulty in finding replacement parts for such obsolete hardware.
Unfortunately, an emulator just wasn't an option. Being a real time system, the timing constraints were too strict. Think of the old DOS games that became insanely fast on more modern hardware, but with more significant consequences. For better or worse, I saw sections of code where there would be, say 16 no-op instructions, and a comment like "The following 16 no-ops give the bit-sync just enough time to finish adjusting before the real signal arrives". Tracking down all the timing dependencies and verifying they still worked on an emulator would have been a nightmare, and probably more difficult than creating a new system from scratch on modern hardware.
All of the dev tools were hosted on a VAX system. Fortunately, this one was able to use an emulator, and it actually ran significantly faster than the real system, and increased compile time dramatically. They still kept the real VAX around in the data center, but at some point the replacement parts and system maintenance costs became too expensive.