Simons' BASIC [ 1 ] es una extensión de BASIC 2.0 para el ordenador doméstico Commodore 64. Escrito por el programador británico David Simons en 1983, que tenía 16 años en ese momento, fue distribuido por Commodore como un cartucho .
Se le conoce popularmente, aunque de forma incorrecta, como " Simon's BASIC ", debido a la confusión entre el nombre "Simon" y el apellido "Simons".


Características
El BASIC de Simons añadió una serie de características al Commodore BASIC 2.0: [ 2 ]
- 114 palabras clave adicionales
- comandos para facilitar la codificación de sprites
- comandos para facilitar la codificación de gráficos multicolores y de alta resolución
- comandos para facilitar la codificación del sonido
- comandos para ayudar en la programación estructurada
- Palabras clave para ayudar a escribir y editar programas BASIC, similares a las del cartucho VIC-20 Programmer's Aid.
Los programas escritos en BASIC de Simons podían emplear números hexadecimales en asignaciones y cálculos incluyendo un $prefijo, o números binarios utilizando un %prefijo.
Debido a que una parte de los datos del cartucho se asigna a la memoria en las direcciones $8000–$9FFF , que se superponen con parte de la RAM BASIC estándar de C64 , la cantidad de memoria disponible para los programas BASIC era8 KB menos que una configuración estándar de C64.
Simons escribió una extensión que Commodore lanzó en disquete y cinta bajo el nombre de Simons' Basic Extension. Este software también se conoce como Simons' Basic 2. No se pudo lanzar en cartucho porque era necesario tener presente el cartucho original de Simons' Basic para poder usar la extensión. Simons' Basic Extension añade 91 comandos más, incluido el muy codiciado comando RENUMBER , que renumera los destinos de las instrucciones GOTO y GOSUB . [ 3 ]
Las 114 palabras clave
Palabras clave para el manejo de sprites (MOB)
- MOB SET– habilita un sprite y define sus atributos.
- MMOB– posiciona un sprite en la pantalla
- RLOCMOB– hace que un sprite se mueva suavemente de una ubicación a otra.
- CMOB– Configura los dos colores globales para los sprites multicolores.
- MOB OFF– desactiva un sprite
- DETECT– Inicializa la detección de colisiones de sprites
- CHECK– comprueba si hay una colisión de sprites
Palabras clave para el manejo de gráficos de alta resolución
- HIRES– Inicializa un modo gráfico de alta resolución
- MULTI– Inicializa un modo gráfico multicolor
- NRM– regresa a la visualización de texto
- LOW COL– cambia los colores de trazado
- HI COL– Vuelve a los colores de trazado originales
- PLOT– dibuja un píxel
- LINE– traza una línea
- CIRCLE– dibuja un círculo
- ARC– dibuja un arco
- ANGL– dibuja el radio de un círculo
- PAINT– realiza un llenado por inundación
- REC– dibuja un rectángulo hueco
- BLOCK– dibuja un rectángulo sólido
- DRAW– dibuja un conjunto de líneas definido por el usuario
- ROT– establece factores de escala paraDRAW
- CHAR– Dibuja un carácter de texto en una pantalla de alta resolución
- TEXT– Muestra una cadena de texto en una pantalla de alta resolución
- TEST– determina si un píxel se traza o está vacío
Otras palabras clave para el manejo de gráficos
- COLOUR– establece los colores de fondo y del borde; se utiliza la ortografía británica.
- CSET– selecciona un conjunto de caracteres
- MEM– copia la ROM de caracteres a la RAM
- BCKGNDS– configura el modo de color de fondo extendido
- FLASH– configura un color de pantalla para que parpadee
- OFF– anula una FLASHdirectiva anterior
- BFLASH– provoca que el borde de la pantalla parpadee
- FCHR– Rellena un área de la pantalla de texto con un código de caracteres determinado.
- FCOL– Cambia los colores de los caracteres para un área seleccionada de la pantalla.
- FILL– una combinación de FCHRyFCOL
- MOVE– copia una sección de la pantalla
- INV– muestra un área de la pantalla en sentido inverso
- LEFT– desplaza la pantalla hacia la izquierda
- RIGHT– desplaza la pantalla hacia la derecha
- UP– desplaza la pantalla hacia arriba
- DOWN– desplaza la pantalla hacia abajo
- GRAPHICS– variable reservada que siempre es igual a $D000 (la dirección base del chip VIC-II )
- SCRSV– guarda una pantalla de texto en cinta o disco.
- SCRLD– Carga una pantalla de texto desde cinta o disco.
Palabras clave para el manejo del sonido
- MUSIC– reproduce una serie de notas en función del contenido de una variable de cadena.
- PLAY– determina si el programa continúa ejecutándose duranteMUSIC
- VOL– especifica el volumen principal del sonido
- WAVE– especifica un tipo de voz
- ENVELOPE– establece los parámetros ADSR para una voz SID
- SOUND– variable reservada que siempre es igual a $D400 (la dirección base del chip SID)
Palabras clave para el manejo de la entrada de teclado
- FETCH– toma la entrada del usuario con las restricciones definidas por el comando
- INKEY– comprueba si se ha pulsado una tecla de función
- ON KEY– comprueba si se ha pulsado una tecla determinada y, si es así, realiza una bifurcación.
- DISABLE– desactiva la ON KEYdirectiva anterior
- RESUME– Reactiva la ON KEYdirectiva anterior
Palabras clave para el manejo de periféricos de entrada
- JOY– lee un joystick
- POT– lee una paleta
- PENX– lee la posición horizontal del lápiz óptico
- PENY– lee la posición vertical del lápiz óptico
Palabras clave para la definición de sprites/personajes personalizados
- @– describe una línea en un gráfico de sprite o personaje personalizado
- DESIGN– utiliza @líneas adyacentes para definir un sprite o un personaje personalizado.
Palabras clave de detección de errores
- ON ERROR– establece una rutina para detectar condiciones de error
- OUT– finaliza una rutina de manejo de errores
- NO ERROR– Cancela ON ERRORy restablece el manejo normal de errores de BASIC.
Palabras clave de manejo de discos
- DIR– Muestra el directorio del disco sin destruir el programa BASIC en memoria (solo en la unidad n.° 8).
- DISK– Envía una cadena de caracteres al canal de comandos de la unidad de disco (solo para la unidad n.° 8).
Palabras clave para el manejo de la impresora
- HRDCPY– Envía la pantalla de texto a la impresora
- COPY– Envía la pantalla de alta resolución a la impresora.
Palabras clave para la manipulación de cadenas
- INSERT– inserta una cadena en medio de otra (Nota: No hay signo de dólar después de INSERT, a diferencia de otros operadores de cadena como STR$, LEFT$, RIGHT$, etc.)
- INST– similar a INSERT, pero sobrescribe en lugar de insertar. (Nota: Al igual que con INSERT, no hay signo de dólar después de INST.)
- PLACE– busca una cadena en medio de otra
- DUP– Duplica una cadena de caracteres un número determinado de veces. (Nota: Al igual que con INSERT, no hay signo de dólar después de DUP.)
Palabras clave de formato de texto
- PRINT AT– Imprime una cadena en una ubicación de pantalla determinada.
- CENTRE– centra una cadena de caracteres en la pantalla; se utiliza la ortografía británica.
- USE– Formatea datos numéricos en cadenas de texto basándose en una plantilla, al igual que PRINT USINGen otras versiones avanzadas de BASIC en otros ordenadores, por ejemplo, el Commodore 128 .
- LIN– devuelve la posición vertical del cursor
Palabras clave de matemáticas
Nota: Estas operaciones están restringidas a valores que caben en un entero sin signo de 16 bits, en lugar del rango completo de punto flotante utilizado por las operaciones y funciones aritméticas integradas de BASIC.
- MOD– realiza una operación de división y devuelve el resto.
- DIV– Realiza una operación de división y devuelve el cociente entero.
- FRAC– aísla la parte fraccionaria de un número
- EXOR– realiza una operación lógica OR exclusiva
Palabras clave de ayuda para programadores
- AUTO– genera automáticamente números de línea a medida que se introduce un programa BASIC.
- RENUMBER– Renumera un programa BASIC (pero no corrige las instrucciones GOTO/ GOSUB)
- OLD– recupera un programa eliminado accidentalmente por el NEWcomando
- KEY– Asigna una cadena como macro a una tecla de función.
- DISPLAY– muestra todas las macros de teclas de función
- MERGE– Combina un programa BASIC desde cinta o disco con el programa que se encuentra actualmente en memoria.
- PAGE– muestra un listado de programas BASIC en formato de página.
- OPTION– resalta las palabras clave BASIC de Simons cuando se utiliza el LISTcomando
- DELAY– varía la velocidad a la que el LISTcomando desplaza la pantalla
- FIND– busca una cadena en el programa
- TRACE– muestra los números de línea mientras se ejecuta un programa
- RETRACE– muestra los resultados de un rastreo
- DUMP– muestra todos los valores de las variables excepto los de las matrices.
- COLD– Reinicia el C64
Palabras clave relacionadas con la seguridad
- DISAPA– marca una línea de programa BASIC para ocultar
- SECURE– oculta todas las líneas marcadas con DISAPApara que no puedan ser vistas conLIST
Palabras clave de programación estructurada
- ELSE– permite una rama alternativa para condicionales IF/THEN
- REPEAT– inicio de una estructura de bucle REPEAT/UNTIL
- UNTIL– define la condición de bucle para una estructura de bucle REPEAT/ UNTILy marca su final.
- RCOMP– restablece la condición IF/ THEN/ utilizada más recientementeELSE
- LOOP– define el inicio de un bucle que se ejecutará hasta que EXIT IFse cumpla una condición.
- EXIT IF– la condición es verdadera, por lo que sale de la estructura actual LOOP/END LOOP
- END LOOP– define el final de un bucle que se ejecutará hasta que EXIT IFse cumpla una condición.
- PROC– define el inicio de una subrutina con nombre
- END PROC– define el final de una subrutina con nombre
- CALL– Saltar a una subrutina con nombre definida con PROC/ END PROCy permanecer allí.
- EXEC– llama a una subrutina con nombre definida con PROC/ END PROC, luego devuelve
- LOCAL– redefine las variables para su uso en estructuras
- GLOBAL– revierte los efectos de un LOCALcomando anterior
Palabras clave diversas
- CGOTO– equivalente a GOTO, pero acepta expresiones calculadas
- RESET– mueve el DATApuntero a un número de línea determinado
- PAUSE– pausa la ejecución del programa durante un número determinado de segundos.
Otro
- $y %también se consideran palabras clave, para un total de 114.
Trivialidades
La banda Barcelona tituló su álbum debut de 1999 Simon Basic en homenaje. El álbum incluye la canción "C-64".
Recepción
Creative Computing afirmó que el BASIC de Simons "casi convierte al 64 en un ordenador nuevo. (Probablemente el que debería haber sido desde el principio)". Elogió el "excelente manual" como contraste con la documentación generalmente deficiente de Commodore, y predijo que se convertiría en "el lenguaje estándar para programar la máquina... Más le vale a Commodore planear fabricar muchas copias porque se agotarán rápidamente". [ 4 ] Ahoy! escribió: "Si usted programa en BASIC y por casualidad ve este producto en el estante de un distribuidor, no haga preguntas, no lo dude, ¡simplemente cómprelo!". La revista elogió la potencia del BASIC de Simons y su "excelente manual", y afirmó que "su precio lo convierte en una de las mejores ofertas disponibles para el Commodore 64". [ 5 ] La reseña de RUN fue menos favorable, afirmando que sus "muchos comandos potentes y útiles... fueron, desafortunadamente, implementados muy mal para un paquete comercial. Hay muy poca verificación de parámetros de comandos, y muchas cosas se han pasado por alto o ignorado". [ 6 ]
El cartucho original de SIMONS' BASIC (sin la extensión) no tiene capacidad para leer el canal de errores en las unidades de disco Commodore 1541 y Commodore 1571 , ni puede realizar una lista de archivos en el directorio ni emitir un comando DISK en ninguna unidad de disco que no sea la Unidad n.° 8 cuando hay más de una unidad de disco conectada a la Commodore 64. Y si bien la mayoría de las palabras clave "estándar" de BASIC 2.0 se pueden abreviar escribiendo la primera o la primera y la segunda letra y luego manteniendo presionada la tecla SHIFT mientras se escribe la segunda (o tercera) letra, todas las palabras clave de SIMONS' BASIC deben escribirse completas exactamente como se muestra en el manual del usuario adjunto. Esto incluye los comandos COLOUR (que selecciona el color de fondo y el color del borde exterior) y CENTRE (que imprime mensajes de texto que están "centrados" en la pantalla), ambos escritos como en inglés británico y incorporados de esa manera en SIMONS' BASIC.
Referencias
- ↑ Dillon, Roberto (3 de diciembre de 2014). Listo: Una retrospectiva del Commodore 64. Springer. pág. 25. ISBN 978-981-287-341-5.
- ↑ Manual básico de usuario de Simons (publicado por Commodore)
- ↑ Manual de usuario de Simons' Basic 2 (publicado por Commodore)
- ↑ Onosko, Tim (noviembre de 1983). "Simons' Basic" . Creative Computing . pág. 60. Consultado el 27 de junio de 2014 .
- ↑ Kevelson, Morton A. (febrero de 1984). "Simons' BASIC" . Ahoy! . págs. 57–58 . Consultado el 27 de junio de 2014 .
- ↑ Baker, Robert W. (abril de 1985). "Una reseña de *Simons' Basic*" . RUN . págs. 94–95 . Recuperado el 27 de junio de 2014 .
Enlaces externos
- Guía básica de usuario de Internet Archive de David Simons, Commodore Computers, 1983. Disponible para descargar en formato PDF.
- Guía básica de referencia de italiano de Simons, por David Simons, editor jefe, 1983.
- Tema del foro Lemon64 con información informal del propio David Simons.
- Software de 1983
- Software para Commodore 64
- Extensiones BÁSICAS
- Software Commodore