Jim Butterfield : The Commodore Guru
Originally published in the Commodore Hacking (C=Hacking) electronic magazine #14, November 1996. This post has been reprinted in Commodore Free magazine and other e-magazines. Jim Butterfield passed away on June 29th, 2007 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.
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.
What was the first programming language that you learned?
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!)
Were numbers expressed in Base-36?
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!!!!
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…)
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.
What was the first computer that you owned?
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.
When did you first encounter a Commodore computer?
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.
Did you have formal training in computer programming?
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.
What was the first book that you wrote?
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.
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?
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.
What COULD you do with a KIM-1?
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!
What was the last book that you wrote?
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.
Have you ever written articles or books on subjects that are not computer-related?
My first writing experience was a treatise on transistor theory, published by Popular Electronics in August of 1959. Not much else.
Did you write commercial software for any of the Commodore computers?
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.
SuperMon was a tool that I used daily when developing ML routines or exploring the C64. What prompted you to write SuperMon?
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.
Did you ever expand the mini-assembler in SuperMon into a full-blown assembler development package?
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.
Even Superman had to put up with Kryptonite. Describe your worst experience as a software developer / technical writer.
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.
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?
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.
If so, did you ever change this methodology?
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.
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?
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.
Did you use any high-level languages on CBM computers?
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.
What was your favorite computer that CBM produced?
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.
What kind of home computer do you currently use?
C128 .. Amiga .. Pentium system. All three.
Who were your influences as related to writing?
Nobody specific. Just tried to write it as I would say it.
Who were your influences as related to programming?
I’ve worked with a lot of sharp programmers over the years. Not one I can pick out especially.
If you could relive the CBM glory years, would you do anything differently?
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.
Is your current job computer-related?
I’m currently more or less retired.
If you had not chosen a career in computing, what field of endeavor would you most likely have pursued?
Before computers, I worked in electronics and telecommunications.
What are your current hobbies?
Reading; travel; films; raising my daughter. (That’s a hobby???)
What sort of technical literature do you currently read?
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.
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…).
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.
What is your opinion on the way consumer computing has evolved since the inception of the early PET machines?
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.
What words of wisdom would you care to impart on a new (or revitalized) generation of CBM hackers?
Enjoy what you’re doing! If it becomes drudgery, you’re doing it wrong!