Getting smacked by the long tail of poor design habits

A little blog post I wrote in


Nice post! I’ve never been that close to hardware so it’s interesting to read about the challenges of that world.

I’ve also never stayed with one company longer than about 5 years, so I get to chop that tail off and grow a new one! :stuck_out_tongue_winking_eye:


Interesting introspection there.

Could you talk a bit about what hardware you worked on (CPU, kits, …) and which tools you used to create and test your concepts?

First gen:
Rom editor/burner and Z80 hand assembly.
I still have 3 ring binders full of these worksheets and EPROM maps with the patch locations and code entry points for moving blocks of code. This was before we had ready access to assembler and linker software. Oh, you could get these but they ran on mini-computer with cross assembler tools. Very pricey.
Seriously! We wrote down op codes on paper and manually counted up memory addresses. Then a long session entering on the EPROM burner. We had EPROM chips with different routines that were like files now. Once you went trough all this it was popular to save blocks of code and build them up in memory like lego blocks; afterwards you needed to patch the jump addresses. Relative code in the Z80 was a godsend. I still remember many of the hex opcodes all this time later.
This was how you created useful product firmware.

Lots of wire wrap prototypes, with hand laid out boards. Oh - and hand drawn schematics. Typewriter for instruction manuals. Typewriter BOMs.

BTW: At home at this time I was building my own computer - out of chips using wire wrap. If you you see me smirking when someone “builds their own computer” by putting a motherboard in a box you will know why.

Second gen
S100 Altair with a rom burner, Diablo printer and pertek drives and (gasp) 64 k static memory! I had one of the wonderful ISC 80x24 color displays. I even had a CT-1 speech generation card on that box. MS basic on the desktop and Microsoft assembler for the end hardware. Wordstar. This was my personal hardware but I was doing consulting for this customer at this time. BOMs with wordstar - way better. Still hand drawn schematics and hand tape-ups for PCBs.

Third gen
Altos with big (20 mb!) Winchester drives, Still CP/M, MSASM/80 and supersoft linker. Wordstar.

Fourth gen
Wyse MS-Dos work stations with a ZAX ICE and an HP 1630D logic analyzer with Z80 disassemble/trace pod. Used C on the hardware - EROMs were getting big enough to hold the bloat. Started to use Orcad for schematic capture and board layouts. Woo-hoo! Wordstar and AMI-pro. SBT for the accounting, useless for supporting engineering.

At this point I have about 10000 hours coding in Z80 assembly.

Switched to fourth shift - loaded all product structure into this manufacturing package- life got much better.

Switch to Word. Lots of rewriting of manuals, built a program to assemble manuals based on the BOM in in word macro code. Styling!

VB is starting to creep into my life. It is not better.

Somewhere along the line we switched from Z80 to 68HC09 MCUs and added various Motorola pods to program, code warrior. Still in C.

Stepped up to NAV manufacturing package - life gets more complicated but better.

Switched to PADS for Schematics and layout. Life gets better.

A few years ago we added ARMs to the mix and I forget that pods we use to side load code. Still C. Keil IDE tools. Used the ST and TI dev kit/boards for some of the prototypes. These thing are crazy powerful.

At this point I have about 5000 hours coding in C , 20000 in assembler, 3000 in basic, 2000 in VB, and about 500 in Perl. I still like Perl for text and C for everything else. Part of the reason for the low hours in Perl is that it does a lot in a small program - I don’t have to spend a lot of time to get things done.

This list excludes all my hobby and consulting- this is just the relationship with one company.


Great Scott! How many lifetimes have you lived?

1 Like

I’m 63. This also includes a childhood building model trains and aircraft, and an apprenticeship in locksmithing in high school. An early career as diesel mechanic in winter in Minnesota convinced me to go back to school for electronics. Hint - trucks break down outdoors and they expect you to service and fix them outdoors.

Times are taken from billing time sheets.


I really liked the Z80 too. What was it 56000 transistors? Very effective.
The 16 bit addressing and computations were very useful. There were also undocumented instructions that nevertheless always worked. However now the goal is to get a jetson nano board and do some cuda programming.

1 Like

I used the second set of registers and the NMI to do a software UART. No room left on the board to put in another chip and a late addition to the hardware requirements. Typical.
1200 baud, full duplex with bit voting for noise cancelation. Got the job done.