Itty Bitty Computers & TinyBasic


In 1976 at the HomeBrew Computer Club (HBCC), there was a lot of whining about Bill Gates charging $150 for his Basic interpreter. Dennis Allison responded by printing a "Build Your Own [tiny] Basic" article, so I asked if anybody would buy it if it cost only $5. There seemed to be some affirmation, so I wrote my interpreter. Others jumped on the same article, and I wasn't the first done, but I wanted to be paid for my efforts. Nobody at HBCC bought it, but I sent a freebie to Byte magazine and they printed a 1-inch announcement. The next month my mailbox was full of orders, every one with $5. I didn't get rich off it, but it did pay a lot of my expenses at grad school.

Anyway, it was a source of income, so I applied for copyright protection under the old law still in effect at the time, which gave 28 years of protection (renewable once, to a maximum of 56 years). It was a good law. I did not bother to renew in 2004 -- and it wouldn't have made any difference, since the new law grandfathered in all unexpired copyrights to the end of my life + 75 years. The new law is ridiculous and subverts the will of the People who wrote copyright and patent protection into the US Constitution. But it's the law of the land. If you don't like what your Representative in Congress did on your behalf, buy a different one.

So what to do? One person suggested to me that I release it under "CC0" but that both says more and less than I would want to say. How about this: my TinyBasic is free to use. If you want to conform to the letter of the law, you can attach to any copies this notice: "TinyBasic interpreter Copyright 1976 Itty Bitty Computers, used by permission."

I was hoping to recover some executable code from my paper tape archives, but that has not happened yet. However I did scan in the text of the documentation, and with the generous help of Lee Hart proof-reading, you can download and print out your own copies. The User Manual and Experimenter Kit should be viewed/printed in Courier for the columns to line up. One good fellow read in the 6502 TinyBasic (KIM), which I now uploaded, for those who want to play with it. Bill O'Neill disassembled it and offers his assembly language source code.

Rummaging in my garage more recently, I came across some old hex dump listings, so I OCR'd in the 68K version of TinyBasic, and a TinyBasic Tic-Tac-Toe game that originally appeared in the HBCC Newsletter. OCR software leaves a lot to be desired. If I had more time to play with it, I'd probably write my own. This program has settings for "Tables" but do you think it would pay attention to its own settings? See for yourself; the image on the left is the scanned image, on the right is the format the software figured out. Now I ask you, does that look the same to you? Does it even look like a table? (See original scans, TB68R1.tiff and TB68R2.tiff) Thanks to Douglas Crosher for making corrections.

I also rewrote the original IttyBitty TinyBasic interpreter in C, translated for modern enthusiasts. An accompanying article is published in the January 2006 issue of Dr.Dobb's Journal, p.24. [I'm not offering a link to the DDJ web site, because their site is rather abusive technologically; it's really not necessary for them to try to send you a zillion cookies.] They didn't print everything I wrote, but maybe if enough readers ask for more...

I often get kudos from people who fondly (but incorrectly) remember running my TinyBasic on their Altair or other x80 computer. I never did an x80 version of my TinyBasic. The most popular was Lee-Chen Wang's "PaloAlto Tiny Basic", which was free (I charged $5 up front), so he did not enjoy the name fame I got. There are links to other implementations here.

Mostly as an experiment to test out the Trolltech Qt user interface framework, I also ported TinyBasic to Qt. The result was not entirely satisfactory, but you can see for yourself. This works in the freebie Windows version of Qt that comes on the CD with the Blanchette&Summerfield book, C++ GUI Programming with Qt3, Prentice Hall, ISBN 0-13-124072-2, which is a good intro to Qt. In a similar experiment, I ported TinyBasic to VisualStudio. You can compare the results. Both programs run Euphoria and Life (see below). Just choose the appropriate file from the open file dialog. Mohan Embar took my source code and ported it to Java, C# and Flex.

You might also enjoy the Kingdom of Euphoria, a TinyBasic program inspired by a promotional game popular a long time ago. There are more programs in The First Book of TinyBasic Programs, but the computer scan mangled it pretty badly. Dunno when I'll have time to clean up the code, but Lee Hart and Richard Peters (and perhaps other people I don't know about) have been working on it for a couple years now. Richard sent me the corrected Tiny Adventure from the book (thank you!). I have not reviewed it as carefully as the other stuff here, but it seems to work. I did notice that it looks in memory for a carriage return at the end of the input line, which my C program did not support, so I fixed that also (2004 July 16). Let me know if you find any other problems. Richard recently bundled up and sent me five more programs as a zip file from the scans, plus one of his own; I have not reviewed these yet.

Plain-text copy of Original Tiny Basic User manual; same User Manual, HTML version

Plain-text copy of Tiny Basic Experimenters Kit, which includes an assembler for the intermediate code "TBIL". I had to modify slightly the C version of TinyBasic for it to work, but I also extracted the assembler and the TBIL source code into a single file which this C program reads and assembles -- somewhat faster than the "several hours" promised in the Experimenter's Kit.

I was puttering around in my garage and found a tutorial in Tiny Basic I did for the Netronics ELF. I scanned it in. The Netronics version of Tiny Basic had several extra I/O commands to speak to their hardware, but other than that, you might find it interesting.

From an independent source, I scanned in a version of John Conway's Life and adapted it for TinyBasic. It's pretty ugly, but it works. When you run it, it wants to know the (square) grid size, then the original population in that grid. The sample that was printed in Dr.Dobbs Journal #1 goes like this:

LIFE WITH TINY BASIC EXTENDED
SIZE ? 11
THE BEGINNING-WAIT
? 2
? 2
? 2
? 2
? 2
? 0 ? 0 ? 1 ? 1 ? 1 ? 1 ? 1 ? 1 ? 1 ? 2
? 2
? 2
? 2
? 2
? 2
GENERATIONS ? 3
GENERATION 0
POPULATION IS 7
 

     # # # # # # #
 

GENERATION 1
POPULATION IS 15
 

       # # # # #
       # # # # #
       # # # # #
 
 

GENERATION 2
POPULATION IS 12
 

         # # #
       #       #
     #           #
       #       #
         # # #


And so on. You can see what modifications I had to make.

I see Wiki now has an entry for Tiny Basic, but some of the links there may be broken.
 

Tom Pittman

Rev. 2004 July 19
Updated 2008 December 31
New links 2010 July 30, 2010 October 1, corrected 2012 March 10
License paragraphs added 2011 November 15