stringtranslate.com

SCELBAL

SCELBAL , abreviatura de SCientific ELementary BAsic Language , es una versión del lenguaje de programación BASIC lanzada en 1976 para SCELBI y otras microcomputadoras tempranas basadas en Intel 8008 y 8080 como la Mark-8 . Los complementos posteriores al lenguaje incluyeron un paquete matemático extendido y manejo de cadenas . La versión original requería 8 kB de RAM , mientras que las adiciones exigían al menos 12 kB.

El lenguaje se publicó en forma de libro, con secciones introductorias seguidas de diagramas de flujo y luego el código ensamblador 8008 . El libro describía formas de ahorrar más memoria, desactivando matrices, por ejemplo, y cómo el usuario podía agregar sus propias funciones nuevas al lenguaje.

Historia

El autor principal de SCELBAL es Mark Arnold, que era un estudiante de secundaria en 1974 cuando se anunció el SCELBI. Arnold era amigo de profesores de la Universidad de Wyoming (UW) y, a través de ellos, había conseguido tener una cuenta en su computadora central Sigma 7 . La primera versión de lo que se convirtió en SCELBAL fue escrita para esta máquina. Más tarde ese año, escribió un compilador cruzado 8008 en esa plataforma.

Arnold ingresó a la Universidad de Washington en 1975 y se puso en contacto con Nat Wadsworth, uno de los fundadores de SCELBI, y le propuso la idea de una versión compilada de BASIC para su nueva plataforma. Este sería un sistema multipaso que guardaría las versiones intermedias en cinta casete . Esto sería muy tedioso de usar pero produciría programas que se ejecutarían en los modelos 8H de 4 kB del sistema. Wadsworth prefirió un intérprete , que requeriría 8 kB, que estaría disponible en los nuevos modelos 8B del sistema. El lenguaje utilizaba rutinas de punto flotante publicadas por Wadsworth en 1975 en Machine Language Programming para el 8008 .

Wadsworth tardó varios meses en concertar finalmente un contrato, que incluía el envío a Arnold de un sistema de desarrollo 8B. Esto retrasó significativamente el lanzamiento del lenguaje hasta 1976. Arnold especuló que, sin estos retrasos, SCELBAL podría haberse lanzado aproximadamente al mismo tiempo que Altair BASIC a finales de 1975. Se presentó por primera vez en un extenso artículo en el segundo número de Dr. .Dobb's Journal en febrero de 1976. [1]

El lanzamiento de SCLEBAL se anunció en un anuncio en la edición de junio de 1976 de Byte . El anuncio no vinculaba específicamente el lenguaje a la plataforma SCELBI; en cambio, simplemente se ofrecía en forma de libro como una lista completa de fuentes para crear una versión de BASIC en cualquier sistema 8008 o 8080 con los 8 kB de RAM necesarios. El precio del libro era de 49 dólares, unos 252 dólares en 2022. [2]

Descripción

SCELBAL utilizó un formato de punto flotante de 32 bits (cuatro bytes) para cálculos numéricos, con una mantisa de 23 bits , un signo de 1 bit para la mantisa, un exponente de 7 bits y un signo de 1 bit para el exponente. Estos se organizaron en orden inverso, con el byte menos significativo de la mantisa en el primer byte, seguido por el byte medio y luego el más significativo con el signo en el bit alto. El exponente quedó último, nuevamente con el signo en la parte alta. [3] El manual proporciona código ensamblador bien documentado para todo el paquete matemático, incluidos puntos de entrada y notas de uso. [4] Los formatos de 32 bits eran comunes en esta época, mientras que las versiones posteriores de BASIC, comenzando con Microsoft BASIC para el MOS 6502 , generalmente adoptaron un formato de 40 bits (cinco bytes) para mayor precisión. [5]

Por lo demás, SCELBAL era similar a otros dialectos BASIC, incluidas las primeras versiones de MS como Altair BASIC , que carecían de variables y operadores de cadena y de una serie de funciones matemáticas. Otras diferencias fueron menos pronunciadas. La IFdeclaración tenía una forma opcional IF...GOTOque eliminaba la necesidad deTHEN . [6] También conservó la forma abreviada estilo MS para el mismo concepto, . También permitió la ejecución condicional de otras declaraciones, como . [7]IF X<Y GOTO 100IF X<Y THEN 100IF X<Y THEN PRINT X

