Sinclair BÁSICO

Dialecto del lenguaje de programación BASIC

Sinclair BÁSICO
ParadigmaImperativo
Diseñado porJohn Grant y Steve Vickers
ReveladorRedes de nueve mosaicos,
Sinclair Research
Apareció por primera vez1979 ; hace 45 años ( 1979 )
PlataformaZX80 , ZX81 , ZX Spectrum, +, 128, +2, +3 , T/S 2068 , TC 3256
LicenciaPropiedad

Sinclair BASIC es un dialecto del lenguaje de programación BASIC utilizado en los ordenadores domésticos de 8 bits de Sinclair Research , Timex Sinclair y Amstrad . El intérprete de Sinclair BASIC fue escrito por Nine Tiles Networks Ltd. [1]

Diseñado para funcionar con solo 1 KB de RAM , el sistema toma una serie de decisiones para reducir el uso de memoria. Esto llevó a una de las características más notables de Sinclair BASIC: las palabras clave se ingresaban con una sola pulsación de tecla; cada una de las posibles palabras clave se asignaba a una tecla del teclado y, al presionarla, el token se colocaba en la memoria mientras que la palabra clave completa se imprimía en la pantalla. Esto hizo que la entrada de código fuera más fácil y al mismo tiempo simplificó el analizador .

La versión original del ZX80 sólo admitía operaciones matemáticas con números enteros , lo que compensaba parcialmente algunas de las notas de diseño para ahorrar memoria que tenían un impacto negativo en el rendimiento. Cuando el sistema se adaptó al ZX81 en 1981, se agregó una implementación completa de punto flotante . Esta versión era muy lenta, una de las BASIC más lentas del mercado en ese momento, pero dadas las capacidades limitadas de la máquina, esto no era un problema grave.

El rendimiento se convirtió en un problema más serio con el lanzamiento del ZX Spectrum en 1983, que funcionaba demasiado lento para aprovechar al máximo las nuevas características de la máquina. Esto dio lugar a un BASIC completamente nuevo para el siguiente Sinclair QL , así como a una serie de BASIC de terceros para el Spectrum y sus diversos clones. La versión original continuó modificándose y adaptándose en la era posterior a Sinclair.

Historia

Clive Sinclair se reunió inicialmente con John Grant, el propietario de Nine Tiles, en abril de 1979 para discutir un BASIC para el nuevo concepto de computadora de Sinclair. [2] Sinclair se inspiró para hacer una nueva máquina después de ver a su hijo disfrutar de su TRS-80 , pero el precio de £ 500 de esa máquina parecía ser un límite serio en su popularidad. Quería un nuevo kit que ampliara su MK14 anterior y presentara un BASIC incorporado al precio objetivo de £ 79.95. Para cumplir con este precio, la máquina se enviaría con solo 1 KB de RAM y 4 KB de ROM. Grant sugirió usar el lenguaje Forth en su lugar, pero el presupuesto lo impidió. Grant escribió el intérprete BASIC entre junio y julio de 1979, pero el código inicialmente llegó a 5 KB y pasó el mes siguiente reduciéndolo. Inicialmente fue una implementación incompleta del estándar BASIC Mínimo del Instituto Nacional Estadounidense de Estándares (ANSI) de 1978 con solo aritmética de números enteros, denominado 4K BASIC . [3]

Incluso antes de que se introdujera el ZX80 en febrero de 1980, la constante presión a la baja de los precios en la industria estaba permitiendo que el diseño, ya de por sí económico, se redujera aún más en complejidad y coste. En particular, muchos de los circuitos separados del ZX80 se volvieron a implementar en una única matriz lógica no comprometida de Ferranti , lo que permitió reducir el precio a solo 49,95 libras esterlinas al tiempo que aumentaba el tamaño de la ROM a 8 KB. Este trabajo fue asignado a Steve Vickers , quien se unió a Nine Tiles en enero de 1980. Mientras Grant trabajaba en el código que interactuaba con el hardware, Vickers utilizó el espacio más grande para introducir la aritmética de punto flotante y un conjunto de funciones trigonométricas , que se esperaban de cualquier BASIC de esa época, produciendo el BASIC de 8K . [4] La versión inicial no era compatible con la impresora ZX y tenía un error en su función de raíz cuadrada . Nine Tiles proporcionó una nueva versión para solucionar estos problemas, pero Sinclair tardó en incluir la nueva versión en las ROM. Finalmente, las nuevas ROM también se ofrecieron a los propietarios del ZX80 anterior. [5]

Cuando Sinclair perdió el concurso para construir la BBC Computer , siguió adelante con los planes de producir una máquina de bajo coste con capacidad para reproducir color que surgió como el ZX Spectrum de abril de 1982. El espacio de ROM se incrementaría una vez más, esta vez a 16 KB. En consonancia con su filosofía de hacer sistemas con el menor gasto posible, Sinclair quería los cambios mínimos absolutos en el BASIC de 8K existente. Aunque Nine Tiles consideró que se necesitaría algo mucho mejor para la nueva máquina, el calendario no lo permitió, y se produjo otra expansión del código original. Debido a que la RAM también se incrementó, a 48 KB, esta versión se conoció como 48K BASIC y, finalmente, 48 BASIC con la introducción del ZX Spectrum 128, momento en el que el Spectrum de 16 KB ya no se vendía y la mayoría de los existentes en uso se habían actualizado a 48 KB. [6] [7] La ​​nueva versión estuvo disponible a finales de 1981, pero era "deprimentemente lenta" y "lenta como un caracol". Además, como no hubo prototipos disponibles hasta finales de año, carecía de soporte para la nueva línea de periféricos que Sinclair estaba planeando. [8]

En febrero de 1982, Nine Tiles comenzó a tener desacuerdos con Sinclair sobre las regalías adeudadas por los diversos manuales que Nine Tiles había producido. Casi al mismo tiempo, Vickers y su homólogo de Sinclair, Richard Altwasser, dejaron sus respectivas compañías para comenzar el proyecto Jupiter Ace . [9] Cuando se lanzó el Spectrum, la ROM aún no estaba completa, y aunque Nine Tiles continuó trabajando en él hasta abril de 1982, en ese momento ya se habían vendido 75.000 Spectrum y el proyecto se canceló. La funcionalidad faltante se agregó más tarde mediante código adicional en la Interfaz ZX 1 . Después de que Nine Tiles y Sinclair siguieran caminos separados, se crearon varias versiones nuevas de 48 BASIC.

En 1983, como parte de la introducción del Spectrum al mercado estadounidense como TS2068, Timex lo modificó como T/S 2000 BASIC . La nueva versión no podía ejecutar muchos programas Spectrum debido a que la ubicación de la memoria de las funciones de la máquina se movía. Una versión similar, pero algo más compatible, fue presentada como parte del Spectrum 128 en español de 1985, el 128 BASIC . [7]

Amstrad compró Sinclair Research en 1986. Como Sinclair nunca había tenido los derechos de autor del lenguaje, Amstrad tuvo que acordar una nueva licencia con Nine Tiles. En este período también aparecieron otras versiones a medida que se introdujeron varias extensiones y clones del Spectrum. Entre ellas se encontraban +3 BASIC , BASIC64 y Timex Extended Basic . [7] [6]

A partir de 2015, existen intérpretes para sistemas operativos modernos , [10] y sistemas más antiguos, [11] que permiten utilizar Sinclair Basic fácilmente.

Descripción

Edición de programas

Como la mayoría de los BASIC para ordenadores domésticos, el BASIC de Sinclair se basa en su editor de líneas . Cuando se arranca la máquina, ejecuta el BASIC y muestra una "K" de vídeo invertida en la parte inferior de la pantalla para indicar el punto de entrada. Cuando se introduce una línea y NEW LINEse pulsa la tecla, se ejecuta inmediatamente si no tiene un prefijo de número de línea , o bien borra la pantalla y ejecuta el equivalente a un LISTcomando, colocando un cursor ">" después del número de línea en la última línea introducida.

