Dr. Dobb's is part of the Informa Tech Division of Informa PLC

This site is operated by a business or businesses owned by Informa PLC and all copyright resides with them. Informa PLC's registered office is 5 Howick Place, London SW1P 1WG. Registered in England and Wales. Number 8860726.

Channels ▼

Al Williams

Dr. Dobb's Bloggers

All or Nothing Debugging

January 12, 2011

I've recently been doing some fun (and unprofitable) work on a replica Altair 8800. This has been a real blast from the past, but it has also made me think of how much things have maybe come full circle over the years. I guess its true. The more things change, the more things stay the same.

I have a soft spot for the old Altair. When I was a kid I read voraciously about anything and everything. About a year before the Altair came out, I borrowed a book from the library called "Basic Computer Programming." It was written before there was such a thing as BASIC, mind you. The title simply meant "fundamental." The text discussed an imaginary computer called TUTAC and the book did a credible job of teaching you about indexing, looping, and all the other intricacies of programming without having access to any real hardware. Years later my mother found a copy of the book and gave it to me as a gift. I was thrilled to see it again.

This approach was common back then (Knuth, after all, had MIX which was another fake computer for learning). Computer time was worth hundreds of dollars per hour, so you couldn't just have some student banging away at the computer all day. I was fascinated with whole idea, but had no way to get access to a real computer.

Then the Altair arrived. I realized that maybe I could get access to a real computer. Of course, as a kid, the price of the thing was way out of reach. I never got a real Altair, nor even any time on one. But it made me realize that it was possible.

Personal computers like the Altair changed how we do software development. Are you old enough to remember the term "desk checking?" That was the process of reviewing your code by hand to catch errors before submitting them to the computer. This was especially important in places where you put your deck of cards on a bus where they were taken to a remote computer and you got a print out the next day on the same bus! To wait 24 hours to find out you transposed two letters in the word FORMAT was heartbreaking.

Who desks checks anymore? Your computer is sitting idle anyway. Let it throw out the error messages for you. Another thing that has changed is internal visibility. The old Altair had a nice exposed bus and any of my logic analyzers do a fine job of letting me watch what's going on inside the box. Most of my paying work these days are with CPUs locked up inside of a chip (either hard coded silicon or an FPGA) and you can't really look inside of it easily. Sure, with the FPGA I can add a logic analyzer core, although I find that is sometimes too intrusive (and expensive -- the license for those isn't cheap!). And more CPUs now have some sort of debugger interface built in which is really helpful.

So maybe there are times where I should go back to the practices of my youth and desk check before I start throwing things at the hardware. After all, a computer 24 hours away is about the same as one locked up inside of an IC package. But maybe things don't just stay the same. Maybe they cycle. We go from having the internal visible, to hidden, but then exposed again via debugging and emulation interfaces. Maybe the next round of technology will hide it for awhile again.

Meanwhile, I have to remember to do paying work in addition to tinkering with the old hardware.

Related Reading

More Insights

Currently we allow the following HTML tags in comments:

Single tags

These tags can be used alone and don't need an ending tag.

<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags

These require an ending tag - e.g. <i>italic text</i>

<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

Dr. Dobb's encourages readers to engage in spirited, healthy debate, including taking us to task. However, Dr. Dobb's moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing or spam. Dr. Dobb's further reserves the right to disable the profile of any commenter participating in said activities.

Disqus Tips To upload an avatar photo, first complete your Disqus profile. | View the list of supported HTML tags you can use to style comments. | Please read our commenting policy.