Imagine, if you will, a time before the Internet, a dark time even before local area networks were common, when communication was done on dialup lines using modems. Amoeba Net dates to that period, the early 1990s. I was working as a contractor at the proving grounds of a large automobile manufacturer, creating an application to manage the checking in and out of cars from the proving grounds. The idea was that each division would have an application on their end that talked to a central database and control application at the gate house. A division would be able to create entries in the database indicating who was allowed to take what cars off site and when (as there were a lot of prototypes on site, this was rather important). The whole thing was to be written using the dBase III database language as compiled using Clipper. The division offices were to be connected to the gate house using short haul modems (also known as a line driver) and twisted pair wiring. The gate house would poll each division office in turn and request updates to the database. Very simple concept, and it worked great in the development lab. But no plan ever survives contact with the enemy.
In this case, the enemy was the local telco, who was also responsible for installing the twisted pair lines between the divisions and the gate house, a few hundred meters to a kilometer at worst. Well, that’s not exactly what happened. We set everything up and began testing, but the signals from the line drivers were just fading into nowhere and weren’t being picked up on the other end. We were able to check continuity and it was there, but the resistance was way too high. As it turned out, the telco had run each set of lines to the local central office (CO), and then back to the gate house, a distance of tens of kilometers instead of under a kilometer. The line drivers simply weren’t built to push the signal that far. The problem was, the project had a hard implement by date, it was coming up fast, and the date the telco gave for correctly wiring things up was way past that. And that’s where lateral thinking comes in.
At the time I was heavily involved with FidoNet and had more than a passing familiarity with Hayes 1200 bps modems. I did a little digging and discovered that you could turn the carrier signal on the modem on and off with AT commands without actually dialing numbers. The records were small, so the speed difference (1200 bps vs 9600 bps) wasn’t an issue, it was just a matter of getting enough modems. We acquired 9 modems, one for the gate house and one for each division and wired them up to the twisted pairs. By turning the carrier off on all the modems, we basically created a modem party line, where everybody was listening in. To send a record to the gatehouse, the sending modem would first check to see if the line was in use (was there a carrier present?), if not, it raised its carrier, which notified the gatehouse computer that someone wanted to talk to it. The gatehouse then raised its carrier and the record was sent to the gatehouse. At the end of the transaction, both modems shut down their carriers and the conversation ended. Sending notifications from the gatehouse to the divisions was slightly (but only slightly) more complicated. The gatehouse would raise its carrier, which would cause the other modems to perk up their ears, it would then broadcast an identifier that told the other modems which of them should raise their carrier. The correct modem would raise carrier and the transaction would be completed, after which both modems would again shutdown. Each transaction had a simple CRC check (as I recall, I based it loosely on the XMODEM protocol), that was used for collision detection. If the gate or division computer got a bad CRC, it was assumed that there was a collision (or some other problem) and the transaction would be retried some random number of seconds later.
All in all, it worked amazingly well. Messages went back and forth between the gatehouse and the divisions and users were able to update the access control lists without an issue. And nobody but the project manager and I knew anything about those Hayes modems.