A diferencia de la mayoría de las máquinas de la época, el editor no permite la edición libre en ningún punto de la pantalla. En cambio, cuando el usuario presiona , la línea de código actual se copia de nuevo en la parte inferior de la pantalla. El usuario puede moverse horizontalmente a través de esta línea utilizando las teclas del cursor y confirma sus cambios presionando nuevamente. En cambio, en máquinas como los ordenadores Commodore 64 o Atari de 8 bits , las teclas arriba y abajo se pueden utilizar para moverse entre las líneas del programa y editarlas en el lugar.EDITNEW LINE

La característica más notable del editor es que las palabras clave se introducen con una sola pulsación de tecla. Por ejemplo, en el ZX81, la tecla del teclado haría que la palabra clave completa se introduzca en la línea que se está editando en ese momento. Una vez que se ha introducido una palabra clave, el cursor cambia a una "L" para indicar que lo que sigue se interpretará como texto normal. Por ejemplo, si se pulsa de nuevo en este punto se introduciría una sola letra "P".PPRINTP

Las teclas generalmente tenían asignadas dos palabras clave independientes: una encima y otra debajo. Al presionar la tecla en modo "K", se ingresaba la palabra clave que se encontraba sobre la tecla, como PRINTen el caso de . Si el sistema estaba en modo "L", se podía volver a "K" presionando la tecla Shift  (los sistemas inicialmente no admitían texto en minúsculas , por lo que no era necesario presionar la tecla Shift). Las palabras clave que se encontraban debajo de las teclas requerían una segunda pulsación de tecla, + , que ponía al editor en "modo de función", cambiando el cursor a una "F". Al ingresar un código común, a menudo se presionaban muchas teclas.P⇧ ShiftNEW LINE

El sistema tiene la ventaja de representar todas las palabras clave de varios caracteres como un solo carácter en la memoria, lo que supuso un ahorro significativo en las primeras máquinas que se entregaban con solo 1 KB de RAM. Esta representación de un solo carácter incluía elementos de varios caracteres como <>. Esto tiene las ventajas adicionales de simplificar el tiempo de ejecución, ya que puede determinar inmediatamente si un carácter en el código fuente es una palabra clave o texto, y también significa que las palabras clave nunca se ingresan directamente, lo que significa que uno puede, por ejemplo, tener una variable llamada "PRINT", ya que el sistema puede determinar que no es la misma que la palabra clave.

A medida que los sistemas evolucionaron y se agregaron nuevas palabras clave, el sistema de entrada se volvió cada vez más difícil de usar. 48 BASIC en Spectrum requería que cada tecla albergara hasta cuatro palabras clave. Introducir palabras clave era un proceso que consumía mucho tiempo, ya que había que buscar la tecla adecuada en el tipo de letra relativamente pequeño del teclado y, luego, introducir correctamente las múltiples pulsaciones de teclas necesarias para hacerlo correctamente. Por ejemplo, para introducir BEEPpalabras clave era necesario escribir + para acceder al modo extendido (los modelos posteriores incluyen una tecla separada), mantener pulsada la tecla y, a continuación, pulsar . Para mejorar la complejidad de la entrada en Spectrum, las palabras clave se codificaron por colores para indicar el modo requerido: [12]CAPS SHIFTSYMBOL SHIFTEXTENDED MODESYMBOL SHIFTZ

  • Blanco : solo llave
  • Rojo en la propia tecla: más la teclaSYMBOL SHIFT
  • Verde encima de la tecla: seguido de la teclaEXTENDED MODE
  • Rojo debajo de la tecla: seguido del signo más de la teclaEXTENDED MODESYMBOL SHIFT

Este concepto ya había llegado a su fin y las máquinas posteriores que ejecutaban 128 BASIC (ZX Spectrum 128, +2, +3, +2A y +2B) presentaban un editor más tradicional en el que el usuario escribía la palabra clave como caracteres individuales, de manera similar a otras computadoras hogareñas de la época. Esto requería un nuevo tokenizador para convertir la línea a un formato interno similar.

El almacenamiento en memoria resultante del programa era similar al BASIC de Microsoft , en el sentido de que solo las palabras clave se presentan como tokens, mientras que las que no son palabras clave (como las constantes numéricas y de cadena y los nombres de variables) se dejan en su formato original. Sin embargo, ese formato escrito no era ASCII , sino un código de caracteres interno que contiene caracteres imprimibles y tokens de palabras clave. Aunque partes de la tabla, las letras mayúsculas de la A a la Z, por ejemplo, están en el mismo orden que en ASCII, sus caracteres corresponden a valores numéricos diferentes, es decir, el desplazamiento de sus puntos de código desde cero es diferente del desplazamiento de 65 de ASCII. Es posible que otros caracteres, como la puntuación, se hayan movido aún más. El conjunto de caracteres ZX Spectrum es el ejemplo más destacado de dicho código de caracteres. Las computadoras relacionadas que ejecutaban Sinclair BASIC usaban variantes similares, por ejemplo, los conjuntos de caracteres ZX80 o ZX81 . Todos estos conjuntos de caracteres diferentes pero relacionados incluían tokens Sinclair BASIC.

Tipos de datos

Una característica poco común de Sinclair BASIC es la forma en que almacena las variables en la memoria. Normalmente, los intérpretes utilizan una entrada de tamaño fijo para almacenar los datos, lo que facilita el escaneo de la tabla de variables. Debido a la memoria extremadamente limitada de la serie ZX, se debía evitar cualquier espacio desperdiciado, y esto llevó al uso de un formato de longitud variable. Los tipos de datos incluían números almacenados en valores de 5 bytes, cadenas con una longitud y luego los caracteres, y matrices de ambos tipos. Los datos se almacenaban en la propia tabla, lo que contrasta con la mayoría de los BASIC de la época, donde las cadenas y las entradas de matriz se almacenaban en un montón separado .

El primer byte de una entrada de variable siempre contenía el tipo en los primeros tres bits y el primer carácter del nombre en los siguientes cinco bits. Como era el caso en la mayoría de los dialectos de microcomputadoras, A, A$y A()eran A$()todas variables diferentes y podían almacenar valores diferentes. La mayoría de las variables solo podían tener un nombre de un solo carácter; la excepción son las variables numéricas (no matrices), donde un formato alternativo contenía el primer carácter del nombre en esos mismos cinco bits, pero luego era seguido por caracteres adicionales que terminaban en uno con su bit alto establecido. Los nombres de variable largos eran independientes de los espacios en blanco y no distinguían entre mayúsculas y minúsculas en versiones posteriores, por lo que es lo mismo que se refiere a la misma variable.LET Number Of Apples = 5LET numberofapples = 5

La desventaja de este enfoque es que escanear la tabla para buscar el valor de una referencia de variable es más complejo. Además de probar si el nombre coincide utilizando el subconjunto del primer byte, si la entrada no es la que se está buscando, el tipo tiene que leerse desde los tres bits superiores y luego la siguiente ubicación de una variable en el almacenamiento calculada utilizando el tipo. Por ejemplo, si el programa encuentra la variable "A" y la tabla comienza con la entrada para "B$", no logra hacer coincidir A con B, luego lee el tipo para ver si es una cadena y luego tiene que leer el siguiente byte de longitud y saltar hacia adelante esa cantidad de bytes para encontrar la siguiente entrada en la tabla. Para hacer esto un poco más fácil, las matrices también almacenan una longitud de dos bytes, por lo que se puede omitir toda la estructura más fácilmente.

