Data General Extended BASIC , también conocido como Nova Extended BASIC , era un intérprete del lenguaje de programación BASIC para las minicomputadoras de la serie Data General Nova . Se basaba en el Dartmouth BASIC original , incluyendo las variables de cadena de la Quinta Edición y potentes comandos para la manipulación de matrices . A diferencia del Dartmouth BASIC, que compilaba y ejecutaba , Extended BASIC era un intérprete .MAT
Al sencillo sistema de manipulación de cadenas de Dartmouth, Extended BASIC añadió el seccionamiento de matrices , que era común en los BASIC de la época tras su introducción en HP Time-Shared BASIC . Se popularizó en los microordenadores de la década de 1980 que no utilizaban Microsoft BASIC , como Sinclair BASIC , Atari BASIC y otros. Esto contrasta con el estilo de Microsoft, que utiliza funciones de cadena como LEFT$, lo que dificulta en cierta medida la adaptación del código de cadena a otros dialectos.
Posteriormente, Data General adquirió los derechos de una versión mucho más completa de BASIC, que se lanzó como Data General Business Basic . Esta versión incorporó potentes funcionalidades de base de datos y sustituyó en gran medida a Extended BASIC en las plataformas de DG.
Descripción
Matemáticas
El formato interno de números de punto flotante normalmente utilizaba dos palabras de 16 bits para un total de 32 bits, almacenados con el bit menos significativo primero. El bit 0 era el signo, del 1 al 7 el exponente almacenado en formato de exceso de 64 bits , y del 8 al 31 la mantisa almacenada como dígitos hexadecimales. [ 1 ] Los números podían utilizar alternativamente un formato de doble precisión que extendía solo la mantisa, añadiendo otros 32 bits. Esto 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 iban desde 5,4 × 10−79 a − 7,2 × 1075. Los números con menos de seis dígitos se mostraban como decimales, mientras que los que tenían más se mostraban en formato exponencial. [ 1 ]
Los nombres de las variables podían constar de una sola letra o de una letra y un solo dígito. No se permitían nombres de dos letras. Los arreglos podían tener DIM1 (arreglo) o 2 (matriz) dimensiones, y el límite inferior siempre era 1. [ 2 ] Como era común en ese momento, las variables sin DIMvalor predeterminado eran un arreglo unidimensional de 10 elementos. Curiosamente, si una variable seDIM creaba, no era lo mismo que una variable con el mismo nombre que no se hubiera DIMcreado; A(1)y Apodían ser variables iguales o diferentes dependiendo de cómo se crearan. [ 3 ]
Los operadores matemáticos eran el conjunto estándar, con la adición de un signo más unario. [ 3 ] Los operadores relacionales para comparaciones también eran el conjunto estándar; no existían #para desigualdades como en algunos BASIC contemporáneos. [ 3 ]
Matemáticas matriciales
Extended BASIC añadió el conjunto de operaciones matemáticas matriciales de la quinta edición de Dartmouth BASIC. Estas eran, esencialmente, macros que realizaban operaciones que de otro modo se llevarían a cabo con FOR...NEXTbucles. [ 4 ]
El sistema incluía varias matrices predefinidas, como ZERuna matriz de ceros, CONuna matriz de unos y IDNla matriz identidad . Se admitían la mayoría de las operaciones matemáticas; por ejemplo, MAT A=A*2multiplicaba cada elemento de A por 2, MAT A=DET Acalculaba el determinante y MAT A=INV(A)lo invertía. [ 4 ]
Instrumentos de cuerda
Los literales de cadena (constantes) se introducían entre comillas dobles. Los caracteres dentro de las cadenas podían escaparse colocando su valor ASCII entre corchetes angulares; por ejemplo, "This prints a quote, <34>."las variables de cadena, al igual que sus equivalentes numéricos, constaban de una sola letra, o una letra y un dígito. [ 5 ]
Como ocurre con todas las variables en Extended BASIC, las variables de cadena normalmente se asignaban a diez espacios, pero podían extenderse hasta un máximo de 32 k con una instrucción explícita DIM. Debido a que se utilizaba la sintaxis de matrices para declarar la longitud de la cadena, no era posible crear matrices de cadenas. Asignar una cadena a una variable demasiado pequeña para contenerla provocaba que cualquier exceso se truncara. [ 6 ]
La manipulación de cadenas se realizaba utilizando la sintaxis de segmentación de matrices . A$(10)se refería a la subcadena desde la posición 10 hasta el final de la cadena, mientras que A$(10,20)se refería a los caracteres del 10 al 20. La concatenación utilizaba la coma, por lo que A$=A$,B$se añadía 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 utilizaban segmentación la utilizaban también para la concatenación, por ejemplo, añadirían B$ al final de A$ , mientras que aquellos que utilizaban funciones de cadena, como Microsoft BASIC , ya utilizaban ampliamente el signo más para esta operación.A$(LEN(A$))=B$
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"se insertaría 3579 en A, sin necesidad de convertirlos explícitamente a numéricos. En la mayoría de los dialectos, esta tarea requeriría convertir ambos números a numéricos usando la VALfunción, como A=VAL("1234")+VAL("2345"). Los caracteres no numéricos simplemente se ignoraban, A="1234"+"FRED"insertando 1234 en A. [ 8 ]
La versión extendida de BASIC carecía del CHANGEcomando de Dartmouth que convertía una cadena completa a valores ASCII o viceversa en una matriz; por ejemplo, CHANGE "HELLOWORLD" TO Besto resultaba en que a la letra B se le asignaban 10 números, cada uno de ellos un valor ASCII. Este sistema fue reemplazado por el sistema de segmentación.
Declaraciones
Extended BASIC es similar a Dartmouth y Microsoft BASIC en la variedad de comandos que admite y su sintaxis. Las excepciones incluyen CONen lugar de CONT, DELAYen lugar de PAUSE(que de todos modos no era común). Dos adiciones fueron ON ERR THEN...que permitía capturar errores, una característica que se volvió común en otros BASIC, y ON ESC THEN...que permitía capturar también la tecla break (escape en este caso). [ 9 ]RETRY era similar a CON, pero permitía volver a ejecutar una sola línea después de un break, en lugar de continuar todo el programa. [ 10 ]TIME establecía el límite de tiempo para que TINPUTlas instrucciones respondieran, que era una "entrada temporizada" idéntica a INPUT. [ 11 ]
Extended BASIC agregó una variedad de instrucciones de edición de modo inmediato que realmente no son parte del lenguaje en sí . Estas incluían ERASEeliminar un rango de líneas de un programa, ENTERleer el contenido de un archivo de texto en el programa y RENUMBER. [ 12 ]CARDS era similar a ENTER, pero leía las líneas del lector de tarjetas.
También agregó varias instrucciones para manejar el sistema de archivos subyacente, incluyendo FILEuna que lista los archivos en el directorio del usuario y LIBRARYotra que hace lo mismo con comodines, GDIRque imprimía el nombre de ese directorio, LOADy SAVEpara el código del programa, RENAMEy DELETE, y DISK, que imprimía el espacio libre. PUNCHera como SAVE, pero enviaba el archivo a la perforadora de tarjetas . WHATSimprimía los atributos de un archivo dado. [ 13 ]
Otras instrucciones relacionadas con el sistema operativoWHO incluían imprimir una lista de usuarios conectados, MSGmolestarlos, PAGEestablecer el margen derecho (ancho de página) e SIZEimprimir la memoria utilizada por el programa, lo contrario de lo que devolvería MS BASIC con FRE(). [ 14 ]
Funciones
Las funciones se asemejaban mucho a Dartmouth y Microsoft BASIC, con algunas adiciones. CPU()Devolvía un valor numérico que codificaba las posiciones de los interruptores del panel frontal. [ 15 ] Devolvía si el archivo xEOF(x) había llegado o no al final del archivo. Devolvía la posición de B$ dentro de A$ , en cualquier lugar después de la posición opcional Z , similar al estándar de MS . [ 16 ] Tenga en cuenta que esto anula la que se encuentra en MS, que devuelve la posición de columna actual del cursor.POS(X$,Y$,Z)INSTRPOS
Referencias
Citas
- 1 2 Manual 1978 , pág. 2.1.
- 1 2 Manual 1978 , pág. 2.2.
- 1 2 3 Manual 1978 , pág. 2.3.
- 1 2 Manual 1978 , Capítulo 5.
- ↑ Manual 1978 , pág. 2.4.
- ↑ Manual 1978 , pág. 2.5.
- ↑ Manual 1978 , pág. 2.6.
- ↑ Manual 1978 , pág. 2.7.
- ↑ Manual 1978 , pág. 3.26.
- ↑ Manual 1978 , pág. 3.43.
- ↑ Manual 1978 , pág. 3.48.
- ↑ Manual 1978 , pág. 3.42.
- ↑ Manual 1978 , pág. 3.50.
- ↑ Manual 1978 , pág. 3.46.
- ↑ Manual 1978 , pág. 4.3.
- ↑ Manual 1978 , pág. 4.7.
Bibliografía
- Manual de usuario de BASIC extendido . Data General. Enero de 1978.
- Intérpretes BÁSICOS
- Familia de lenguajes de programación BASIC
- Datos generales