HP Time-Shared BASIC

From Wikipedia, the free encyclopedia

HP Time-Shared BASIC (HP TSB) was a computer system sold by the Hewlett-Packard Corporation in the late 1960s and 1970s based on their HP 2100 line of minicomputers. The system implemented a dialect of the BASIC programming language and a rudimentary user account and program library system. The software run on the system was also known by its versioned name such as HP 2000C Time-Shared BASIC and the TSB operating system came in different varieties: 2000A, 2000B, 2000C, 2000E, 2000F, and 2000/Access.

Except for the 2000E system, the system was implemented using a dual-processor architecture. One fully-configured HP 2100 processor was used for execution of most of the system code and all of the user code and a second, smaller HP 2100 processor was used to handle the RS-232 serial lines through which the time-sharing users connected. Depending on the hardware configuration, the system supported between 16 and 32 simultaneous remote users with the possibility of hundreds of user accounts. The usual terminal for a TSB system was an ASR-33 Teletype connected directly to the I/O processor or through a modem or acoustic coupler. Account names were a combination of one alphabetic character followed by three numbers, eg: B001. Privileged accounts started with the letter "A" and had some additional command and program storage capabilities.

During execution, user programs were swapped to fixed-head magnetic drum storage. When not executing, user programs were stored on moving-head cartridge- or pack-loaded disk storage. Privileged users could also store programs on the much-faster drum. Backup was to magnetic tape.

The language was a fairly standard implementation of BASIC, providing an integrated editing and runtime environment. Statements were analyzed for correct syntax as they were entered and then stored in semi-compiled form. Each BASIC statement had to be on a uniquely numbered line, eg: 10 PRINT "HELLO WORLD" and could only contain one statement although multiple variable assignments were allowed eg: 20 LET A=B=C=42

The language supported:

  • Unconditional program flow-control via GOTO statements, and Subroutines via the GOSUB and RETURN statements
  • Conditional flow-control via IF/THEN statement and simple variable-based block loop FOR and NEXT statements
  • Calculated flow-control via the GOTO/OF statement
  • Numeric variables of the form "A" or "An" (where A is a single letter and n a single, optional digit) stored as 4-byte floating-point numbers.
  • String variables of the form "A$" or "An$". Strings could store up to 72 characters
  • One- or two-dimensional matrix (array) variables of the form "A[x,y]" or "An[x,y]"
  • Matrix operations
  • Logical operators
  • Simple built-in mathematical functions including trigonometric (SIN,COS,TAN), logarithms (LOG, EXP), square root (SQR), and random number generator (RND)
  • File operations
  • Punched tape operations using a Teletype

Sub-strings within strings were accessed using a substring notation: "A$[L,R]" where L specified the leftmost byte to be accessed and R specified the rightmost byte to be accessed. This is in sharp contrast to some other BASICs that use functions such as LEFT$(), MID$(), and RIGHT$() to access substrings.

[edit] References

[edit] External links