YS MEGABASIC El YS MegaBasic no solo amplía el número de comandos del ZX Spectrum añadiéndole nuevas sentencias sino que lo convierte en una máquina completamente nueva: el MegaSpectrum. sintaxis: comando[_] Comandos: Auto_, Backup, Branch_, Broff, Bron, Call_, Change_, Clw_, Current_ Defg_, Delete_, Doke_, Down_, Edit_, @, Endproc_, Examine, Fade_, Font_ Fx_, Get_, Invert, Key_, Mode_, Mon, Mtask_, Pan_, Panw_, Pclear, Play_ Pop_, Printer_, Push_, Put_, Repeat, Restart_, Restart_Off, Scroll_ Scrollw_, Soff, Son, Speed_, Sprint_, Sproff_, Spron_, Sput_, Srep_ Stipple_, Swap_, Tron, Troff, Until_, Vdu_, Window_ Comandos de edición: Auto sintaxis: AUTO_a,b Este comando hace que el MegaSpectrum produzca un número de línea cada vez que el usuario pulse 'ENTER' en modo inmediato. Para que la computadora deje de producir números de línea, pulse la tecla igual ('=') en modo 'Extended' y luego pulsar Enter. Delete sintaxis: DELETE_a,b Usa este comando para eliminar bloques de líneas de programa, donde 'a' es el primer número del bloque de líneas y 'b' el último. Si el valor de 'a' es mayor que el de 'b' entonces saldrá el mensaje de error "B Integer out of range" en la pantalla. Edit sintaxis: EDIT_n Use esta sentencia para ver la línea 'n' en la línea de 'INPUT' y activar el editor de líneas. Fx sintaxis: FX_n,m donde: n = un valor de 0 a 3 m = la ventana a usar Controla las operaciones en la pantalla del sistema YS MegaBasic. Ejemplos: FX 0,n - Selecciona la ventana para "inputs" y mensajes de error. FX 1,n - Selecciona la ventana usada para listados automaticos. FX 2,n - Selecciona la ventana usada para los "outputs". FX 3,n - Selecciona la ventana usada por el panel frontal. Para tener una ventana estilo QL, tipear lo siguiente: 10 BORDER 0 20 CURRENT_0: WINDOW_0,0,15,32 30 PAPER 2: INK 7: CLW_0 40 CURRENT_1: WINDOW_0,32,22,32 50 PAPER 1: INK 7: CLW_0 60 CURRENT_2: WINDOW_15,0,7,32 70 PAPER 7: INK 1: CLW_0 Mon sintaxis: MON Este comando llama al monitor de panel frontal,el cual permite al usuario alterar y examinar la memoria y los registros del Z80. Para volver al YS MegaBasic, presione la tecla 'SPACE'. Tron / Troff TRON (Trace On) - Use 'TRON' para activar la función de rastreo. Tras ejecutar este comando, el número de linea en curso es mostrado en el rincón izquierdo de la pantalla. TROFF (Trace Off) - Desactiva la función de rastreo. Restart sintaxis: RESTART_n donde: n = número de línea al que saltará en caso de errores Este es el equivalente en YS MegaBasic del mucho más común 'ON ERROR GOTO' que uno encuentra en otros Basics. 'RESTART_' no atrapará los errores de la Interface 1 ni los nuevos errores del YS MegaBasic. RESTART_OFF - desactiva la captura de errores del MegaSpectrum. Para conocer los datos de los errores capturados hay que PEEKear en: 59873/4 - la línea donde ocurrió el error. 59875 - la sentencia dentro de la línea que dio el error. 59862 - el código del error. Speed sintaxis: SPEED_n Este comando controla la velocidad de ejecución del programa cuando la orden Trace está activa (ver 'TRON'). Bucles y procedimientos: @ (DEFine PROCedure) sintaxis : @nombre[_var,var$,...] Esta debe ser la primera sentencia para indicar el inicio del procedimiento. Programa ejemplo: 9000 @DISPLAY_A,A$ 9010 PAPER A: INK 9 9020 MODE_4: STIPPLE_6 9030 PRINT A$ 9040 ENDPROC_DISPLAY Para ejecutar este procedimiento basta llamarlo por su nombre desde cualquier parte del listado: DISPLAY_2,"MEGABASIC" No hay variables locales, sólo los parametros elegidos para el procedimiento el cual no puede actuar como comando directo, debe ser siempre como sentencia dentro de un listado. Endproc sintaxis: ENDPROC_n Indica la última línea de un procedimiento. El nombre 'n' del procedimiento debe ir al final del comando. Branch sintaxis: BRANCH_n Esta instrucción hace que una subrutina sea llamada al final de cada línea de programa. La subrutina debe terminar en 'ENDPROC_'. Si n=0, Mega Spectrum actuará normalmente ante cada final de línea. Branch permite chequear las líneas una a una para su óptima depuración. Pclear sintaxis: PCLEAR Limpia el stack de PROCedimientos / REPEAT-UNTIL y debe ejecutarse al inicio de cada programa que use procedimientos o bucles 'REPEAT-UNTIL'. Pop sintaxis: POP[_n] Esta instrucción remueve un valor ('n') del stack PROCedimientos / REPEAT-UNTIL. Si el comando es ejecutado con el stack vacío, aparecerá el mensaje de error "PROC stack underflow". Push sintaxis: PUSH_n,m donde: n = el número de sentencia m = el número de línea Añade un valor al stack de PROCedimientos / REPEAT-UNTIL. Si el stack está lleno, entonces dará el mensaje de error "PROC stack overflow". Repeat sintaxis: REPEAT REPEAT indica el comienzo de un bucle REPEAT-UNTIL. Si el stack de PROCedimientos y REPEAT-UNTIL está lleno, aparecerá un pantalla el error "PROC stack overflow". Until sintaxis: UNTIL_expresión Sentencia usada para señalar el final de un bucle 'REPEAT-UNTIL'. El bucle se repetirá hasta cumplir con la expresión. Si esta diera cero, entonces será un bucle sin fin. Programa ejemplo: 10 REPEAT 20 PRINT "@"; 30 UNTIL_INKEY$=" " Comandos diversos: Backup sintaxis: BACKUP (Advertencia: esta sentencia destruye cualquier programa en memoria.) 'BACKUP' es usado para copiar archivos de cinta. Cuando se ejecuta la orden 'BACKUP' aparece el mensaje "Start tape" en pantalla y tan pronto como el MegaSpectrum detecta una señal de la toma de 'EAR', dará el mensaje de "OK searching" y cargará el siguiente archivo de la cinta casete (no importa el tipo de archivo). Una vez ha cargado el archivo, saldrá el mensaje "Start tape, then press any key "; cuando esté listo para salvar el archivo en la cinta, pulse una tecla y el archivo será vuelto a salvar. Terminado esto, MegaSpectrum prguntará si uno quiere otra copia - pulse la tecla 'Y' si quiere continuar ('N' si no), y MegaSpectrum empezará a buscar el siguiente archivo en la cinta. Uno puede interrumpir el proceso mienttras MegaSpectrum está salvando o cargando normalmente, pero si el archivo fuera mayor de 20K, el sistema colapsará. Siempre ejecute 'NEW' después de haber ejecutado 'BACKUP'. Broff (Break off) sintaxis: BROFF Entre el comando 'BROFF' y verá que la tecla BREAK ha sido deshabilitada. Note que la tecla Break aun funcionará durante algunas operaciones de entrada o de salida. Bron (Break on) sintaxis: BRON Use esta sentencia para re-habilitar la tecla Break después de haber usado el comando 'BROFF'. Call sintaxis: CALL_a[,n,n...] Esta sentencia llama a una rutina en código máquina en la dirección 'a'. La dirección de memoria puede ser seguida por una serie de expresiones numéricas. Cada una de esas expresiones es evaluada y el resultado es puesto en el stack dela máquina, la última expresión será el valor en lo alto del stack. La rutina de C.M. remueve todos los valores del stack y debe terminar con la instrucción 'RET' del Z80. Doke (Double poke) sintaxis: DOKE_a,b Este comando equivale a un POKE de dos bytes igual a hacer: POKE a,b-256*INT(b/256) POKE a+1,INT(b/256) Examine sintaxis: EXAMINE Este comando da el tipo, nombre, longitud y comienzo de cualquier archivo en la cinta casete. Para escapar, usar la tecla BREAK en el modo usual. Key sintaxis: KEY_n,a$ Este comando define teclas definibles por usuario, donde 'n' es el número de la tecla a definir y 'a$' es la cadena de caracteres asignadas a dicha tecla. Mtask (Multi Task) sintaxis: MTASK_n donde: n = un número de línea (0 para desactivar) Este comando permite que un programa de YS MegaBasic sea ejecutado desde dos lugares diferentes a la vez, ofreciendo así una forma simple de multi-tarea. Estando MTASK activo, cualquier comando que use la Interfase 1 debe ir seguido de "::". Play sintaxis: PLAY_n,l,s,d,f donde: n = 0 (notas puras) / 1 (ruidos) l = la longitud de cada paso s = la frecuencia de comienzo d = el número de pasos f = el cambio de frecuencia tras cada paso Comando para producir efectos de sonido. Quienes sólo quieran producir tonadas encontrarán más apropiado el comando BEEP convencional. Printer sintaxis: PRINTER_n Permite enviar los datos a un periférico aparte de la pantallacomo por ejemplo una impresora. Si n=0 entonces los datos son enviados a la pantalla, sino, el comando llamará a una rutina en C.M. cuya dirección está almacenada en dos bytes a partir de 59934. Esta rutina debe ser suplida por el usuario mismo. Soff / Son SOFF (sound off) - desactiva el ISG (generador de sonido mediante interrupciones). SON (sound on) - activa el del ISG. Sound sintaxis: SOUND_n,a,b,c,d donde: n = borra el buffer de sonido antes de reemplazarlo con algo nuevo (0) o añadir sonido al final del buffer (1) a = toca sonido puro (0) o ruido (1) b = el valor a añadir a la frecuencia después de cada paso c = el número de pasos en secuencia d = el número de veces que la secuencia se repetirá Este comando aunque complejo permite controlar el buffer de sonido. Programa ejemplo: 10 SOUND_0,0,1,20,255 20 SREP_1 30 SON 40 MODE_4: STIPPLE_6: FONT_2 50 VDU_(128+RND*15) 60 PAPER RND*7: INK 9 70 GO TO 50 Srep (Sound Repeat) sintaxis: SREP_n Esta sentencia indica si el ISG debe repetir las tonadas en el buffer de sonido. Comandos gráficos: Change sintaxis: CHANGE_a,b Este comando es usado para manipular los atributos, donde 'a' representa la máscara y 'b' los datos. La máscara es negativa con cada byte de atributo; el dato es entonces 'OR' con cada byte de atributo. Ejemplos: CHANGE_1 - la máscara está en negativo: los unos se vuelven ceros y viceversa. CHANGE_2 - cada byte de atributos es 'AND' con la máscara negativa. CHANGE_3 - cada byte de atributo es 'OR' con el byte del dato. Defg (Define udg's) sintaxis: DEFG_a$,n... El comando DEFG_ permite definir gráficos definibles por el usuario, donde 'a$' designa el caracter gráfico a definir, seguido de 8 números (n1,n2,etc.) que representan el patrón binario requerido. Down sintaxis: DOWN_y,x,a$ donde: y = número de línea x = número de columna a$ = la cadena a imprimir Esta instrucción imprime una cadena que va hacia abajo en la ventana en curso. Si una cadena pasase más alla del fondo de la ventana entonces se mueve hacia arriba. Fade sintaxis: FADE_n Decrementa cada byte en los atributos a menos que ya sean iguales a 'n'. El proceso es repetido hasta que todos los bytes han alcanzado dicho valor. FADE puede hacer efectos muy espectaculares como lo muestra este corto programa: 10 FOR A=0 TO 703 20 POKE 22528+A, PEEK A 30 NEXT A 40 FADE_0 Font sintaxis: FONT_n donde: n = un valor del 0 al 2 El Mega Spectrum tiene tres juegos de caracteres a escoger mediante esta instrucción. Esto afecta a toda la pantalla y no solo a la ventana activa, pero no tiene efecto en Mode 1 (el cual usa su propio juego de caracteres especial). Ejemplos: FONT_0 - los caracteres estandar del Spectrum FONT_1 - caracteres similares al del BBC Micro y Acorn Electron FONT_2 - caracteres similares al del Amstrad CPC 464 Los fonts del Spectrum permanecen en laROM, pero los fonts tipo BBc y Amstrad están almacenados en las direcciones 48000 y 45000 respectivamente. El comienzo de un caracter a definir es obtenido con: S+8*(CODE a$-32) donde a$ = elcaracter y S = la dirección del set de caracteres. Get sintaxis: GET_0,a,y,x,d,w donde: el primer parámetro siempre debe ser 0 a = la dirección donde se almacenará la imagen a salvar y,x = numero de líneas y columnas a salvar desde el rincón izquierdo d = el largo del área a salvar medido en filas de 8 píxeles w = el ancho del área a salvar también en píxeles Use este comando para copiar un área de la pantalla en la memoria. Debe usarse CLEAR para reservar el área de memoria donde se salvará la imagen con GET. Para saber cuántos bytes ocupa un área a salvar, usar la ecuación: '9*w*d'. Invert sintaxis: INVERT Esta sentencia invierte toda la pantalla, cambiando INK a PAPER y PAPER a INK. Mode sintaxis: MODE_[n,]a Se usa para selecccionar el tamaño 'a' de los caracteres que aparecerán en la pantalla. Un número opcional 'n' puede ser usado para seleccionar la ventana requerida (ver 'CLW_'). Ejemplos: MODE_n,1 - activa el juego de caracteres de 64 columnas MODE_n,2 - vuelve al juego de caracteres estandar del Spectrum MODE_n,3 - los caracteres son ahora de doble altura MODE_n,4 - pone los caracteres de doble alto y doble ancho, en este modo se puede hacer uso de los patrones especiales 'STIPPLES'. Put sintaxis: PUT_f,a,y,x,d,w donde: f = un valor del 0 al 6 indicando el modo de poner la imagen en pantalla 0 - se sobre imprime lo salvado reemplazando lo que hay en pantalla 1 - se hace un OR pantalla / memoria 2 - XOR pantalla / memoria 4 - como '0', pero con los atributos en curso y no los salvados 5 - como '1' pero usando los atributos en curso 6 - como '2', también usando los atributos en curso a,y,x,d,w = los mismos parámetros que GET_ Imprime un área de memoria en la pantalla; es lo opuesto al comando 'GET_'. Sprint sintaxis: SPRINT_x,y,a,b,c$ donde: c$ = el caracter o cadena de texto a imprimir x,y = coordenadas en pixeles del primer caracter a imprimir a,b = el número de veces que c$ será amplificado en las direcciones 'x,y' Imprime cadenas en la pantalla usando caracteres cuyo tamaño puede ser predefinido al gusto por el usuario. Sproff (Sprite off) sintaxis: SPROFF_n Esta sentencia desactiva la operación del sprite 'n'. Spron (Sprite On) sintaxis: SPRON_n,m donde: n = el número de sprite (un valor de 0 a 7) m = 0 - 2 (1 para OR, 2 para XOR) Activa la operación con sprites. Sput sintaxis: SPUT_a,x,y,b,c,w,d donde: a = la dirección donde está almacenada la imagen a extraer x,y = coordenadas en píxeles del rincón izquierdo como punto base b,c = el número de veces que laimagen será amplificada en las direcciones 'x,y' w,d = el ancho y largo del área a salvar medido en filas de 8 píxeles Como 'PUT_', esta sentencia muestra en pantalla un area de memoria. Pero en este caso, el resultado es ampliado mediante los factores 'b' y 'c' en las direcciones x e y respectivamente. Stipple sintaxis: STIPPLE_n donde: n = un valor de 0 a 15 (elige patrón desde el blanco al negro sólido) Este comando define el patrón especializado de diseño para ser usado por el MODE_4 de impresión. Swap sintaxis: SWAP_n,m Esta sentencia manipula los atributos; el atributo 'm' es intercambiado por otro 'n'. Vdu (Video Design Unit) sintaxis: VDU_a[,a...] Equivalente directo del comando 'PRINT CHR$ a'; 'a' se repetirá para que uno pueda imprimir más de un caracter a la vez. Ejemplos: VDU_2 - imprimirá los caracteres en el tamaño estandar VDU_65,66 - mostrará en pantalla: "AB" Manejo de Ventanas: Chr$ sintaxis: CHR$ Usado para manejar los nuevos códigos de control del Mega Spectrum. CHR$1-4 : Selecciona el modo de la ventana activa. CHR$7 : Invierte el caracter en la posición del cursor. CHR$24-31 : Selecciona la ventana usada para "output"; CHR$24 selecciona la ventana cero y CHR$31 selecciona la ventana siete. Clw (Clear windows) sintaxis: CLW_[n,]h donde: n = número de ventana a limpiar h = un valor de 0 a 3 indicando el tipo de borrado de pantalla Use esta instrucción para aclarar ventanas. Si dos números son suplidos, entonces el primero ('n') es la ventana que será limpiada. Si sólo un número es dado ('h'), entonces será usada la ventana en curso por defecto. Ejemplos: CLW_n,0 - borra la ventana usando los colores permanentes activos. CLW_n,1 - como 0, pero con la tinta en vez de papel. CLW_n,2 - Invierte el contenido de la ventana. CLW_n,3 - borra solo los atributos. Esta opción permite al usuario cambiar los colores de una ventana, sin destruir su contenido. Current sintaxis: CURRENT_n donde: n = un valor de 0 a 9 Hace que 'n' sea la ventana activa por defecto. Todas las sentencias PRINT usarán ahora esta ventana hasta que otra sea seleccionada. Pan sintaxis: PAN_n,m donde: n = 0 / 1 (elige tinta o papel para el margen de la ventana) m = -m / +m (moverá todo a la izquierda si es negativo, a la derecha si es positivo) Permite al usuario mover la ventana activa pixel a pixel a la derecha o a la izquierda; este comando solo mueve las imágenes en pantalla, pero no los atributos. Todo desaparece al llegar al margen de la ventana. Panw sintaxis: PANW_m donde: m = -m / +m Similar a 'PAN_' pero esta vez, al llegar al margen extremo, el contenido de la ventana aparecerá del otro lado. Scroll sintaxis: SCROLL_n,m La misma sintaxis que PAN_. Mueve la ventana activa hacia arriba o abajo, pixel por pixel. Scrollw sintaxis: SCROLLW_m Como 'SCROLL_' pero el contenido de la ventana reaparecerá al otro lado del margen. Window sintaxis: WINDOW_y,x,d,w donde: y = un valor de 0 a 23 indicando la esquina izquierda superior a posicionar x = un valor del 0 al 63 d = el tamaño de la ventana en líneas de caracteres w = el ancho de la ventana en columnas Este comando define el tamaño y posicion de la ventana activa. Es posible trabajar con hasta 10 ventanas numeradas del 0 al 9, si bien las ventanas del 0 al 3 son usadas por el sistema. PRINT usa la ventana 2 por defecto. El Panel Frontal: Se activa con el comando MON. Los comandos del monitor son todos de una sola letra seguida de hasta tres valores hexadecimales. El panel frontal usa la ventana 3, y esta debe tener al menos cuarenta columnas por 20 líneas para verse correctamente. Space Retorna al Mega Basic. R nn Carga el registro con un número de 16-bits Hex. P Avanza el puntero del register un byte. L nn nn nn Mueve un bloque de memoria. El 1er número es el inicio del bloque, el 2do es la dirección adonde se moverá el bloque y el 3ro es la longitud del bloque. M nn Fija la dirección de la memoria a usar. S Fija un punto de interrupción. K Continua la ejecución del programa pasado el punto de interrupción. U Restaura el punto de interrupción. I nn nn n Llena un bloque de memoria. El 1er número es el comienzo del bloque, el 2do es la longitud del block, y el 3ro es el número conque será llenado el bloque. J nn Llama a la rutina en C.M. en la dirección dada (nn). Enter Avanza la posición de memoria un byte. - Salta la posición de memoria retrocediendo un byte. Si se tipea un número de dos digitos Hex, al inicio de la línea de "input", entonces entrará en la memoria según la posición actual y esta avanzará un byte. Basic abreviado: Todos los nuevos comandos del MegaBasic como los propios del ZX Basic pueden ser tipeados letra a letra pero a los últimos se les ha añadido la ventaja de poder acceder a ellos mediante abreviaciones al estilo de Basics como el de Atari y C=64. A.TTR ER.ASE ME.RGE RES.TORE BE.EP E.XP M.OVE RET.URN B.IN FL.ASH NE.XT R.ND BO.RDER F.ORMAT N.OT SA.VE BR.IGHT GO S.UB OP.EN # S.CREEN$ CH.R$ G.O TO OV.ER ST.R$ CI.RCLE I.NKEY$ PA.PER T.AB CLE.AR INP.UT PAU.SE TH.EN CL.OSE # INV.ERSE PE.EK U.SR C.ODE L.EN PL.OT V.AL$ CON.TINUE LI.NE P.OINT VE.RIFY DA.TA LL.IST PR.INT D.EF FN LP.RINT RA.NDOMIZE DR.AW LO.AD RE.AD El Editor: Las capacidades de edición de líneas han sido mejoradas por YS MegaBasic y, como resultado, algunas teclas producen diferentes efectos a los usuales en un Spectrum estandar. EDIT Copia la línea en curso para su edición en la zona de "input". TRUE VIDEO Borra la línea entera. INVERSE VIDEO borra el caracter a la derecha del cursor. CURSOR LEFT Mueve el cursor un caracter a la izquierda. CURSOR DOWN Baja el cursor dentro de la línea en edición. CURSOR UP Sube el cursor en la línea editada. CURSOR RIGHT Mueve el cursor un caracter a la derecha. DELETE Borra el caracter a la izquierda del cursor. '<=' Mueve el cursor al inicio de la línea editada. '<>' Borra todos los caracteres desde el cursor hasta el final de la línea. '>=' Mueve el cursor al final de la línea editada. SCREEN$ Muestra el listado automatico en la ventana uno. La línea en lo alto del listado es la línea en curso. OR Sube la línea en curso y muestra el listado automatico. AND Baja la línea en curso y muestra el listado automatico. STOP Mueve el cursor 'copy' un caracter a la izquierda. NOT Mueve el cursor 'copy' una línea hacia arriba. STEP Mueve el cursor 'copy' una línea hacia abajo. TO Mueve el cursor 'copy' un caracter a la derecha. AT Copia el caracter en el cursor 'copy' pasandolo al cursor 'input'. Esto permite copiar caracteres de tamaño estandar; no copiará los caracteres de 64 columnas, doble alto ni los de doble ancho. OVER Mueve el cursor 'copy' a la ventana siguiente. INVERSE Resetea el cursor 'copy' a la partea arriba izquierda de la ventana en curso. Teclas definidas por el usuario. Mega Basic tiene dos teclas ya predefinidas que son: VERIFY Contiene la cadena 'RUN+CHR$ 13', esto ejecuta el programa actualmente en memoria. VAL$ Contiene la cadena 'LOAD"":RUN+CHR$ 13', esta tecla carga y ejecuta el programa siguiente en la cinta. Teclas de CONTROL. Durante el tiempo de ejecución RUN, la tecla 'SPACE' es usada como una nueva tecla 'SHIFT'. Consecuentemente, para obtener un espacio entre caracteres, Symbol Shift y Space deben ser presionados simultaneamente. SPACE (cuando se usa con otra tecla) será desde ahora en adelante llamada tecla 'CONTROL'. A continuación un número de funciones de Control disponibles durante el tiempo de ejecución RUN: CONTROL F - llama al panel frontal (ver 'Panel Frontal' y MON por más detalles). CONTROL E - detiene la ejecución del programa, imprime el mensaje "Escape" y retorna al editor de líneas. CONTROL R - resetea el sistema del YS MegaBasic. Detiene el programa, devuelve BORDER, PAPER e INK a sus valores iniciales, eleva valores, imprime unmensaje de copyright y retorna al editor de líneas. Esto no borra ningún programa Basic en memoria. Compatibilidad Microdrive El YS MegaBasic viene en una cinta de casete, con el programa Sprite Designer, para diseño de sprites. Al cargarlo, el programa pregunta para pasarlo a Microdrive, basta entonces con pulsar 'M' si se desea hacer eso, otra tecla sino. Debido a que Sinclair Research disribuyó la Interface 1 con dos ROMs diferentes, el usuario debe ver qué if1.ROM está usando. Basta con: CLOSE #0: PRINT PEEK 23729 Si aparece '0' es una vieja if1.rom y no hay que hacer cambio alguno al YS MegaBasic, pero si sale '80', es una nueva if1.rom, así que para obtener plena compatibilidad debe hacer: 'POKE 47006,183' cada vez que cargue el MegaBasic. Diseño de sprites Para crear los sprites debe cargarse el programa diseñador de sprites con: LOAD "SPD". Una vez cargado, ofrece las siguientes opciones: Crear sprite permite al usuario definir las coordenadas, dirección y la velocidad del sprite. Ver una serie provee la opción para ver una imagen en pantalla de talla de imágenes normal. Esta facilidad es solo disponible si hay realmente imágenes en la memoria. Crear imagen Limpia 36 bytes en la RAMTOP para acomodar otra imagen. Editar imagen permite dibujar una imagen en la pantalla. Salvar salva lainformación del sprite e imagen a una cinta ó a un Microdrive. Cargar permite que un juego de sprites e imagenes sea cargado en la memoria. Copia a Mdrive transfiere el Sprite Designer al Microdrive. Retorno a Basic permite al usuario volver al YS MegaBasic. Para reiniciar el Sprite Designer, tipear 'GO TO 5' y luego 'ENTER'. Recordar que si bien las imágenes son numeradas de cero en adelante, la primera imagen (cero) es la más alta en memoria. El nombre de archivo es de hasta 8 caracteres de largo. Tres archivos son salvados, si por decir, 'Winston' es el nombre del archivo, entonces se crearán los archivos 'Winston.n', 'Winston.i' y 'Winston.s'. 'Winston.n' será de un byte indicando el número de imágenes salvadas, 'Winston.i' contiene los datos de la imagen y 'Winston.s' provee la información del sprite. Para cargar un juego de imágenes y sprites en sus propios programas, uno debe usar la siguiente secuencia: 9000 LOAD N$+".n" CODE 23296 9010 CLEAR 44999-36*PEEK 23296 9020 LOAD N$+".i" CODE 9030 LOAD N$+".s" CODE Una vez creados y cargados los sprites estos pueden ser activados mediante el comando 'SPRON_' y desactivados con 'SPROFF_'. Los Sprites en el MegaSpectrum son de hasta 16 x 16 pixeles, y cada grupo de 8 x 8 pixeles puede tener su propio atributo. Dos áreas separadas de memoria son usadas para definir los sprites. El primero, desde 56750 hasta 56893, contiene toda la información asociada con un sprite, excepto de su forma. 18 bytes son usados para cada sprite, así la información del sprite 0 empieza en la dirección 56750 y la información para el sprite 1 en la dirección 56768, y así sucesivamente. El comienzo de la información de un sprite en particular es encontrado con: s=56750+18*n donde 's' es el comienzo de la información y 'n' es el número del sprite requerido. El 'mode' del sprite es definido por 's+0'. Dependiendo del valor de 's', el sprite es 'OR' en la pantalla (s=1), el sprite es 'XOR' (s=2) o el sprite es inactivo (s=0) - es decir, no es dibujado en la pantalla. El final del área de información del sprite es marcado por un byte de 255; un buen modo de desactivar todos los sprites a la vez, es con: 'POKE 56750,255'. Los Sprites usan el mismo sistema de coordenadas que 'SPUT_' y 'SPRINT_'. Así: s+1 coordenada 'x' del sprite (0-255). s+2 coordenada 'y' del sprite (0-175). s+3 incrementa 'x'. s+4 incrementa 'y'. s+5 Tiempo tomado para mover el sprite. s+7 Número de imágenes. s+9 Tiempo entre el cambio de imágenes. s+11/s+12 dirección de la 1ra. imagen. s+15 Atributo usado para borrar el sprite. La segunda área usada para la información de imagen de todos los sprites está entre la RAMTOP y la dirección 44999, y es de longitud variable. Un total de 36 bytes son usados por cada imagen; los primeros 32 bytes definen la forma de la imagen y los últimos 4 contienen los atributos de la imagen. Como se mencionara más antes, 's+11' y 's+12' muestran la dirección de la primera imagen de cada sprite. Si un sprite tiene más de una imagen asociada entonces esta debe seguir a la imagen a la que apuntan 's+11' y 's+12'. Los sprites no tienen que tener su propiainformación de imagen. si hubiera un número de sprites con la misma forma entonces solo habrá una imagen; todo lo que se necesita es que los valores 's+11' y 's+12' (por cada sprite) apunten a la misma imagen. Nuevos mensajes de error: Once nuevos mensajes de error añadidos por YS MegaBasic. FX NOT IMPLEMENTED (no implementado FX) Relacionado con la sentencia 'FX_'... ¡se ha tratado de usar una llamada que no existe! ILLEGAL WINDOW (ventana ilegal) Esto ocurre cuando se usa 'CURRENT_' o 'FX_'; se ha intentado usar más de 10 ventanas. LINE NOT FOUND (línea no encontrada) Ocurre cuando se usa 'EDIT_'... se intentó editar una línea inexistente. MISSING PARAMETERS (faltan parámetros) No ha sido dado el número correcto de parámetros en un comando MegaBasic. PROC STACK OVERFLOW (stack de procedimientos lleno) Se ha tratado de anidar más de 10 procedimientos o bucles 'REPEAT'. PROC STACK UNDERFLOW (stack de procedimientos vacío) El stack de procedimientos está vacio y han usado 'ENDPROC_' o 'POP_'. SYNTAX ERROR (error de sintaxis) MegaSpectrum no entiende lo que tipeó; este error se da también cuando la máquina trata de ejecutar definiciones de procedimientos. WINDOW TOO LARGE (ventana demasiado grande) Ocurre cuando se usa 'WINDOW_', la ventana es demasiado grande y se sale del borde de la pantalla, o es muy larga y se va más allá del fondo. WINDOW TOO SMALL (ventana demasiado chica) También con 'WINDOW_'. El ancho o el largo han sido puestos a cero. X TOO LARGE (x demasiado grande) Se intentó dibujar fuera de los márgenes izquierdo o derecho de la pantalla. Y TOO LARGE (y demasiado grande) Se intentó dibujar fuera de los márgenes de arriba o abajo de la pantalla.