Est. 1971 Beginner

BASIC-PLUS

The BASIC dialect written by Evans, Griffiths & Hart for Digital Equipment Corporation's RSTS-11 timesharing system on the PDP-11, which added string functions, statement modifiers and virtual arrays to Dartmouth BASIC and is cited as the model for the original Microsoft BASIC.

Created by Evans, Griffiths & Hart (EGH Inc.: Tim Hart, Tom Evans and Tom Griffiths) under contract to Digital Equipment Corporation

Paradigm Procedural (line-numbered BASIC with statement modifiers)
Typing Dynamic; floating-point, 16-bit integer (% suffix) and variable-length string ($ suffix) variables
First Appeared 1971
Latest Version Shipped with RSTS/E through V10.1 (September 1992), the last RSTS/E release; succeeded on other systems by BASIC-Plus-2

BASIC-PLUS is an extended dialect of BASIC written for Digital Equipment Corporation’s (DEC) RSTS-11 timesharing operating system on the 16-bit PDP-11 minicomputer. It was created by a small outside firm, Evans, Griffiths & Hart, and shipped in 1971. On RSTS it was more than a programming language: it was also the system’s command interpreter. It is remembered for adding MID$-style string functions and inline statement modifiers to Dartmouth BASIC, and it is cited as the dialect on which the original Microsoft BASIC was patterned.

History & Origins

Background

DEC had already sold BASIC-8 for the PDP-8, developed at the initiative of David H. Ahl, which was itself close to original Dartmouth BASIC. For the PDP-11, DEC’s first timesharing attempts (a multi-user monitor layered on DOS-11, with a BASIC-11 above it) reportedly ran very slowly. A new team began work on 11 June 1970 on an operating system called IOX (Input Output eXecutive). One of its ideas was to use a programming language as the command shell as well. Accounts say there was an internal argument over whether that language should be FOCAL or BASIC, and that marketing settled it in favour of BASIC.

EGH takes the contract

With DEC’s engineers absorbed by the operating system, nobody was working on the BASIC. Tim Hart, Tom Evans and Tom Griffiths, who had formed EGH Inc., received a tender from DEC on 25 August 1970, submitted a deliberately low bid of $10,500 on 4 September, and were awarded the contract on 18 September. DEC recognised the price was too low and added a $3,000 bonus clause.

The original plan was for EGH to write only the language translator and utilities, with DEC writing a separate runtime, so that small machines could run programs with just the runtime. EGH ended up building the entire system and delivered it in January 1971. The runtime-only idea was later dropped. IOX was renamed RSTS-11 and shipped with BASIC-PLUS in 1971.

A note on the year

Sources disagree slightly, and the encyclopedia’s master list gives 1972. The 1971 shipping date rests on Clare Fleig’s 1983 Hardcopy article as cited by Wikipedia, and is consistent with RSTS-11 installations reported for 1971. The earliest primary document this entry cites is the October 1972 BASIC-PLUS Language Manual, which probably explains the later year. This page uses 1971 for first release; the 1970 figure that appears in some infoboxes is the development start.

Design Philosophy

BASIC-PLUS aimed to be a more complete BASIC than DEC’s earlier dialects, borrowing selectively:

  • From Dartmouth BASIC came the core statements and the MAT matrix commands.
  • From JOSS (and, per some accounts, DEC’s FOCAL) came conditional formatting ideas, including statement modifiers.
  • Because it doubled as a shell, it needed system-level file and program-chaining facilities beyond a classroom BASIC.

Key Features

Statement modifiers

Conditions could be attached to the end of a statement instead of using IF ... THEN:

1
2
3
4
10 PRINT I IF I <> 10
20 PRINT I UNLESS I = 10
30 X = X + 1 WHILE X < 100
40 PRINT I FOR I = 1 TO 10

Line 10 is equivalent to IF I <> 10 THEN PRINT I. This construct was not carried into the microcomputer BASICs that followed.

Strings and data types

Variables without a suffix were floating point (reportedly about 16 digits of precision in the usual 64-bit configuration; a 32-bit option is said to have existed), % marked 16-bit integers and $ marked variable-length strings. String functions such as LEFT$ and MID$ sat alongside Dartmouth’s CHANGE, which converts between a string and an array of character codes. Most later BASICs kept the functions and dropped CHANGE.

Other notable features

