Data General Extended BASIC , también conocido como Nova Extended BASIC , fue un intérprete del lenguaje de programación BASIC para las miniordenadores de la serie Data General Nova . Se basó en el seminal Dartmouth BASIC , incluidas las variables de cadena de la Quinta Edición y los poderosos comandos para la manipulación de matrices . En contraste con el BASIC compilado y listo de Dartmouth, BASIC extendido era un intérprete .MAT
Desarrollador (es) | Datos generales |
---|---|
Versión inicial | 1970 |
Plataforma | Datos General Nova |
Tipo | BÁSICO |
Licencia | Software propietario comercial |
A esto, Extended BASIC agregó la manipulación de subcadenas mediante la división de arreglos , que era común en los BASIC de la época, que se encuentran en HP Time-Shared BASIC , Sinclair BASIC , Atari BASIC y otros. Esto contrasta con el estilo BASIC de Microsoft , que utiliza funciones de cadena como LEFT$
y, por lo tanto, hace que la migración del código de cadena sea algo difícil.
Posteriormente, Data General adquirió los derechos de un BASIC muy ampliado que se lanzó como Data General Business Basic . Esto agregó una potente funcionalidad de base de datos y reemplazó en gran medida a Extended BASIC en las plataformas DG.
Descripción
Matemáticas básicas
El formato de número de coma flotante interno normalmente usaba dos palabras de 16 bits para un total de 32 bits, almacenando primero el bit menos significativo . El bit 0 era el signo, del 1 al 7 era el exponente almacenado en formato de exceso de 64 y del 8 al 31 la mantisa almacenada como dígitos hexadecimales. [1] Los números podrían usar alternativamente un formato de doble precisión que extendiera solo la mantisa, agregando otros 32 bits. Eso significaba que el formato de doble precisión no extendía el rango de números que se podían almacenar, solo la precisión de esos números. [2] Los números posibles oscilaron entre 5,4 x 10 ^ -79 y -7,2 x 10 ^ 75. Los números con menos de seis dígitos se muestran como decimales, mientras que los que tienen más se muestran en formato de exponente. [1]
Los nombres de las variables pueden consistir en una sola letra o una letra y un solo dígito. No se permitieron nombres de dos letras. Las matrices podían DIM
medirse en 1 (matriz) o 2 (matriz) dimensiones, y el límite inferior siempre era 1. [2] Como era común en ese momento, las variables sin DIM
valores predeterminados en una matriz 1-D de 10 elementos. De manera confusa, si una variable se DIM
editó, no era lo mismo que una variable con el mismo nombre que no se había DIM
editado; A(1)
y A
pueden ser las mismas o diferentes variables dependiendo de cómo fueron creadas. [3]
Los operadores matemáticos fueron el conjunto estándar, con la adición de un más unario. [3] Los operadores relacionales para las comparaciones también eran el conjunto estándar, no había #
para no iguales como se encuentra en algunos BASIC contemporáneos. [3]
Matemáticas matriciales
Extended BASIC agregó el conjunto de operaciones matemáticas matriciales de la Quinta Edición de Dartmouth BASIC. En esencia, se trataba de macros que realizaban operaciones que de otro modo se realizarían con FOR...NEXT
bucles. [4]
El sistema incluía una serie de matrices pre-enrolladas, como ZER
para una matriz cero, CON
para una matriz de todos unos, IDN
para la matriz de identidad . La mayoría de las operaciones matemáticas fueron compatibles, por ejemplo, MAT A=A*2
multiplica cada elemento en A por 2. MAT A=DET A
toma el determinante y lo MAT A=INV(A)
invierte. [4]
Instrumentos de cuerda
Los literales de cadena (constantes) se ingresaron entre comillas dobles. Los caracteres dentro de cadenas se pueden escapar colocando su valor ASCII entre paréntesis angulares, por ejemplo, las "This prints a quote, <34>."
variables de cadena, como sus contrapartes numéricas, constan de una sola letra o una letra y un dígito. [5]
Como es el caso de todas las variables en Extended BASIC, a las variables de cadena normalmente se les asignaban diez espacios, pero podían extenderse hasta un máximo de 32 k con un explícito DIM
. Debido a que la sintaxis de la matriz se utilizó para declarar la longitud de la cadena, las matrices de cadenas no fueron posibles. Al asignar una cadena a una variable que era demasiado pequeña para mantenerla, se truncaba cualquier exceso. [6]
La manipulación de cadenas se llevó a cabo utilizando la sintaxis de corte de matriz . A$(10)
se refiere a la subcadena desde la posición 10 hasta el final de la cadena, mientras que se A$(10,20)
hace referencia a los caracteres del 10 al 20. La concatenación usa la coma, por lo que se A$=A$,B$
agrega B $ al final de A $. [7] Esta era una sintaxis poco común, incluso cuando se estaba introduciendo, la mayoría de los BASIC que usaban el corte lo usaban para la concatenación, por ejemplo, A$(LEN(A$))=B$
agregaban B $ al final de A $, mientras que aquellos que usaban funciones de cadena, como Microsoft BASIC , ya se utiliza ampliamente el signo más para esta operación.
Este cambio de sintaxis se debió a que Extended BASIC permitía aplicar operadores matemáticos a cadenas, hasta el primer carácter no numérico. Por ejemplo, A="1234"+"2345"
pondría 3579 en A, sin la necesidad de convertirlos explícitamente a números, que normalmente se maneja con la VAL
función en la mayoría de los dialectos. Los no numéricos simplemente se ignoraron, se A="1234"+"FRED"
pusieron 1234 en A. [8]
Extended BASIC carecía del CHANGE
comando de Dartmouth que convertía una cadena completa hacia o desde valores ASCII en una matriz, por ejemplo, lo CHANGE "HELLOWORLD" TO B
que da como resultado que a B se le asignen 10 números, cada uno con un valor ASCII.
Declaraciones
Extended BASIC es similar a Dartmouth y Microsoft BASIC en la variedad de comandos que admite y su sintaxis. Las excepciones incluyen en CON
lugar de CONT
, en DELAY
lugar de PAUSE
(que de todos modos no era común). Dos adiciones ON ERR THEN...
permitieron atrapar errores, una característica que se volvió común en otros BASIC, y ON ESC THEN...
que permitió atrapar también la tecla de interrupción (escape en este caso). [9] RETRY
era similar a CON
, pero permitía volver a ejecutar una sola línea después de una pausa, en lugar de continuar con todo el programa. [10] TIME
estableció el límite de tiempo para que las TINPUT
declaraciones respondieran, que era una "entrada cronometrada", por lo demás, idéntica a INPUT
. [11]
Extended BASIC agregó una variedad de declaraciones de edición de modo inmediato que no son realmente parte del lenguaje per se . Estos incluyen ERASE
eliminar un rango de líneas de un programa, ENTER
leer el contenido de un archivo de texto en el programa y RENUMBER
. [12] CARDS
era similar a ENTER
, pero lee las líneas del lector de tarjetas.
También agregó una serie de declaraciones para tratar con el sistema de archivos subyacente, incluido FILE
cuál enumera los archivos en el directorio del usuario y LIBRARY
cuál hace lo mismo con comodines, GDIR
qué imprime el nombre de ese directorio LOAD
y SAVE
para el código del programa, RENAME
y DELETE
, y DISK
, que imprimió el espacio libre. PUNCH
fue como SAVE
, pero envió el archivo a la perforadora de tarjetas . WHATS
imprimió los atributos de un archivo dado. [13]
Se incluyen otras declaraciones relacionadas con el sistema operativoWHO
para imprimir una lista de usuarios registrados, MSG
molestarlos, PAGE
establecer el margen derecho (ancho de página) e SIZE
imprimir la memoria utilizada por el programa, lo contrario de lo que se devolvería en MS BÁSICO con FRE()
. [14]
Funciones
Las funciones coincidían estrechamente con Dartmouth y Microsoft BASIC, con algunas adiciones. CPU()
devolvió un valor numérico que codificaba las posiciones de los interruptores del panel frontal. [15] EOF(x)
devolvió si el archivo x había llegado al final del archivo o no. POS(X$,Y$,Z)
devolvió la posición de B $ dentro de A $, en cualquier lugar después de la posición opcional Z, similar al estándar MS INSTR
. [16] Tenga en cuenta que esto anula el POS
encontrado en MS, que devuelve la posición actual de la columna del cursor.
Referencias
Citas
- ^ a b Manual 1978 , p. 2.1.
- ^ a b Manual 1978 , p. 2.2.
- ^ a b c Manual 1978 , pág. 2.3.
- ^ a b Manual 1978 , Capítulo 5.
- ^ Manual 1978 , p. 2.4.
- ^ Manual 1978 , p. 2.5.
- ^ Manual 1978 , p. 2.6.
- ^ Manual 1978 , p. 2.7.
- ^ Manual 1978 , p. 3.26.
- ^ Manual 1978 , p. 3.43.
- ^ Manual 1978 , p. 3,48.
- ^ Manual 1978 , p. 3,42.
- ^ Manual 1978 , p. 3,50.
- ^ Manual 1978 , p. 3,46.
- ^ Manual 1978 , p. 4.3.
- ^ Manual 1978 , p. 4.7.
Bibliografía
- Manual de usuario BÁSICO ampliado . Datos generales. Enero de 1978.