Preface
This manuscript is the outgrowth of a sequence of events that began in July 1978. I had a very basic microcomputer with a very basic BASIC. Not the most exciting combination. What I really wanted at that point was a compiler. I had more or less decided that C looked like a reasonable language to implement. My essential problem was how to bootstrap a C compiler. Clearly it could be booted in BASIC, but the very thought appalled my sense of rightness.
At the July 1978 National Computer Conference (NCC) at Disneyland, I picked up a copy of "Dr. Dobb's Journal of Computer Calisthenics & Orthodontia" that had an article on FORTH. "Aha," I said, "an *extensible* interpreter." Clearly a much better approach than BASIC to bootstrap a compiler. The problem then was how to get my hands on FORTH. After a quick trip to Manhattan Beach for a copy of FORTH, Inc.'s "Microforth Primer" for the Z80 and a two-week wait for the DECUS (DEC User's Society) FORTH manual for the PDP-11, I had the ammunition for my own threaded interpretive language (TIL) design.
By August 1978, six weeks after the NCC, I had an up and running version of a TIL called ZIP (Z80 Interpretive Processor) merrily extending itself in all directions. I had not built the initial C bootstrap compiler simply because ZIP was so much fun to play with.
Because there was so much controversy about languages for microcomputers during this time period, I decided to join the fray with a short article on TILs and their advantages for small microcomputers. A call to BYTE magazine resulted in a request for a 200-page book manuscript rather than an article! Months later, a 500-page manuscript resulted. TILs are not the only extensible things in the world.
The main point is that TILs are fun. They are easy to write, easy to use, and very useful tools for the small computer user. I have built several versions of ZIP, some in as little as twenty hours. All have been fun and all have been used. When I bought UCSD Pascal for my system, I used ZIPD (a disk-based version of ZIP) to examine the Pascal files, specialize the I/O for my system, and generate the disks to boot the compiler. The simple utility of threaded interpretive languages is one of their nicest attributes.
There's no need to be a software guru to write and code a TIL. I certainly don't fit in the guru class, and yet I managed. I hope that others will also manage, and on something other than a Z80-based system. I have attempted to explain what I did as well as how. When using the system, be inventive. That's precisely how ZIP evolved.
As a final note, special thanks to go to Shirley Kalle, Carol Lee, Vicki Haas, and Velva Hinkle for typing the manuscript.
Dayton, Ohio
August 1979