Una característica única era el "float corto", o tipo entero. Cualquier variable numérica podía almacenar cualquiera de los dos tipos, el almacenamiento en sí no cambiaba y utilizaba 5 bytes en ambos casos. Los enteros se indicaban fijando el byte del exponente en cero, mientras que los valores de punto flotante se almacenaban con un exponente de formato de exceso de 128. Esto significaba que no podía almacenar cero como un float y perdía una posible magnitud de exponente. Tampoco utilizaba menos memoria, ya que los valores seguían ocupando 5 bytes en la memoria. La ventaja de este formato es el rendimiento; la biblioteca matemática incluía pruebas para buscar el exponente cero y, si lo veía, no intentaba realizar varias operaciones en los 3 bytes restantes en determinadas condiciones.

Detalles de la palabra clave

El ZX81 8K BASIC utilizaba las formas cortas GOTO, GOSUB, CONTy RAND, mientras que el Spectrum 48 BASIC utilizaba las formas más largas GO TO, GO SUB, CONTINUEy RANDOMIZE. El ZX80 4K BASIC también utilizaba estas formas más largas, pero se diferenciaba por el uso de la ortografía RANDOMISE. El ZX81 8K BASIC era la única versión que utilizaba FAST, SCROLL, SLOWy UNPLOT. El ZX80 4K BASIC tenía la función exclusiva TL$(); era equivalente al operador de cadena (2 TO )en versiones posteriores.

En el conjunto de caracteres ZX80 , ZX81 y ZX Spectrum se asignan puntos de código únicos para cada palabra clave u operador de múltiples caracteres, es decir <=, , >=, <>, ""(tokenizado solo en el ZX81), **(reemplazado por en el Spectrum). Estos se expanden haciendo referencia a una tabla de tokens en ROM. Por lo tanto, una palabra clave usa solo un byte de memoria, un ahorro significativo sobre el almacenamiento tradicional letra por letra. Esto también significaba que el intérprete de BASIC podía determinar rápidamente cualquier comando o función evaluando un byte, y que las palabras clave no necesitaban ser palabras reservadas como en otros dialectos BASIC u otros lenguajes de programación, por ejemplo, se permite definir una variable nombrada PRINTy mostrar su valor con PRINT PRINT. Esto también está relacionado con el requisito de sintaxis de que cada línea comience con una palabra clave de comando, y presionar la única pulsación de tecla para ese comando al comienzo de una línea cambia el editor del modo de comando al modo de letra. Por lo tanto, la asignación de variables requiere LET(es decir, no solo ). Esta práctica también es diferente de otros dialectos BASIC. Además, esto significaba que, a diferencia de otros dialectos BASIC, el intérprete no necesitaba paréntesis para identificar funciones; era suficiente, no era necesario (aunque esto último estaba permitido). La ROM BASIC de 4K del ZX80 tenía una breve lista de excepciones a esto: las funciones , , , , , , y no tenían tokens de un byte, sino que se escribían letra por letra y requerían los paréntesis. Se enumeraban como FUNCIONES INTEGRALES en una etiqueta encima y a la derecha del teclado. [13]LET a=1a=1SIN xSIN(x)CHR$()STR$()TL$()PEEK()CODE()RND()USR()ABS()

128 BASIC , presente en los ZX Spectrum 128, +2, +3, +2A y +2B, almacenaba palabras clave internamente en puntos de código de un byte, pero utilizaba un sistema de entrada BASIC convencional letra por letra. También introdujo dos nuevos comandos:

El ZX Spectrum 128 original en español incluía cuatro comandos de editor BASIC adicionales en español, [14] [15] uno de los cuales no estaba documentado:

  • EDITAR(para editar un número de línea o invocar el editor de cadenas de pantalla completa)
  • NUMERO(para renumerar las líneas del programa)
  • BORRAR(para borrar líneas de programa)
  • ANCHO(para establecer el ancho de la columna del dispositivo RS-232 , pero no está documentado porque el código estaba roto)

A diferencia de las funciones LEFT$(), MID$()y RIGHT$()utilizadas en los omnipresentes dialectos Microsoft BASIC para ordenadores domésticos, en Sinclair BASIC se accede a partes de cadenas mediante un rango numérico. Por ejemplo, a$(5 TO 10)proporciona una subcadena que comienza con el quinto y termina con el décimo carácter de la variable a$. Por tanto, es posible sustituir los LEFT$()comandos RIGHT$()y simplemente omitiendo la posición izquierda o derecha de la matriz respectivamente; por ejemplo , a$( TO 5)es equivalente a LEFT$(a$,5). Además, a$(5)solo es suficiente para sustituir MID$(a$,5,1).

Sintaxis

Palabras clave

En el ZX Spectrum 16K/48K ( 48 BASIC) , hay 88 palabras clave en Sinclair BASIC, que denotan comandos (de los cuales hay 50), funciones y operadores lógicos (31) y otras palabras clave (16, incluidas 9 que también son comandos o funciones):

