Super Expander 64 es una extensión en cartucho para el intérprete BASIC integrado del ordenador doméstico Commodore 64. Fue publicado por Commodore Business Machines en 1983. El BASIC integrado del C64, Commodore BASIC , se adaptó del PET y el VIC-20 , y el lenguaje no tiene soporte directo para el hardware de sonido y gráficos del sistema. El acceso al hardware debía realizarse accediendo directamente a las ubicaciones de memoria mapeadas a los registros de hardware específicos mediante instrucciones. Super Expander 64 añade funciones para dibujar gráficos, usar sprites , leer joysticks , reproducir audio y otras características.PEEKPOKE
El código adicional se asigna al área de 8 kilobytes del "cartucho inferior" en $8000-$9FFF, reduciendo los 38.911 bytes para los programas de usuario en dichos 8K.
Gráficos
Después de inicializar la pantalla para gráficos de "alta resolución" (320 × 200 píxeles monocromáticos) o multicolor (160 de ancho × 200 píxeles en cuatro colores) con el GRAPHICcomando, se podían dibujar líneas, círculos, elipses, arcos, cajas y más usando los comandos DRAW, CIRCLE, y . "rellenaría por inundación" un área encerrada por líneas, por ejemplo, el interior de un o . Se usó un comando para "imprimir" caracteres del generador de caracteres ROM en la pantalla de gráficos de mapa de bits . y almacenarían el contenido de un área rectangular de los gráficos de alta resolución en una variable de cadena , y lo "estamparían" de nuevo en la pantalla en ubicaciones arbitrarias. Estos "gráficos en una cadena" también se podían usar para transferir algo dibujado en la pantalla de alta resolución a uno de los ocho patrones de sprites.BOXPAINTCIRCLEBOXCHARSSHAPEGSHAPEGSHAPE
Sprites
Además de una serie de comandos para inicializar, posicionar y mover sprites (o bloques de objetos móviles, como los llamaba Commodore; elementos gráficos compatibles con el hardware que podían moverse libremente en la pantalla independientemente de otros gráficos y texto en la pantalla), Super Expander tenía una herramienta incorporada para editar el patrón de 8 sprites (que se activaba con el SPRDEFcomando), ya sea en modo de alta resolución (24 × 21 píxeles) o multicolor (12 píxeles de ancho × 21 píxeles).
Incluso existía una forma de implementar "interrupciones" en el programa BASIC si dos sprites colisionaban, si un sprite colisionaba con otros gráficos o texto en la pantalla, o si se activaba un lápiz óptico conectado. Un COLINTcomando configuraba la interrupción, apuntando al número de línea BASIC inicial del " controlador de interrupciones ", que debía terminar en una RETURNinstrucción (parte del BASIC estándar, sin expandir) para transferir el control de vuelta a la parte principal del programa que había sido interrumpida.
Sonido
La reproducción de una secuencia de notas musicales se integró al PRINTcomando estándar de BASIC mediante un "carácter de control" especial, similar al control del cursor, los cambios de color y otros caracteres de control. Por ejemplo, reproducía una escala ascendente. Comandos como y se utilizaban para establecer el tempo de reproducción y el timbre de la secuencia de notas.PRINTCHR$(6);"CDEFGAB"TEMPOTUNE
Una peculiaridad de esta función es que al escribir el carácter de control especial (pulsando CTRL+F ) junto con una comilla, y luego borrar la comilla, la máquina "reproducía" lo que se hubiera escrito al editar el programa; al pulsar la tecla G, la máquina reproducía un "¡Pling!" con el tono de una nota G...
E/S de hardware
Funciones como RJOYy leían el estado de un joystick, lápiz óptico o palancaRPEN analógica conectados. En combinación con los comandos relacionados con el movimiento de sprites, bastaba con una sola línea de código BASIC para hacer que un sprite se moviera en la dirección indicada por un joystick conectado.RPOT
Misceláneas
Existía un KEYcomando que configuraba las cuatro teclas de función del teclado del 64 para "introducir" una cadena arbitraria. Por defecto, estas teclas estaban configuradas para escribir comandos como RUN, LIST, SPRDEF, GRAPHICSy otros, pero el usuario podía cambiar esto usando el KEYcomando, ya sea en modo directo o bajo control de programa.
Problemas técnicos
Todas las versiones de BASIC en las máquinas de 8 bits de Commodore utilizaban un esquema para reemplazar las palabras clave de BASIC con código de un solo byte; por ejemplo, la palabra " PRINT" se sustituía por un valor de un solo byte, o token , en lugar de los cinco códigos ASCII correspondientes a las cinco letras de la palabra. Super Expander añadió más comandos de los que este sistema podía admitir, por lo que se implementó un sistema de tokens de dos bytes para los nuevos comandos.
Debido a una peculiaridad en el intérprete de BASIC (el manejo de la parte "THEN" de una construcción IF/THEN no saltaba a través de un vector en RAM, sino que tomaba un JUMP directo a la rutina de decodificación de comandos BASIC estándar, sin expandir), las sentencias IF/THEN necesitaban tener dos puntos adicionales (:) insertados justo después de la palabra clave THEN, si el comando siguiente era una de las palabras clave BASIC no estándar de Super Expander. Por ejemplo, produciría un mensaje —había que escribirlo como— observe los dos puntos entre THEN y el comando DRAW agregado por Super Expander.IF(condition)THENDRAW...?SYNTAXERRORIF(condition)THEN:DRAW...
El manual está disponible en línea como texto electrónico . [ 1 ]
Referencias
- ↑ "Manual de usuario del cartucho SUPER EXPANDER 64" . Archivado del original el 29 de septiembre de 2007.
- Software Commodore
- Commodore 64
- Extensiones BÁSICAS
- Software para Commodore 64