One of the products Stevens picked up when they bought Vitel was the VX1100 DCP (Data Collection Platform). In its' time it was a remarkable sophisticated device. It was also very complicated and the code that ran it was as complex a mess as I have ever encountered. It combined a set of sensor inputs, a data logger, and GOES transmitter and a packet radio network protocol, not to mention a list of options as long as your arm, and it was all done with a single 8051 microcontroller. Gawd, what a nightmare. There were special versions for several other countries including Venezeula and India. People were always reporting problems with it and I would go root around in the source code and try and find the piece that was causing the problem. Occasionally I would find a problem, but more often than not, another fire would flare up somewhere else and the VX1100 problem would get sent to the back burner, i.e. forgotten about until the next time there was an issue.
We could have designed, built and tested a new logger in less time than I spent fooling around with this thing. Pound wise, penny foolish.
The code was probably pretty good when it started, but it had been through many hands, mutiple revisions and numerous additions. When it got to me, it was more than my little brain could comprehend. On top of all this, there were complex setup procedures that needed to be done in order to test many of these situations, and these complex configuration details were stored in RAM, which forgot everything you told it when you turned the power off, which you had to do every time you changed the EPROM. Now that I think about it, we should have had a separate power switch for the EPROM that would enable us to change it without wiping the RAM. Well, it probably would not have been that simple, but if I had had a chance to work on for more than a couple of weeks at a time, I might have come up with something. Some of the code was pretty good, but they were sections that looked they had been run through a meat grinder. They made absolutely no sense.
The worst part was there was no specification on what it was supposed to produce. The only thing we knew is that people were using it and it worked. So we had to duplicate their setups, run the system and see what it produced, then go back into the source code and see if I could figure out how it had arrived at the answer. What a pile of poo.