stringtranslate.com

HP BÁSICO de tiempo compartido

HP Time-Shared BASIC ( HP TSB ) es un intérprete de lenguaje de programación BÁSICO para la línea HP 2000 de sistemas informáticos de tiempo compartido basados ​​en minicomputadoras de Hewlett-Packard . TSB es históricamente notable como 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 entre 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 ni ofrecían funciones de manipulación de cadenas. Los proveedores agregaron sus propias soluciones; HP utilizó un sistema similar a Fortran y otros lenguajes con corte de matrices , mientras que DEC introdujo más tarde las MID/LEFT/RIGHTfunciones.

Cuando las microcomputadoras comenzaron a ingresar al mercado a mediados de la década de 1970, aparecieron muchos BASIC nuevos 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 basó en el BASIC-PLUS de DEC . Otros, incluidos Integer BASIC de Apple , Atari BASIC y North Star BASIC, siguieron el estilo de HP. Esto dificultaba un poco las conversiones entre estas plataformas si se encontraba 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 lenguaje 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 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 procesador dual . Se utiliza un procesador HP serie 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 HP serie 2100, más pequeño, se utiliza para manejar las líneas seriales RS-232 a través de las cuales se transmite 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 Teletype Modelo 33 ASR y se conectaba directamente al procesador de E/S o mediante un módem o acoplador acústico . Los nombres de cuentas 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 programas y comandos. 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 disco de almacenamiento cargado con un cartucho o paquete de cabezal móvil . Los usuarios privilegiados también pueden almacenar programas en el tambor, mucho más rápido. Se realizó una copia de seguridad del disco duro 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 mediante el comando GUARDAR. También se pueden almacenar en un formato semicompilado, utilizando el comando CSAVE, que les permite iniciarse 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 avance 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 ejecución. Las declaraciones se analizan para determinar la sintaxis correcta a medida que se ingresan y luego se almacenan en forma tokenizada. Cada declaración BÁSICA debe estar en una línea con un número único, 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; No se admite el encadenamiento de varias declaraciones con dos puntos como en MS BASIC. Se permiten múltiples asignaciones de variables, 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 anterior (2000A), el lenguaje admitía las siguientes funciones. [1] Las versiones posteriores agregaron muchas más funciones. [2]

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 cadenas usando 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 con 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 matrices y subcadenas comienzan con 1.A$(L,R)A$[L,R]A$[L]

Esto contrasta marcadamente con los BASIC que siguen el patrón DEC que usan funciones como LEFT$(), MID$()y RIGHT$()para acceder a subcadenas, aunque ANSI BASIC continúa usando 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 declaració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 requeriría cuando cambian las longitudes de las cadenas. MS BASIC tenía una biblioteca extensa para manejar la compresión de la 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 a lo largo de 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 interna está vacía, y tareas simples como la concatenación pueden potencialmente desbordar la cadena a menos que se haya configurado en un tamaño grande para comenzar. con.

Las versiones posteriores de Dartmouth BASIC 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 usó las funciones IZQUIERDA/MID/DERECHA para manipular cadenas, sino que usó el CHANGEcomando que convertía la cadena hacia y desde valores ASCII equivalentes. HP incluyó una funcionalidad idéntica, cambiando solo el nombre a CONVERT. [5] [a] Además, se podrían utilizar las comillas simples para convertir una constante numérica en un carácter ASCII, lo que permitiría construir una cadena en partes; produjo 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 operaciones en matrices enteras con una sola declaración. Estos también estuvieron disponibles en versiones posteriores de TSB. En su forma más simple, MATse 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    

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] Funciones y declaraciones adicionales modifican PRINTe INPUTinvierten 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:

Ver 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. ^ Referencia 1976, pag. 4-3.
  4. ^ "Crea tu propia versión de Microsoft BASIC".
  5. ^ Referencia 1976, pag. 4-6.
  6. ^ Referencia 1976, pag. 4-2.
  7. ^ Referencia 1976, pag. 11-50.
  8. ^ Referencia 1976, págs. 11–49, 11–55.
  9. ^ Referencia 1976, pag. 2-5.
  10. ^ Referencia 1976, pag. F-4.
  11. ^ Referencia 1976, pag. 2-15.
  12. ^ Referencia 1976, pag. 2-10.
  13. ^ Referencia 1976, pag. 2-9.
  14. ^ Referencia 1976, pag. 2-11.

Bibliografía

enlaces externos