ESCELBAL


De Wikipedia, la enciclopedia libre
Saltar a navegación Saltar a búsqueda

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 basadas en Intel 8008 y 8080 como 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 idioma.

Historia

El autor principal de SCELBAL es Mark Arnold, quien 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 hecho arreglos para tener una cuenta en su computadora central Sigma 7 . La primera versión de lo que se convirtió en SCELBAL se escribió 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 de múltiples pasadas que guardaría las versiones intermedias en cinta de 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 usaba 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 enviar a Arnold un sistema de desarrollo 8B. Esto retrasó significativamente el lanzamiento del lenguaje en 1976. Arnold especuló que, sin estos retrasos, SCELBAL podría haberse lanzado aproximadamente al mismo tiempo que Altair BASIC a fines de 1975. Se presentó por primera vez en un artículo extenso 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 idioma a la plataforma SCELBI, sino que 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 u 8080 con los 8 kB de RAM requeridos. El precio del libro fue de $ 49, alrededor de $ 223 en 2020. [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 del byte medio y luego el byte más significativo con el signo en el bit alto. El exponente fue el último, nuevamente con el signo en el bit alto. [3] El manual proporciona un código ensamblador bien documentado para todo el paquete matemático, incluidos los puntos de entrada y las notas de uso. [4] Los formatos de 32 bits eran comunes en esta era, mientras que las versiones posteriores de BASIC, comenzando con Microsoft BASIC para elMOS 6502 , generalmente adoptó 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 de cadena y operadores y una serie de funciones matemáticas. Otras diferencias fueron menos pronunciadas. La IFdeclaración tenía una forma opcional IF...GOTOque elimina la necesidad de THEN, . [6] También retuvieron la forma corta de 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 apoyo de CHRimprimir caracteres no imprimibles y TABproporcionar diseño. Curiosamente, el sistema requería que los códigos ASCII tuvieran el bit alto establecido, por lo que para convertir de códigos de caracteres ASCII normales a códigos SCELBI, uno tenía que sumar o restar 128. Por ejemplo,

IMPRIMIR "HOLA" ; CHR ( 172 ); CHR ( 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$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 , lo tradicional "?" El indicador 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 que se encuentra en MS, que borra el código y los datos del programa existente, se llama SCRpara "scratch", [9] y la USRfunción, que llama una rutina en lenguaje de máquina , era UDFpara "función definida por el usuario". . [10] UDF permitió que se pasara 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 cartas, y el código para LOADy SAVEse proporcionan en forma de texto modelo y espera que se implementa cuando portado a diferentes plataformas. [12] Los números de línea podrían estar entre 1 y 999999, [10] mientras que la mayoría de los BASIC usaban un número 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 en modo inmediato

Conocido como modo "ejecutivo" en la documentación.

SCR
cero, equivalente a MS NEW
LIST
RUN
LOAD
SAVE

Modo inmediato o programado

PRINT
INPUT
Como MS, podría aceptar múltiples variables, . No incluyó una cadena de mensajes.INPUT A,B,C
LET
Como MS, el LETera opcional, entonces 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 fue compatible.
GOSUB...RETURN
FOR...TO...STEP...NEXT
Como en MS, STEPes opcional y se supone 1. NEXTrequiere una variable, a diferencia de las versiones posteriores de MS.
REM
END
DIM
Las matrices funcionaban como en MS, pero eran opcionales y se podían desactivar para ahorrar memoria. Solo se admitían matrices de una dimensión y el número total de elementos para todas las matrices combinadas era de 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 de $ 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

La Matemática Funciones Suplemento añadió cinco nuevas funciones trascendentales , SIN, COS, EXP, LOG, y ATN. [14]

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 de longitud y el sistema puede contener un total de 64 variables de cadena. Cualquiera de esos 64, o todos, 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 utilizó el estilo de manipulación de cuerdas de "corte" 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 utilizar funciones como LEFT$, RIGHT$, MID$a subcadenas de acceso, la sintaxis de matrices de acceso se usó con dos puntos precedente el punto de partida y, opcionalmente, un punto y coma que precede a la longitud. Como SCELBAL también admitía matrices de cadenas, el primer número en los descriptores de acceso a la matriz era el índice de la matriz y era opcional si la variable no era una matriz. Entonces, por ejemplo, el código: [15]

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

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

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

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

210 IMPRIMIR A $ ( 2 : 2 )  

daría como resultado la impresión de "ORLD" en la salida.

Aunque es similar a SDS BASIC, existe una gran diferencia en la forma en que funciona en comparación con los otros BASIC que usaban sintaxis de corte, en el sentido de 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 en "imprimir todos los caracteres entre las posiciones 2 y 3". De esta manera, SCELBAL funciona de una manera más similar a MS BASIC, donde los equivalentes serían: [17]

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

y

210 IMPRESIÓN DERECHA $ ( 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$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, Mark; 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. 10.1. error sfn: varios objetivos (2 ×): CITEREFArnoldWadsworth1976 ( ayuda )
  4. ^ Arnold y Wadsworth 1976 , p. 10. Error de sfn: múltiples objetivos (2 ×): CITEREFArnoldWadsworth1976 ( ayuda )
  5. ^ Steil, Michael (20 de octubre de 2008). "Cree su propia versión de Microsoft BASIC para 6502" .
  6. ^ Arnold y Wadsworth 1976 , p. 14.10. error sfn: varios objetivos (2 ×): CITEREFArnoldWadsworth1976 ( ayuda )
  7. ^ Arnold y Wadsworth 1976 , p. 2.3. error sfn: varios objetivos (2 ×): CITEREFArnoldWadsworth1976 ( ayuda )
  8. ↑ a b Arnold y Wadsworth , 1976 , p. 14.16. error sfn: varios objetivos (2 ×): CITEREFArnoldWadsworth1976 ( ayuda )
  9. ^ Arnold y Wadsworth 1976 , p. 14.1. error sfn: varios objetivos (2 ×): CITEREFArnoldWadsworth1976 ( ayuda )
  10. ↑ a b Arnold y Wadsworth , 1976 , p. 14.17. error sfn: varios objetivos (2 ×): CITEREFArnoldWadsworth1976 ( ayuda )
  11. ^ Arnold y Wadsworth 1976 , p. 14.3. error sfn: varios objetivos (2 ×): CITEREFArnoldWadsworth1976 ( ayuda )
  12. ^ Arnold y Wadsworth 1976 , p. 14.18. error sfn: varios objetivos (2 ×): CITEREFArnoldWadsworth1976 ( ayuda )
  13. ^ Arnold y Wadsworth 1976 . error sfn: varios objetivos (2 ×): CITEREFArnoldWadsworth1976 ( ayuda )
  14. ^ Matemáticas 1977 , p. 1.
  15. ↑ a b c d e Strings , 1977 , p. 1.
  16. ^ Pequeño, David, ed. (1983). "Cadenas de Atari y manejo de texto" . El Creative Atari . Computación creativa.
  17. ^ Cuerdas 1977 , p. 3.
  18. ↑ a b Strings , 1977 , p. 2.

Bibliografía

  • Arnold, Mark; Wadsworth, Nat (1976). SCELBAL: un lenguaje de nivel superior para sistemas 8008/8080 (PDF) . Consultoría informática SCELBI.
  • Arnold, Mark (1977). Suplemento de funciones matemáticas SCELBAL . Consultoría informática SCELBI.
  • Arnold, Mark (1977). Suplemento de cuerdas SCELBAL . Consultoría informática SCELBI.

enlaces externos

  • Un simulador de javascript de 8008 precargado con SCELBAL
  • Un simulador de JavaScript de 8008 precargado con SCELBAL, Math y String Supplements
  • Código de objeto para SCELBAL publicado en formato Intel Hex
  • Página SCELBAL de Mike Willegal
  • Emulador SCELBI OS / X de Mike Willegal que puede ejecutar SCELBAL
Obtenido de " https://en.wikipedia.org/w/index.php?title=SCELBAL&oldid=1014162274 "