El lenguaje base no admitía el manejo de cadenas, aunque se podían usar cadenas literales (constantes) PRINTy tenían las funciones de soporte CHRpara imprimir caracteres no imprimibles y TABproporcionar diseño. Curiosamente, el sistema requería que los códigos ASCII tuvieran el bit alto configurado, por lo que para convertir de códigos de caracteres ASCII normales a SCELBI, había que sumar o restar 128. Por ejemplo,

IMPRIMIR "HOLA" ; CDH ( 172 ); CDH ( 160 ); "MUNDO" 

para producir la cadena "HOLA, MUNDO" en la salida. [8]

INPUTnormalmente leería el texto ingresado por el usuario como un número, pero permitía que el signo de dólar indicara que el valor debería leerse como el código SCELBI. Por ejemplo, INPUT Aleería la entrada del usuario "1" en A como el valor de punto flotante 1, mientras que INPUT A$A se establecería en 177, 49 (ASCII para "1") + 128. Además, cuando se usa el signo de dólar , lo tradicional "?" El mensaje no se imprime y el comando regresa al idioma tan pronto como se ingresa un solo carácter, en lugar de esperar el retorno de carro como en el caso normal. [8]

Entre las pocas otras diferencias estaba que el NEWcomando encontrado en MS, que borra el código y los datos del programa existente, se llama SCR"scratch", [9] y la USRfunción, que se llama una rutina en lenguaje de máquina , era UDFpara "función definida por el usuario". . [10] UDF permitió pasar un único parámetro de punto flotante a la función definida por el usuario, cuyo código en lenguaje de máquina debe haberse cargado en la memoria en una ubicación fija antes del tiempo de ejecución. [11]

Los códigos de error se redujeron a dos letras, y el código para LOADy SAVEse proporcionó en forma repetitiva y se esperaba que se implementara cuando se transfiriera a diferentes plataformas. [12] Los números de línea podían estar entre 1 y 999999, [10] mientras que la mayoría de los BASIC usaban un entero de 16 bits y, por lo tanto, admitían líneas del 1 al 32767 o del 1 al 65535.

Características del idioma

Tomado del manual de 1976 a menos que se indique lo contrario. [13]

Comandos

Solo modo inmediato

Denominado modo "ejecutivo" en la documentación.

SCR
cero, equivalente a MSNEW
LIST
RUN
LOAD
SAVE

Modo inmediato o programa

PRINT
INPUT
Al igual que MS, podría aceptar múltiples variables . No incluyó una cadena de aviso.INPUT A,B,C
LET
Al igual que MS, LETera opcional, por lo que y son equivalentes.15 LET X=1015 X=10
IF...THEN
IF...GOTO
Forma alternativa de IF...THEN.
GOTO
Parece que la "versión espaciada" GO TOno era compatible.
GOSUB...RETURN
FOR...TO...STEP...NEXT
Como en MS, STEPes opcional y se supone que 1. NEXTrequiere una variable, a diferencia de versiones posteriores de MS.
REM
END
DIM
Las matrices funcionaban como en MS, pero eran opcionales y podían desactivarse para ahorrar memoria. Solo se admitían matrices unidimensionales y el número total de elementos para todas las matrices combinadas era 64 números.

Funciones

INT
SGN
ABS
SQR
RND
Como en MS, toma una variable ficticia y devuelve un valor entre 0 y 1.
CHR
Tenga en cuenta la falta del $ que se encuentra en MS, que usa CHR$.
TAB
UDF

Extensiones

SCELBI publicó dos extensiones del sistema, el Suplemento de funciones matemáticas y el Suplemento de cadenas.

Suplemento de funciones matemáticas

El Suplemento de Funciones Matemáticas agregó cinco nuevas funciones trascendentales , SIN,, , y . [14]COSEXPLOGATN

Suplemento de cuerdas

El Suplemento de Cadenas era algo más grande que las Funciones Matemáticas e incluía una serie de características nuevas.

Las cadenas pueden tener hasta 80 caracteres y el sistema puede contener un total de 64 variables de cadena. Cualquiera de esas 64, o todas, podrían ser matrices unidimensionales, pero el número total aún tenía que ser 64 cadenas en total. Curiosamente, las matrices de cadenas no requerían una DIMdeclaración. [15]

