Posts tagged "nostalgia"urn:www-greghendershott-com:nostalgia2013-02-12T12:00:00ZClear interruptsurn:www-greghendershott-com:-2013-02-clear-interrupts.html2013-02-12T12:00:00Z2013-02-12T12:00:00ZGreg Hendershott
<div>
<article>
<header>
<h1>Clear interrupts</h1>
<p class="date-and-tags">
<time datetime="2013-02-12" pubdate="true">2013-02-12</time> :: <span class="tags"><a href="/tags/life.html">life</a>, <a href="/tags/nostalgia.html">nostalgia</a>, <a href="/tags/technology.html">technology</a></span></p></header>
<p>For some reason <a href="https://en.wikipedia.org/wiki/Interrupt_flag">CLI</a> popped into my head the other day.</p>
<p><code>CLI</code> is the 808x instruction to clear maskable interrupts. If you’re writing a routine to service a hardware interrupt, you do a <code>CLI</code> early in your routine — to prevent <em>another</em> hardware interrupt from causing your routine to be re-entered. Neglecting this invites the most delightful form of bug, the intermittent bug.</p>
<div class="figure"><img src="https://upload.wikimedia.org/wikipedia/commons/0/06/Roland_MPU-401.jpg" alt="Roland MPU-401" title="Roland MPU-401" />
<p class="caption">Roland MPU–401</p></div><!-- more-->
<p>I spent a lot of time struggling with this stuff early in my coding career, writing a MIDI sequencer. The <a href="https://en.wikipedia.org/wiki/MPU-401">Roland MPU–401</a> MIDI interface would hit IRQ 8 when some MIDI bytes arrived, or when a timer ticked. I remember eagerly reading BYTE magazine articles and learning how write ISRs (interrupt service routines) by trial and error. Many trials and many errors. There was no internet search much less StackOverflow.com back then. (Also, we lived in a shoebox in the middle of the road.)</p>
<p>In real life we have interruptions. The worst is when you’re interrupted, then that interruption is interrupted. And so on. People don’t have stacks they can pop instantly to return to their prior context. Instead of popping a stack, the process is akin to flailing around with Google search, throwing around keywords and trying to sniff out the right track.</p>
<p>It’s too bad there’s no <code>CLI</code> instruction in real life.</p>
<footer></footer></article></div>Ancient historyurn:www-greghendershott-com:-2012-08-ancient-history.html2012-08-15T11:00:00Z2012-08-15T11:00:00ZGreg Hendershott
<div>
<article>
<header>
<h1>Ancient history</h1>
<p class="date-and-tags">
<time datetime="2012-08-15" pubdate="true">2012-08-15</time> :: <span class="tags"><a href="/tags/life.html">life</a>, <a href="/tags/nostalgia.html">nostalgia</a></span></p></header>
<p>I played trombone and piano in high school. I played electronic keyboards (including a <a href="http://en.wikipedia.org/wiki/Moog_Prodigy">Moog Prodigy</a>, my first synth) in a couple bands. I wasn’t a very good musician but I enjoyed it.</p>
<p>I went to <a href="http://www.oberlin.edu">Oberlin College</a> 1982–1986. I did a major in philosophy and a minor in religion. Although the Oberlin Conservatory didn’t offer a major in electronic or computer music back then, I did a major’s worth of those courses. I took just two computer science courses: assembly language and Pascal. That turned out to be good preparation for teaching myself C later.</p><!-- more-->
<p>In projects for computer music, I loved <a href="http://en.wikipedia.org/wiki/Turbo_Pascal">Turbo Pascal</a>. It’s remarkable that, all these years and MHz and GB later, virtually no programming environment is faster.</p>
<p><img src="http://upload.wikimedia.org/wikipedia/commons/thumb/c/c7/Compaq_portable.jpg/250px-Compaq_portable.jpg" alt="Compaq Portable" title="Compaq Portable" />.</p>
<p>I used Turbo Pascal first on the school’s <a href="http://en.wikipedia.org/wiki/Osborne_Computer_Corporation">Osborne</a> <a href="http://en.wikipedia.org/wiki/CP/M">CP/M</a> PCs, and later on my own <a href="http://en.wikipedia.org/wiki/Compaq_portable">Compaq Portable</a> with MS-DOS and a Plus Development <a href="http://en.wikipedia.org/wiki/Hardcard">Hard Card</a>. The latter let you add a real hard disk drive, with a whopping 10 MB of capacity. (That’s not a typo: megabytes, not gigabytes.)</p>
<p>I graduated in 1986 and moved to Boston because some friends from Oberlin were headed back there. I procrastinated getting a real job, doing a little temp work. I decided to write a MIDI sequencer, starting over this time in C.</p>
<p>Around April 1987 I decided to take out an ad in Electronic Musician magazine and see if I could sell a few copies of the software, which was called Cakewalk. (I named the “company” Twelve Tone Systems. Later we renamed the company to Cakewalk, too.)</p>
<p>Where did the name Cakewalk come from? Just before the deadline for the first ad, I discovered the original name (“Opus”, if I recall correctly) was already used. During a last-minute search through Schirmer’s dictionary of musical terms, I noticed “Cakewalk”. I liked the connotation of ease-of-use, which matched my goal for the software. I liked that it was a simple, compound English word everyone would know how to spell and pronounce.</p>
<footer></footer></article></div>