APPLICATIONSDIVERS ★ EMULADOR 664/6128 PARA AMSTRAD CPC 464 (AMSTRAD USER) ★

Emulador 664/6128 para Amstrad CPC 464 (Amstrad User)Applications Divers
★ Ce texte vous est présenté dans sa version originale ★ 
 ★ This text is presented to you in its original version ★ 
 ★ Este texto se presenta en su versión original ★ 
 ★ Dieser Text wird in seiner Originalfassung präsentiert ★ 

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:


60 '
70 SYMBOL AFTER 256
80 MEMORY &A1FF
90 SYMBOL AFTER 240
100 LOAD"emulador. bin"
110 CALL &A200
120 MODE 1:PEN 1:PAPER 0
130 INK 0, 1:INK 1,24
140 PRINT" BASIC 1.1":PRINT
150 NEW

y sálvelo a cinta o cassette. A continuación teclee el programa BASIC (listado 5) generador del programa binario EMULADOR.BIN. Como pueden comprobar, está formado principalmente por líneas de DATAS, y dada su longitud, para evitar posibles errores al teolearlo, hemos incluido controles de error a tres niveles. En primer lugar, se verifica cada uno de los dos caracteres que forman un by-te para asegurarse de que no se ha introducido ningún carácter no hexadecimal (letra O en lugar del número cero, letra l en lugar del número 1, etc.). Por otra parte se realiza una suma de control por bloques, y además se realiza otra suma de control para cada línea. Es muy importante, para mayor seguridad, salvarlo a cinta/disco antes de ejecutarlo. Este listado 5 genera, como ya hemos comentado, un programa en código máquina llamado «EMULADOR.BIN», el cuál, en el caso de que utilicemos cassette, deberá quedar situado en la misma cinta que el listado 1, y justo detrás de él. Como pueden ver, el programa es notablemente corto, ya que no ocupa más que un solo bloque en cinta de cassette, por lo cual se tarda muy poco en cargarlo.

Los nuevos comandos no han sido implementados como RSX, sino como comandos y funciones «verdaderos». Por tanto, no necesitaremos escribir delante de los nombres la barra vertical («I »). Excepto en un caso en el que resulto inevitable, hemos utilizado los mismos TOKEN que utilizan los AMSTRAD CPC 664/6128, por lo que cualquier programa creado en un 464 con este BASIC extendido podrá ser transferido sin mayores problemas a un 664/6128. En general, los programas salvados en formato ASCII funcionarán siempre bien, aunque en ocasiones pueda ser necesaria alguna pequeña adaptación de la que hablaremos un poco más adelante.

A continuación explicamos la sintaxis de los comandos nuevos o de los que sufren alguna variación:

CLEARINPUT

La misión de este comando es vaciar el buffer de teclado, evitando que los caracteres que hubiéramos tecleado con anterioridad puedan aparecer en posteriores comandos INPUT o INKEY$.

Si cargamos normalmente en un CPC 464 un programa creado en un 664/6128 que no haya sido salvado en formato ASCII, este comando provocará la aparición del mensaje de error SYNTAX ERROR. Como de costumbre, tras el mensaje de error el ordenador nos pone automáticamente en el modo de edición de la línea correspondiente. En este caso, pulse simplemente ENTER para dejar la linea sin cambios, y ejecute de nuevo el programa. El emulador se preocupará de la corrección.

Si un programa creado en el 464 con el emulador utiliza este comando y debe funcionar en un CPC 664/6128, será necesario de todos modos salvarlo en formato ASCII (SAVE “nombre”,A).

COPYCHR$(# Ventana)

Esta función devuelve el carácter leído de la pantalla en la posición actual del cursor de texto en la ventana indicada. Por ejemplo:

10 LOCATE 10,10:PRINT"X”
20 LOCATE 10,10:a$=COPYCHR(#0)
30 LOCATE 20,10:PRINT a$

CURSOR interruptor 1, interruptor 2

Con él podemos activar o desactivar el cursor durante la ejecución de un programa. El efecto exacto de ambos interruptores se muestra en la siguiente tabla:

PRINT e INKEY$INPUT
CURSOR 0,0:desactivadodesactivado
CURSOR 0,1:desactivadoactivado
CURSOR 1,0:desactivadodesactivado
CURSOR 1,1:activadoactivado

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:

10 MODE 1: TAG:GRAPHICS PAPES 2
20 GRAPHICS PEN 1,0
30 MOVE 100,100:PRINT"A";
40 GRAPHICS PEN 3,1
50 MOVE 108,108:PRINT"Z";

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.

10 MODE 1: MASK &X11110000
20 GRAPHICS PAPER 3
30 GRAPHICS PEN 1,0
40 DRAW 0,200
50 GRAPHICS PEN , 1
60 DRAW 200,200

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,

|ERA,“PROGRAMA.BAK”.

Parámetros gráficos suplementarios

Todos los comandos gráficos quedan ampliados del modo siguiente:

COMANDO x,y,color,modo

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:

PARAMETROFUNCION
0Sobreescritura normal
1Modo XOR
2Modo AND
3Modo 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:

  1. El emulador ocupa la zona de memoria a partir de &A200.
  2. Las indirecciones GRA UNE y SCR WRITE han sido redirigidas hacia nuevas rutinas.
  3. Los vectores TXT SET PEN (&BB90), GRA SET PEN (&BBDE), GRA MOVE ABSOLUTE (&BBC0) y GRA MOVE RELATIVE (&BBC3) han sido modificados para realizar la transmisión del nuevo parámetro. A pesar de todo, pueden ser utilizados como de costumbre, siempre que al llamarlos la ROM superior esté desactivada.

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».

Amstrad User

★ PUBLISHER: Amstrad User
★ YEAR: 1987
★ CONFIG: 64K + AMSDOS
★ LANGUAGE:
★ LiCENCE: LISTING
★ AUTHOR(S): ???
 

★ AMSTRAD CPC ★ DOWNLOAD ★

Type-in/Listing:
» Emulador  664-6128  para  Amstrad  CPC  464    (Amstrad  User)    SPANISH    LISTINGDATE: 2022-03-08
DL: 144
TYPE: PDF
SiZE: 827Ko
NOTE: 4 pages/PDFlib v1.6

★ AMSTRAD CPC ★ A voir aussi sur CPCrulez , les sujets suivants pourront vous intéresser...

Lien(s):
» Applications » B-Select Disk Emulation System
» Applications » Emulateur Clavier Minitel (CPC Revue)
» Applications » Multiface 2 Emulator
» Applications » Systeme Emulateur Disk - Amstrad To Ims 5000
» Applications » 664 - 6128 - Emulator für den CPC 464 (CPC Amstrad International)
» Applications » HxC Floppy Emulator Manager
Je participe au site:
» Pour ce titre nous ne disposons de fichier executable sur CPC (Dump, Saisie du listing) , alors si vous avez ça dans vos cartons ou vous désirez usé vos petit doigts boudinés sur votre clavier faites le nous savoir.
» Vous avez des infos personnel ?
» Vous avez remarqué une erreur dans ce texte ?
» Aidez-nous à améliorer cette page : en nous contactant via le forum ou par email.

CPCrulez[Content Management System] v8.7-desktop/c
Page créée en 723 millisecondes et consultée 834 fois

L'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent  du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko.