Please visit my blog at http://jimlawless.wordpress.com

Jim Butterfield: The Commodore Guru - An Interview


Copyright 1996, 1999 by Jim Lawless

Update: July 2, 2007

I just found out that Jim Butterfield passed away on June 29th after a long battle with cancer.

I grieve with the family and the legions of techies who looked upon Jim as a mentor via his articles and ongoing contact with the Commodore community.

Rest in peace, Mr. Butterfield.

This article originally appeared in Commodore Hacking #14.

My initial interest in the Commodore 64 computer began in 1983.  At the
time, my primary source of information pertaining to the C64 came from
Compute! and Compute!'s Gazette publications.  One author's name stood
from the rest; Jim Butterfield.

I used to turn to Jim's articles immediately when I managed to get my
hands on a new magazine.  Mr. Butterfield has the rare ability to
describe complex subjects in simple terms.

I'm certain that I'm not alone when I credit Jim with having taught me
a lot about the inner workings of the Commodore 64.  As important as
the specifics of writing code for the C64 was Jim's style.  He would
often write code that was readily portable to multiple CBM machines.
His code had longevity and purpose.  The solidity of his programs left
me with a lasting impression pertaining to how software should be
developed.

The following interview with Jim was conducted via e-mail.

Q: What was the first programming language that you learned?

A: In about 1963, an assembly language called COGENT for a computer that
few people have ever heard of: a Collins Radio C-8401. That was shortly
followed by work on an IBM 1401, which had a machine language that was
alphanumeric. (Honest! You could keypunch M/L directly!)

Q: Were numbers expressed in Base-36?

A: No. Decimal.

The basic machine had 1000 bytes (not 1K) of (7-bit) memory (core, not
RAM!) so addresses ranged from 000 to 999 (and were given in decimal, of
course). Expanded machines had 4K, then 16K ... the addresses were
slightly more complex in that case.

Thus, to move bytes from an area at, say address 123 to address 456 the
instruction would be M123456. I AM NOT MAKING THIS UP!!!!

Q: Did you guys have contests to spell out goofy words as part of a
program? (I know of a programmer who used to regularly use the return
code $0BAD to indicate a problem...)

A: No (the addresses mixed in with the op codes ruled that out), but you
could do fun things on a 1401 if the system manager wasn't looking ..
such as play music.

Q: What was the first computer that you owned?

A: Not counting the TUTAC-1, which was powered by rubber bands and was
more correctly a logic machine: The KIM-1, a single-board microcomputer
made by MOS Technologies, Inc., of Norristown PA. MOS Technologies was
subsequently acquired by Commodore.

Q: When did you first encounter a Commodore computer?

A: When Commodore acquired MOS Technologies, the computer that I had
owned for over a year became a Commodore computer. Subsequently, an
employee of MOS Technologies, Chuck Peddle, convinced Jack Tramiel of
Commodore that they should launch a personal computer called "The PET".
I got one of those not long after they started production.

Q: Did you have formal training in computer programming?

A: Yes, on that long-ago Collins C-8401. But this was more a process-
control machine; it didn't use of any the newfangled (at the time)
languages such as Fortran and Cobol. So my training was in machine
language/assembler.

Q: What was the first book that you wrote?

A: A couple of enthusiasts and I collaborated on a volume called "The
First Book of KIM", a book describing how to do things with the KIM-1
single board computer. That computer was powered by a 6502,by the way;
in fact the KIM-1 board itself was designed as a engineering prototype
for people who wanted to try out the chip.

Q: Was it similar to the Altair where you had to manually increment an
address-counter before you could throw the switches to set the byte at
that address?

A: No, the KIM-1 had an operating system in ROM. That's one of the
things that made all KIM users "equal" and able to share programs, while
the other early micro owners had quite a scattering of stuff.

Q: What COULD you do with a KIM-1?

A: Hey, watch it! That's like saying, "What could you do with a
Commodore 64"? Although the KIM-1 came with a hexadecimal keypad rather
than a keyboard, and output to a six-digit LED display, you could use
those to good advantage AND hook up extra stuff. Play music? Play
Blackjack? Hunt the Wumpus? Skeet shoot? Unless you had the budget for a
printer, you'd have a hard time doing an accounts receivable, of course.
But this is the 6502 we're talking about! And we all know it can do
ANYTHING!

Q: What was the last book that you wrote?

A: It's probably the revised version of "Machine Language For the
Commodore 64, 128, and Other Commodore Computers". In 1985 and 1986,
however, I did produce a "pocket diary" reference guide for Commodore 8-
bit computers.

Q: Have you ever written articles or books on subjects that are not
computer-related?

A: My first writing experience was a treatise on transistor theory,
published by Popular Electronics in August of 1959. Not much else.

Q: Did you write commercial software for any of the Commodore computers?

A: As a general rule, no. All my stuff is public domain. At one time, I
had written a simple spell-checking engine that was incorporated into a
word processing package for a while.

Q: SuperMon was a tool that I used daily when developing ML routines or
exploring the C64. What prompted you to write SuperMon?

A: In the early days of Commodore personal computers, there were quite a
few machine language monitors around. They were partly based on some
publicly published code by Steve Wozniak (of Apple!), and partly based
on the MOS Technology TIM monitor, from KIM-1 days.

Two variants of the basic monitor caught my eye: NewMon, which added
several useful features to the basic Machine Language Monitor; and
HiMon, which sited the monitor in upper memory where it wouldn't
conflict with BASIC programs. I decided to put the two together and
generate a self-relocating MLM. That was desirable in early PET/CBM
days, where some computers would come with 8K RAM, some with 16K, and
others with 32K; you couldn't assume where the top of memory would be.

In those days, almost every Commodore computer came with a small built-
in MLM, and the first Supermon was an add-on. Later, as Commodore
changed the style of the MLM packages they built into newer machines
such as the 128, I went back and modified those earlier versions so that
they would work the same across all platforms.

Q: Did you ever expand the mini-assembler in SuperMon into a full-blown
assembler development package?

A: No. I hustled Brad Templeton into writing PAL, so that there would be
an assembler available for those who needed it. There had been a few
assemblers around before that - Commodore had one, and another was the
MAE system - but I was sure that somebody like Brad could do better.

Q: Even Superman had to put up with Kryptonite. Describe your worst
experience as a software developer / technical writer.

A: My first publication of SuperMon in Compute! magazine had the wrong
end-of-address supplied (my fault). I got a LOT of mail and phone calls
on that one.

Q: I had heard a rumor pertaining to your software development habits
that indicated you would approach a given project with full force. You
would focus your undivided attention on it until it was complete. Is
this rumor accurate?

A: Possibly. If I have a project under way, it "follows me around" until
it's complete; I fret over it and can't put it away until all the pieces
are in place.

Q: If so, did you ever change this methodology?

A: Not to any great extent. A half-written program bugs me, and I won't
rest until it's finished.

I might, however, decide that I'm taking the wrong track, and scrap a
program completely in order to start over. This isn't a loss: the first
attempt can show you what's really wanted.

Q: Your articles made you seem a bit omniscient. You always had the
inside info on the newest CBM computers and always seemed to be able to
explain their complexities in a manner that would suggest that you had a
lot of time to study them. I don't know a whole lot about your
employment during the mid/late 80's. Were you affiliated with CBM? A
beta-tester?

A: I had many friends in Commodore Canada, but I never worked for the
company, although I did contract work for them on occasion.

The big problem was not getting information from Commodore; it was
learning to ignore most of it. Commodore was bubbling over with ideas
and plans that never came to fruition. There was no point in writing
about projects that never happened (the Commodore music box? the cash
register? the videotape/disk storage device?). I took the position:
"Don't tell me about it until it's a real product!".

Commodore Canada was an excellent source of information, and I relied on
them to keep me from straying too far into technical speculation.

Q: Did you use any high-level languages on CBM computers?

A: BASIC, of course. COMAL, a BASIC derivative language from Denmark,
was nicely constructed. Played around a little with C, but that language
doesn't fit comfortably into an 8-bit environment.

Q: What was your favorite computer that CBM produced?

A: I don't know that I have a single favorite. The early PET/CBM
machines were great "discovery" platforms, where we could investigate
these wonderful new computers. The advent of the VIC-20 and the
Commodore 64 brought color and sound, which added to the charm of these
home computers; but they paid a penalty in slow disk access and screen
width limitations. Today, perhaps the Commodore 128 ranks as the best,
or at least the computer with most general usability. But it wasn't
produced in quantities as great as some of the earlier machines, and so
the user community hasn't been quite as furious.

Q: What kind of home computer do you currently use?

A: C128 .. Amiga .. Pentium system. All three.

Q: Who were your influences as related to writing?

A: Nobody specific. Just tried to write it as I would say it.

Q: Who were your influences as related to programming?

A: I've worked with a lot of sharp programmers over the years. Not one I
can pick out especially.

Q: If you could relive the CBM glory years, would you do anything
differently?

A: I don't think so. On another path, I could have gone for big bucks;
but making money carries a responsibility to support and service, and
that would have taken the fun out of it.

Q: Is your current job computer-related?

A: I'm currently more or less retired.

Q: If you had not chosen a career in computing, what field of endeavor
would you most likely have pursued?

A: Before computers, I worked in electronics and telecommunications.

Q: What are your current hobbies?

A: Reading; travel; films; raising my daughter. (That's a hobby???)

Q: What sort of technical literature do you currently read?

A: Mostly reference material. Current magazines are heavy on the "what's
for sale" stream; to my mind, that's not the fun part of computing.

Q: Are you surprised that a sort of "CBM renaissance" has been taking
place the last few years ( ...availability of C64 emulators on multiple
platforms and such...the SuperCPU from CMD...).

A: It's a shame that Commodore wasn't able to/interested in keeping the
8-bit line going. It's good to see that is happening.

Surprised? A little. But enthusiasts and user groups have always had a
stronger effect than manufacturers are willing to admit.

Q: What is your opinion on the way consumer computing has evolved since
the inception of the early PET machines?

A: The average computer user today has a lot less fun than we still have
with the early machines. The industry message today is "Buy it and use
it, and then turn it off .. don't worry or think about how it all
works". That's sure a lot less fun for tinkerers.

Q: What words of wisdom would you care to impart on a new (or
revitalized) generation of CBM hackers?

A: Enjoy what you're doing! If it becomes drudgery, you're doing it
wrong!

Back to Jimbo's On-line Articles

Jimbo's Home Page