HP-Tiempo Compartido BÁSICO ( HP TSB ) es un lenguaje de programación BASIC intérprete para Hewlett-Packard 's HP 2000 línea de miniordenadores basados en tiempo compartido sistemas informáticos. TSB es históricamente notable como la plataforma que lanzó las primeras versiones públicas del juego Star Trek .
Paradigma | imperativo |
---|---|
Desarrollador | Mike Green |
Apareció por primera vez | antes de 1969 |
SO | HP 2100 |
Influenciado por | |
Dartmouth BÁSICO | |
Influenciado | |
Cf. SDS BASIC , Integer BASIC , Atari BASIC , muchos otros |
El sistema implementa un dialecto de BASIC, así como una cuenta de usuario rudimentaria y una biblioteca de programas que permite que varias personas utilicen el sistema a la vez. Los sistemas fueron una fuerza importante a principios y mediados de la década de 1970 y generaron una gran cantidad de programas. HP mantenía una base de datos de programas contribuidos y los clientes podían solicitarlos en cinta perforada por una tarifa nominal.
La mayoría de los BASIC de la década de 1970 remontan su historia al Dartmouth BASIC original de la década de 1960, pero las primeras versiones de Dartmouth no manejaban variables de cadena y los proveedores agregaron sus propias soluciones. Esto llevó a dos estilos generales; DEC introdujo las MID/LEFT/RIGHT
funciones, mientras que TSB usó un sistema más parecido a Fortran y otros lenguajes con corte de matriz .
A medida que las microcomputadoras comenzaron a ingresar al mercado a mediados de la década de 1970, aparecieron muchos nuevos BASIC que basaban sus analizadores en la sintaxis de DEC o HP. Altair BASIC , la versión original de lo que se convirtió en Microsoft BASIC , se inspiró en BASIC-PLUS de DEC . Otros, incluidos Integer BASIC de Apple , Atari BASIC y North Star BASIC, fueron modelados en el estilo HP. Esto hizo que las conversiones entre estas plataformas fueran algo difíciles si se encontraba el manejo de cadenas.
Nomenclatura
El software también era conocido por su nombre versionado, vinculado a la versión de hardware en la que se ejecutaba, como HP 2000C Time-Shared BASIC y el sistema operativo venía en diferentes variedades: 2000A, 2000B, 2000C, High-Speed 2000C, 2000E, y 2000F.
HP también se refirió al idioma como "Access BASIC" en algunas publicaciones. Esto coincidía con el nombre de las máquinas en las que se ejecutaba, conocido como "2000 / Access" en algunas publicaciones. Esta terminología parece haberse utilizado solo brevemente cuando se lanzó la plataforma por primera vez.
Detalles de la plataforma
A excepción de los sistemas 2000A y 2000E, el sistema se implementa utilizando una arquitectura de procesador dual . Se utiliza un procesador de la serie HP 2100 completamente configurado para la ejecución de la mayor parte del código del sistema y todo el código de usuario, mientras que un segundo procesador de la serie HP 2100, más pequeño, se utiliza para manejar las líneas seriales RS-232 a través de las cuales el tiempo -compartir usuarios conectados. Dependiendo de la configuración del hardware, el sistema admite hasta 16 o hasta 32 usuarios remotos simultáneos.
El terminal habitual para un sistema TSB era un Teletipo Modelo 33 ASR y se conectaba directamente al procesador de E / S oa través de un módem o acoplador acústico . Los nombres de cuenta son una combinación de un carácter alfabético, seguido de tres dígitos decimales, por ejemplo , B001. Las cuentas privilegiadas comenzaban con la letra "A" y tenían algunas capacidades adicionales de almacenamiento de comandos y programas. La cuenta de superusuario es A000. Este esquema permite hasta 26.000 cuentas de usuario.
Durante la ejecución, los programas de usuario se cambian a una unidad de cabezal fijo , físicamente un disco, pero que funciona como un tambor magnético . Cuando no se ejecutan, los programas de usuario se almacenan en un cartucho de cabezal móvil o en un disco cargado por paquete . Los usuarios privilegiados también pueden almacenar programas en un tambor mucho más rápido. El disco duro estaba respaldado en cinta magnética .
Los nombres de programas y archivos constan de una combinación de hasta seis caracteres alfabéticos (AZ) y números (0-9). Los programas se almacenan en un formato tokenizado , utilizando el comando SAVE. También se pueden almacenar en un formato semi-compilado, usando el comando CSAVE, que les permite comenzar más rápido. Dado que el sistema estaba estrechamente vinculado al uso de teleimpresores comúnmente disponibles, los finales de línea en los archivos consistían en el carácter de retorno de carro (ASCII CR, 0D hexadecimal), seguido del carácter de salto de línea (ASCII LF, 0A hexadecimal).
Sintaxis
El lenguaje es una implementación bastante estándar de BASIC, que proporciona un entorno integrado de edición y tiempo de ejecución. Las declaraciones se analizan para determinar la sintaxis correcta a medida que se ingresan y luego se almacenan en forma de token. Cada declaración BÁSICA tiene que estar en una línea numerada de forma única, por ejemplo
10 IMPRIMIR "HOLA MUNDO"
Los números de línea son obligatorios y las declaraciones se colocan automáticamente en secuencia numérica ascendente. Las líneas TSB pueden contener una declaración, encadenar varias declaraciones con dos puntos como en MS BASIC no es compatible. Asignaciones de variables múltiples se les permite, por ejemplo , . Como en la mayoría de las versiones de BASIC, el uso de la palabra "LET" era opcional.20 LET A=B=C=42
En la versión más antigua (2000A), el idioma admitía las siguientes características. [1] Las versiones posteriores agregaron muchas más funciones. [2]
- Control de flujo de programa incondicional mediante
GOTO
sentencias y subrutinas mediante sentenciasGOSUB
yRETURN
- Control de flujo condicional mediante
IF/THEN
declaración - Control de flujo calculado a través de declaraciones
GOTO/OF
yGOSUB/OF
- Sentencias
FOR
y bucle de bloque basado en variablesNEXT
- En el código de almacenamiento de datos a través de
DATA
,READ
yRESTORE
declaraciones - Y el aporte de salida al usuario o un disco de archivos a través de
INPUT
,READ #
,PRINT
,PRINT #
, yIF END #
declaraciones - Variables numéricas de la forma "A" o "A n " (donde A es una sola letra yn es un solo dígito opcional) almacenadas como números de coma flotante de 32 bits
- Variables de cadena de la forma "A $" (donde A es una sola letra), almacenando de 0 a 72 caracteres
- Variables de matriz (matriz) unidimensionales o bidimensionales de la forma "A [x]" o "A [x, y]"
- Operaciones de matriz a través de declaraciones (
MAT READ, MAT INPUT, MAT PRINT, MAT=
) y operaciones (+, -, *, ZER, CON, IDN, INV, TRN
) - Operadores booleanos (
AND, OR, NOT
) y operadores relacionales (<, <=, =, #, <>, >=, and >
) - Funciones matemáticas integradas que incluyen trigonométricas (
SIN, COS, TAN, ATN
), logaritmos (LOG, EXP
), raíz cuadrada (SQR
), generador de números aleatorios (RND
), otras (ABS, INT, SGN, MIN, MAX)
y funciones definidas por el usuario - Operaciones de cinta perforada utilizando terminales remotos de teleimpresora electromecánica Teletype Modelo 33
Manejo de cuerdas
Las cadenas en TSB se tratan como una matriz de caracteres, en lugar de un único objeto de varios caracteres. De forma predeterminada, se les asigna un carácter en la memoria, y si se necesita una cadena de mayor longitud, deben mencionarse antes de su uso. Por ejemplo, configurará una cadena que puede contener un máximo de 10 caracteres. La longitud máxima de una cadena en TSB es de 72 caracteres. [3]DIM A$[10]
Se accede a las subcadenas dentro de las cadenas mediante una notación de " corte ": o , donde la subcadena comienza con el carácter más a la izquierda especificado por el índice L y continúa hasta el carácter más a la derecha especificado por el índice R, o la forma donde la subcadena comienza en el carácter más a la izquierda especificado por el índice L y continúa hasta el final de la cadena. TSB acepta () o [] indistintamente. Los índices de matriz y subcadena comienzan con 1.A$(L,R)
A$[L,R]
A$[L]
Esto contrasta fuertemente con los BASIC que siguen el patrón DEC que usan funciones como LEFT$()
, MID$()
y RIGHT$()
para acceder a las subcadenas, aunque ANSI BASIC continúa usando una sintaxis de subcadenas similar a la introducida por Hewlett-Packard. La notación de HP también se puede utilizar en el lado de destino de una instrucción LET o INPUT para modificar parte de un valor de cadena existente, por ejemplo o , lo que no se puede hacer con implementaciones tempranas de LEFT / MID / RIGHT.100 A$[3,5]="XYZ"
120 B$[3]="CHANGE ALL BUT FIRST TWO CHARS"
La principal ventaja de este estilo de acceso a cadenas es que elimina la necesidad de una gestión de memoria compleja que de otro modo sería necesaria cuando cambian las longitudes de las cadenas. MS BASIC tenía una biblioteca larga para manejar la compresión de la memoria al eliminar el espacio muerto en el montón de cadenas cuando el sistema se quedaba sin memoria. También era notoriamente lento y se modificó varias veces durante su vida útil para mejorar el rendimiento o corregir errores. [4] La desventaja del estilo TSB es que la cadena siempre ocupa la cantidad total de espacio DIMed incluso si la cadena en el interior está vacía, y las tareas simples como la concatenación pueden desbordar la cadena a menos que se haya configurado en un tamaño grande para comenzar. con.
Las versiones posteriores de Dartmouth BASIC incluyeron variables de cadena, basadas en el mismo patrón que se encuentra en BASIC-PLUS y MS BASIC. Sin embargo, esta versión no usó las funciones LEFT / MID / RIGHT para manipular cadenas, sino que usó el CHANGE
comando que convertía la cadena hacia y desde valores ASCII equivalentes. HP incluyó una funcionalidad idéntica, cambiando solo el nombre a CONVERT
. [5] Además, se podría usar la comilla simple para convertir una constante numérica en un carácter ASCII, lo que permite construir una cadena en partes; produjo la cadena "ABCDEF", sin la necesidad de la función. [6]A$='23 '64 '49 "DEF"
CHR$()
Comandos MAT
Las versiones posteriores de Dartmouth BASIC incluían un conjunto de MAT
comandos que permitían operaciones en matrices completas ( matrices ) con una sola declaración. Estos también estaban disponibles en versiones posteriores de TSB. En su forma más simple, MAT
se usa como una forma alternativa de LET
, aplicando una expresión a todos los elementos de una matriz. Por ejemplo:
100 DIM A ( 20 ), B ( 20 ) ... 200 MAT A = A + B
Sumará el valor de cada valor en B a cada entrada en A, de la misma manera que:
100 DIM A ( 20 ), B ( 20 ) ... 200 PARA I = 1 A 20 210 A [ I ] = A [ I ] + B [ I ] 220 SIGUIENTE I
Además de hacer que el código sea más corto y más obvio, estos comandos también tienen la ventaja de estar altamente optimizados, superando fácilmente el uso de FOR / NEXT. [7] Funciones y declaraciones adicionales modifican PRINT
e INPUT
invierten matrices y construyen matrices de identidad y demás en una sola declaración. [8]
Otras diferencias
TSB también incluye una serie de diferencias menores con otros dialectos. Entre los más importantes se encuentran:
#
es una forma opcional de comparación no igual, idéntica a<>
[9]- computed-goto usando la
ON...GOTO/GOSUB
sintaxis no es compatible. En su lugar, realiza la misma función seleccionando un número de línea de la lista en función de su posición ordinal. Por ejemplo, siempre irá a la línea 10, mientras que se ramificará a diferentes líneas si el valor de A es 1, 2 o 3. [10]GOTO expression OF 1,2,3...
GOTO 1 OF 10,20,30
GOSUB A OF 100,200,300
- Boole y operadores relacionales se pueden utilizar en cualquier expresión matemática, volviendo a 0 o 1 para falsa verdad, que era inusual para los idiomas básicos de la época, pero muy popular en lenguajes como C . Por ejemplo, se ramificará a la línea 1600 si C o D son mayores que cero, porque la expresión se evaluará como 'verdadera' en . Si C y D son ambos cero, lo evaluará como 'falso' y no se tomará la rama.
IF C+D THEN 1600
C+D
IF
IF
- TSB incluye
ENTER
una variación de laINPUT
declaración estándar que continúa después de que se alcanza un límite de tiempo.ENTER
tiene tres entradas, un límite de tiempo en segundos, una variable de retorno que contiene el tiempo real transcurrido (o un código de estado) y, finalmente, la entrada del usuario. Por ejemplo, esperará 15 segundos para que el usuario escriba un solo carácter. T contendrá el tiempo real que tardaron, -256 si el temporizador expiró, o -257 o -258 para indicar problemas con la terminal. [11]ENTER 15,T,A$[1,1]
- Al imprimir constantes de cadena (literales), no se necesitan puntos y comas dentro de la línea. Por ejemplo, no requiere punto y coma entre las constantes de cadena y la variable A. [12] Algunos otros BASIC, incluido MS, también admitían esta sintaxis. Otros, como Atari o Integer, no lo hicieron.
PRINT "THE NUMBER IS"A", TRY A LARGER VALUE."
- La
PRINT
pestaña Comas en uso se detiene en 15 caracteres, dejando 12 al final de la línea para un total de 72. [13] - La
LIN
función opera como una contraparte vertical deTAB
. insertará tres retornos de carro, potencialmente en la línea existente si un punto y coma o una coma final estaba activo, mientras que el caso especial siempre avanzará a la siguiente línea. [14] Integer BASIC tenía una característica similar, llamada .LIN(3)
LIN(-1)
VTAB
Ver también
- Rocky Mountain BASIC , otro dialecto muy diferente de BASIC creado en Hewlett-Packard
Referencias
Citas
- ^ HP 2000A - Guía del usuario, agosto de 1969, número de pieza 02000-90002, [1] . Consultado el 9 de mayo de 2016.
- ^ HP 2000 / Access BASIC - Manual de referencia, número de pieza 22687-90001, [2] . Consultado el 9 de mayo de 2016.
- ^ Ref. 1976 , p. 4-3.
- ^ "Cree su propia versión de Microsoft BASIC" .
- ^ Ref. 1976 , p. 4-6.
- ^ Ref. 1976 , p. 4-2.
- ^ Ref. 1976 , p. 11-50.
- ^ Ref 1976 , págs. 11-49,11-55.
- ^ Ref. 1976 , p. 2-5.
- ^ Ref. 1976 , p. F-4.
- ^ Ref. 1976 , p. 2-15.
- ^ Ref. 1976 , p. 2-10.
- ^ Ref. 1976 , p. 2-9.
- ^ Ref. 1976 , p. 2-11.
Bibliografía
- Manual de referencia de HP 2000 / Access BASIC (PDF) . Hewlett Packard. Mayo de 1976., N ° de pieza 22687-90001
- HP 2000 / Access Learning Timeshare BASIC (PDF) . Hewlett Packard. Mayo de 1976., N ° de pieza 22687-90009
enlaces externos
- www.bitsavers.org : documentación de HP archivada (escaneada en PDF)
- Grupo de usuarios de HP 2000
- Intérprete básico compatible con HP 2000
- Museo de Computadoras HP
- Historia de los sistemas informáticos de BTI