FeatureDetail
Matrix operationsMAT READ, MAT INPUT, MAT PRINT, TRN, INV, and +, -, * on matrices
Approximately-equal operator== is true when two numbers print identically to six significant digits
Logical operatorsAND, OR, XOR, EQV, IMP, NOT
Virtual arraysDIM# maps arrays to a disk file, allowing data larger than memory, using a single 512-byte buffer
CommentsREM or !
ChainingCHAIN splits large programs; “core common” passes data between them
Line numbersIntegers from 1 to 32767

Early versions limited variable names to a letter or a letter plus a digit; a later “Extend mode” allowed names up to 29 characters.

Implementation

BASIC-PLUS was not a simple interpreter, nor a true compiler. Each line was translated as typed into “PPCODE” (push-pop code) for a stack-based virtual machine, a form of threaded code that could not be converted back to source. A COMPILE command saved this form to a .BAC file, which loaded and ran faster than the editable .BAS source.

A RSTS/E user’s virtual address space was a little under 64 KB, and the combined interpreter and runtime system took about half of it, leaving programs roughly 32 KB. This is why CHAIN and core common were so widely used.

Evolution

DEC later produced BASIC-Plus-2 (BP2), a true compiler that wrote object files, linked with the Task Builder and supported overlays. Its runtime reportedly took approximately 8 KB of address space rather than approximately 32 KB, so single programs could be much larger. Unlike BASIC-PLUS, BP2 was also available on RSX-11, and it was more compatible with the later VAX BASIC. That lineage continues today as VSI BASIC for OpenVMS.

Current Relevance

BASIC-PLUS is historical. RSTS/E’s last release was V10.1 in September 1992. The language survives mainly through retrocomputing: RSTS/E can be run under PDP-11 emulators such as SIMH, and DEC manuals for the language are reportedly archived on Bitsavers and the Internet Archive. This entry does not claim official support for any particular modern platform.

Why It Matters

BASIC-PLUS is important for three reasons. It showed that a BASIC could serve as a full timesharing environment and command shell. Its string-function style became the norm for BASIC. And, according to Stephen Manes’s 1993 book Gates (as cited by Wikipedia), the first Microsoft BASIC was patterned very closely on it, although Microsoft’s version omitted the statement modifiers and matrix commands. Through BASIC-Plus-2 it also became the ancestor of VAX BASIC and its successors.

Sources and Caveats

  • Development dates and the EGH story come from Wikipedia’s BASIC-PLUS article, which cites Clare Fleig (Hardcopy, March 1983) and Peter Dick’s 1990 “RSTS 80th Birthday” talk. I did not check those originals directly.
  • The Microsoft BASIC relationship rests on one secondary source (Manes) and was not independently verified.
  • RSTS-11 version and installation details come from Wikipedia’s RSTS/E article and are unverified against primary DEC documents.

Timeline

1970
DEC's PDP-11 timesharing effort, then called IOX, begins on 11 June 1970. Evans, Griffiths & Hart receive DEC's tender on 25 August, bid $10,500 on 4 September, and win the BASIC contract on 18 September (DEC later adds a $3,000 bonus)
1971
EGH delivers the complete system in January 1971; IOX, renamed RSTS-11, ships with BASIC-PLUS. RSTS-11 version 2B is reported to have had its first commercial deployment in June 1971
1972
DEC publishes the BASIC-PLUS Language Manual, dated October 1972, the primary reference for the early language
1973
The operating system is renamed RSTS/E as memory management support for newer PDP-11 models is added, according to Wikipedia's RSTS/E article
1992
RSTS/E V10.1, the last release, appears in September 1992 with Y2K fixes

Notable Uses & Legacy

RSTS-11 / RSTS/E timesharing systems

BASIC-PLUS was both the programming language and the command shell of RSTS, so users at terminals used it for everything from interactive programming to job control on PDP-11 timesharing machines

Educational institutions

Early RSTS-11 version 2A-19 is reported to have been installed at schools including Carleton College and Seattle Pacific College in 1971

Delaware School Auxiliary Association

Reported as the first commercial RSTS-11 deployment (version 2B, June 1971)

Business applications on RSTS/E

Wikipedia reports about 15,000 DEC machines running RSTS/E by 1983; BASIC-PLUS, with its virtual arrays and file handling, was the main language used on them, though this entry does not name specific corporate users

Language Influence

Influenced By

Dartmouth BASIC BASIC-8 JOSS

Influenced

BASIC-Plus-2 Microsoft BASIC

Running Today

Run examples using the official Docker image:

docker pull
Last updated: