HOME

TheInfoList



OR:

HP Time-Shared BASIC (HP TSB) is a BASIC programming language interpreter for Hewlett-Packard's
HP 2000 The HP 2100 is a series of 16-bit minicomputers that were produced by Hewlett-Packard (HP) from the mid-1960s to early 1990s. Tens of thousands of machines in the series were sold over its twenty-five year lifetime, making HP the fourth largest ...
line of minicomputer-based
time-sharing In computing, time-sharing is the sharing of a computing resource among many users at the same time by means of multiprogramming and multi-tasking.DEC Timesharing (1965), by Peter Clark, The DEC Professional, Volume 1, Number 1 Its emergence ...
computer systems. TSB is historically notable as the platform that released the first public versions of the game '' Star Trek''. The system implements a dialect of BASIC as well as a rudimentary user account and program library that allows multiple people to use the system at once. The systems were a major force in the early-to-mid 1970s and generated a large number of programs. HP maintained a database of contributed-programs and customers could order them on
punched tape Five- and eight-hole punched paper tape Paper tape reader on the Harwell computer with a small piece of five-hole tape connected in a circle – creating a physical program loop Punched tape or perforated paper tape is a form of data storage ...
for a nominal fee. Most BASICs of the 1970s trace their history to 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 inte ...
of the 1960s, but early versions of Dartmouth did not handle string variables or offer string manipulation features. Vendors added their own solutions; HP used a system similar to Fortran and other languages with
array slicing In computer programming, array slicing is an operation that extracts a subset of elements from an array and packages them as another array, possibly in a different dimension from the original. Common examples of array slicing are extracting a su ...
, while DEC later introduced the MID/LEFT/RIGHT functions. As microcomputers began to enter the market in the mid-1970s, many new BASICs appeared that based their parsers on DEC's or HP's syntax.
Altair BASIC Altair BASIC is a discontinued interpreter for the BASIC programming language that ran on the MITS Altair 8800 and subsequent S-100 bus computers. It was Microsoft's first product (as Micro-Soft), distributed by MITS under a contract. Altair BASI ...
, the original version of what became
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 ...
, was patterned on DEC's
BASIC-PLUS BASIC-PLUS is an extended dialect of the BASIC programming language that was developed by Digital Equipment Corporation (DEC) for use on its RSTS/E time-sharing operating system for the PDP-11 series of 16-bit minicomputers in the early 1970s thr ...
. Others, including Apple's Integer BASIC,
Atari BASIC Atari BASIC is an interpreter for the BASIC programming language that shipped with the Atari 8-bit family of 6502-based home computers. Unlike most American BASICs of the home computer era, Atari BASIC is not a derivative of Microsoft BASIC a ...
and North Star BASIC were patterned on the HP style. This made conversions between these platforms somewhat difficult if string handling was encountered.


Nomenclature

The software was also known by its versioned name, tied to the hardware version on which it ran, such as HP 2000C Time-Shared BASIC and the operating system came in different varieties — 2000A, 2000B, 2000C, High-Speed 2000C, 2000E, and 2000F. HP also referred to the language as "Access BASIC" in some publications. This matched the naming of the machines on which it ran, known as the "2000/Access" in some publications. This terminology appears to have been used only briefly when the platform was first launched.


Platform details

