Articulo de referencia

SCELBAL

SCELBAL , acrónimo de SCientific ELementary BASic Language (Lenguaje Básico Elemental Científico) , es una versión del lenguaje de programación BASIC lanzada en 1976 para el SCE...

SCELBAL , acrónimo de SCientific ELementary BASic Language (Lenguaje Básico Elemental Científico) , es una versión del lenguaje de programación BASIC lanzada en 1976 para el SCELBI y otros microordenadores Intel 8008 y 8080 de la época , como el Mark-8 . Posteriormente, se añadieron complementos al lenguaje, como un paquete matemático extendido y manejo de cadenas de caracteres . La versión original requería 8 kB de RAM , mientras que las ampliaciones exigían al menos 12 kB.  

El lenguaje se publicó en formato de libro, con secciones introductorias seguidas de diagramas de flujo y, a continuación, el código ensamblador 8008. El libro describía maneras de ahorrar memoria, desactivando matrices, por ejemplo, y cómo el usuario podía añadir sus propias funcionalidades al lenguaje.

Historia

El autor principal de SCELBAL es Mark Arnold, quien era 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, consiguió una cuenta en su ordenador central Sigma 7. La primera versión de lo que se convertiría en SCELBAL se escribió para esta máquina. Más tarde ese mismo año, escribió un compilador cruzado para el 8008 en esa plataforma.

Arnold ingresó en la Universidad de Washington en 1975 y contactó a Nat Wadsworth, uno de los fundadores de SCELBI, proponiéndole la idea de una versión compilada de BASIC para su nueva plataforma. Se trataría de un sistema de múltiples pasadas que guardaría las versiones intermedias en cintas de casete . Su uso sería muy tedioso, pero produciría programas que se ejecutarían en los  modelos 8H de 4 kB del sistema. Wadsworth prefería un intérprete , que requeriría 8  kB, disponible en los nuevos modelos 8B del sistema. El lenguaje utilizaba rutinas de punto flotante publicadas por Wadsworth en 1975 en Machine Language Programming for the 8008 .

Wadsworth tardó varios meses en conseguir 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, de no haber sido por estos retrasos, SCELBAL podría haberse lanzado casi 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 revista Byte de junio de 1976. El anuncio no vinculaba específicamente el lenguaje con la plataforma SCELBI, sino que simplemente se ofrecía en formato de libro como un listado completo del código fuente para crear una versión de BASIC en cualquier sistema 8008 u 8080 con los 8 kB de RAM necesarios . El precio del libro era de 49 dólares, lo que equivaldría a unos 277  dólares en 2025. [ 2 ]

Descripción

SCELBAL utilizaba un formato de punto flotante de 32 bits (cuatro bytes) para los 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 organizaban en orden inverso, con el byte menos significativo de la mantisa en el primer byte, seguido del byte intermedio y luego el más significativo con el signo en el bit más significativo. El exponente iba al final, también con el signo en el bit más significativo. [ 3 ] El manual proporciona código ensamblador bien documentado para todo el paquete matemático, incluyendo 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 ]

SCELBAL era similar a otros dialectos de BASIC, incluidas las primeras versiones de MS como Altair BASIC , careciendo de variables y operadores de cadena y de varias funciones matemáticas. Otras diferencias eran menos pronunciadas. La IFinstrucción tenía una forma opcional IF...GOTOque eliminaba la necesidad de THEN, . [ 6 ] También conservaba la forma corta al estilo MS para el mismo concepto, . Además, permitía la ejecución condicional de otras instrucciones, como . [ 7 ]IFX<YGOTO100IFX<YTHEN100IFX<YTHENPRINTX

El lenguaje base no admitía el manejo de cadenas, aunque se podían usar cadenas literales (constantes) en PRINT, y tenía las funciones de soporte de CHRpara imprimir caracteres no imprimibles y TABpara proporcionar diseño. Curiosamente, el sistema requería que los códigos ASCII tuvieran el bit más significativo activado, por lo que para convertir de ASCII normal a códigos de caracteres SCELBI, había que sumar o restar 128. Por ejemplo,

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

para producir la cadena "HELLO, WORLD" en la salida. [ 8 ]

INPUTNormalmente, leería el texto ingresado por el usuario como un número, pero permitiría que el signo de dólar indicara que el valor debí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$daría como resultado que A se estableciera en 177, 49 (ASCII para "1") + 128. Además, cuando se usa el signo de dólar, no se imprime el indicador tradicional "?", y el comando regresa al lenguaje 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 SCRpara "scratch" [ 9 ] , y la USRfunción, que llamaba a una rutina en lenguaje máquinaUDF , era para "función definida por el usuario" [ 10 ]UDF . Permitía que se pasara un único parámetro de punto flotante a la función definida por el usuario, cuyo código en lenguaje máquina debía 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 estándar y se esperaba que se implementara cuando se portara 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 de 1 a 32767 o de 1 a 65535.

Características del idioma

Tomado del manual de 1976, salvo que se indique lo contrario. [ 13 ]

Comandos

Solo en modo inmediato