Palabra claveParámetros [nota 1]Ingresado usando [nota 2]TipoResumen
ABSnumberEXTENDED MODEentoncesGFunciónDevuelve el valor absoluto de number[16]
ACSnumberEXTENDED MODEentonces +SYMBOL SHIFTWFunciónDevuelve el arcocoseno de number[17]
ANDSYMBOL SHIFT+YOperador lógicoDevuelve verdadero si ambas condiciones en ambos lados de la ANDpalabra clave son verdaderas, de lo contrario devuelve falso [nota 3] [18]
ASNnumberEXTENDED MODEentonces +SYMBOL SHIFTQFunciónDevuelve el arcoseno de number[19]
ATline, column;SYMBOL SHIFT+IOtroSe utiliza en una PRINTdeclaración para imprimir en la línea y columna especificadas; [20] por ejemplo, PRINT AT 5,10;"*"coloca una estrella en la columna 10 de la línea 5.
ATNnumberEXTENDED MODEentonces +SYMBOL SHIFTEFunciónDevuelve la arcotangente de number[17]
ATTR(line, column)EXTENDED MODEentonces +SYMBOL SHIFTLFunciónDevuelve un byte que contiene información sobre los colores de la celda de texto en la pantalla, correspondientes a los especificados liney column; tenga en cuenta que, a diferencia de la mayoría de las palabras clave de Sinclair BASIC, los paréntesis son obligatorios; los primeros tres bits indican el color de la tinta (primer plano), los bits cuarto, quinto y sexto el color del papel (fondo), el séptimo bit si los colores son brillantes o no, y el octavo, si son parpadeantes [21]
BEEPduration, pitchEXTENDED MODEentonces +SYMBOL SHIFTZDominioProduce sonido desde el altavoz de la computadora; durationestá en segundos, el tono está en semitonos por encima (valor positivo) o por debajo (valor negativo) del do central [22]
BINnumberEXTENDED MODEentoncesBOtroIndica numberque está en notación binaria [23]
BORDERnumberBDominioEstablece el borde de la pantalla con el color especificado por number[nota 4] [24]
BRIGHTnumberEXTENDED MODEentonces +SYMBOL SHIFTBComando/otroHace que todos los colores siguientes sean más brillantes si numberes 1, o su tono normal si es 0 [nota 5] [25]
CATnumberEXTENDED MODEentonces +SYMBOL SHIFT9DominioMuestra el contenido de ZX Microdrive especificado por number[nota 6] [26]
CHR$numberEXTENDED MODEentoncesUFunciónDevuelve el carácter correspondiente al decimal en el conjunto de caracteresnumber de la computadora [27]
CIRCLEx, y, rEXTENDED MODEentonces +SYMBOL SHIFTHDominioDibuja un círculo con su centro en las coordenadas ( x, y) y radio r[28]
CLEARaddressXDominioLimpia la pantalla, [29] todas las variables y la GO SUBpila, [30] y opcionalmente establece la dirección RAM máxima que utilizará BASIC [31]
CLOSE #numberEXTENDED MODEentonces +SYMBOL SHIFT5DominioCierra el número de flujo especificado para el acceso [nota 6]
CLSVDominioBorra todo el texto y los gráficos de la pantalla [29]
CODEstringEXTENDED MODEentoncesIFunción/otroDevuelve el número correspondiente al primer carácter en el conjunto de caracteresstring de la computadora ; [27] también se utiliza para guardar fragmentos arbitrarios de memoria en cinta, disco, etc. y cargarlos nuevamente en — vea y para más detallesLOADSAVEVERIFY
CONTINUECDominioReinicia un programa después de que se haya detenido debido a un error o porque el usuario presionó las teclas + o [32]CAPS SHIFTSPACEBREAK
COPYZDominioEnvía la pantalla mostrada actualmente a la impresora [33]
COSnumberEXTENDED MODEentoncesWFunciónDevuelve el coseno de number[34]
DATAcomma-separated valuesEXTENDED MODEentoncesDComando/otroProporciona números y/o cadenas para usar con el READcomando [35] y permite guardar el contenido de una matriz en cinta cuando se usa con el SAVEcomando [36] (como SAVE filename DATA array name())
DEF FNname(variable) = operationEXTENDED MODEentonces1DominioDefine una función personalizada que se puede utilizar con el FNcomando; las definiciones de funciones deben tener el formato f(x)=operations, por ejemplo f(x)=x*2, y el nombre de la función no puede constar de más de una letra, más un símbolo $ si la función devuelve una cadena [37]
DIMvariable(dimensions)DDominioDeclara una matriz con el valor especificado dimensions, que puede ser multidimensional (por ejemplo, DIM a(10,10); si se usa con cadenas, la última dimensión indica la longitud de cada una de las cadenas (por lo tanto, DIM a$(2,5)es una matriz de dos cadenas de cinco caracteres cada una, y DIM b$(5)es una cadena de cinco caracteres) [38]
DRAWx, y [, r]WDominioDibuja una línea en el INKcolor actual con coordenadas ( x, y) a partir de las coordenadas utilizadas por el comando PLOTo anterior DRAW; si se proporciona el opcional r, indica el radio del segmento de círculo que se dibujará, en radianes [39]
ERASEdrive;"filename"EXTENDED MODEentonces +SYMBOL SHIFT7DominioElimina el archivo especificado de un Microdrive ZX [nota 6] [40]
EXPnumberEXTENDED MODEentoncesXFunciónDevuelve e elevado a la potencia number[41]
FLASHnumberEXTENDED MODEentonces +SYMBOL SHIFTVComando/otroHace que todo el texto siguiente alterne sus colores de primer plano ( INK) y de fondo ( PAPER) [nota 5]
FNfunction(value)EXTENDED MODEentonces +SYMBOL SHIFT2FunciónLlama al functiondefinido anteriormente en el programa usando DEF FN[37]
FORMATdrive;"name"EXTENDED MODEentonces +SYMBOL SHIFT0DominioFormatea el cartucho en el Microdrive indicado y le asigna el identificador name[nota 6] [42]
FORvariable = start TO endFDominioInicia un bucle FOR- ; [43] el nombre de la variable solo puede tener un carácter de longitud [44]NEXT
GO SUBnumberHDominioHace que el programa salte a la línea BASIC especificada por number; cuando el programa encuentra el comando RETURN, saltará nuevamente a la declaración después de GO SUB[45]
GO TOnumberGDominioHace que el programa salte a la línea BASIC especificada pornumber
IF condition THENUDominioEvalúa conditiony, si es verdadero, ejecuta la declaración que sigue a la palabra clave THENque debe ir después de la condición, [46] por ejemplo [nota 7]IF a=1 THEN LET b=2
INaddressEXTENDED MODEentonces +SYMBOL SHIFTIFunciónDevuelve un byte leído desde el puerto de entrada/salida de hardware correspondiente a address[47]
INKnumberEXTENDED MODEentonces +SYMBOL SHIFTXComando/otroEstablece el color de primer plano para texto y gráficos [nota 4] [nota 5] [48]
INKEY$EXTENDED MODEentonces +SYMBOL SHIFTZFunciónDevuelve una cadena que representa la tecla que se presiona en el teclado en el momento en que se llama a la función, o una cadena vacía si no hay ninguna, [49] pero no espera a que se presione una tecla.
INPUT[prompt,] variableIDominioDetiene la ejecución del programa hasta que el usuario escribe algo en el teclado y presiona la Entertecla, luego almacena el valor ingresado en el especificado variable; si se proporciona el opcional prompt, esto se mostrará en la pantalla [50]
INTnumberEXTENDED MODEentoncesRFunciónDevuelve el valor enteronumber de , redondeándolo hacia abajo hasta el número entero más cercano [16] (por lo tanto, INT -1.1devuelve −2, no −1)
INVERSEnumberEXTENDED MODEentonces +SYMBOL SHIFTMComando/otroInvierte los colores de todo el texto siguiente si numberes 1, de modo que utiliza el color de tinta actual para el fondo y el color de papel actual para el texto, o los vuelve a establecer en valores normales si numberes 0 [nota 5] [51]
LENstringEXTENDED MODEentoncesKFunciónDevuelve el número de caracteres (bytes) en string[52]
LETvariable=valueLDominioAsigna valuea la variable nombrada [53]
LINEEXTENDED MODEentonces +SYMBOL SHIFT3Otro
  • Cuando se utiliza en una INPUTdeclaración antes de una variable de cadena, no pondrá comillas ("") alrededor de su mensaje, [20] por ejemploINPUT "Name: "; LINE n$
  • Cuando se utiliza en una SAVEdeclaración de manera que cuando se carga nuevamente el programa BASIC que se está guardando, se inicia automáticamente en el número de línea indicado [54]
LIST[number]KDominioMuestra el programa BASIC actual en la pantalla; si numberse proporciona el opcional, omite todas las líneas con un número inferior [55]
LLIST[number]EXTENDED MODEentonces +SYMBOL SHIFTVDominioComo LISTexcepto que el listado se envía a la impresora [33]
LNnumberEXTENDED MODEentonces +SYMBOL SHIFTZFunciónDevuelve el logaritmo natural de number[56]
LOAD"[filename]" [CODE [address[, length]]| DATA variable()]JDominioCarga un programa o datos en la RAM desde una cinta, ZX Microdrive , disco, etc., borrando cualquier programa BASIC existente y variables; [50] si se proporciona una cadena vacía ( ""), esto carga el primer programa encontrado, de lo contrario buscará en la cinta el programa nombrado en la cadena; si CODEse proporciona el opcional, cargará el programa en la memoria en la dirección que tenía cuando se guardó, o en la especificada address( lengthestá pensado como una medida de seguridad, para intentar cargar el programa correcto en caso de que haya varios en la cinta con el nombre correcto pero de diferentes longitudes); [57] si se proporciona el opcional DATA variable(), cargará los datos de la cinta en la matriz nombrada variable()[36]
LPRINTtextEXTENDED MODEentonces +SYMBOL SHIFTCDominioComo PRINTla salida excepto se envía a la impresora [33]
MERGE"[filename]"EXTENDED MODEentonces +SYMBOL SHIFTTDominioComo LOAD, excepto que no elimina el programa actual ni las variables; si existe un número de línea en ambos, el del programa recién cargado sobrescribe el existente. El uso MERGEevita que un programa guardado con se LINEejecute automáticamente una vez cargado [58]
MOVEstream1 TO stream2EXTENDED MODEentonces +SYMBOL SHIFT6DominioMueve datos de un flujo (teclado, pantalla, archivo, impresora, red, etc.) a otro [nota 6] [59]
NEWADominioBorra el programa BASIC actual y todas las variables [50]
NEXTvariableNDominioCierra un bucle FOR- NEXT; la variable debe coincidir con la del FORcomando correspondiente [60] — no se permiten "vacíos" NEXTpara referirse al comando inmediatamente anterior en el programaFOR
NOTconditionSYMBOL SHIFT+SOperador lógicoDevuelve verdadero si conditiones falso, de lo contrario devuelve falso [nota 3] [18]
OPEN #streamEXTENDED MODEentonces +SYMBOL SHIFT4DominioAbre un flujo para leer y/o escribir en [nota 6] [61]
ORSYMBOL SHIFT+YOperador lógicoDevuelve verdadero si alguna de las condiciones a ambos lados de la ORpalabra clave es verdadera, de lo contrario devuelve falso [nota 3] [18]
OUTaddress, valueEXTENDED MODEentonces +SYMBOL SHIFTODominioEnvía el value(un byte ) al hardware [E/S asignada a memoria|puerto de entrada/salida] correspondiente a address[47]
OVERnumberEXTENDED MODEentonces +SYMBOL SHIFTNComando/otroHará que el siguiente texto se sobreimprima con una operación XOR sobre lo que ya está en la pantalla si numberes 1, en lugar de borrarlo, o borrarlo si numberes 0 [nota 5] [51]
PAPERnumberEXTENDED MODEentonces +SYMBOL SHIFTCComando/otroEstablece el color de fondo para el texto y los gráficos [nota 4] [nota 5] [48]
PAUSEdelayMDominioDetiene la ejecución del programa durante el retraso especificado, en segundos en Europa o en América del Norte [62] (por lo tanto, se detiene durante un segundo en Europa). 1 50 {\displaystyle {\frac {1}{50}}} 1 60 {\displaystyle {\frac {1}{60}}} PAUSE 50
PEEKaddressEXTENDED MODEentoncesOFunciónDevuelve un byte que representa el contenido de la ubicación de memoria a la que apunta address[63]
PIEXTENDED MODEentoncesMFunciónDevuelve el valor de pi [56]
PLOTx, yQDominioDibuja un píxel del INKcolor actual en la pantalla en las coordenadas ( x, y) [64]
POINT(x,y)EXTENDED MODEentonces +SYMBOL SHIFT8FunciónDevuelve 1 si el píxel apuntado a las coordenadas gráficas ( x, y) está actualmente en el color de tinta (primer plano); de lo contrario, devuelve 0 [28]
POKEaddress, valueODominioEstablece el contenido de addressla RAM en value[65]
PRINT[AT x,y;] textPDominioImprime text(que debe ser una o más cadenas o números separados por punto y coma) en la pantalla. [53] Si se usa con #0 o #1, imprime en las dos líneas inferiores (de entrada) de la pantalla; si se usa con AT, imprime en las coordenadas de texto especificadas; de lo contrario, imprime inmediatamente después de la salida de cualquier PRINTdeclaración anterior (si la declaración anterior terminó en punto y coma), o en la primera columna de la línea debajo de la PRINTsalida anterior, [20] con el valor predeterminado 0,0.
RANDOMIZE[number]TDominioInicializa el generador de números aleatorios ; si se usa sin un number(o con 0), lo hace en función del reloj interno de la computadora; de lo contrario, utiliza el numberproporcionado, que debe estar en el rango [1,65535] [66]
READvariableEXTENDED MODEentoncesADominioToma un valor de una DATAdeclaración y lo almacena en el nombre variable: la primera vez READque se usa, obtiene el primer valor después del primero DATA, la segunda vez obtiene el siguiente, y así sucesivamente [35]
REMtextoEDominioComienza un comentario en el código fuente, lo que significa que todo lo que está después de la REMdeclaración se ignora, hasta el final de la línea [50] — tenga en cuenta que esto incluye todo lo que está después de dos puntos, que normalmente comienza un nuevo segmento: no producirá ninguna salida, por ejemplo10 REM Nothing to see here : PRINT "Unprintable"
RESTORE[number]EXTENDED MODEentoncesSDominioRestablece dónde READlos comandos buscan valores en DATAlas declaraciones: si se usa sin un número, el siguiente READusará el primero DATAen el programa, con un número usará el primero DATAen o después de la línea cuyo número se indica [67]
RETURNYDominioDevuelve la ejecución a la primera instrucción después del último GO SUBcomando ejecutado [45]
RNDEXTENDED MODEentoncesTFunciónDevuelve un número pseudoaleatorio con ocho cifras significativas en el rango [0,1) [68]
RUN[number]RDominioInicia el programa BASIC actual, desde su primera línea si no numberse especifica, de lo contrario desde la línea con ese número (o la primera después, si no existe) [69]
SAVE"filename" [DATA variable() | LINE number]SDominioGuarda el programa BASIC actual en una cinta u otro dispositivo de almacenamiento, con el filenameespecificado; si LINEse utiliza el opcional seguido de un número de línea, entonces el programa comenzará automáticamente en el número de línea indicado cuando se LOADvuelva a insertar; con el opcional DATA, el comando guarda el contenido de la matriz nombrada por la variable en lugar del programa BASIC actual [36]
SCREEN$[(line, column)]EXTENDED MODEentonces +SYMBOL SHIFTFunción/otroComo función, identifica el carácter en la línea y columna especificadas en la pantalla. [20] Usado después del nombre de archivo en un comando LOADo SAVE, indica que se deben cargar o guardar los contenidos de la memoria de visualización ; esto esencialmente lo convierte en un atajo para CODE 16384,6912[nota 8] pero no funciona con VERIFYporque los contenidos de la memoria de visualización serán diferentes para cuando el comando vuelva a leer los datos guardados; [70]
SGNnumberEXTENDED MODEentoncesFFunciónDevuelve 1 si numberes positivo, 0 si es 0 y −1 si es negativo [16]
SINnumberEXTENDED MODEentoncesQFunciónDevuelve el seno de number[34]
STEPnumberSYMBOL SHIFT+DOtroIndica el intervalo utilizado por una FORdeclaración, [44] por ejemplo omitirá y en el bucleFOR n=2 TO 6 STEP 2n=3n=5
STOPSYMBOL SHIFT+ADominioFinaliza la ejecución del programa actual, saliendo al editor BASIC; también se puede dar cuando la computadora está esperando una entrada usando el INPUTcomando; [69] una vez que se detiene el programa, se puede reanudar conCONTINUE
SQRnumberEXTENDED MODEentoncesHFunciónDevuelve la raíz cuadrada de number[37]
STR$numberEXTENDED MODEentoncesYFunciónConvierte un número en una cadena.
TABcolumnEXTENDED MODEentoncesPOtroEn una PRINTdeclaración, se asegura de que el texto que se va a imprimir comience en la columna especificada, pasando a la siguiente línea según sea necesario, pero nunca a más de una línea [29]
TANnumberEXTENDED MODEentoncesEFunciónDevuelve la tangente de number[71]
THENstatementSYMBOL SHIFT+GOtroSigue la condición en una IFdeclaración para indicar qué debe suceder cuando la condición se evalúa como verdadera [nota 7] [46]
TOSYMBOL SHIFT+FOtroIndica un rango desde el número a la izquierda de TOhasta el número a la derecha de este, inclusive; [72] cuando se usa con FORambos números se deben proporcionar, mientras que si se usa para cortar cadenas, se puede omitir cualquiera de ellos para indicar el inicio o el final de la cadena
USRstring or addressEXTENDED MODEentoncesLFunciónCuando se llama con una cadena de un solo carácter, devuelve la dirección de memoria en la que se define el glifo para el carácter gráfico definido por el usuario correspondiente a ese carácter. [23] Si se llama con una dirección, inicia la ejecución del código de máquina en esa dirección (lo que la convierte en una de las pocas funciones BASIC de Sinclair que tiene un efecto secundario ) y devuelve el contenido del par de registros BC del Z80 . [73]
VALstringEXTENDED MODEentoncesJFunciónEvalúa stringcomo un número y devuelve el resultado; [74] esto puede realizar cálculos: VAL "1+2"devuelve 3, por ejemplo, y también evalúa variables e incluso otras VALdeclaraciones: [nota 9] también devuelve 3LET a=1: VAL "a+VAL ""2"""
VAL$stringEXTENDED MODEentonces +SYMBOL SHIFTJFunciónSimilar a VALpero evalúa la cadena como una cadena [16]
VERIFY"[filename]"EXTENDED MODEentonces +SYMBOL SHIFTRDominioLee un programa o datos de una cinta u otro medio de almacenamiento, de forma muy similar LOADa , pero en lugar de cargarlo en la memoria, lo compara con el programa o los datos que ya están en la memoria. Esto está pensado para usarse inmediatamente después de un SAVEcomando, para asegurarse de que el programa o los datos se hayan guardado sin daños. [75]

Versiones oficiales

4K BÁSICO

4K BASIC para ZX80 [76] (llamado así por residir en una memoria de solo lectura (ROM) de 4  KiB ), fue desarrollado por John Grant de Nine Tiles para ZX80. Tiene aritmética de solo números enteros.

  • Comandos del sistema:NEW RUN LIST LOAD SAVE
  • Declaraciones de control:GOTO IF THEN GOSUB STOP RETURN FOR TO NEXT CONTINUE
  • Declaraciones de entrada/salida:PRINT INPUT
  • Declaración de asignación:LET
  • Otras declaraciones:CLEAR CLS DIM REM RANDOMIZE POKE
  • Funciones:ABS CHR$ CODEPEEK RND STR$ TL$ USR

8K BÁSICO

8K BASIC es el ZX81 BASIC (también disponible como una actualización para el ZX80 [5] ), actualizado con aritmética de punto flotante por Steve Vickers , llamado así por residir en una ROM de 8 KiB.

  • Declaraciones:PRINT RAND LET CLEAR RUN LIST GOTO CONT INPUT NEW REM PRINT STOP BREAK IF STOP FOR NEXT TO STEP SLOW FAST GOSUB RETURN SAVE LOAD CLS SCROLL PLOT UNPLOT PAUSE LPRINT LLIST COPY DIM POKE NEW
  • Funciones:ABS SGN SIN COS TAN ASN ACS ATN LN EXP SQR INT PI RND FUNCTION LEN VALSTR$ NOT CODE CHR$ INKEY$ AT TAB INKEY$ PEEK USR

48 BÁSICO

48 BASIC es el BASIC del ZX Spectrum original de 16/48 KB RAM (y clones), con color y más periféricos añadidos por Steve Vickers y John Grant. Reside en una ROM de 16 KB y comenzó a llamarse 48 BASIC con la introducción del ZX Spectrum 128, momento en el que el Spectrum de 16 KB ya no se vendía y la mayoría de los existentes en uso se habían actualizado a 48 KB. [6]

128 BÁSICO

128 BASIC es el BASIC para el ZX Spectrum 128. [7] Ofrece comandos adicionales y utiliza entrada letra por letra.

  • Nuevos comandos:LOAD ! SAVE ! MERGE ! ERASE ! PLAY SPECTRUM

+3 BÁSICO

+3 BASIC es el BASIC con soporte de disco para ZX Spectrum +3 y +2A. [6]

  • Nuevos comandos:FORMAT COPY

T/S 2000 BÁSICO

T/S 2000 BASIC se utiliza en el Timex Sinclair 2068 (T/S 2068) compatible con Spectrum y agrega las siguientes seis palabras clave nuevas:

  • DELETEelimina rangos de líneas del programa BASIC.
  • FREEes una función que da la cantidad de RAM libre. PRINT FREEmostrará cuánta RAM está libre.
  • ON ERRes una función de manejo de errores que se utiliza principalmente como ON ERR GO TOo ON ERR CONT.
  • RESETSe puede utilizar para restablecer el comportamiento de ON ERR. También se pretendía restablecer periféricos.
  • SOUNDcontrola el chip de sonido AY-3-8192 .
  • STICKes una función que da la posición del joystick interno (Timex Sinclair 2090).

BASIC64

BASIC64 de Timex de Portugal , es una extensión de software [77] que permite una mejor programación en Basic con los modos gráficos de 512×192 y de doble área de visualización disponibles únicamente en las computadoras Timex Sinclair. Esta extensión agrega comandos y realiza una reasignación completa de la memoria para evitar que el sistema sobrescriba el área de memoria de pantalla extendida. Existen dos versiones debido a los diferentes mapas de memoria: una versión para TC 2048 y una versión para T/S 2068 y TC 2068 .

  • PRINT #imprime en un canal de salida específico.
  • LIST #enumera el programa a un canal de salida específico.
  • CLS*borra ambas áreas de visualización.
  • INK*Establece el color de la tinta para ambas áreas de visualización
  • PAPER*Establece el color del papel en ambas áreas de visualización
  • SCREEN$Selecciona los modos de resolución alta/normal.
  • PLOT*Traza un píxel y actualiza la posición del dibujo.
  • LINEdibuja una línea desde la posición PLOT anterior, apoyando el dibujo del arco
  • CIRCLE*dibuja un círculo o un óvalo, dependiendo del modo de pantalla.

Timex Básico Extendido

Timex Extended Basic de Timex de Portugal se utiliza en el Timex Computer 3256 , añadiendo comandos TEC – Timex Extended Commands que soportan el chip de sonido AY-3-8912, red RS-232 y el modo gráfico de alta resolución de 512x192 píxeles. [78] [79]

  • Comandos de la unidad RAM:LOAD! SAVE! CAT! MERGE! ERASE! CLEAR!
  • Comandos RS-232:FORMAT! LPRINT LLIST
  • AY-3-8912 ordena:BEEP!
  • Comandos de resolución 512 x 192:SCREEN$ DRAW! PLOT! CIRCLE!

Otras versiones, extensiones, derivados y sucesores

Intérpretes para la familia ZX Spectrum

Existen varios intérpretes de ZX Spectrum. [80]

  • Beta BASIC del Dr. Andy Wright, fue originalmente una extensión de BASIC , pero se convirtió en un intérprete completo. [81]
  • YS MegaBasic de Mike Leaman. [80] [82]
  • ZebraOS de Zebra Systems en Nueva York, una versión en cartucho de T/S 2000 BASIC que utilizaba el modo de pantalla de 512×192. [83]
  • ROM Sea Change de Steve Vickers e Ian Logan, modificada por Geoff Wearmouth, una ROM de reemplazo con un BASIC Sinclair mejorado. [84]
  • Gosh Wonderful de Geoff Wearmouth, una ROM de reemplazo que corrige errores y agrega un tokenizador, un listado de transmisiones y comandos de eliminación y renumeración. [80] [85]
  • OpenSE BASIC (anteriormente SE BASIC) de Andrew Owen, una ROM de reemplazo con correcciones de errores y muchas mejoras, incluida la compatibilidad con ULAplus [86] , publicada como código abierto en 2011 [87] [88] [89]

Compiladores para la familia ZX Spectrum

Existen varios compiladores ZX Spectrum . [80]

  • Compilador HiSoft COLT (también conocido como compilador de enteros HiSoft COLT) [90] [91]
  • HiSoft BASIC (también conocido como HiSoft BASIC Compiler), un compilador capaz de procesar números enteros y de punto flotante [92] [93]
  • Compilador láser [94] [95]
  • Compilador de enteros 'IS' de Softek [96] [97] (sucesor del compilador de enteros de Softek [98] )
  • Compilador completo de Softek 'FP' [99] [100]
  • Compilador ZIP [101] [102]

Derivados y sucesores para otros ordenadores

  • SuperBASIC , un dialecto BASIC mucho más avanzado introducido con la computadora personal Sinclair QL , con algunas similitudes con los BASIC Sinclair anteriores [103]
  • SAM Basic , el BASIC del SAM Coupé , generalmente considerado un clon del ZX Spectrum [104]
  • ROMU6 de Cesar y Juan Hernandez – MSX [80]
  • Spectrum 48 de Whitby Computers – Commodore 64 [80]
  • Sparky eSinclair BASIC de Richard Kelsh, un sistema operativo basado libremente en ZX Spectrum BASIC - Zilog eZ80 [105]
  • Sinbas de Pavel Napravnik – DOS [80]
  • Basic [106] (y CheckBasic [107] ) de Philip Kendall - Unix
  • BINSIC [108] de Adrian McMenamin, una reimplementación en Groovy modelada estrechamente en ZX81 BASIC – Java
  • BASin [109] de Paul Dunn, un entorno de desarrollo integrado (IDE) Sinclair BASIC completo basado en un emulador ZX Spectrum [80] – Windows
  • SpecBAS [110] (también conocido como SpecOS) de Paul Dunn, un entorno de desarrollo integrado (IDE) que proporciona un superconjunto mejorado de Sinclair BASIC: Windows , Linux , Pandora y Raspberry Pi
  • ZX-Basic [111] Compilador compatible con versiones anteriores, pero mejorado, de programas Sinclair BASIC, ZX Spectrum, escrito en Python , disponible gratuitamente para Windows, Linux y Mac OS
  • ZX-Basicus [112] de Juan-Antonio Fernández-Madrigal, un sintetizador, analizador, optimizador , intérprete y depurador de Sinclair BASIC 48K para PC, descargable gratuitamente para Linux y Windows.

Véase también

Notas

  1. ^ Los parámetros opcionales están entre [corchetes]
  2. ^ Esto supone que la computadora está en modo  K  (palabra clave), que normalmente está al comienzo de una línea cuando se ingresa a BASIC. En Spectrum 16K y 48K, se ingresa al modo extendido presionando y simultáneamente en lugar de la tecla que está presente en Spectrum+ y modelos posteriores.CAPS SHIFTSYMBOL SHIFTEXTENDED MODE
  3. ^ abc “Falso” en BASIC Sinclair equivale a 0 (cero), todo lo demás equivale a “verdadero”. Las funciones que devuelven valores verdaderos o falsos en realidad devuelven 0 para falso y 1 para verdadero, mientras que ANDnormalmente devuelve la primera de las condiciones proporcionadas para verdadero, o 1 si no se proporcionaron valores numéricos. Por ejemplo, 6 AND 7devuelve 6, mientras que NOT 6=7devuelve 1.
  4. ^ abc Los números disponibles para los colores son:
    12345670
    azulrojomagentaverdecianamarilloblanconegro

    En todos los comandos relacionados con el color, el número 8 se puede usar para indicar “transparente” INKy PAPERtambién se puede establecer en 9 para “contraste”, es decir, para colocar un color oscuro sobre un fondo claro o viceversa automáticamente.

  5. ^ abcdef INK, PAPER, FLASH, BRIGHT, OVERy INVERSElos atributos set para mostrar texto y gráficos en la pantalla. Se pueden usar como comandos, para aplicarlos a toda la salida posterior hasta que se vuelvan a configurar, o dentro de una PRINTdeclaración, para aplicarlos solo desde ese punto hasta el final de la declaración.
  6. ^ abcdef CAT, ERASE, FORMATy MOVEfueron diseñados originalmente para ser utilizados con periféricos, pero en el lanzamiento de ZX Spectrum, no se habían implementado completamente, de modo que su uso generaba un mensaje de error (Invalid Stream). Más tarde, con la ayuda de la ROM sombra ZX Interface 1, se utilizaron para el ZX Microdrive . (La ROM sombra se paginaba cuando el intérprete BASIC detectaba un error de sintaxis, por lo que la mayoría de los comandos de ZX Microdrive utilizan un "*").
  7. ^ ab A diferencia de muchos otros dialectos BASIC, Sinclair Basic no incluía el ELSEoperador en la cláusula IFTHEN[– ELSE]. Una solución alternativa sería utilizar una construcción IFTHENGO TOen su lugar, omitiendo las líneas que habrían estado en una ELSEcláusula con el operadorGO TO
  8. ^ La memoria de visualización del Spectrum comienza en la dirección 16384 y tiene una longitud de 6912 bytes.
  9. ^ Una cadena dentro de una cadena debe tener sus comillas duplicadas en Sinclair BASIC

Referencias

  1. ^ Garfield, Simon (28 de febrero de 2010). "Sir Clive Sinclair: "No uso ningún ordenador"". The Guardian . Consultado el 23 de mayo de 2011. Está deseoso de dar crédito a [...], en particular a Nine Tiles, la empresa que creó el software operativo Basic.
  2. ^ Adamson y Kennedy, pág. 63.Error sfn: sin destino: CITEREFAdamsonKennedy ( ayuda )
  3. ^ Adamson y Kennedy 1986, pág. 64.
  4. ^ Adamson y Kennedy 1986, pág. 70.
  5. ^ ab "ZX80 – Actualización de ROM BÁSICA 8K". www.fruitcake.plus.com .
  6. ^ abcd "World of Spectrum - Documentación - ZX Spectrum +3 - Capítulo 7". worldofspectrum.org .
  7. ^ abcd "World of Spectrum - Documentación - Manual ZX Spectrum 128 Página 6". worldofspectrum.org .
  8. ^ Smith, Tony (23 de abril de 2012). "Feliz 30.º cumpleaños, Sinclair ZX Spectrum". The Register .
  9. ^ Adamson y Kennedy 1986, pág. 88.
  10. ^ Dunn, Paul (7 de diciembre de 2022), SpecBAS , consultado el 12 de diciembre de 2022
  11. ^ "CSDb". Base de datos de escenas de Commodore 64. Consultado el 12 de diciembre de 2022 .
  12. ^ Vickers 1983, págs. 7–8.
  13. ^ "Imagen del ZX80".
  14. ^ "Desmontaje de ROM Spectrum 128 - Spectrum 128 en español". www.fruitcake.plus.com .
  15. ^ Sinclair (1985). ZX Spectrum 128 Introducción y Guía de Funcionamiento. Sinclair Research Ltd e Investronica, SA p. 9.
  16. ^ abcd Vickers 1983, pág. 59.
  17. ^ desde Vickers 1983, pág. 70.
  18. ^ abc Vickers 1983, pág. 85.
  19. ^ Vickers 1983, págs. 69–70.
  20. ^ abcd Vickers 1983, pág. 101.
  21. ^ Vickers 1983, pág. 116.
  22. ^ Vickers 1983, pág. 135.
  23. ^ desde Vickers 1983, pág. 93.
  24. ^ Vickers 1983, pág. 113.
  25. ^ Vickers 1983, pág. 110–111.
  26. ^ Cambridge Communication 1983, pág. 15.
  27. ^ desde Vickers 1983, pág. 91.
  28. ^ desde Vickers 1983, pág. 123.
  29. ^ abc Vickers 1983, pág. 103.
  30. ^ "World of Spectrum - Documentación - Manual de ZX Spectrum - Capítulo 24". worldofspectrum.org .
  31. ^ Vickers 1983, pág. 168.
  32. ^ Vickers 1983, pág. 19.
  33. ^ abc Vickers 1983, pág. 151.
  34. ^ desde Vickers 1983, pág. 68.
  35. ^ desde Vickers 1983, pág. 41.
  36. ^ abc Vickers 1983, pág. 142.
  37. ^ abc Vickers 1983, pág. 60.
  38. ^ Vickers 1983, págs. 79–81.
  39. ^ Vickers 1983, págs. 11–123.
  40. ^ Cambridge Communication 1983, pág. 18.
  41. ^ Vickers 1983, pág. 66.
  42. ^ Cambridge Communication 1983, pág. 19.
  43. ^ Vickers 1983, pág. 31.
  44. ^ desde Vickers 1983, pág. 32.
  45. ^ desde Vickers 1983, pág. 37.
  46. ^ desde Vickers 1983, pág. 25.
  47. ^ desde Vickers 1983, pág. 159.
  48. ^ desde Vickers 1983, pág. 110.
  49. ^ Vickers 1983, pág. 131.
  50. ^ abcd Vickers 1983, pág. 16.
  51. ^ desde Vickers 1983, pág. 112.
  52. ^ Vickers 1983, pág. 57.
  53. ^ desde Vickers 1983, pág. 13.
  54. ^ Vickers 1983, pág. 144.
  55. ^ Vickers 1983, pág. 15.
  56. ^ desde Vickers 1983, pág. 67.
  57. ^ Vickers 1983, págs. 142-143.
  58. ^ Vickers 1983, pág. 147.
  59. ^ Cambridge Communication 1983, pág. 39.
  60. ^ Vickers 1983, págs. 31–32.
  61. ^ Cambridge Communication 1983, pág. 22.
  62. ^ Vickers 1983, pág. 129.
  63. ^ Vickers 1983, pág. 130.
  64. ^ Vickers 1983, pág. 121.
  65. ^ Vickers 1983, pág. 163.
  66. ^ Vickers 1983, pág. 74.
  67. ^ Vickers 1983, pág. 42.
  68. ^ Vickers 1983, pág. 73.
  69. ^ desde Vickers 1983, pág. 14.
  70. ^ Vickers 1983, pág. 143.
  71. ^ Vickers 1983, pág. 69.
  72. ^ Vickers 1983, pág. 32, 51.
  73. ^ Vickers 1983, pág. 180.
  74. ^ Vickers 1983.
  75. ^ Vickers 1983, pág. 141.
  76. ^ "Manual de usuario de Sinclair ZX80 4K básico para ZX80".
  77. ^ "Información técnica de Timex – Basic 64 para TC2048". timex.comboios.info .
  78. «Microsete N.º46, Mayo 1987» (PDF) . loadzx.com .
  79. ^ "Ordenador Timex 3256, Timex Portugal". k1.spdns.de .
  80. ^ abcdefgh "World of Spectrum - Sinclair BASIC - Home of the Sinclair Extended Basic Project". www.worldofspectrum.org . Archivado desde el original el 13 de octubre de 2002.
  81. ^ "Beta Basic en Spectrum Computing: juegos, software y hardware de Sinclair ZX Spectrum". Spectrum Computing . Consultado el 13 de diciembre de 2022 .
  82. ^ "YS MegaBasic en Spectrum Computing: juegos, software y hardware de Sinclair ZX Spectrum". Spectrum Computing . Consultado el 13 de diciembre de 2022 .
  83. ^ "Zebra OS64 en Spectrum Computing: juegos, software y hardware de Sinclair ZX Spectrum". Spectrum Computing . Consultado el 13 de diciembre de 2022 .
  84. ^ "Historia de Sinclair BASIC - Wiki de Sinclair". sinclair.wiki.zxnet.co.uk .
  85. ^ "El ensamblaje de la ROM incompleta de Spectrum". Archivado desde el original el 1 de septiembre de 2015.
  86. ^ "ULAplus". sites.google.com . Archivado desde el original el 25 de mayo de 2013 . Consultado el 21 de marzo de 2016 .
  87. ^ "ZX Interface 2 - SE BASIC (cartucho ROM de terceros)". www.fruitcake.plus.com . Archivado desde el original el 25 de marzo de 2015 . Consultado el 23 de marzo de 2016 .
  88. ^ "OpenSE BASIC". SourceForge . 16 de abril de 2013.
  89. ^ "OpenSE BASIC en Spectrum Computing: juegos, software y hardware de Sinclair ZX Spectrum". Spectrum Computing . Consultado el 13 de diciembre de 2022 .
  90. ^ "Mundo del espectro - Compilador COLT de HiSoft". Mundo del espectro .
  91. ^ "Compilador HiSoft COLT en Spectrum Computing: juegos, software y hardware de Sinclair ZX Spectrum". Spectrum Computing . Consultado el 13 de diciembre de 2022 .
  92. ^ "Mundo del espectro - HiSoft BASIC". Mundo del espectro .
  93. ^ "HiSoft BASIC en Spectrum Computing: juegos, software y hardware de Sinclair ZX Spectrum". Spectrum Computing . Consultado el 13 de diciembre de 2022 .
  94. ^ "World of Spectrum - Compilador láser". World of Spectrum .
  95. ^ "Laser Compiler en Spectrum Computing - Juegos, software y hardware de Sinclair ZX Spectrum". Spectrum Computing . Consultado el 13 de diciembre de 2022 .
  96. ^ "Mundo del espectro - Compilador Softek 'IS' BASIC". Mundo del espectro .
  97. ^ "Compilador de enteros en Spectrum Computing - Juegos, software y hardware de Sinclair ZX Spectrum". Spectrum Computing . Consultado el 13 de diciembre de 2022 .
  98. ^ "World of Spectrum - Compilador de números enteros". World of Spectrum .
  99. ^ "World of Spectrum - Compilador completo 'FP' de Softek". World of Spectrum .
  100. ^ "Softek 'FP' Full Compiler en Spectrum Computing - Juegos, software y hardware de Sinclair ZX Spectrum". Spectrum Computing . Consultado el 13 de diciembre de 2022 .
  101. ^ "World of Spectrum - Compilador ZIP". World of Spectrum .
  102. ^ "Compilador ZIP en Spectrum Computing - Juegos, software y hardware de Sinclair ZX Spectrum". Spectrum Computing . Consultado el 13 de diciembre de 2022 .
  103. ^ Berry, Stephen (1984). «QL Palabras clave». Archivado desde el original el 22 de febrero de 2017. Consultado el 27 de junio de 2023 .{{cite web}}: CS1 maint: URL no apta ( enlace )
  104. ^ "Sam Coupe Scrapbook: Sam BASIC". www.mono.org . Consultado el 13 de diciembre de 2022 .
  105. ^ "Proyecto Sparky eZX BASIC". rk-internet.com .
  106. ^ "Philip Kendall - Básico". www.shadowmagic.org.uk .
  107. ^ "Philip Kendall – CheckBasic". www.shadowmagic.org.uk .
  108. ^ "Binsic no es el código de instrucciones de Sinclair". 25 de junio de 2012.
  109. ^ "ZX Spin y BASin - ULAplus". sites.google.com .
  110. ^ "ZXDunny/SpecBAS". 5 de junio de 2021 – vía GitHub.
  111. ^ "ZX-Basic: compilador compatible con versiones anteriores, pero mejorado, de programas Sinclair BASIC".
  112. ^ "ZX-Basicus: analizador/sintetizador/optimizador/intérprete de programas Sinclair BASIC para el ZX Spectrum 48K". jafma.net .

Bibliografía

  • Adamson, Ian; Kennedy, Richard (1986). Sinclair y la tecnología del "amanecer". Penguin.
  • Ardley, Neil (1984). Guía del usuario del Sinclair ZX Spectrum+ . Dorling Kindersley en asociación con Sinclair Research. ISBN 0-86318-080-9.
  • Vickers, Steven (1982). Programación en BASIC del Sinclair ZX Spectrum . Sinclair Research.
  • Vickers, Steven (1983). Programación en BASIC para Sinclair ZX Spectrum (2.ª edición). Sinclair Research.
  • Cambridge Communication (1983). Manual de Sinclair ZX Spectrum Microdrive and Interface 1. Sinclair Research.
  • Programación en BASIC del Sinclair ZX Spectrum: manual original de 1982 de Steven Vickers (mencionado anteriormente)
  • Programación básica del Sinclair ZX81 Archivado el 22 de abril de 2007 en Wayback Machine : también por Vickers
  • La historia de Sinclair BASIC: por Andrew Owen
  • Timex Computer World: Manual de usuario básico 64 para Timex Computer 2048
  • Gramática Sinclair BASIC: una especificación de gramática LL(1) para analizar Sinclair BASIC 16/48K
Obtenido de "https://es.wikipedia.org/w/index.php?title=Sinclair_BASIC&oldid=1251538263"