Southampton BASIC System

Southampton BASIC System (SOBS) was a dialect of the BASIC programming language developed for and used on ICT 1900 series computers in the late 1960s and early 1970s; it was implemented as an incremental BASIC interpreter under the MINIMOP operating system at the University of Southampton and also ran under MAXIMOP.

It was operated from a Teletype terminal, though CRT terminals could also be used.

Language characteristics
In common with many early implementations of BASIC, SOBS needed lines to have line numbers, both to allow a user to add new lines to the program in the desired place and also as targets for  and   statements. A  facility was available to allow for sections of the code to be renumbered, by default in increments of 10, to allow more space in the middle of a program.

Other than line numbers, all numeric values were represented internally as floating point.

Statements
The language had relatively few statements by comparison with modern programming languages: Note in particular the lack of a -like statement;   was the only looping construct available to programmers.

Variables
Variable names for numeric values were either a single letter, or a single letter followed by a single numeric digit, thus allowing for 286 discreet variables in total. Strings were supported; variable names for them had the same restriction but were followed by a pound symbol.

Functions
A limited number of numeric functions were provided, all of which took one numeric parameter:

Support for strings was more limited, with only one function,, which returned the length of the string parameter. Sub-strings were supported with square brackets, so  referred to the sub-string of the string   from the 2nd character to the 3rd character inclusive, so would print

This syntax was also supported on the left-hand side of an assignment, so would print

Arrays
Support for handling arrays of data was relatively strong, with  statements able to read an entire array from   statements, and perform useful matrix operations such as matrix addition, matrix subtraction, matrix multiplication, and finding the inverse matrix for a square matrix.

Example:

The output would be 2             2              1 1             -1             0 4              -3             -2

Debugging
SOBS had primitive debugging capabilities, limited mostly to the  statement. would cause the interpreter to print each line number as it was executed.