stringtranslate.com

BASIC de tiempo compartido de HP

HP Time-Shared BASIC ( HP TSB ) es un intérprete del lenguaje de programación BASIC para la línea HP 2000 de sistemas informáticos de tiempo compartido basados ​​en minicomputadoras de Hewlett-Packard . TSB es históricamente conocido por ser la plataforma que lanzó las primeras versiones públicas del juego Star Trek .

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 aportados 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 tienen su origen en el Dartmouth BASIC original de la década de 1960, pero las primeras versiones de Dartmouth no manejaban variables de cadena ni ofrecían funciones de manipulación de cadenas. Los proveedores añadieron sus propias soluciones; HP utilizó un sistema similar a Fortran y otros lenguajes con segmentación de matrices , mientras que DEC introdujo posteriormente las MID/LEFT/RIGHTfunciones.

A mediados de los años 70, cuando los microordenadores empezaron a entrar en el mercado, aparecieron muchos nuevos BASIC que basaban sus analizadores sintácticos en la sintaxis de DEC o HP. Altair BASIC , la versión original de lo que se convertiría en Microsoft BASIC , se basaba en el BASIC-PLUS de DEC . Otros, como Integer BASIC de Apple , Atari BASIC y North Star BASIC, se basaban en el estilo de HP. Esto hacía que las conversiones entre estas plataformas fueran algo difíciles si se encontraban con el manejo de cadenas.

Nomenclatura

El software también era conocido por su nombre versionado, vinculado a la versión de hardware en el 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.

En algunas publicaciones, HP también se refirió al lenguaje como "Access BASIC". Esto coincidía con el nombre de las máquinas en las que se ejecutaba, conocidas como "2000/Access" en algunas publicaciones. Esta terminología parece haber sido utilizada sólo 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 doble procesador . Se utiliza un procesador HP 2100-series totalmente configurado para la ejecución de la mayor parte del código del sistema y de todo el código del usuario, mientras que se utiliza un segundo procesador HP 2100-series más pequeño para manejar las líneas seriales RS-232 a través de las cuales se conectan los usuarios de tiempo compartido . Según 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 Teletype Model 33 ASR y se conectaba directamente al procesador de E/S o a través de un módem o acoplador acústico . Los nombres de las cuentas son una combinación de un carácter alfabético, seguido de tres dígitos decimales, p. ej. , 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 transfieren a una unidad de cabezal fijo  (que en realidad es un disco, pero que funciona como un tambor magnético ). Cuando no se están ejecutando, los programas de usuario se almacenan en un cartucho de cabezal móvil o en un disco cargado por paquetes . Los usuarios privilegiados también pueden almacenar programas en el tambor, que es mucho más rápido. El disco duro se respaldó en una cinta magnética .

Los nombres de programas y archivos consisten en 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 semicompilado, utilizando el comando CSAVE, que permite que se inicien más rápido. Dado que el sistema estaba estrechamente vinculado al uso de teleimpresoras disponibles comúnmente, los finales de línea en los archivos consistían en el carácter de retorno de carro (ASCII CR, 0D hexadecimal), seguido por el carácter de avance de línea (ASCII LF, 0A hexadecimal).

Sintaxis

El lenguaje es una implementación bastante estándar de BASIC, que proporciona un entorno de edición y ejecución integrado. Las sentencias se analizan para comprobar su sintaxis correcta a medida que se ingresan y luego se almacenan en forma de tokens. Cada sentencia BASIC debe 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 instrucciones se colocan automáticamente en secuencia numérica ascendente. Las líneas TSB pueden contener una instrucción; no se admite el encadenamiento de varias instrucciones con dos puntos como en MS BASIC. Se permiten asignaciones de variables múltiples, 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 primera versión (2000A), el lenguaje admitía las siguientes características. [1] Las versiones posteriores agregaron muchas más características. [2]

Manejo de cadenas

En TSB, las cadenas se tratan como una matriz de caracteres, en lugar de como 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, se debe mencionar antes de usarla. Por ejemplo, se configurará una cadena que pueda contener un máximo de 10 caracteres. La longitud máxima de una cadena en TSB es de 255 caracteres. [3]DIM A$[10]

Se accede a las subcadenas dentro de cadenas mediante una notación de " slicing ": 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 marcadamente con los BASIC que siguen el patrón DEC que utilizan funciones como LEFT$(), MID$(), y RIGHT$()para acceder a subcadenas, aunque ANSI BASIC continúa utilizando una sintaxis de subcadena 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 las primeras implementaciones 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 se requiere cuando cambian las longitudes de las cadenas. MS BASIC tenía una biblioteca extensa para manejar la compresión de memoria eliminando 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 su interior está vacía, y las tareas simples como la concatenación pueden potencialmente desbordar la cadena a menos que se haya configurado con un tamaño grande para empezar.

Las versiones posteriores de Dartmouth BASIC sí incluían variables de cadena, basadas en el mismo patrón que se encuentra en BASIC-PLUS y MS BASIC. Sin embargo, esta versión no utilizaba las funciones LEFT/MID/RIGHT para manipular cadenas, sino que utilizaba el CHANGEcomando que convertía la cadena a y desde valores ASCII equivalentes. HP incluía una funcionalidad idéntica, cambiando sólo el nombre a CONVERT. [5] [a] Además, se podía utilizar la comilla simple para convertir una constante numérica en un carácter ASCII, lo que permitía construir una cadena en partes; producía la cadena "ABCDEF", sin 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 MATcomandos que permitían realizar operaciones sobre matrices completas con una única instrucción. Estos comandos también estaban disponibles en versiones posteriores de TSB. En su forma más simple, se MATutiliza como una forma alternativa de LET, aplicando una expresión a todos los elementos de una matriz. Por ejemplo:

100 DIMENSIONES A ( 20 ), B ( 20 ) ... 200 MAT A = A + B    

Agregará 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 obvio, estos comandos también tienen la ventaja de estar altamente optimizados, superando fácilmente el uso de FOR/NEXT. [7] Las funciones y declaraciones adicionales modifican PRINTy INPUT, invierten matrices y construyen matrices de identidad y similares en una sola declaración. [8]

Otras diferencias

El TSB también incluye una serie de diferencias menores con otros dialectos. Entre las más importantes se encuentran:

Véase también

Notas

  1. ^ Wang BASIC también usó CONVERT, pero convirtió números en cadenas, como la VALfunción .

Referencias

Citas

  1. ^ HP 2000A - Guía del usuario, agosto de 1969, número de pieza 02000-90002, [1]. Consultado el 9 de mayo de 2016.
  2. ^ HP 2000/Access BASIC - Manual de referencia N.º de pieza 22687-90001, [2]. Consultado el 9 de mayo de 2016.
  3. ^ Ref. 1976, pág. 4-3.
  4. ^ "Crea tu propia versión de Microsoft BASIC".
  5. ^ Ref. 1976, pág. 4-6.
  6. ^ Ref. 1976, pág. 4-2.
  7. ^ Ref. 1976, pág. 11-50.
  8. ^ Ref. 1976, págs. 11–49, 11–55.
  9. ^ Ref. 1976, pág. 2-5.
  10. ^ Ref. 1976, pág. F-4.
  11. ^ Ref. 1976, pág. 2-15.
  12. ^ Ref. 1976, pág. 2-10.
  13. ^ Ref. 1976, pág. 2-9.
  14. ^ Ref. 1976, pág. 2-11.

Bibliografía

Enlaces externos