En contraste con MS BASIC y el manejo de cuerdas de Dartmouth BASIC que lo inspiró, SCELBI usó el estilo de manipulación de cuerdas "cortado" que se encuentra en los BASIC contemporáneos como SDS BASIC , HP Time-Shared BASIC y Northstar BASIC , o el posterior Atari BASIC . En lugar de usar funciones como ,, LEFT$para acceder a subcadenas, se usó la sintaxis de acceso a la matriz con dos puntos antes del punto de inicio y, opcionalmente, un punto y coma antes de la longitud. Como SCELBAL también admitía matrices de cadenas, el primer número en los descriptores de acceso de la matriz era el índice de la matriz y era opcional si la variable no era una matriz. Así, por ejemplo, el código: [15]RIGHT$MID$

10 DEJAR A$ = "HOLA" 20 IMPRIMIR A$ ( : 2 ; 3 )    

daría como resultado que "ELL" se imprima en la salida. Si se utilizó una matriz, la sintaxis requería el índice de la matriz en el primer parámetro: [15]

100 LET A$ ( 1 ) = "HOLA" 150 LET A$ ( 2 ) = "MUNDO" 200 PRINT A$ ( 2 : 2 ; 3 )      

daría como resultado que se imprima "ORL" en la salida. SCELBAL también permitió omitir el punto y coma, que especifica los caracteres desde el punto inicial hasta el final de la cadena. Así, por ejemplo, el código:

210 IMPRIMIR A$ ( 2 : 2 )  

daría como resultado que "ORLD" se imprimiera en la salida.

Aunque es similar a SDS BASIC, existe una diferencia importante en la forma en que funciona en comparación con otros BASIC que usaban sintaxis de corte, en que el último parámetro es la longitud, no una posición. Por ejemplo, en Atari BASIC el código de aspecto similar: [16]

20 IMPRIMIR A$ ( 2 , 3 )  

en su lugar, generaría "EL", ya que la instrucción se traduce como "imprimir todos los caracteres entre las posiciones 2 y 3". De esta manera SCELBAL funciona de forma más similar a MS BASIC, donde los equivalentes serían: [17]

20 IMPRIMIR MID$ ( A$ , 2 , 3 )  

y

210 DERECHO DE IMPRESIÓN$ ( A$ ( 2 ), 2 )  

Para agregar soporte completo para cadenas, el Suplemento reemplazó el original CHRcon CHR$, que coincidía con la sintaxis de su contraparte de MS. [15] Asimismo, INPUTse modificó para que las variables de cadena funcionaran como numéricas, esperando el retorno de carro y luego asignando toda la entrada del usuario a la variable de cadena asociada. [18] También agregó las funciones de soporte LENy ASC, [15] y VAL$para convertir una cadena que contiene un valor numérico en una representación de cadena de ese número. Como en MS, la concatenación utilizó el +operador. [18]

Referencias

Citas

  1. ^ Arnold, Marcos; Wadsworth, Nat (febrero de 1976). "SCELBAL: un lenguaje de nivel superior para sistemas 8008/8080". Diario del Dr. Dobb . págs. 30–53.
  2. ^ "¡Impactante!". Byte . Junio ​​de 1976. p. 47.
  3. ^ Arnold y Wadsworth 1976, pág. 10.1.
  4. ^ Arnold y Wadsworth 1976, pág. 10.
  5. ^ Steil, Michael (20 de octubre de 2008). "Cree su propia versión de Microsoft BASIC para 6502".
  6. ^ Arnold y Wadsworth 1976, pág. 14.10.
  7. ^ Arnold y Wadsworth 1976, pág. 2.3.
  8. ^ ab Arnold y Wadsworth 1976, pág. 14.16.
  9. ^ Arnold y Wadsworth 1976, pág. 14.1.
  10. ^ ab Arnold y Wadsworth 1976, pág. 14.17.
  11. ^ Arnold y Wadsworth 1976, pág. 14.3.
  12. ^ Arnold y Wadsworth 1976, pág. 14.18.
  13. ^ Arnold y Wadsworth 1976.
  14. ^ Matemáticas 1977, pag. 1.
  15. ^ ABCDE Cuerdas 1977, pag. 1.
  16. ^ Pequeño, David, ed. (1983). "Cadenas Atari y manejo de texto". El Atari creativo . Computación creativa.
  17. ^ Cuerdas 1977, pag. 3.
  18. ^ ab Cuerdas 1977, p. 2.

Bibliografía

enlaces externos