Level I BASIC

Level I BASIC is a dialect of the BASIC programming language that shipped with the first TRS-80, the TRS-80 Model I.

Level I BASIC
Designed bySteve Leininger
First appeared1977
Influenced by
Tiny BASIC, Palo Alto Tiny BASIC
Influenced
TRS-80 Level II BASIC

BackgroundEdit

Tandy-employee Steve Leininger had written the first draft of the NIBL (National Industrial Basic Language) BASIC interpreter for the SC/MP while employed at National Semiconductor [1]. Unable to take that source code with him, he initially hired a consultant to write an interpreter. When that contractor failed to deliver,[2] he adapted Li-Chen Wang's public domain version of Tiny BASIC for the original prototype of the TRS-80 Model I. This required only 2 KB of memory for the interpreter, leaving an average of another 2 KB free for user programs in common 4 KB memory layouts of early machines.

During a demonstration to executives, Tandy Corporation's then-President Charles Tandy tried to enter his salary but was unable to do so. This was because Tiny BASIC used 2-byte signed integers with a maximum value of 32,767. The result was a request for floating-point math for the production version.[3]

This led to the replacement of the existing 16-bit integer code with a version using 32-bit single-precision floating-point numbers. Leininger further extended the language to support input/output routines (keyboard, CRT, and reading and writing from cassettes). The language fit within 4 KB of ROM.[4]

In a presentation announcing the TRS-80, Leininger said, "What we did, we went back through the Wang Basic and completely tore out about 60 per cent of it, the integer overhead and all that kind of stuff."[5]

Further DevelopmentEdit

When the TRS-80 was introduced, three versions of BASIC were announced:

The Level I language was not available for the TRS-80 Model II but briefly re-surfaced as the baseline package for the TRS-80 Model III in 1981, selling for $699 compared to the $999 system with Model III BASIC (another Microsoft product). The language was identical to the Model I version but with the addition of commands to output to a printer.[7]

Language featuresEdit

Level I BASIC supported the following keywords:[8]

  • Commands: NEW, RUN, LIST, CONT (to continue or resume a program from a breakpoint)
  • Statements: PRINT, INPUT, READ, DATA, RESTORE, LET
  • Structure: GOTO, GOSUB, ON-GOTO, ON-GOSUB, RETURN, IF-THEN (but no ELSE), FOR-TO-STEP/NEXT, STOP, END
  • Graphics: CLS, SET, RESET, POINT()
  • Functions: ABS(), INT(), RND(), MEM
  • Math: + - * /
  • Relational operators: < > = <= => <>
  • Logical operators: * [AND] + [OR]

Like Palo Alto Tiny BASIC on which it was based, Level I BASIC did not tokenize keywords like Microsoft BASIC but used abbreviations to reduce the amount of memory used by keywords, such as F. for FOR, G. for GOTO, P. for PRINT, and T. for THEN.

The language supported 26 single-precision variables A to Z, two strings A$ and B$ (limited to 16 characters each), and one pre-defined array A(). The language lacked a DIM statement for dimensioning the array, the size of which was determined by available memory not used by the program listing (4 bytes per item).[9] As the language lacked many common math functions, the manual provided subroutine listings for square root, exponentiation, exponentials, logarithms, arithmetic sign, and trigonometry functions.[10]

Graphics support was as minimal a set as possible: CLS, for CLear Screen; SET(X,Y), which lighted a location on the display; RESET(X,Y), which turned it off; and POINT(X,Y), which returned 1 if a location was lit, 0 if it was not. The coordinates could be any expression and ranged from 0 to 127 for the X-axis and 0 to 47 for the Y-axis. Only black-and-white display was supported.[11]

ReferencesEdit

  1. ^ "NIBL". Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Running Light Without Overbyte. 1 (10). November 1976.
  2. ^ Lorenzo, Mark (2017). Endless Loop: The History of the BASIC Programming Language. Philadelphia: SE Books. p. 80. ISBN 978-1974-27707-0.
  3. ^ Welsh, David; Welsh, Theresa (2007). Priming the Pump: How TRS-80 Enthusiasts Helped Spark the PC Revolution. p. 7.
  4. ^ Reed, Matthew. "Level I BASIC". TRS-80.org. Retrieved 27 August 2017.
  5. ^ "Interview with Steven W. Leininger". TRS-80.com. Retrieved 28 August 2017.
  6. ^ Thomas, Wes (Sep–Oct 1977). "Radio Shack's $600 Home Computer". Creative Computing. 3 (5): 94–95.
  7. ^ Reed, Matthew. "Was there a Level I Model III?". TRS-80.org. Retrieved 27 August 2017.
  8. ^ Lien, David (1977). User's Manual for Level I (First ed.). Fort Worth, TX: Tandy Corporation. pp. 232–233. Retrieved 2 November 2017.
  9. ^ Lien, David (1977). User's Manual for Level I (First ed.). Fort Worth, TX: Tandy Corporation. pp. 123–132. Retrieved 2 November 2017.
  10. ^ Lien, David (1977). User's Manual for Level I (First ed.). Fort Worth, TX: Tandy Corporation. pp. 216–220. Retrieved 2 November 2017.
  11. ^ Lien, David (1977). User's Manual for Level I (First ed.). Fort Worth, TX: Tandy Corporation. pp. 105–108, 137. Retrieved 9 August 2020.

External linksEdit