BASIC-PLUS
   HOME

TheInfoList



OR:

BASIC-PLUS is an extended dialect of the
BASIC BASIC (Beginners' All-purpose Symbolic Instruction Code) is a family of general-purpose, high-level programming languages designed for ease of use. The original version was created by John G. Kemeny and Thomas E. Kurtz at Dartmouth College ...
programming language A programming language is a system of notation for writing computer programs. Most programming languages are text-based formal languages, but they may also be graphical. They are a kind of computer language. The description of a programming ...
that was developed by
Digital Equipment Corporation Digital Equipment Corporation (DEC ), using the trademark Digital, was a major American company in the computer industry from the 1960s to the 1990s. The company was co-founded by Ken Olsen and Harlan Anderson in 1957. Olsen was president unt ...
(DEC) for use on its
RSTS/E RSTS () is a multi-user time-sharing operating system developed by Digital Equipment Corporation (DEC, now part of Hewlett-Packard) for the PDP-11 series of 16-bit minicomputers. The first version of RSTS (RSTS-11, Version 1) was implemented in 1 ...
time-sharing operating system for the
PDP-11 The PDP-11 is a series of 16-bit minicomputers sold by Digital Equipment Corporation (DEC) from 1970 into the 1990s, one of a set of products in the Programmed Data Processor (PDP) series. In total, around 600,000 PDP-11s of all models were sold, ...
series of 16-bit
minicomputer A minicomputer, or colloquially mini, is a class of smaller general purpose computers that developed in the mid-1960s and sold at a much lower price than mainframe and mid-size computers from IBM and its direct competitors. In a 1970 survey, ...
s in the early 1970s through the 1980s. BASIC-PLUS was based on BASIC-8 for the
TSS/8 TSS/8 is a discontinued time-sharing operating system co-written by Don Witcraft and John Everett at Digital Equipment Corporation in 1967. DEC also referred to it as Timeshared-8 and EduSystem 50. The operating system runs on the 12-bit PDP-8 co ...
, itself based very closely on the original
Dartmouth BASIC Dartmouth BASIC is the original version of the BASIC programming language. It was designed by two professors at Dartmouth College, John G. Kemeny and Thomas E. Kurtz. With the underlying Dartmouth Time Sharing System (DTSS), it offered an inter ...
. BASIC-PLUS added a number of new structures, as well as features from
JOSS Joss may refer to: * Joss (name), including a list of people with the name * JOSS, a time-sharing programming language * Joss (Chinese statue), a religious object * Joss JP1, an Australian-built supercar * Joss paper, a type of burnt offering * J ...
concerning conditional statements and formatting. In turn, BASIC-PLUS was the version on which the original
Microsoft BASIC Microsoft BASIC is the foundation software product of the Microsoft company and evolved into a line of BASIC interpreters and compiler(s) adapted for many different microcomputers. It first appeared in 1975 as Altair BASIC, which was the first ve ...
was patterned. Notable among the additions made to BASIC-PLUS was the introduction of string functions like and , in addition to Dartmouth's original all-purpose command. In future versions of the language, notably Microsoft's, was removed and BASIC-PLUS's string functions became the only ways to perform these sorts of operations. Most BASICs to this day follow this convention. The language was later rewritten as a true
compiler In computing, a compiler is a computer program that translates computer code written in one programming language (the ''source'' language) into another language (the ''target'' language). The name "compiler" is primarily used for programs that ...
as BASIC-Plus-2, and was ported to the
VAX-11 The VAX-11 is a discontinued family of 32-bit superminicomputers, running the Virtual Address eXtension (VAX) instruction set architecture (ISA), developed and manufactured by Digital Equipment Corporation (DEC). Development began in 1976. In a ...
platform as that machine's native BASIC implementation. This version survived several platform changes, and is today known as
VSI BASIC for OpenVMS VSI BASIC for OpenVMS is the latest name for a dialect of the BASIC programming language created by Digital Equipment Corporation (DEC) and now owned by VMS Software Incorporated (VSI). It was originally developed as BASIC-PLUS in the 1970s for ...
.


Operation

Users would sit at a terminal and type in programming language statements. The statements could either be entered into the system's
command interpreter A command-line interpreter or command-line processor uses a command-line interface (CLI) to receive commands from a user in the form of lines of text. This provides a means of setting parameters for the environment, invoking executables and pro ...
directly, or entered into a
text editor A text editor is a type of computer program that edits plain text. Such programs are sometimes known as "notepad" software (e.g. Windows Notepad). Text editors are provided with operating systems and software development packages, and can be us ...
, saved to a file, and loaded into the command interpreter from the file. Errors in source code were reported to the user immediately after the line was typed. As a smart terminal with cursor control could not be guaranteed, BASIC-PLUS used the common system of prefixing all source code with a line number. The code was edited by typing in the number and then changing the contents of the following code. A line of code could be removed by typing in its line number and nothing else, thereby setting it to an empty line. The virtual address space of an RSTS/E user was limited to a little less than 64KB of space. Using BASIC-PLUS, about half of this virtual address space was used by the combined command interpreter and run-time library (named the
Run Time System In computer programming, a runtime system or runtime environment is a sub-system that exists both in the computer where a program is created, as well as in the computers where the program is intended to be run. The name comes from the compile t ...
on RSTS/E). This limited user programs to about 32 kB of memory. Large programs were broken up into various pieces by use of the statement, and programs could
chain A chain is a serial assembly of connected pieces, called links, typically made of metal, with an overall character similar to that of a rope in that it is flexible and curved in compression but linear, rigid, and load-bearing in tension. A c ...
to specific line numbers in a secondary program to indicate that a program should begin execution at a different point from its first line. This feature of chaining to a certain line number allowed programs to signal to each other that they were being called from another program. The use of a shared memory section called core common also allowed programs to pass data to each other as needed.
Disk Disk or disc may refer to: * Disk (mathematics), a geometric shape * Disk storage Music * Disc (band), an American experimental music band * ''Disk'' (album), a 1995 EP by Moby Other uses * Disk (functional analysis), a subset of a vector sp ...
files could also be used but were slower. To conserve memory, the system included a garbage collecting memory manager, used for both string data and byte-code. A running program could be interrupted, have variables examined and modified, and then be resumed.


Syntax and features

BASIC-PLUS is patterned closely on later versions of
Dartmouth BASIC Dartmouth BASIC is the original version of the BASIC programming language. It was designed by two professors at Dartmouth College, John G. Kemeny and Thomas E. Kurtz. With the underlying Dartmouth Time Sharing System (DTSS), it offered an inter ...
, including its powerful MAT commands. On top of this, DEC added a number of unique flow-control structures.


Editing

Line numbers were positive integers from 1 to 32767. Logical lines of code could be continued on multiple physical lines by using a
line feed Newline (frequently called line ending, end of line (EOL), next line (NEL) or line break) is a control character or sequence of control characters in character encoding specifications such as ASCII, EBCDIC, Unicode, etc. This character, or a ...
at the end of a line instead of the normal
carriage return A carriage return, sometimes known as a cartridge return and often shortened to CR, or return, is a control character or mechanism used to reset a device's position to the beginning of a line of text. It is closely associated with the line feed a ...
character. For ease of external editing of the source file, later versions of BASIC-PLUS also allowed the character as a line continuation character. Multiple statements could be placed on a single line using as the statement separator. The system allowed tabs to be used as inline whitespace, and was used to make loops more clear, as in modern languages. Comments used either the keyword or the character, as opposed to MS BASICs, which used and .


Standard statements

The command divided the screen into regions 14 spaces wide, and the comma was used to move between these locations; would output 1, 2 and 3 in a spaced-out fashion, while would leave a single space and produce "1 2 3". allowed a prompt string to be specified, but used the semicolon to separate it rather than the comma; Strings could be delimited by single or double quotes. In addition to the and functions that converted single characters to and from string format, BASIC-PLUS also supported Dartmouth's powerful command. iterated the string and returned each character's ASCII value as a slot in a numeric array. For instance, would return an array five elements long. One could reverse the operation as well, would read the individual numbers in the X array and convert it to a string.


Statement modifiers

BASIC-PLUS added the concept of "statement modifiers",
JOSS Joss may refer to: * Joss (name), including a list of people with the name * JOSS, a time-sharing programming language * Joss (Chinese statue), a religious object * Joss JP1, an Australian-built supercar * Joss paper, a type of burnt offering * J ...
-like conditions that could be applied to any statement. For instance, is the equivalent of The opposite was also provided, was the equivalent of . loops worked as in other versions of BASIC, and the command could not be used in an expression to exit early. Instead, the and keywords could be used to control early exits. For instance, continue looping until I=10, with the assumption that following code would set the value of I, meaning it might not exit after 10 iterations but as soon as the code set I to 10. Modifiers could also be used to build compact one-line loops, for instance, would loop until X was 100.


Variables, expressions and matrixes

Variable names in the early versions of BASIC-PLUS could be a single letter or a single letter followed by a single digit. With the inclusion of "Extend mode" in later versions, variable names could be up to 29 characters long, and dot (.) was added as a permitted character. Every variable name still had to begin with a letter. As in most versions of BASIC, the keyword, for variable assignment, was optional. It could set multiple variables to a single value, like . The language supported three data types; floating-point numbers, integers, and strings. Variables with no suffix were floating point (8 bytes, range 0.29 to 1.7, up to 16 digits of precision). Integer variables (16-bit, range −32768 to +32767) were indicated with a suffix, string variables (variable length) were indicated with a suffix. The list of mathematical and logical operators was typical of most BASICs, with some extensions. For math, , , , and were supported, along with as an alternate form of for
computer terminal A computer terminal is an electronic or electromechanical hardware device that can be used for entering data into, and transcribing data from, a computer or a computing system. The teletype was an example of an early-day hard-copy terminal and ...
s that might not have that character. Standard logical comparisons were , , , , , and . One interesting addition was the operator, for "approximately equal". This would return true if the two numbers would be printed the same, that is, their six most significant digits were the same. Logical operators included the typical , and , along with , which return true if both A and B are true or both are false, and which is false if A is true and B is false and otherwise always true. The statement could allocate one-dimensional and two-dimensional arrays of any of the three data types. The range of subscripts always began with 0 (but statements did not set elements in row 0 or column 0). The language also included a number of commands to work with the entire array (or MATrix). The command would fill the matrix with values in a statement, would fill the array with user-typed values, and would print out the elements in a 1D or 2D format. could also be used to set default values in a matrix using associated keywords, for instance, would fill the A array with zeros. would transpose an entire matrix, and would invert it. Additionally, , , and could be used on matrixes, performing the associated matrix operation.


File processing

The "virtual DIM" statement could map "virtual data array(s)" or "virtual array(s)" to a disk file, which allowed arrays larger than the computer's available memory (or even its address space), and allowed use of array elements to read, write, and extend disk files (persistent storage). They called this arrangement "virtual data storage" and "virtual core", but it did not use the modern approach of allocating the arrays and a
memory-mapped file A memory-mapped file is a segment of virtual memory that has been assigned a direct byte-for-byte correlation with some portion of a file or file-like resource. This resource is typically a file that is physically present on disk, but can also b ...
. Instead, a single buffer was used to store 512 bytes of data at a time, and when an entry in the virtual array was accessed, the corresponding data was read, and old data written, as required. The statement caused the buffer to be written back (if necessary) before closing the file. Because no additional sectors were cached, accessing data in the "wrong" order could multiply the number of disk accesses. Additional rules were imposed on virtual arrays, such that one datum could never span a record boundary: Each data type was aligned to a multiple of its size. Virtual strings were stored as fixed-length ASCIIZ data, with sizes restricted to 2, 4, 8, 16, 32, 64, 128, 256, or 512 bytes, and were accessed using and .


Virtual machine

BASIC-PLUS was not an interpreter but a
compile and go system In computer programming, a compile and go system, compile, load, and go system, assemble and go system, or load and go system is a programming language processor in which the compilation, assembly, or link steps are not separated from program ex ...
: each line of BASIC was translated into "PPCODE" (Push-Pop Code) as it was entered, for subsequent fast execution on its virtual machine. These translations did not tokenize the BASIC lines but rewrote them for use on a stack machine; you could not translate these representations back to BASIC statements. This avoided the need to repeatedly decode the keywords as strings: once converted to PPCODE the keywords were numbers that pointed to routines to run that function. BASIC-PLUS included a command, but this was not a true compiler; this simply saved the program's PPCODE representation so that it did not have to be recompiled when the BASIC program was next loaded into memory. The system store a user's program in two formats. One was the editable source code in text format, created using the command and normally placed in a .BAS file. The other was the PPCODE version of the program created by the command and saved to a .BAC file; .BAC files were smaller and loaded and ran faster, but could not be edited.


BASIC Plus 2

A related product called Basic Plus 2 ("BP2" or BASIC-Plus-2), was later developed by DEC to add additional features and increased performance. It used true compilation into
threaded code In computer science, threaded code is a programming technique where the code has a form that essentially consists entirely of calls to subroutines. It is often used in compilers, which may generate code in that form or be implemented in that fo ...
and wrote its output to object files compatible with the machine code object files produced by the assembler and other language systems. These object files could be kept in libraries. A linker (the TKB taskbuilder) then created executable files from object files and the libraries. TKB also supported overlays; this allowed individual routines to be swapped into the virtual address space as needed, overlaying routines not currently being used. Additionally, BP2 programs ran under the RSX Run Time System; this RTS only occupied 8KB of the user's virtual address space, leaving 56KB for the user's program. (RSTS/E version 9 introduced separate Instruction and Data space, and the "disappearing" RSX Run Time System, permitting up to 64KB of each of instruction code and data.) These two factors allowed individual BP2 programs to be much larger than BASIC-PLUS programs, often reducing the need for CHAINing among multiple programs. Unlike BASIC-PLUS (which was only available on RSTS/E), BP2 was also available for the
RSX-11 RSX-11 is a discontinued family of multi-user real-time operating systems for PDP-11 computers created by Digital Equipment Corporation. In widespread use through the late 1970s and early 1980s, RSX-11 was influential in the development of later ...
operating system. BP2 programs were also more compatible with the later VAX BASIC.


Comparison to MS BASIC

Microsoft BASIC was patterned very closely on BASIC-PLUS. Earlier versions of MS BASIC, the 1.x series, lacked integer variables, but these were added in the 2.x series that was found on many machines, including the later models of the
Commodore PET The Commodore PET is a line of personal computers produced starting in 1977 by Commodore International. A single all-in-one case combines a MOS Technology 6502 microprocessor, Commodore BASIC in read-only memory, keyboard, monochrome monitor, an ...
and
Commodore 64 The Commodore 64, also known as the C64, is an 8-bit home computer introduced in January 1982 by Commodore International (first shown at the Consumer Electronics Show, January 7–10, 1982, in Las Vegas). It has been listed in the Guinness ...
. The ability to place logical and loop commands in-line, like was not copied over and does not appear on any common version of microcomputer BASIC. MS BASIC also lacked the matrix commands.


See also

*
Comparison of command shells A command shell is a command-line interface to interact with and manipulate a computer's operating system. General characteristics Interactive features Background execution Background execution allows a shell to run a command without us ...


Notes


References


Citations


Bibliography

* {{DEFAULTSORT:Basic-Plus BASIC interpreters BASIC programming language family Command shells