Originally published on: Mon, 17 May 2010 23:39:23 +0000
In the early days of 8-bit computing, a programmer's most often-used tool was the assembler. Due to memory constraints, many of the early 8-bit machines could not run a full assembler. At best, one could hope for some sort of machine-language monitor that would include a mini-assembler and a disassembler.
That was ... until Don French came along and implemented a symbolic assembler on the unexpanded VIC-20.
Don was gracious enough to grant me an interview via e-mail.
What exactly were the products offered by your company French Silk? ( I've heard of the Assembler, Develop-64, and Develop for the Apple ][ ...)
My first product was "The Assembler for the VIC-20". It was the only assembler ever to run on the unexpanded VIC and I believe it was and still is the smallest assembler ever written for any computer. I included a specialized text editor and a loader with The Assembler. The company name was French Silk, but The Assembler also came to be known on the street as French Silk.
When the Commodore-64 came out I converted The Assembler to run on the 64. Up until this time I had done all the programming myself, but at this point I hired John Shifflet, one of the best programmers I have ever known, who wrote a symbolic disassembler, which we called Decoder-64. The disassembler could disassembler RAM, ROM, files on the 1541 disk drive, and even the ROMs of the 1541 disk drive. I sold the assembler, packaged with the disassembler, as Develop-64.
Not long after that we created an integrated development environment (one of the first IDEs) for the 64, that included an editor, assembler, disassembler, a symbolic debugger, and a loader all in one. I sold this as The Machine Shop and included a book that I authored, called "Inside the Commodore-64". I also wrote and sold a book called "Inside the VIC-20".
I think the next product was a program that could print the contents of the screen, a graphic screen dumper. It supported numerous printers, but I think it was the first, if not the only program that was capable of printing bitmapped graphics on the Commodore 1526 printer. It also printed color graphics on some color printer that Commodore made. I am having trouble remembering the name of that program, but it was "Something"-64. Geoff Terrell wrote the basic engine and I wrote the user interface and the1526 code.
I then published ApSoft-64, written out of house, which was a version of Applesoft Basic that ran on the 64.
Those were the main products, although I also sold a package of a hundred cheesy public domain Applesoft Basic programs that would run with ApSoft-64. I never wrote anything for the Apple ][.
Was ApSoft-64 your idea?
No. I was approached by a guy who had written it and who convinced me to publish it. It was a big mistake because everyone thought that you could load and run Applesoft Basic programs directly from published programs on Apple media, but that was not possible. You could only type them in, and while it was a good implementation of Applesoft Basic, not that many people wanted it for that limited purpose. I wish I had never decided to take the project on.
In an archived message-board post, I noted that you developed an assembler on the VIC-20 for the VIC-20. What computer / electronics experience did you have that prepared you for this endeavor?
I did not have any electronic experience other than building a Heath kit stereo. But I did have prior computer experience, beginning in 1967 writing business applications in Fortran for the IBM 1130. In 1969 I had a friend who wrote a package of device drivers for the 1130 that allowed the 1130 to run at up to ten times its normal speed. He invited me and another friend to join together and form a company to wrap up and market this fantastic product, and I was assigned to write one driver myself, the one for the paper tape read-punch. This is where I learned how to write assembler code. We very foolishly never marketed this package of programs and if we had, we would have made millions. We were so young and dumb. My friends were both working for IBM, who forbid them to take part in this project because it would make the 1130 competitive with much more expensive IBM equipment. My friends chose to stay at IBM unfortunately. It was just a killer product though. Cliff Harwood was the brains behind it and also my mentor.
I wrote IBM 360 BAL banking apps for a couple years and then worked on an IBM 1800 and wrote a driver to acquire data from an EKG machine, thus adding to my assembly language skills. In 1976 I bought a KIM-1 single board computer for which I wrote a variety of 6502 machine language programs (machine language, and not assembly language, because I didn't have an assembler.) I had to hand assemble the code and enter it a nybble at a time into the keypad on the board. It was the dislike for this arduous and error-prone process that led me to buy the VIC-20 and write an assembler so I wouldn't have to do any more hand assemblies.
Your Vic assembler seems to be a bit of an oddity; you built a complete assembler in under 2k of code. Did this feat draw attention to the VIC-20 Assembler?
The unexpanded VIC had 3583 bytes of available RAM and there were1944 bytes free after loading The Assembler. That 1944 bytes was the space available for your source code. This means that the assembler itself only took up 1639 bytes of RAM. By the way, when I say it was the smallest assembler in existence, I mean the smallest symbolic assembler, which is to say that it allowed for the use of labels (symbols) to represent addresses in memory or locations in the source. Besides allowing for symbols, it supported address expressions in which five different kinds of terms (symbolic labels, decimal numbers, hex values, literal characters, and the program counter) could be arithmetically combined through addition, subtraction, multiplication, division, exponentiation, and logical AND and logical OR. It also allowed the programmer to define both hex and alphanumeric strings and it supported comment lines and fields. Oh, and labels could be up to 72 characters long, if you were crazy enough to waste all that space on labels. There was also an EQU statement that doubled as an ORG.
That was quite a lot to pack into 1639 bytes and I pulled every trick in the book plus a number that I had to invent myself to pull it off. Of course, your assembly program had to be pretty small to fit in 1944 bytes, but a lot of people learned assembler by using this tool. I sold several thousand of these babies at $19.95 each.
Did it get attention it deserved due to this remarkable bit of shoehorning? I am afraid not. This was my mistake I am sure, as I was not a marketing genius.
Did you encounter any difficulties in marketing your development tools?
I just advertised in Compute and Run like every other Commodore software company. The trouble I ran into was distribution. At the beginning there were tons of Mom and Pop software stores and I had pretty good luck selling small quantities to lots of them. But then the chains moved in and forced the Moms and Pops out of business and the chains would only buy from a few big distributors and the big distributors would only stock and sell very heavily advertised products that had very professional packaging. I could not afford the required advertising budget and my packaging was not that great either. Getting product on the shelves became harder and harder. And a number of smaller distributors simply ripped me off. I never had the business moxie or experience to get around these problems and I grew so tired of the bullshit side of business that in 1986 I eventually just hung it up and drove an RV out to San Francisco and lived in it on the Panhandle and did volunteer work for the Haight Ashbury Switchboard.
Was it difficult competing with the various other assemblers in the Commodore markets?
Yes, especially for the Commodore-64. I had a pretty good product and I still have scores of letters from users who took the time to write me to rave about it, but the other assemblers were better promoted and were in fact better in some respects. I made certain compromises in the original editor and assembler for the VIC-20 that were a result of the memory limitation, and, like so often happens with software, I got caught in the trap of needing to (or believing I needed to) support the previous code base in each new version. So the deficiencies were propagated forward.
Did piracy ever visibly affect your sales?
Of course. Whenever it is possible to get free copies of software, people do. I found very little regard for the rights of software companies or programmers among the computer using public. I knew people who were leaders in their community, deans in the church and the like, and who were among the most honest upright citizens you could find anywhere. Yet they had no compunctions about making illegal copies of software. It is extremely rare to find someone who won't copy software if they can. Remember when shareware was really that? You could keep and use the program and were asked to pay for it if you like it, all on the honor system? I have spoken with a number of shareware authors who tried this and never got a dime from the thousands of downloads of their program. In fact, I tried this with Problematic. Thousands of downloads, not a dime of revenue. People won't pay if they don't have to. Almost no exceptions. Some Commodore journalist once told me that French Silk (the assembler) had a huge cult following on the East Coast. I was very surprised to hear that because by that time I had sold very few.
Did you make transitions into computer markets other than the 8-bit Commodore line? ( Apple? Amiga? )
No. As I said above, I got tired of the rat race and all the rats I had to deal with and just jumped ship in 1986.
Are you actively producing software today?
After bailing on French Silk, and after my stint at the Haight Ashbury Switchboard, I contracted to write Dick Tracy for the C-64 for Disney. I then wrote and published a chess problemist's toolkit called Problematic. You can read the docs on my chess site:
http://www.geocities.com/bozito/problematicDocs.html 5-17-2010 NOTE: The geocities links aren't active any more, but it appears that this one has taken at new home at: http://reocities.com/SoHo/Cafe/8437/ ).
The only thing I have written since is a partially completed FreeCell program which can also solve positions. You can find it here:
I am spending time doing photography mostly now, and playing a bit with robotics. I have the beginnings of a photography site:
Please tell me about your experience writing Dick Tracy for the Commodore 64. Did you write the entire program yourself?
I wrote the entire program myself, but I did not design it. That is, Disney had a design and script that I and the PC team and the Apple guy had to follow. The program was written entirely in assembly language, but like all the other versions, it was never finished. Disney pulled the plug on all of versions when it became clear that they had badly misjudged the time it would take to get them out. No one was near done when the movie hit the silver screen. Plus, I think that the movie wasn't doing that well and the merchandising wasn't selling. The game design was kind of lame anyway. It offered me the opportunity to learn how to write interupt driven smooth scrolling screen animation, though. Not that I ever used it again.
Had you ever written video games for the C-64 prior to Dick Tracy?
Nope. It was my first.
How did you land the contract that allowed you to write Dick Tracy?
I answered an ad for a C-64 assembly language programmer. I think it was run in the San Francisco Chronicle. There was some company in the Bay Area that hired me and they had the contract with Disney to do the C-64 and Apple ][ versions. I have since forgotten the name of that company.
Had you ever built an assembler before your VIC-20 Assembler?
Nope. This was my first.
Did you ever have a desire to market compilers for higher-level languages such as C and Pascal for Commodore equipment?
I really never gave it much thought. I hadn't learned either language by the time I got out of the business.
What is your educational background?
I have a BA in Chemistry from Kalamazoo College. My senior thesis was a topic in quantum mechanics.
Do you use any Commodore emulators on your computer today?
No, I don't.
Do you have working Commodore equipment in your personal collection?
Oh yeah, I still have my original C-64 and VIC-20 as well as a 1541 disk drive.
Was your Assembler manual a 6502 tutorial? Have you thought about e-publishing it?
The books "Inside the VIC-20", which accompanied some versions of the VIC assembler, and "Inside the Commodore-64", which accompanied Develop-64 and The Machine Shop, included 6502 assembly language tutorials. I don't think I have an electronic version of these any more. The last electronic versions I remember were on Osborne floppies and I don't think I have them any longer. I certainly don't have the Osborne. I suppose I could scan the manuals in, but I seriously doubt that I will do that. They were printed on dot matrix printers, for one thing, and are not likely to be very OCR friendly. Do you really think there is a market for a 6502 tutorial?
What can we expect to see from you in the near future?
Nothing in the near future, unless I decide to write a poker bot, which I have been mulling over
Any last words for today's diehard Commodore enthusiasts?
Gee, I didn't know there were any. But I guess that there are people who enjoy playing the favorite games of their youth, is that it? I will say that it was a truly great computer for its time, and I loved it dearly and can see why people still enjoy it (I am thinking the C-64, but the same goes for the various Pets and the VIC.) In fact, writing the answers to this interview has made me nostalgic for the old Commie. Maybe I should check out some of the emulators.
Unless otherwise noted, all code and text entries are Copyright ©2004, 2010 by James K. Lawless
Views expressed in this blog are those of the author and do not necessary reflect those of the author's employer. Views expressed in the comments are those of the responding individual.
|Previous post:|| An Interview with Tom Zimmer: Forth System Developer|
|Next post:||Getting the Windows Console Text Color|