Sinclair BASIC es un dialecto del lenguaje de programación BASIC utilizado en las computadoras domésticas 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 varias decisiones para reducir el uso de memoria. Esto dio lugar a una de las características más notables de Sinclair BASIC: la introducción de palabras clave mediante pulsaciones de teclas individuales. Cada palabra clave posible se asignaba a una tecla del teclado; al pulsarla, el token se almacenaba en la memoria mientras la palabra clave completa se mostraba en pantalla. Esto facilitaba la introducción de código y simplificaba el analizador sintáctico .
La versión original del ZX80 solo admitía operaciones matemáticas con números enteros , lo que compensaba parcialmente algunas de las decisiones de diseño para ahorrar memoria que afectaban negativamente al rendimiento. Cuando el sistema se adaptó al ZX81 en 1981, se añadió una implementación completa de punto flotante . Esta versión era muy lenta, una de las versiones de BASIC más lentas del mercado en aquel momento, pero dadas las limitaciones de la máquina, esto no suponía un problema grave. Sin embargo, la baja velocidad no se debía principalmente a un intérprete ineficiente, sino a que entre el 70 % y el 80 % de los ciclos de la máquina eran consumidos por el hardware de vídeo. Por lo tanto, el Z80 del ZX81, con una frecuencia de reloj de 3,25 MHz, funcionaba, en la práctica, muy por debajo de 1 MHz desde la perspectiva del sistema BASIC.
El rendimiento se convirtió en un problema más grave con el lanzamiento del ZX Spectrum en 1982, que era demasiado lento para aprovechar al máximo las nuevas funciones de la máquina. Esto dio lugar a un BASIC completamente nuevo para el posterior Sinclair QL , así como a varios 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 crear 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 una seria limitación para su popularidad. Quería un nuevo kit que ampliara su anterior MK14 e incluyera un BASIC integrado al precio objetivo de £ 79.95. Para cumplir con este punto de 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 de BASIC entre junio y julio de 1979, pero el código inicialmente tenía 5 KB y pasó el mes siguiente reduciéndolo. Inicialmente fue una implementación incompleta del estándar básico mínimo del Instituto Nacional Estadounidense de Estándares (ANSI) de 1978 con aritmética entera únicamente, denominada 4K BASIC . [ 3 ]
Incluso antes de que se presentara el ZX80 en febrero de 1980, la constante presión a la baja sobre los precios en la industria permitió 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 reimplementaron 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 se aumentaba el tamaño de la ROM a 8 KB. Este trabajo se asignó a Steve Vickers , quien se unió a Nine Tiles en enero de 1980. Mientras Grant trabajaba en el código de interfaz con el hardware, Vickers utilizó el mayor espacio para introducir aritmética de punto flotante y un conjunto de funciones trigonométricas , que se esperaban de cualquier BASIC de esa época, produciendo 8K BASIC . [ 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. Las nuevas ROMs también se ofrecieron finalmente a los propietarios del ZX80 anterior. [ 5 ]
Cuando Sinclair perdió el concurso para construir el BBC Computer , siguió adelante con sus planes para producir una máquina de bajo costo con capacidad para color, que se materializó como el ZX Spectrum en abril de 1982. El espacio de ROM se incrementó una vez más, esta vez a 16 KB. En consonancia con su filosofía de crear sistemas con el menor gasto posible, Sinclair quería realizar los mínimos cambios al BASIC de 8K existente. Aunque Nine Tiles consideró que se necesitaría algo mucho mejor para la nueva máquina, el cronograma 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, como 48 BASIC con la introducción del ZX Spectrum 128, momento en el que el Spectrum de 16 KB dejó de venderse 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 "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 por 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 iniciar el proyecto Jupiter Ace . [ 9 ] Cuando se lanzó el Spectrum, la ROM aún no estaba completa, y aunque Nine Tiles continuó trabajando en ella hasta abril de 1982, para entonces ya se habían vendido 75.000 Spectrums y el proyecto fue cancelado. La funcionalidad faltante se agregó más tarde mediante código adicional en la ZX Interface 1. Después de que Nine Tiles y Sinclair separaran sus caminos, se crearon varias versiones nuevas de 48 BASIC.
En 1983, como parte de la introducción del Spectrum en el mercado estadounidense bajo la denominación TS2068, Timex lo modificó como T/S 2000 BASIC . Esta nueva versión era incapaz de ejecutar muchos programas del Spectrum debido al cambio en la ubicación de memoria de las funciones del equipo. Una versión similar, aunque algo más compatible, se introdujo como parte del Spectrum 128 español de 1985, el 128 BASIC . [ 7 ]
Amstrad adquirió Sinclair Research en 1986. Dado que Sinclair nunca había poseído los derechos de autor del lenguaje, Amstrad tuvo que negociar una nueva licencia con Nine Tiles. Varias otras versiones también aparecieron durante este período, ya que se introdujeron diversas extensiones y clones del Spectrum. Entre ellos 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, Sinclair BASIC se basa en su editor de líneas . Al encender el ordenador, ejecuta 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, al pulsar la tecla Intro , la línea de código actual se copia al final de la pantalla. El usuario puede desplazarse horizontalmente por esta línea con las teclas de cursor y confirmar los cambios pulsando de nuevo la tecla Intro. En cambio, en máquinas como la Commodore 64 o los ordenadores Atari de 8 bits , las teclas de flecha arriba y abajo permiten desplazarse entre las líneas del programa y editarlas directamente.EDITNEW LINE
La característica más destacada del editor es que las palabras clave se introducen con una sola pulsación de tecla. Por ejemplo, en el ZX81, al pulsar la tecla, la palabra clave completa se introduce en la línea que se está editando. Una vez introducida la palabra clave, el cursor cambia a una "L" para indicar que lo que sigue se interpretará como texto normal. Por ejemplo, al pulsar de nuevo en este punto, se introduce la letra "P".PPRINTP
Las teclas generalmente tenían asignadas dos palabras clave distintas : una encima y otra debajo. Al pulsar la tecla en modo "K", se introducía la palabra clave superior, como por ejemplo . Si el sistema estaba en modo "L", se podía volver a "K" pulsando la tecla Mayús ; inicialmente, los sistemas no admitían texto en minúsculas , por lo que no era necesario pulsar Mayús en otros casos. Las palabras clave inferiores requerían una segunda pulsación, + , que activaba el modo de función del editor, cambiando el cursor a una "F". Introducir código común solía requerir un número considerable de pulsaciones. PRINTP ⇧ 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 vendían 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 introducen directamente, lo que significa que se puede, por ejemplo, tener una variable llamada "PRINT", ya que el sistema puede determinar que no es lo mismo que la palabra clave.
A medida que los sistemas evolucionaron y añadieron nuevas palabras clave, el sistema de entrada se volvió cada vez más difícil de usar. 48 BASIC en el Spectrum requería que cada tecla albergara hasta cuatro palabras clave. Introducir palabras clave era un proceso laborioso que consistía en buscar la tecla adecuada en el texto relativamente pequeño del teclado y luego introducir correctamente las múltiples pulsaciones de teclas necesarias para introducirla correctamente. Por ejemplo, para introducir BEEPuna palabra clave era necesario escribir + para acceder al modo extendido (los modelos posteriores incluyen una tecla separada), mantener pulsada la tecla y luego pulsar . Para mejorar la compleja entrada en el 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 llave: más la llaveSYMBOL SHIFT
- Verde encima de la clave: seguido de la claveEXTENDED MODE
- Rojo debajo de la clave: seguido de más la claveEXTENDED MODESYMBOL SHIFT
Este concepto había quedado obsoleto, 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 carácter por carácter, de forma similar a otros ordenadores domésticos de la época. Esto requería un nuevo analizador léxico para convertir la línea a un formato interno similar.
El almacenamiento en memoria resultante del programa era similar al de Microsoft BASIC , ya que solo las palabras clave se presentaban como tokens, mientras que los caracteres que no eran palabras clave ( como las constantes numéricas y de cadena y los nombres de variables ) se mantenían en su formato original. Sin embargo, ese formato no era ASCII , sino un código de caracteres interno que contenía tanto caracteres imprimibles como los tokens de palabras clave. Aunque algunas partes de la tabla, como las letras mayúsculas de la A a la Z, estaban en el mismo orden que en ASCII, sus caracteres correspondían a valores numéricos diferentes; es decir, el desplazamiento de sus puntos de código con respecto a cero era distinto del desplazamiento de 65 de ASCII. Otros caracteres, como la puntuación, podían estar aún más desplazados. El conjunto de caracteres del ZX Spectrum es el ejemplo más destacado de este tipo de código. Los ordenadores relacionados que ejecutaban Sinclair BASIC utilizaban variantes similares, como los conjuntos de caracteres del ZX80 o del ZX81 . Todos estos conjuntos de caracteres, diferentes pero relacionados, incluían tokens de Sinclair BASIC.
Tipos de datos
Una característica poco común de Sinclair BASIC es la forma en que almacena las variables en memoria. Normalmente, los intérpretes usan una entrada de tamaño fijo para almacenar 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, lo que 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 matrices 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$, A()y A$()eran 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 iba seguido de caracteres adicionales que terminaban con uno con su bit más significativo activado. Los nombres de variables 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 refería a la misma variable.LETNumberOfApples=5LETnumberofapples=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 comprobar si el nombre coincide usando el subconjunto del primer byte, si la entrada no es la que se busca, se debe leer el tipo a partir de los tres bits superiores y luego calcular la siguiente ubicación de una variable en el almacenamiento usando 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 que es una cadena, y luego tiene que leer el siguiente byte de longitud y avanzar esa cantidad de bytes para encontrar la siguiente entrada en la tabla. Para simplificar un poco esto, los arreglos también almacenaban una longitud de dos bytes, por lo que toda la estructura se podía omitir más fácilmente.
Una característica única era el tipo de dato "short float" o 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 estableciendo el byte del exponente a cero, mientras que los valores de punto flotante se almacenaban con un exponente de formato 128. Esto significaba que no podía almacenar cero como un float y se perdía una posible magnitud de exponente. Tampoco utilizaba menos memoria, ya que los valores seguían ocupando 5 bytes en memoria. La ventaja de este formato era el rendimiento; la biblioteca matemática incluía pruebas para detectar el exponente cero y, si lo encontraba, no intentaba realizar diversas operaciones con los 3 bytes restantes bajo ciertas condiciones.
Detalles de la palabra clave
El ZX81 8K BASIC usaba las formas más cortas GOTO, GOSUB, CONTy RAND, mientras que el Spectrum 48 BASIC usaba las formas más largas , , y . El ZX80 4K BASIC también usaba estas formas más largas pero se diferenciaba por usar la ortografía . El ZX81 8K BASIC fue la única versión que usó , , y . El ZX80 4K BASIC tenía la función exclusiva ; era equivalente al operador de cadena en versiones posteriores.GO TOGO SUBCONTINUERANDOMIZERANDOMISEFASTSCROLLSLOWUNPLOTTL$()(2 TO )
Se asignan puntos de código únicos en el conjunto de caracteres ZX80 , el conjunto de caracteres ZX81 y el conjunto de caracteres ZX Spectrum para cada palabra clave u operador de múltiples caracteres, es decir <=, , , , (tokenizado solo en el ZX81), (reemplazado con en el Spectrum). Estos se expanden haciendo referencia a una tabla de tokens en la ROM. Por lo tanto, una palabra clave usa solo un byte de memoria, un ahorro significativo en comparación con el almacenamiento tradicional letra por letra. Esto también significaba que el intérprete BASIC podía determinar rápidamente cualquier comando o función evaluando un byte, y que las palabras clave no tenían que ser palabras reservadas como en otros dialectos BASIC u otros lenguajes de programación, por ejemplo, se permite definir una variable llamada y mostrar su valor con . 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 tecla para ese comando al comienzo de una línea cambia el editor del modo comando al modo letra. Por lo tanto, la asignación de variables requiere (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 de BASIC, el intérprete no necesitaba paréntesis para identificar las funciones; era suficiente, no 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 paréntesis. Se listaban como FUNCIONES INTEGRALES en una etiqueta encima y a la derecha del teclado. [ 13 ]>=<>""**↑PRINTPRINT PRINTLETLETA=1A=1SIN xSIN(x)CHR$()STR$()TL$()PEEK()CODE()RND()USR()ABS()
128 BASIC , presente en ZX Spectrum 128, +2, +3, +2A y +2B, almacenaba internamente las palabras clave 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:
PLAY, que operaba el chip musical General Instrument AY-3-8910 de los modelos 128kSPECTRUM, que cambió el Spectrum de 128k a un modo de compatibilidad con Spectrum de 48k
El ZX Spectrum 128 original en español incluía cuatro comandos adicionales del editor BASIC en español, [ 14 ] [ 15 ] uno de los cuales no estaba documentado:
EDITAR(para editar un número de línea o abrir el editor de cadenas en pantalla completa)NUMERO(para renumerar las líneas del programa)BORRAR(para eliminar líneas de programa)ANCHO(para configurar el ancho de columna del dispositivo RS-232 , pero no está documentado ya que el código estaba roto)
A diferencia de las funciones LEFT$(), MID$()y RIGHT$()utilizadas en los dialectos de Microsoft BASIC, omnipresentes en las computadoras domésticas, en Sinclair BASIC se accede a partes de cadenas mediante rangos numéricos. Por ejemplo, A$(5 TO 10)devuelve una subcadena que comienza con el quinto y termina con el décimo carácter de la variable a$. Por lo tanto, es posible reemplazar los comandos LEFT$()y RIGHT$()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)por sí solo es suficiente para reemplazar MID$(A$,5,1).
Sintaxis
Palabras clave
En el ZX Spectrum de 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):
Versiones oficiales
4K BÁSICO
4K BASIC para ZX80 [ 75 ] (llamado así porque reside en una memoria de solo lectura (ROM) de 4 KiB ), fue desarrollado por John Grant de Nine Tiles para el ZX80. Tiene aritmética solo de enteros.
- Comandos del sistema:
NEWRUNLISTLOADSAVE - Instrucciones de control:
GOTOIFTHENGOSUBSTOPRETURNFORTONEXTCONTINUE - Instrucciones de entrada/salida:
PRINTINPUT - Declaración de la tarea:
LET - Otras declaraciones:
CLEARCLSDIMREMRANDOMIZEPOKE - Funciones:
ABSCHR$CODEPEEKRNDSTR$TL$USR
8K BÁSICO
8K BASIC es el BASIC del ZX81 (también disponible como actualización para el ZX80 [ 5 ] ), actualizado con aritmética de punto flotante por Steve Vickers , llamado así porque reside en una ROM de 8 KiB.
- Declaraciones:
PRINTRANDLETCLEARRUNLISTGOTOCONTINPUTNEWREMPRINTSTOPBREAKIFSTOPFORNEXTTOSTEPSLOWFASTGOSUBRETURNSAVELOADCLSSCROLLPLOTUNPLOTPAUSELPRINTLLISTCOPYDIMPOKENEW - Funciones:
ABSSGNSINCOSTANASNACSATNLNEXPSQRINTPIRNDFUNCTIONLENVALSTR$NOTCODECHR$INKEY$ATTABINKEY$PEEKUSR
48 BÁSICO
48 BASIC es el BASIC para el ZX Spectrum original de 16/48 KB de 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 dejó de venderse 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 !PLAYSPECTRUM
+3 BÁSICO
+3 BASIC es el BASIC con soporte para disco para el ZX Spectrum +3 y +2A. [ 6 ]
- Nuevos comandos:
FORMATCOPY
T/S 2000 BÁSICO
T/S 2000 BASIC se utiliza en el Timex Sinclair 2068 (T/S 2068) compatible con Spectrum y añade las siguientes seis nuevas palabras clave:
DELETEElimina rangos de líneas de programas BASIC.FREEes una función que proporciona la cantidad de RAM libre.PRINT FREEmostrará cuánta RAM está libre.ON ERRes una función de manejo de errores que se usa principalmente comoON ERR GO TOoON ERR CONT.RESETSe puede utilizar para restablecer el comportamiento deON ERR. También estaba destinado a restablecer los periféricos.SOUNDControla el chip de sonido AY-3-8192 .STICKes una función que proporciona la posición del joystick interno (Timex Sinclair 2090).
BASIC64
BASIC64 de Timex de Portugal es una extensión de software [ 76 ] [ 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 los ordenadores Timex Sinclair . Esta extensión añade 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 las diferentes asignaciones de memoria: una versión para TC 2048 y otra para T/S 2068 y TC 2068. [ 76 ] [ 78 ]
PRINT #imprime en un canal de salida específico.LIST #Enumera el programa en un canal de salida específico.CLS*Despeja ambas áreas de visualización.INK*establece el color de la tinta para ambas áreas de visualizaciónPAPER*establece el color del papel en ambas áreas de visualizaciónSCREEN$Selecciona los modos de resolución alta/normal.PLOT*traza un píxel y actualiza la posición del dibujo.LINEtraza una línea desde la posición anterior de PLOT, apoyando el dibujo del arcoCIRCLE*Dibuja un círculo o un óvalo, dependiendo del modo de pantalla.
Timex Extended Basic
Timex Extended Basic de Timex de Portugal se utiliza en el ordenador Timex 3256 , añadiendo comandos TEC – Timex Extended Commands que admiten el chip de sonido AY-3-8912, la red RS-232 y el modo gráfico de alta resolución de 512x192 píxeles. [ 79 ] [ 80 ]
- Comandos de la unidad RAM:
LOAD!SAVE!CAT!MERGE!ERASE!CLEAR! - Comandos RS-232:
FORMAT!LPRINTLLIST - Comandos AY-3-8912:
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. [ 81 ]
- Beta BASIC, del Dr. Andy Wright, fue originalmente una extensión de BASIC , pero se convirtió en un intérprete completo. [ 82 ]
- YS MegaBasic de Mike Leaman. [ 81 ] [ 83 ]
- 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. [ 84 ]
- Sea Change ROM de Steve Vickers e Ian Logan, modificada por Geoff Wearmouth, una ROM de reemplazo con un BASIC Sinclair mejorado. [ 85 ]
- Gosh Wonderful de Geoff Wearmouth, una ROM de reemplazo que corrige errores y agrega un tokenizador, un listado de flujos, y comandos para eliminar y renumerar. [ 81 ] [ 86 ]
- OpenSE BASIC (anteriormente SE BASIC) de Andrew Owen, una ROM de reemplazo con correcciones de errores y muchas mejoras, incluido el soporte para ULAplus [ 87 ] , publicada como código abierto en 2011 [ 88 ] [ 89 ] [ 90 ]
Compiladores para la familia ZX Spectrum
Existen varios compiladores para ZX Spectrum . [ 81 ]
- Compilador HiSoft COLT (también conocido como compilador de enteros HiSoft COLT) [ 91 ] [ 92 ]
- HiSoft BASIC (también conocido como HiSoft BASIC Compiler), un compilador capaz de manejar números enteros y de punto flotante [ 93 ] [ 94 ]
- Compilador láser [ 95 ] [ 96 ]
- Compilador de enteros Softek 'IS' [ 97 ] [ 98 ] (sucesor del compilador de enteros Softek [ 99 ] )
- Compilador completo Softek 'FP' [ 100 ] [ 101 ]
- Compilador ZIP [ 102 ] [ 103 ]
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 de Sinclair anteriores [ 104 ].
- SAM Basic , el BASIC del SAM Coupé , generalmente considerado un clon del ZX Spectrum [ 105 ]
- ROMU6 de César y Juan Hernández – MSX [ 81 ]
- Spectrum 48 de Whitby Computers – Commodore 64 [ 81 ]
- Sparky eSinclair BASIC de Richard Kelsh, un sistema operativo vagamente basado en ZX Spectrum BASIC – Zilog eZ80 [ 106 ]
- Sinbas de Pavel Napravnik – MS-DOS [ 81 ]
- Basic [ 107 ] (y CheckBasic [ 108 ] ) por Philip Kendall – Unix
- BINSIC [ 109 ] por Adrian McMenamin, una reimplementación en Groovy modelada fielmente en ZX81 BASIC – Java
- BASin [ 110 ] de Paul Dunn, un entorno de desarrollo integrado (IDE) completo de Sinclair BASIC basado en un emulador de ZX Spectrum [ 81 ] – Windows
- SpecBAS [ 111 ] (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 [ 112 ] – Compilador compatible con versiones anteriores, pero mejorado, de programas Sinclair BASIC para el ZX Spectrum, escrito en Python , disponible gratuitamente para Windows, Linux y Mac OS.
- ZX-Basicus [ 113 ] 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
- ↑ Los parámetros opcionales se encuentran entre corchetes [ ]
- ↑ Estas instrucciones presuponen que el ordenador está en modo K (palabra clave), que es el estado habitual al inicio de una línea al introducir BASIC. En los modelos Spectrum 16K y 48K, el modo extendido se activa pulsandosimultáneamenteen lugar de latecla presente en los modelos Spectrum+ y posteriores.CAPS SHIFTSYMBOL SHIFTEXTENDED MODE
- 1 2 3 "Falso" en Sinclair BASIC equivale a 0 (cero), todo lo demás equivale a "verdadero". Las funciones que devuelven valores verdadero o falso, por lo tanto, 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 queNOT 6=7devuelve 1. - 1 2 3 Los números disponibles para los colores son: En todos los comandos relacionados con el color, el número 8 se puede usar para indicar "transparente"
INKyPAPERtambién se puede establecer en 9 para "contraste", es decir, para colocar un color oscuro sobre un fondo claro o viceversa automáticamente. - 1 2 3 4 5 6
INK,PAPER,FLASH,BRIGHT,OVERyINVERSEestablecen atributos 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 establecer, o dentro de unaPRINTinstrucción, para aplicarlos solo desde ese punto hasta el final de la instrucción. - 1 2 3 4 5 6
CAT,ERASE,FORMATyMOVEfueron diseñados originalmente para usarse con periféricos, pero en el lanzamiento de ZX Spectrum, no se habían implementado completamente, por lo que su uso generaba un mensaje de error (Invalid Stream). Más tarde, con la ayuda de la ROM de sombra de ZX Interface 1, se usaron para el ZX Microdrive . (La ROM de sombra se paginaba cuando el intérprete BASIC detectaba un error de sintaxis, razón por la cual la mayoría de los comandos del ZX Microdrive usan un"*"). - 1 2 A diferencia de muchos otros dialectos BASIC, Sinclair Basic no incluía el
ELSEoperador en laIF–THEN[–ELSE]. Una solución alternativa sería usar unaIF–THEN–en su lugar, omitiendo las líneas que habrían estado en unacláusula con elGO TOELSEGO TO - ↑ La memoria de pantalla del Spectrum comienza en la dirección 16384 y tiene una longitud de 6912 bytes.
- ↑ En Sinclair BASIC, una cadena dentro de otra cadena debe tener las comillas duplicadas.
Referencias
- ↑ Garfield, Simon (28 de febrero de 2010). "Sir Clive Sinclair: "No uso ordenador en absoluto"" . The Guardian . Consultado el 23 de mayo de 2011 .
Está deseoso de dar crédito a [...], sobre todo a Nine Tiles, la empresa que creó el software operativo Basic.
- ↑ Adamson & Kennedy , pág. 63. sfn error: no target: CITEREFAdamsonKennedy ( ayuda )
- ↑ Adamson y Kennedy 1986 , pág. 64.
- ↑ Adamson y Kennedy 1986 , pág. 70.
- 1 2 "ZX80 – Actualización de ROM BASIC 8K" . www.fruitcake.plus.com .
- 1 2 3 4 "World of Spectrum - Documentación - ZX Spectrum +3 - Capítulo 7" . worldofspectrum.org .
- 1 2 3 4 "World of Spectrum - Documentación - Manual ZX Spectrum 128 Página 6" . worldofspectrum.org .
- ↑ Smith, Tony (23 de abril de 2012). "Feliz 30 cumpleaños, Sinclair ZX Spectrum" . The Register .
- ↑ Adamson y Kennedy 1986 , pág. 88.
- ↑ Dunn, Paul (7 de diciembre de 2022), SpecBAS , consultado el 12 de diciembre de 2022
- ↑ "CSDb" . Base de datos de escenas de Commodore 64. Consultado el 12 de diciembre de 2022 .
- ↑ Vickers 1983 , págs. 7–8.
- ↑ "Imagen de ZX80" .
- ↑ "Desmontaje de la ROM del Spectrum 128 - Spectrum 128 en español" . www.fruitcake.plus.com .
- ^ Sinclair (1985). ZX Spectrum 128 Introducción y Guía de Funcionamiento . Sinclair Research Ltd e Investronica, SA p. 9.
- 1 2 3 4 Vickers 1983 , pág. 59.
- 1 2 Vickers 1983 , pág. 70.
- 1 2 3 Vickers 1983 , pág. 85.
- ↑ Vickers 1983 , págs. 69–70.
- 1 2 3 4 Vickers 1983 , pág. 101.
- ↑ Vickers 1983 , pág. 116.
- ↑ Vickers 1983 , pág. 135.
- 1 2 Vickers 1983 , pág. 93.
- ↑ Vickers 1983 , pág. 113.
- ↑ Vickers 1983 , págs. 110–111.
- ↑ Cambridge Communication 1983 , pág. 15.
- 1 2 Vickers 1983 , pág. 91.
- 1 2 Vickers 1983 , pág. 123.
- 1 2 3 Vickers 1983 , pág. 103.
- ↑ "World of Spectrum - Documentación - Manual de ZX Spectrum - Capítulo 24" . worldofspectrum.org .
- ↑ Vickers 1983 , pág. 168.
- ↑ Vickers 1983 , pág. 19.
- 1 2 3 Vickers 1983 , pág. 151.
- 1 2 Vickers 1983 , pág. 68.
- 1 2 Vickers 1983 , pág. 41.
- 1 2 3 Vickers 1983 , pág. 142.
- 1 2 3 Vickers 1983 , pág. 60.
- ↑ Vickers 1983 , págs. 79–81.
- ↑ Vickers 1983 , págs. 11–123.
- ↑ Cambridge Communication 1983 , pág. 18.
- ↑ Vickers 1983 , pág. 66.
- ↑ Cambridge Communication 1983 , pág. 19.
- ↑ Vickers 1983 , pág. 31.
- 1 2 Vickers 1983 , pág. 32.
- 1 2 Vickers 1983 , pág. 37.
- 1 2 Vickers 1983 , pág. 25.
- 1 2 Vickers 1983 , pág. 159.
- 1 2 Vickers 1983 , pág. 110.
- ↑ Vickers 1983 , pág. 131.
- 1 2 3 4 Vickers 1983 , pág. 16.
- 1 2 Vickers 1983 , pág. 112.
- ↑ Vickers 1983 , pág. 57.
- 1 2 Vickers 1983 , pág. 13.
- ↑ Vickers 1983 , pág. 144.
- ↑ Vickers 1983 , pág. 15.
- 1 2 Vickers 1983 , pág. 67.
- ↑ Vickers 1983 , pág. 147.
- ↑ Cambridge Communication 1983 , pág. 39.
- ↑ Vickers 1983 , págs. 31–32.
- ↑ Cambridge Communication 1983 , pág. 22.
- ↑ Vickers 1983 , pág. 129.
- ↑ Vickers 1983 , pág. 130.
- ↑ Vickers 1983 , pág. 121.
- ↑ Vickers 1983 , pág. 163.
- ↑ Vickers 1983 , pág. 74.
- ↑ Vickers 1983 , pág. 42.
- ↑ Vickers 1983 , pág. 73.
- 1 2 Vickers 1983 , pág. 14.
- ↑ Vickers 1983 , pág. 143.
- ↑ Vickers 1983 , pág. 69.
- ↑ Vickers 1983 , págs. 32, 51.
- ↑ Vickers 1983 , pág. 180.
- ↑ Vickers 1983 .
- ↑ Vickers 1983 , pág. 141.
- ↑ Vis, Peter J. "Manual de usuario de Sinclair ZX80 4K básico para ZX80" . Petervis The Quantum Archive .
- 1 2 "Manual en línea 2048" . CARGA ZX - TIMEX COMPUTER World . Consultado el 25 de junio de 2026 .
- ↑ "Programa de demostración de BASIC 64" . Spectrum Computing . 1985.
- ↑ "Manual en línea 2068" . CARGAR ZX - TIMEX COMPUTER World . Consultado el 25 de junio de 2026 .
- ↑ «Microsete N.º46, Mayo 1987» (PDF) . loadzx.com .
- ↑ "Timex Computer 3256, Timex Portugal" . k1.spdns.de .
- 1 2 3 4 5 6 7 8 "Sinclair BASIC" . World of Spectrum Classic . Consultado el 18 de abril de 2025 .
- ↑ "Beta Basic en Spectrum Computing: juegos, software y hardware para Sinclair ZX Spectrum" . Spectrum Computing . Consultado el 13 de diciembre de 2022 .
- ↑ "YS MegaBasic en Spectrum Computing: juegos, software y hardware para Sinclair ZX Spectrum" . Spectrum Computing . Consultado el 13 de diciembre de 2022 .
- ↑ "Zebra OS64 en Spectrum Computing: juegos, software y hardware para Sinclair ZX Spectrum" . Spectrum Computing . Consultado el 13 de diciembre de 2022 .
- ↑ "Historia de Sinclair BASIC - Wiki de Sinclair" . sinclair.wiki.zxnet.co.uk .
- ↑ "El ensamblaje incompleto de la ROM del Spectrum" . Archivado del original el 1 de septiembre de 2015.
- ↑ "ULAplus" . sites.google.com . Archivado del original el 25 de mayo de 2013. Consultado el 21 de marzo de 2016 .
- ↑ "ZX Interface 2 - SE BASIC (Cartucho ROM de terceros)" . www.fruitcake.plus.com . Archivado del original el 25 de marzo de 2015. Consultado el 23 de marzo de 2016 .
- ↑ "OpenSE BASIC" . SourceForge . 16 de abril de 2013.
- ↑ "OpenSE BASIC en Spectrum Computing: juegos, software y hardware para Sinclair ZX Spectrum" . Spectrum Computing . Consultado el 13 de diciembre de 2022 .
- ↑ "World of Spectrum - HiSoft COLT Compiler" . World of Spectrum .
- ↑ "Compilador HiSoft COLT en Spectrum Computing: juegos, software y hardware para Sinclair ZX Spectrum" . Spectrum Computing . Consultado el 13 de diciembre de 2022 .
- ↑ "World of Spectrum - HiSoft BASIC" . World of Spectrum .
- ↑ "HiSoft BASIC en Spectrum Computing: juegos, software y hardware para Sinclair ZX Spectrum" . Spectrum Computing . Consultado el 13 de diciembre de 2022 .
- ↑ "World of Spectrum - Compilador láser" . World of Spectrum .
- ↑ "Compilador láser en Spectrum Computing: juegos, software y hardware para Sinclair ZX Spectrum" . Spectrum Computing . Consultado el 13 de diciembre de 2022 .
- ↑ "World of Spectrum - Softek 'ES' un compilador BASIC" . World of Spectrum .
- ↑ "Compilador de enteros en Spectrum Computing: juegos, software y hardware para Sinclair ZX Spectrum" . Spectrum Computing . Consultado el 13 de diciembre de 2022 .
- ↑ "World of Spectrum - Compilador de enteros" . World of Spectrum .
- ↑ "World of Spectrum - Softek 'FP' Full Compiler" . World of Spectrum .
- ↑ "Compilador completo Softek 'FP' en Spectrum Computing: juegos, software y hardware para Sinclair ZX Spectrum" . Spectrum Computing . Consultado el 13 de diciembre de 2022 .
- ↑ "World of Spectrum - Compilador ZIP" . World of Spectrum .
- ↑ "Compilador ZIP en Spectrum Computing: juegos, software y hardware para Sinclair ZX Spectrum" . Spectrum Computing . Consultado el 13 de diciembre de 2022 .
- ↑ Berry, Stephen (1984). "QL Keywords" . Archivado del original el 22 de febrero de 2017. Recuperado el 27 de junio de 2023 .
- ↑ "Álbum de recortes de Sam Coupe: Sam BASIC" . www.mono.org . Consultado el 13 de diciembre de 2022 .
- ↑ "Proyecto Sparky eZX BASIC" . rk-internet.com .
- ↑ "Philip Kendall - Básico" . www.shadowmagic.org.uk .
- ↑ "Philip Kendall – CheckBasic" . www.shadowmagic.org.uk .
- ↑ "Binsic no es el código de instrucciones de Sinclair" . 25 de junio de 2012.
- ↑ "ZX Spin y BASin - ULAplus" . sites.google.com .
- ^ "ZXDunny/SpecBAS" . 5 de junio de 2021 – vía GitHub.
- ↑ "ZX-Basic: Compilador de programas Sinclair BASIC compatible con versiones anteriores, pero mejorado" .
- ↑ "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 and the 'sunrise' Technology. Penguin.
- Ardley, Neil (1984). Sinclair ZX Spectrum+ User Guide. Dorling Kindersley in association with Sinclair Research. ISBN 0-86318-080-9.
- Vickers, Steven (1982). Sinclair ZX Spectrum BASIC Programming. Sinclair Research.
- Vickers, Steven (1983). Sinclair ZX Spectrum BASIC Programming (2 ed.). Sinclair Research.
- Cambridge Communication (1983). Sinclair ZX Spectrum Microdrive and Interface 1 manual. Sinclair Research.
External links
- Sinclair ZX Spectrum BASIC Programming: The original 1982 manual by Steven Vickers (referenced above)
- Sinclair ZX81 Basic ProgrammingArchived 2007-04-22 at the Wayback Machine: also by Vickers
- The History of Sinclair BASIC: By Andrew Owen
- Timex Computer World: Basic 64 user manual for Timex Computer 2048
- Sinclair BASIC grammar: A LL(1) grammar specification for parsing Sinclair BASIC 16/48K
- ZX Spectrum
- Sinclair Research
- BASIC interpreters
- Discontinued BASICs
- BASIC programming language family
- ZX80
- ZX81