Sinclair BASIC
Sinclair BASIC | ||
---|---|---|
Información general | ||
Tipo de programa | Lenguaje de programación BASIC | |
Autor | John Grant, Steve Vickers | |
Desarrollador | Nine Tiles Networks, Sinclair Research | |
Lanzamiento inicial | 1980 | |
Licencia | Propietario | |
Estado actual | Descontinuado | |
Información técnica | ||
Programado en | Lenguaje Ensamblador | |
Plataformas admitidas | ZX80, ZX81, ZX Spectrum y compatibles | |
Versiones | ||
Última versión estable | +3BASIC ( 1987) | |
Sinclair BASIC es el nombre que recibe el BASIC implementado en la ROM de los ordenadores Sinclair, Timex Sinclair y Amstrad Sinclair entre otros, desde el ZX80 hasta las diferentes versiones del ZX Spectrum. Estos ordenadores se comercializaron desde 1980 (modelo Sinclair ZX80) hasta 1992[1] (modelo Amstrad Sinclair ZX Spectrum +2B).
Comandos
[editar]En su versión para ZX Spectrum 48k, el lenguaje tenía 86 palabras reservadas, de las cuales 50 eran comandos, 31 funciones y otras palabras clave 5:
- Comandos
BEEP
,BIN
,BORDER
,BRIGHT
,CAT
,CIRCLE
,CLEAR
,CLOSE#
,CLS
,CONTINUE
,COPY
,DATA
,DEF FN
,DIM
,DRAW
,ERASE
,FLASH
,FORMAT
,FOR
,GO SUB
,GO TO
,IF
,INK
,INPUT
,INVERSE
,LET
,LIST
,LLIST
,LOAD
,LPRINT
,MERGE
,MOVE
,NEW
,NEXT
,OPEN#
,OUT
,OVER
,PAPER
,PAUSE
,PLOT
,POKE
,PRINT
,RANDOMIZE
,READ
,REM
,RESTORE
,RETURN
,RUN
,SAVE
,VERIFY
- Funciones
ABS
,ACS
,AND
,ASN
,ATN
,ATTR
,CHR$
,CODE
,COS
,EXP
,FN
,INKEY$
,INT
,IN
,LEN
,LN
,NOT
,OR
,PEEK
,PI
,POINT
,RND
,SCREEN$
,SGN
,SIN
,SQR
,STR$
,TAN
,TO
,USR
,VAL$
,VAL
- Otras palabras reservadas
AT
,LINE
,STEP
,TAB
,THEN
Diferencias con el BASIC estándar
[editar]Sintaxis
[editar]- En general, Sinclair BASIC es un BASIC clásico que utiliza números de línea y no admite programación estructurada.
- Un detalle adicional para los usuarios de ZX Spectrum anterior a la versión 128Kb era que cada comando estaba almacenado en una tecla distinta, de forma que para escribir:
10 FOR A=1 TO 2*PI
Había que teclear
10 F <CAPS-SHIFT>-A <SYMBOL-SHIFT>-<L> 1 <SYMBOL-SHIFT>-<F> 2 <SYMBOL-SHIFT>-< B> <SYMBOL-SHIFT>-<CAPS-SHIFT>-<M>
- Esto tenía como objeto simplificar el análisis sintáctico de programas, ya que permitía almacenar los comandos como dígitos de control (caracteres 165 en adelante). Así, los programas de Sinclair BASIC se parecen a los programas «almacenados en forma binaria» de BASICA.
- Otro detalle adicional es que las funciones no llevan paréntesis.
- A diferencia de ANSI BASIC, pero dentro de lo que es habitual en los BASIC actuales, se aceptan variables con nombres de cualquier longitud.
- El uso de "LET" para la asignación de variables es obligatorio.
- Existe una diferencia importante en el manejo de variables de cadena. Las variables de cadena se tratan, como en C, como matrices:
10 LET A$="ZXSPECTRUM" 20 PRINT A$(TO 3) : REM "ZXS" 30 PRINT A$(4 TO 6): REM "PEC" 40 PRINT A$(7) : REM "T" 50 PRINT A$(8 TO): REM "RUM"
- Sólo se soporta un tipo de variable numérica.
- A diferencia de la mayoría de los BASIC, y de hecho, de la mayoría de lenguajes, acepta espacios en los nombres de las variables numéricas
10 LET solo una cosa=1 20 PRINT solo una cosa
Operadores
[editar]- No existe operador de módulo.
- AND puede actuar de forma equivalente al operador ? de C:
10 PRINT "TENGO " +("HAMBRE " AND COMIDA<0)+("FRIO " AND TEMPERATURA<10)
Ramificación y subrutinas
[editar]- "DO", "WHILE", "WEND", "ELSE" y "END IF" no están soportados.
- Se soporta DEF FN, que ha de estar definido como una operación matemática.
- No se soportan las etiquetas ni ON GOTO, pero la línea a la que salta GOTO puede estar contenida en una variable:
10 LET FIN=40 20 GOTO FIN 30 PRINT "ESTO NO SE IMPRIME" 40 PRINT "FIN DEL PROGRAMA"
Instrucciones de entrada/salida
[editar]- Las principales diferencias con BASIC están en las operaciones de archivo (se soportan LOAD, SAVE y MERGE para acceso a cinta magnética, así como CAT, PRINT, INPUT, OPEN # y CLOSE # para acceso a disco en los modelos dotados de este accesorio).
- PRINT admite AT (reemplazando a LOCATE), TAB y el separador "'", de avance de línea. PRINT # significa "escribir en la parte inferior de la pantalla", no en archivo. Las instrucciones de color PAPER (fondo), INK (primer plano), OVER (sobrescritura), BRIGHT (brillo) y FLASH (parpadeo) también pueden utilizarse como atributos de PRINT.
- Las instrucciones de dibujo son PLOT (dibujar un punto), DRAW (dibujar una línea desde el último punto) y CIRCLE (círculo).
Resumen
[editar]Los siguientes cuadros comparan XBASIC con un Basic original no estructurado, utilizando el programa de ejemplo que aparece en el artículo de la Wikipedia sobre BASIC:
Ejemplo 1: BASIC original no estructurado (Applesoft BASIC)
10 INPUT "¿Cuál es su nombre? "; U$ 20 PRINT "Hola "; U$ 30 INPUT "¿Cuántos asteriscos desea? "; N 35 S$ = "" 40 FOR I = 1 TO N 50 S$ = S$ + "*" 55 NEXT I 60 PRINT S$ 70 INPUT "¿Desea más asteriscos? "; A$ 80 IF LEN(A$) = 0 THEN GOTO 70 90 A$ = LEFT(A$, 1) 100 IF (A$ = "S") OR (A$ = "s") THEN GOTO 30 110 PRINT "Adiós "; 120 FOR I = 1 TO 200 130 PRINT U$; " "; 140 NEXT I 150 PRINT
Ejemplo 2: Sinclair BASIC
5 OVER 1:REM usado en combinación con CHR$ 8 para producir acentos. 10 INPUT "Cua"+CHR$ 8+"'l es su nombre? "; U$ 20 PRINT "Hola "; U$ 30 INPUT "Cua"+CHR$ 8+"'ntos asteriscos desea? "; N 35 LET S$ = "" 40 FOR I = 1 TO N 50 LET S$ = S$ + "*" 55 NEXT I 60 PRINT S$ 70 PRINT "Desea ma"+CHR$ 8+"'s asteriscos? ";: INPUT A$ 80 IF LEN A$ = 0 THEN GOTO 70 90 LET A$ = A$(1) 100 IF (A$ = "S") OR (A$ = "s") THEN GOTO 30 110 PRINT "Adio";CHR$ 8;"'s "; 120 FOR I = 1 TO 200 130 PRINT U$; " "; 140 NEXT I 150 PRINT:OVER 0:
Versiones
[editar]Sinclair ZX80/ZX81
[editar]En la versión para el Sinclair ZX80 y el Sinclair ZX81, el intérprete contaba con algunos comandos que fueron eliminados en versiones posteriores: FAST
, SCROLL
, SLOW
y UNPLOT
.
Microdigital TK
[editar]Microdigital Eletronica lanzó dos ordenadores clónicos de ZX Spectrum, el TK 90X y el TK 95, incorporando al BASIC de Sinclair dos comandos nuevos: UDG
y TRACE
; y reemplazando BEEP
por SOUND
.
Timex Sinclair 2068
[editar]El dialecto empleado en los ordenadores Timex Sinclair 2068, añadía seis comandos al Sinclair BASIC, que no fueron continuados en posteriores modelos: DELETE
, FREE
, ON ERR
, RESET
, SOUND
y STICK
.
Sinclair ZX Spectrum 128k
[editar]El modelo original de ZX Spectrum 128 lanzado en 1985 por Investrónica y Sinclair en España incluía cuatro comandos que no fueron mantenidos en posteriores versiones: EDIT
, RENUM
, DELETE
y WIDTH
.
Todos los modelos de 128k (ZX Spectrum 128, +2, +3, +2A, y +2B) incorporaron dos comandos adicionales:
PLAY
, para trabajar con el chip de sonido AY-3-8910SPECTRUM
, para forzar el modo de compatibilidad con los modelos de 48k
Amstrad Sinclair ZX Spectrum +3/+2A
[editar]El modelo ZX Spectrum 128 +3 fue lanzado en 1987 por Amstrad, y usaba varios comandos de versiones anteriores, modificando la sintaxis, para trabajar con el sistema operativo +3DOS y con los ficheros de la unidad de disco o el disco RAM: SAVE
, LOAD
, MERGE
, ERASE
, CAT
, FORMAT
, MOVE
y COPY
.
Compiladores
[editar]Si bien el Sinclair BASIC es un lenguaje interpretado, a lo largo del tiempo fueron apareciendo distintos programas para compilar el mismo, entre ellos:[2]
- HiSoft COLT Compiler[3]
- HiSoft BASIC Compiler[4]
- Softek Integer Compiler[5]
- Softek 'IS' Integer Compiler[6] (sucesor del anterior)
- Softek 'FP' Full Compiler[7]
- ToBoS-FP
- USCHI Compiler[8]
- Wye Valley BASIC Compiler
- ZIP Compiler[9]
Referencias
[editar]- ↑ «How the Spectrum began a revolution». BBC. 23 de abril de 2007. Consultado el 5 de junio de 2007.
- ↑ «World of Spectrum - Sinclair BASIC». Archivado desde el original el 13 de octubre de 2002. Consultado el 9 de enero de 2018.
- ↑ http://www.worldofspectrum.org/infoseekid.cgi?id=0008254
- ↑ http://www.worldofspectrum.org/infoseekid.cgi?id=0008249
- ↑ http://www.worldofspectrum.org/infoseekid.cgi?id=0008282
- ↑ http://www.worldofspectrum.org/infoseekid.cgi?id=0008696
- ↑ http://www.worldofspectrum.org/infoseekid.cgi?id=0008693
- ↑ Uschi Compiler - World of Spectrum
- ↑ http://www.worldofspectrum.org/infoseekid.cgi?id=0009452
Bibliografía consultada
[editar]- Steven VICKERS: Sinclair ZX Spectrum BASIC programming Guide, Cambridge, Sinclair, 1982
Enlaces externos
[editar]- SpecBAS, intérprete de Sinclair BASIC para varias plataformas.
- Sinbas 1.3 (enlace roto disponible en Internet Archive; véase el historial, la primera versión y la última)., intérprete de Sinclair BASIC para PC, en World of Spectrum.
- Fuse-Basic (enlace roto disponible en Internet Archive; véase el historial, la primera versión y la última)., intérprete de Sinclair BASIC para UNIX, en Sourceforge.
- ZX Spectrum BASIC CGI server, intérprete CGI de Sinclair BASIC.