Except for the 2000A and 2000E systems, the system is implemented using a dual- processor
architecture Architecture is the art and technique of designing and building, as distinguished from the skills associated with construction. It is both the process and the product of sketching, conceiving, planning, designing, and constructing building ...
. One fully configured HP 2100-series processor is used for the execution of most of the system code and all of the user code, while a second, smaller HP 2100-series processor is used to handle the
RS-232 In telecommunications, RS-232 or Recommended Standard 232 is a standard originally introduced in 1960 for serial communication transmission of data. It formally defines signals connecting between a ''DTE'' (''data terminal equipment'') such ...
serial lines through which the
time-sharing In computing, time-sharing is the sharing of a computing resource among many users at the same time by means of multiprogramming and multi-tasking.DEC Timesharing (1965), by Peter Clark, The DEC Professional, Volume 1, Number 1 Its emergence ...
users connected. Depending on the hardware configuration, the system supports up to 16 or up to 32 simultaneous remote users. The usual terminal for a TSB system was a
Teletype Model 33 The Teletype Model 33 is an electromechanical teleprinter designed for light-duty office use. It is less rugged and cost less than earlier Teletype machines. The Teletype Corporation introduced the Model 33 as a commercial product in 1963 after ...
ASR and connected directly to the I/O processor or through a
modem A modulator-demodulator or modem is a computer hardware device that converts data from a digital format into a format suitable for an analog transmission medium such as telephone or radio. A modem transmits data by Modulation#Digital modulati ...
or
acoustic coupler In telecommunications, an acoustic coupler is an interface device for coupling electrical signals by acoustical means—usually into and out of a telephone. The link is achieved through converting electric signals from the phone line to sound a ...
. Account names are a combination of one alphabetic character, followed by three decimal digits, ''e.g.'', B001. Privileged accounts started with the letter "A" and had some additional command and program storage capabilities. The superuser account is A000. This scheme allows up to 26,000 user accounts. During execution, user programs are swapped to a fixed head drive — physically a disk, but operating like a
magnetic drum Drum memory was a magnetic data storage device invented by Gustav Tauschek in 1932 in Austria. Drums were widely used in the 1950s and into the 1960s as computer memory. For many early computers, drum memory formed the main working memory of ...
. When not executing, user programs are stored on moving-head cartridge- or pack-loaded disk storage. Privileged users can also store programs on the much-faster drum. The hard drive was backed up to magnetic tape. Program and file names consist of a mix of up to six alphabetic characters (A-Z) and numbers (0-9). Programs are stored in a
tokenized In computer science, lexical analysis, lexing or tokenization is the process of converting a sequence of characters (such as in a computer program or web page) into a sequence of ''lexical tokens'' ( strings with an assigned and thus identified ...
format, using the SAVE command. They can also be stored in a semi-compiled format, using the CSAVE command, which allows them to start quicker. Since the system was closely tied to the use of commonly available teleprinters, line endings in files consisted of the carriage return character (ASCII CR, 0D hexadecimal), followed by the linefeed character (ASCII LF, 0A hexadecimal).


Syntax

The language is a fairly standard implementation of BASIC, providing an integrated editing and runtime environment. Statements are analyzed for correct syntax as they are entered and then stored in tokenized form. Each BASIC statement has to be on a uniquely numbered line, ''e.g.'' 10 PRINT "HELLO WORLD" Line numbers are mandatory, and statements are automatically placed in ascending numeric sequence. TSB lines can contain one statement; chaining multiple statements with the colon as in MS BASIC is not supported. Multiple variable assignments are allowed, ''e.g.'', 20 LET A=B=C=42. As in most versions of BASIC, use of the word "LET" was optional. In the earliest version (2000A), the language supported the following features. Later versions added many more features. *Unconditional program flow-control via GOTO statements, and subroutines via the
GOSUB 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 ...
and RETURN statements *Conditional flow-control via IF/THEN statement *Calculated flow-control via the GOTO/OF and GOSUB/OF statements *Variable-based block loop FOR and NEXT statements *In-code data storage via DATA, READ, and RESTORE statements *Input from and output to the user or a disc
file File or filing may refer to: Mechanical tools and processes * File (tool), a tool used to ''remove'' fine amounts of material from a workpiece **Filing (metalworking), a material removal process in manufacturing ** Nail file, a tool used to gent ...
via INPUT, READ #, PRINT, PRINT #, and IF END # statements *Numeric variables of the form "A" or "A''n''" (where A is a single letter and ''n'' is a single, optional digit) stored as 32-bit floating-point numbers * String variables of the form "A$" (where A is a single letter), storing from 0 to 72 characters *One- or two-dimensional matrix (array) variables of the form "A or "A ,y *Matrix operations via statements (MAT READ, MAT INPUT, MAT PRINT, MAT=) and operations (+, -, *, ZER, CON, IDN, INV, TRN) *Boolean operators (AND, OR, NOT) and relational operators (<, <=, =, #, <>, >=, and >) *Built-in mathematical functions including trigonometric (SIN, COS, TAN, ATN), logarithms (LOG, EXP), square root (SQR), random number generator (RND), others (ABS, INT, SGN, MIN, MAX), and user-defined functions *
Punched tape Five- and eight-hole punched paper tape Paper tape reader on the Harwell computer with a small piece of five-hole tape connected in a circle – creating a physical program loop Punched tape or perforated paper tape is a form of data storage ...
operations using Teletype Model 33 electromechanical teleprinter remote terminals


String handling

Strings in TSB are treated as an array of characters, rather than a single multi-character object. By default, they are allocated one character in memory, and if a string of longer length is needed, they have to be mentioned before use. For instance, DIM A$ 0/syntaxhighlight> will set up a string that can hold a maximum of 10 characters. The maximum length of a string in TSB is 72 characters. Substrings within strings are accessed using a " slicing" notation: A$(L,R) or A$ ,R/syntaxhighlight>, where the substring begins with the leftmost character specified by the index L and continues to the rightmost character specified by the index R, or the A$ /syntaxhighlight> form where the substring starts at the leftmost character specified by the index L and continues to the end of the string. TSB accepts () or [] interchangeably. Array and substring indices start with 1. This is in sharp contrast to BASICs following the DEC pattern that use functions such as LEFT$(), MID$(), and RIGHT$() to access substrings, although ANSI BASIC continues to use a similar substring syntax to that introduced by Hewlett-Packard. HP's notation can also be used on the destination side of a LET or INPUT statement to modify part of an existing string value, for example or , which cannot be done with early implementations of LEFT/MID/RIGHT. The main advantage to this style of string access is that it eliminates the need for complex
memory management Memory management is a form of resource management applied to computer memory. The essential requirement of memory management is to provide ways to dynamically allocate portions of memory to programs at their request, and free it for reuse when ...
that is otherwise required when string lengths change. MS BASIC had a lengthy library to handle the compression of memory by removing dead space in the string heap when the system ran out of memory. It was also notoriously slow, and was modified several times over its lifetime in order to improve performance or fix bugs. The downside to the TSB style is that the string always takes up the full amount of DIMed space even if the string inside is empty, and simple tasks like concatenation can potentially overflow the string unless it was set to a large size to begin with. Later versions of Dartmouth BASIC did include string variables, based on the same pattern found in BASIC-PLUS and MS BASIC. However, this version did not use the LEFT/MID/RIGHT functions for manipulating strings, but instead used the CHANGE command which converted the string to and from equivalent ASCII values. HP included identical functionality, changing only the name to CONVERT. Additionally, one could use the single-quote to convert a numeric constant to an ASCII character, allowing one to build up a string in parts; A$='23 '64 '49 "DEF" produced the string "ABCDEF", without the need for the CHR$() function.


MAT commands

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 inte ...
included a suite of MAT commands that allowed operations on entire arrays (
matrices Matrix most commonly refers to: * ''The Matrix'' (franchise), an American media franchise ** ''The Matrix'', a 1999 science-fiction action film ** "The Matrix", a fictional setting, a virtual reality environment, within ''The Matrix'' (franchis ...
) with a single statement. These were also available in later versions of TSB. In their simplest form, the MAT is used like an alternate form of LET, applying an expression to all the elements in an array. For instance: 100 DIM A(20),B(20) ... 200 MAT A=A+B Will add the value of every value in B to every entry in A, in the same fashion as: 100 DIM A(20),B(20) ... 200 FOR I=1 TO 20 210 A A B 220 NEXT I As well as making the code shorter and more obvious, these commands also have the advantage of being highly optimized, easily outperforming the use of FOR/NEXT. Additional functions and statements modify PRINT and INPUT, invert arrays, and build identity matrixes and such in a single statement.


Other differences

TSB also includes a number of more minor differences with other dialects. Among the most important are: * # is an optional form of the not-equal comparison, identical to <> * computed-goto using the ON...GOTO/GOSUB syntax is not supported. Instead, the GOTO ''expression'' OF 1,2,3... performs the same function by picking a line number from the list based on its ordinal position. For instance, GOTO 1 OF 10,20,30 will always go to line 10, whereas GOTO A OF 100,200,300 will branch to different lines if the value of A is 1, 2 or 3. * Boolean and relational operators can be used in any mathematical expression, returning 0 for false or 1 for true, which was unusual for BASIC languages of that time, but popular in languages like C. For instance, IF C+D THEN 1600 will branch to line 1600 if either C or D are greater than zero, because the expression C+D will evaluate to 'true' in the IF. If C and D are both zero, the IF will evaluate it to 'false' and the branch will not be taken. * TSB includes ENTER, a variation on the standard INPUT statement that continues after a time limit is reached. ENTER has three inputs, a time limit in seconds, a return variable containing the actual time elapsed (or a status code), and then finally the user input. For instance, ENTER 15,T,A$ ,1/syntaxhighlight> will wait 15 seconds for the user to type in a single character. T will contain the actual time they took, -256 if the timer expired, or -257 or -258 to indicate problems with the terminal. * When printing string constants (literals), semicolons are not needed within the line. For instance, PRINT "THE NUMBER IS"A", TRY A LARGER VALUE." does not require semicolons between the string constants and the variable A. Some other BASICs, including MS, also supported this syntax. Others, like Atari or Integer, did not. * Commas in PRINT use tab stops every 15 characters, leaving 12 at the end of the line to total 72. * The LIN function operates as a vertical counterpart to TAB. LIN(3) will insert three carriage returns, potentially on the existing line if a trailing semicolon or comma was active, while the special-case LIN(-1) will always advance to the next line. Integer BASIC had a similar feature, called VTAB.


See also

*
Rocky Mountain BASIC Rocky Mountain BASIC (also RMB or RM-BASIC) is a dialect of the BASIC programming language created by Hewlett-Packard. It was especially popular for control of automatic test equipment using GPIB. It has several features which are or were unus ...
, another but very different dialect of BASIC created at Hewlett-Packard


Notes


References


Citations


Bibliography

* , Part No. 22687-90001 * , Part No. 22687-90009


External links


www.bitsavers.org
nbsp;— Archived HP documentation (scanned into PDF)
HP 2000 compatible Basic Interpreter

HP Computer Museum

BTI Computer Systems History
{{BASIC HP software Time-sharing operating systems BASIC programming language BASIC interpreters BASIC programming language family