★ APPLICATIONS ★ DIVERS ★ EMULADOR 664/6128 PARA AMSTRAD CPC 464 (AMSTRAD USER) ★ |
Emulador 664/6128 para Amstrad CPC 464 (Amstrad User) | Applications Divers |
Año nuevo, BASIC nuevo Se trata de una gran noticia, no sólo para los poseedores de un CPC 464, sino también para los que posean un 664 o un 6128, ya que podrán utilizar todas las capacidades del BASIC 1.1 de su aparato sin preocuparse de la compatibilidad de su programa con el «hermano pequeño». El primer listado se encarga de instalar en el CPC 464 la ampliación del BASIC 1.1. De momento, teclee este programa cargador:
|
PRINT e INKEY$ | INPUT | |
CURSOR 0,0: | desactivado | desactivado |
CURSOR 0,1: | desactivado | activado |
CURSOR 1,0: | desactivado | desactivado |
CURSOR 1,1: | activado | activado |
DEC$ (expresión numérica, cadena de formato)
Esta función ya existe en realidad en el CPC 464. Sin embargo, no aparece en el manual, ya que debido a un error en el intérprete BASIC es necesario utilizar siempre al principio dos paréntesis abiertos para evitar un error de sintaxis. Sin embargo, con el emulador sí funciona todo correctamente. La cadena de formato es una cadena de caracteres semejante a la utilizada en PRINT USING, y la expresión numérica queda convertida en una cadena de caracteres con el formato indicado.
FILL color
Anteriormente ya presentamos una rutina FILL para el CPC 464. La versión 664/6128 presenta algunos pequeños problemas: como límite para el rellenado de color sólo considera la pluma gráfica actual o el color con el que queremos rellenar.
El rellenado comienza siempre en la posición actual del cursor gráfico, el cual debe ser situado previamente con el comando MOVE x,y dentro de la superficie a rellenar.
FRAME
Esta instrucción sincroniza la imagen de pantalla con el retorno del trazo del tubo de rayos catódicos, lo cual nos permite mejorar el movimiento de las imágenes.
GRAPHIS PAPER color
Determina el color de fondo tanto en el modo gráfico como al imprimir caracteres en la posición del cursor gráfico utilizando la instrucción TAG. También fija el color de fondo cuando usamos la instrucción MASK.
GRAPHICS PEN color,fondo
Elije el color para escribir y el modo gráfico del fondo. El segundo parámetro tiene este significado:
0: Sobreescritura normal
1: Transparente
Casi siempre podemos omitir uno de los dos parámetros cuando no queremos cambiar su valor. El efecto en el 464, que no posee el modo transparente, queda demostrado con este ejemplo:
MASK máscara de bit
Una máscara de bit es valor numérico entre 0 y 255 que determina ocho puntos consecutivos cuando dibujamos una línea. Con este comando podemos crear a nuestro gusto líneas de trazos y puntos.
Los espacios quedarán rellenados con el color determinado por GRAPHICS PAPER, a no ser que hayamos elegido el modo transparente, en cuyo caso quedarán del color que hubiera antes.
ON BREAK CONT
Este comando hemos de aplicarlo con cuidado, pues evita que podamos interrumpir el programa, y un ON BREAK STOP anula el efecto de ON BREAK CONT.
PEN #ventana, color, fondo
Funciona igual que en el CPC 464, si bien, a través del último parámetro, podemos elegir el modo de fondo para el texto (0: normal, 1: transparente). De nuevo podemos omitir los dos últimos valores o uno de ellos, como por ejemplo PEN #1„0.
MERGE y CHAIN MERGE "nombre"
Estos comandos trabajan ahora perfectamente con disco. El indeseable mensaje de error “EOF met” lo intercepta el emulador.
Transmisión de parámetros en CALL y RSX_
Con el emulador podemos pasar directamente cadenas de caracteres a la instrucción CALL y a cualquier comando residente (RSX), como por ejemplo,
Parámetros gráficos suplementarios
Todos los comandos gráficos quedan ampliados del modo siguiente:
Esto se aplica en los comandos MOVE, MOVER, PLOT, PLOTR, DRAW, DRAWR. El último parámetro determina cómo interrelacio-nan los puntos impresos con el fondo, siguiendo una de las siguiente funciones lógicas:
PARAMETRO | FUNCION |
0 | Sobreescritura normal |
1 | Modo XOR |
2 | Modo AND |
3 | Modo OR |
La función lógica correspondiente opera con el número del color de pluma y el del fondo.
Conclusiones
Como ya hemos mencionado al hablar de CLEAR INPUT, no podemos conseguir una compatibilidad completa entre los distintos modelos de CPC, pues algunas de las diferencias están grabadas profundamente en la ROM.
No hemos encontrado ninguna posibilidad para instalar la función DERR. El emulador la acepta, pero sólo devuelve el valor cero. Si a algún lector se le ocurre la solución, que nos la cuente: se necesita una rutina que devuelva el número de error en el acumulador.
El CPC 664/6128 permite en el comando MASK un parámetro más, que determina si junto al dibujo de líneas hay que imprimir o no el primer punto, lo que puede ser útil en el modo XOR. El emulador acepta el parámetro adicional sin producir un error, pero no ejecuta su función, ya que el esfuerzo de programación que supone conseguirlo es desproporcionado en relación al resultado obtenido.
No hemos podido instalar los vectores adicionales del sistema (por ejemplo, GRA FILL) del 664/ 6128, ya que en esa zona de la memoria están los vectores aritméticos del CPC 464. Por tanto, no se puede garantizar una total compatibilidad con la totalidad de las máquinas de la serie CPC.
El programador de 664/6128 que espera la ayuda del emulador en los problemas de compatibilidad y quiera instalar las rutinas de ensamblador en su programa debería tener en cuenta los siguientes factores:
Esperamos que este programa sea útil para los lectores que poseen un CPC 464 y les ahorre problemas a la hora de teclear programas, evitándoles la desilusión recibida al comprobar que no funcionan por no ser «compatibles».
|
|