Skip to content
Stefan Lenz edited this page Feb 24, 2022 · 62 revisions

1976 was the year of BASIC interpreters. The legendary Dr. Dobb's magazine published many articles on designs and implementations of Tinybasic interpreters [Dobbs1976]. The articles are really fun reading.

In the rainy summer weekends of 2021 I decided to write a BASIC interpreter from scratch. Palo Alto and Apple 1 BASIC were the starting points. After that the project has grown quite a bit. It is now a Dartmouth standard or MS type BASIC with IoT capabilities for various micro controllers, display drivers and a few unusual features for BASIC.

The core BASIC language is based on a Tinybasic following essentially the specifications of the Dr. Wang Palo Alto BASIC using the December article published by Roger Rauskolb [Palo Alto BASIC]. No code from any source was used, just the language specification.

The second source I used is Steve Wozniak's preliminary manual on Apple 1 basic. This language seems simple but is really hard to implement in a low memory design once you try to include arrays and strings code. The array and string code added the complexity of left hand side evaluation of expressions as compared to Palo Alto BASIC. The interpreter is compatible to the 1976 Apple Integer BASIC. See [here for differences and language features].

It is worth mentioning the legendary book 101 BASIC Computer Games as well. A copy of the 1975 edition can be found [here]. It is said that this was one main source of inspiration for Apple Integer BASIC. All the BASIC programs from this book have been typed in. I forked the repo here https://github.com/slviajero/bcg. They don't run because they have been ported to another BASIC dialect but maybe I will rewrite some of them.

Introduction articles in this Wiki

The implementation here grew beyond the Apple Integer BASIC language set and now offers floating point, printing, terminal support, Arduino I/O and file I/O as optional language set. Networking and some IoT features are also added. Storing in and running programs from EEPROM is possible on the AVR platforms. Building standalone computers is possible. See the project page for more info on what one can do with this piece of software.

An Arduino based standalone computer using this BASIC interpreter:

DUE based standalone system