HP Time-Shared BASIC ( HP TSB ) is a BASIC programming language interpreter for Hewlett-Packard 's HP 2000 line of minicomputer -based time-sharing computer systems. TSB is historically notable as the platform that released the first public versions of the game Star Trek .
19-419: 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 for a nominal fee. Most BASICs of the 1970s trace their history to
38-535: A mix of up to six alphabetic characters (A-Z) and numbers (0-9). Programs are stored in a tokenized 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
57-446: 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 100 A$ [ 3 , 5 ] = "XYZ" or 120 B$ [ 3 ] = "CHANGE ALL BUT FIRST TWO CHARS" , which cannot be done with early implementations of LEFT/MID/RIGHT. The main advantage to this style of string access
76-463: A string of longer length is needed, they have to be mentioned before use. For instance, DIM A$ [10] will set up a string that can hold a maximum of 10 characters. The maximum length of a string in TSB is 255 characters. Substrings within strings are accessed using a " slicing " notation: A$ ( L , R ) or A$ [ L , R ] , where the substring begins with the leftmost character specified by
95-442: 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 . 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
114-403: Is that it eliminates the need for complex memory management 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
133-457: 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
152-536: The CHR$ () function. Later versions of Dartmouth BASIC included a suite of MAT commands that allowed operations on entire arrays ( matrices ) 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: Will add the value of every value in B to every entry in A, in
171-456: The 2000A and 2000E systems, the system is implemented using a dual- processor architecture . 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 serial lines through which the time-sharing users connected. Depending on the hardware configuration,
190-591: 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
209-538: 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. 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
SECTION 10
#1732780511361228-590: The index L and continues to the rightmost character specified by the index R, or the A$ [ L ] 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
247-505: The linefeed character (ASCII LF, 0A hexadecimal). 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. Line numbers are mandatory, and statements are automatically placed in ascending numeric sequence. TSB lines can contain one statement; chaining multiple statements with
266-494: The most important are: Punched tape Too Many Requests If you report this error to the Wikimedia System Administrators, please include the details below. Request from 172.68.168.237 via cp1104 cp1104, Varnish XID 213582401 Upstream caches: cp1104 int Error: 429, Too Many Requests at Thu, 28 Nov 2024 07:55:11 GMT Array slicing Too Many Requests If you report this error to
285-400: 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. Except for
304-545: The original Dartmouth BASIC 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 , 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 ,
323-492: The original version of what became Microsoft BASIC , was patterned on DEC's BASIC-PLUS . Others, including Apple's Integer BASIC , Atari BASIC and North Star BASIC were patterned on the HP style. This made conversions between these platforms somewhat difficult if string handling was encountered. 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
342-408: The same fashion as: 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. TSB also includes a number of more minor differences with other dialects. Among
361-519: 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 ASR and connected directly to the I/O processor or through a modem or acoustic coupler . 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
#360639