En la documentación se le denomina modo "ejecutivo".

SCR
Scratch, equivalente a MSNEW
LIST
RUN
LOAD
SAVE

Modo inmediato o programado

PRINT
INPUT
Al igual que MS, podía aceptar múltiples variables. No incluía una cadena de solicitud.INPUTA,B,C
LET
Al igual que MS, LETera opcional, por lo que y son equivalentes.15LETX=1015X=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
Al igual que en MS, STEPes opcional y se asume que es 1. NEXTrequería una variable, a diferencia de las versiones posteriores de MS.
REM
END
DIM
Los arreglos funcionaban como en MS, pero eran opcionales y podían desactivarse para ahorrar memoria. Solo se admitían arreglos unidimensionales, y el número total de elementos para todos los arreglos combinados era de 64 números.

Funciones

INT
SGN
ABS
SQR
RND
Al igual que en MS, toma una variable ficticia y devuelve un valor entre 0 y 1.
CHR
Nótese la ausencia del símbolo $ que se encuentra en MS, que utiliza CHR$.
TAB
UDF

Extensiones

SCELBI publicó dos extensiones del sistema: el Suplemento de Funciones Matemáticas y el Suplemento de Cadenas de Valores.

Suplemento de funciones matemáticas

El suplemento de funciones matemáticas añadió cinco nuevas funciones trascendentales , SIN, COS, EXP, LOG, y ATN. [ 14 ]

Suplemento de cuerda

El suplemento de cadenas de caracteres era algo más extenso que el de funciones matemáticas, e incluía varias características nuevas.

Las cadenas podían tener hasta 80 caracteres de longitud, y el sistema podía almacenar un total de 64 variables de cadena. Cualquiera de esas 64, o todas ellas, podían ser matrices unidimensionales, pero el número total debía ser de 64 cadenas. Curiosamente, las matrices de cadenas no requerían una DIMinstrucción. [ 15 ]

A diferencia de MS BASIC y el manejo de cadenas de Dartmouth BASIC que lo inspiró, SCELBI usaba el estilo de manipulación de cadenas de "segmentación" que se encuentra en 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$, RIGHT$, MID$para acceder a subcadenas, se usaba la sintaxis de acceso a matrices 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 accesores de matriz era el índice de la matriz, y era opcional si la variable no era una matriz. Así, por ejemplo, el código: [ 15 ]

10 LET A$ = "HELLO" 20 PRINT A$ ( : 2 ; 3 )

daría como resultado que se imprimiera "ELL" en la salida. Si se usaba 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 imprimiera "ORL" en la salida. SCELBAL también permitía omitir el punto y coma, que especifica los caracteres desde el punto de inicio hasta el final de la cadena. Por ejemplo, el código:

210 IMPRIMIR A$ ( 2 : 2 )

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

Aunque similar a SDS BASIC, existe una diferencia importante en la forma en que funciona en comparación con otros BASIC que usaban sintaxis de segmentación, ya 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 imprimirí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 una forma más similar a MS BASIC, donde los equivalentes serían: [ 17 ]

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

y

210 IMPRIMIR DERECHO$ ( 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 MS. [ 15 ] Asimismo, INPUTse modificó para que las variables de cadena funcionaran como las 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 usaba el +operador. [ 18 ]

Referencias

Citas

  1. Arnold, Mark; Wadsworth, Nat (febrero de 1976). "SCELBAL: un lenguaje de alto nivel para sistemas 8008/8080" . Dr. Dobb's Journal . págs. 30–53 . 
  2. "¡Impactante!" . Byte . Junio ​​de 1976. pág. 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). "Crea tu 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. 1 2 Arnold y Wadsworth 1976 , pág. 14.16.
  9. Arnold y Wadsworth 1976 , pág. 14.1.
  10. 1 2 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 , pág. 1.
  15. 1 2 3 4 5 Cuerdas 1977 , pág. 1.
  16. Small, David, ed. (1983). "Atari Strings and Text Handling" . The Creative Atari . Creative Computing.
  17. Cuerdas 1977 , pág. 3.
  18. 1 2 Strings 1977 , pág. 2.

Bibliografía

  • Arnold, Mark; Wadsworth, Nat (1976). SCELBAL: Un lenguaje de alto nivel para sistemas 8008/8080 (PDF) . SCELBI Computer Consulting.
  • Arnold, Mark (1977). Suplemento de funciones matemáticas de SCELBAL . SCELBI Computer Consulting.
  • Arnold, Mark (1977). Suplemento de cadenas de SCELBAL . SCELBI Computer Consulting.
  • Un simulador de JavaScript del 8008 precargado con SCELBAL.
  • Un simulador de JavaScript del 8008 precargado con SCELBAL, complementos matemáticos y de cadenas de caracteres.
  • Un simulador de JavaScript mejorado precargado con SCELBAL.
  • Código objeto para SCELBAL publicado en formato Intel Hex
  • Página de SCELBAL de Mike Willegal
  • El emulador SCELBI OS/X de Mike Willegal que puede ejecutar SCELBAL