3 Gordon Drive, P.O.Box 1347 Rockland, Maine 04841 U.S.A.
Find Tools for Your Chip


 

© 2004 Avocet Systems, Inc.
Call Us Today at 207-596-7766 ("Picton Press")
Avocet Systems, Inc. : The Complete Solution for Embedded Systems Development Tools
Embedded Update
An Embedded History - Part 2

Ten issues of the Embedded Update ago we ran a bit of a personal history of the embedded industry. Response was overwhelmingly favorable, so here's another installment.

We left our story with the Intellec 8, an 8008-based development system that used nothing more than an ASR-33 as both "mass storage" (via the paper tape), and console.

I worked for a company that built grain analyzers - a scanning monochrometer shined about a thousand frequencies of IR light at a sample of grain - wheat, barley, and the like. Detectors sampled the reflected IR, amplified it by numerous orders of magnitude, and digitized the signal before sending it to the 8008-based controller. The first computerized version had a 4k program - unbelievably tiny by today's standards, huge by those of the day. It took 16 ROMs (1702s, the only game in town at the time, had a whopping 256 byte capacity) to store the 4k of code. No kidding.

Even with the dawn of the microprocessor age our code was as riddled with bugs as today - probably more so. The problems were much more tractable back then, as the limited address space and exclusive use of assembly language eliminated any possibility of building really complex systems, though we did have to implement all calculations in floating point, and even ran a least squares regression to calibrate the system, all within that 4k.

For debugging purposes, we cabled the Intellec 8's bus back to our own computer's backplane, and let the Intellec's CPU take charge of our peripherals. We edited, assembled, and linked on that Intellec, and then loaded and debugged the code.

Building a program was a nightmare, though in those days having exclusive access to ANY computer seemed pretty magic. Load the editor paper tape. Enter and edit the program. Punch a tape of the source program (all assembly, of course). Load the assembler tape. The assembler was a three pass nightmare - you had to run the source tape through three times before it spit out a binary tape. Then, load the linker and each binary tape.

The 4k program required 3 days to assemble and link. Three days. Needless to say, one reassembled only rarely.

The Intellec had a simple monitor (much like a scaled down version of the PC's DEBUG utility) that let you set two software breakpoints. We'd load the binary and debug, making changes to the machine code with each bug fix. The monitor didn't have a mini-assembler, so we quickly learned all of the machine codes for the 8008's instruction set - not much of a feat when you consider how limited that set was.

Sometimes we could patch right on top of the code. When the change was too big, we'd patch a jump to a "patch area", and hand assemble new code in there. With each change we'd make a careful record on the source listings.

After a day of debugging, we'd have lots of changes (hey - we were kids at the time, with no concept of software engineering!). We'd punch a tape of the current memory image and go home, reloading it the next day to pick up from the same spot. Only infrequently would we edit in changes and go through the pain of a total reassembly.

Development was incredibly slow. Every aspect of the process was buggy. At the time even Intel didn't understand how to program 1702s, so they'd frequently drop bits. We spent months perfecting the algorithm in concert with them.

Despite the troubles things worked, and we delivered product - hundreds of units over a couple of years. Time moved on and we later used better processors and algorithms; people left the company, replaced with others not familiar with the older products.

The original units used an iterative regression, which, if it didn't converge within 20 minutes, displayed "HELP" in the seven segment LEDs. I'll never forget some years later a technician came in, ashen faced, and told me "I've been trying to repair this ancient unit, and after I fiddled with it for a while it started displaying a panicked HELP message!"