Level I BASIC
TRS-80 advertisement from the November 1977 issue of BYTE
When the TRS-80 Model I was first released in 1977, the BASIC interpreter that Microsoft was writing, Level II BASIC, was still months away from completion. Instead the Model I originally shipped with a BASIC interpreter known as Level I BASIC.
Level I BASIC was based on “Palo Alto Tiny BASIC”, a 2K version of Tiny BASIC written by Dr. Li-Chen Wang for the May 1976 issue of Dr. Dobb’s Journal. Because Dr. Li Chen-Wang placed his BASIC in the public domain (he labeled it “@COPYLEFT; ALL WRONGS RESERVED”), Steve Leininger, the designer of the TRS-80, was able to use it as a starting point. He added floating point math, cassette, keyboard, and video routines, doubling the size of the original code to 4K.
The Model I came with a Level I BASIC guide written by Dr. David A. Lien called User’s Manual for Level I. This book was an excellent introduction to Level I BASIC, and for computers in general. One Radio Shack catalog described the combination this way:
Level I is a simplified version of BASIC programming language. Level I, together with our outstanding owner’s manual, lets you learn how to program quickly and easily — even if you have no prior knowledge of computers or programming.
Versions
Radio Shack sold the Level I Model I in two memory sizes: 4K and 16K. Technically, Level I BASIC could support up to 48K of memory, but upgrading a Model I beyond 16K usually required an Expansion Interface, which in turn required Level II BASIC.
Contrary to what some have claimed, there was a Level I BASIC for the Model III. When the Model III was introduced, Radio Shack sold a 4K version with Level I BASIC. This version of Level I BASIC was largely the same as Model I Level I BASIC but with printing commands (LLIST and LPRINT) added.
Variables
Level I BASIC allowed for three types of variables:
- 26 numeric variables, labeled A through Z
- 2 string variables, labeled A$ and B$
- 1 array variable, labeled A(x) (with x used as the index)
Error Messages
Level I BASIC had three error messages: HOW?, WHAT?, and SORRY. User’s Manual for Level I described the error messages this way:
In general, a HOW? message means, “I understand your instructions, but they’re asking me to do something that’s impossible.”
The WHAT? error message, on the other hand, means, “I don’t understand your instructions — either the grammar is wrong or you’re using words that aren’t in my vocabulary.”
The third and final error message is SORRY. It means “Sorry — you have run out of memory locations and must either cut down the program size or purchase additional memory.”
Abbreviations
Level I BASIC had a “shorthand dialect” which allowed abbreviating longer BASIC commands using a period. For example:
- PRINT could be abbreviated P.
- INPUT could be abbreviated IN.
- RETURN could be abbreviated RET.
- PRINT AT could be abbreviated P.A.
In all, Level I BASIC recognized 27 abbreviations for BASIC commands. These abbreviations were especially important because Level I BASIC didn’t tokenize programs, unlike many other BASICs. Abbreviations were often the key to fitting programs in available memory.
Software
The power of Level I BASIC was quite remarkable, especially considering that Level II BASIC was three times larger than Level I (12K versus 4K). There were some impressive programs written for Level I BASIC, even within the usual limit of 4K of memory. Most early TRS-80 software came in Level I and Level II versions.
Level I BASIC could save and load BASIC files from cassette at 250 baud. It had no command to load a machine language program, but programmers soon discovered a clever way to do it anyway. Some programs, such as the T80-FS1 Flight Simulator from subLOGIC, contained a loader that worked with either Level I or Level II.
Praise for Level I
When Level II BASIC for the Model I became available, the upgrade (including installation) cost $120. Radio Shack continued to sell the Level I Model I for $120 less than the Level II version. Most Level I BASIC programs could be easily modified to work with Level II BASIC, although many people missed the “shorthand dialect” of Level I.
Not everyone felt that Level II was an improvement over Level I. Dr. Jack Crenshaw described the Level I interpreter as “a masterpiece of good structured design” in the November 1982 issue of 80-U.S. Journal:
I got into this thing pretty early. I was one of the first owners of the TRS-80, bought in ‘77… I also ordered Level II, the EI and disk drives as soon as they were announced… One day I realized I was computing more and enjoying it less… I sold my EI and drives and, when the opportunity came to trade back down to Level I, I took it.
Some hobbyists developed a hardware switch that let them select between Level I and Level II BASIC on the same Model I. As of 1984, 3% of 80 Micro subscribers still owned a Model I Level I system.
Tim Locke says:
How many bytes were used to store the floating point values?
Matthew Reed (TRS80.org) says:
I believe Level I BASIC used four bytes to store each floating point variable.
Carl Gundel says:
I think this may have been the very first computer I ever programmed, in the local Radio Shack. I distinctly remember the SORRY, WHAT?, and HOW? error messages.