www.cpcalive.com
Cliquer ici pour la documentation française
Click here for english documentation

* CpcAlive V1.08M * DOCUMENTATION (V0.3) *



notas:
- Esta documentación a verano traducida con ayuda de un programa informático de traducción con el fin de permitir la utilización del programa CpcAlive a las personas que hablan solamente el español. Quiere disculpar los errores. Gracias. Esta documentación so'lo se refiere a la información necesaria para la utilización del emulador CpcAlive. Una demostración, programas utilitarios, documentaciones sobre la explotación del CPC y sobre las interrupciones Bios y Dos, un ensamblador Z80 así como un ensamblador X86 están disponible en el sitio Internet: www.cpcalive.com
- Esta documentación utiliza dos tipos de notación de los valores hexadecimales. La primera notación añade la señal "&" ante el valor, ex:&3F. La segunda notación añade la carta "h" detrás del valor, ex:3Fh.



CONTENIDO

I - Presentación e instalación del emulador CpcAlive
II - Pedidos a partir de la línea de pedido del DOS
CpcAlive [ficheros_de_entrada[:X ]] [pedidos CpcAlive] [pedidos Cpc] [>fichero_de_salida]
    - 1 - Ficheros de entrada
     
    - 1a - Cargamento disquetes virtuales al formato. DSK -
        - 1b - Cargamento  ROMs CPC -
        - 1c - Cargamento ficheros al formato intel hex  -
        - 1d - Cargamento de ficheros de pedidos CpcAlive
        - 1e - Cargamento de ficheros al formato texto
        - 1f - Cargamento de ficheros binarios
    - 2 - Pedidos Cpc a partir de la linea de pedido del Dos
    - 3 - Fichero de salida
III - Pedidos CpcAlive a partir del interpretador BASIC del Cpc
IV - CARáCTERS ACENTUADOS
V - ACCESO a las INTERRUPCIONES del BIOS y del DOS con el PROCESADOR Z80
VI - LUGAR DE PROGRAMACIÓN X86
VII - PROGRAMAS UTILITARIOS
    - 1 - CreaDisc: crea un disquete virtual virginal al formato dató
    - 2 - AniCrea.exe: crea un archivo de la animación de FLI
    - 3 - Fli2Gif.exe: leen un archivo de la animación de FLI
    - 4 - Disquete sistema CpcAlive
    - 5 - CD sistema CpcAlive



I - Presentación e instalación del emulador CpcAlive

CpcAlive es un emulador de ordenador Amstrad CPC 6128. Uno de los intereses de este emulador que es registrar las imágenes de la pantalla para crear ficheros de animaciones gráficos.

Especificidades del emulador CpcAlive

* lugar de programación
X86 (16Mo)
* acceso a las interrupciones del Bios y del Dos mediante instrucciones Z80.
* salidas pantalla al formato BMP y animaciones FLI
* paleta de 262144 colores
* gestión teclado integrada al teclado PC de manera automática.
* posibilidad de tratar a partir del interpretador BASIC del CPC, todo fichero presente en el disco duro u otro soporte.
* los programas CPC pueden seres utilizados en filtros y ser integrados en un fichero .BAT (salida del emulador por BASIC o por programación)
* debugger Z80
* compatibilidad: - Dos,Windows 95/98/2000/Me/XP
                          - procesadores 386 
y más.

En la instalación, se deposita un icono de lanzamiento del emulador sobre la oficina de Windows. Para encargar el emulador a partir de la línea de pedido del system Dos, utilizar el botón "empezar" de Windows., luego abrir la lista de los programas presionando "Todos los programas", luego "CpcAlive". Los programas utilitarios son accesssibles a partir de la línea de pedido del Dos.

 = Icono de lanzamiento del emulador CpcAlive
= Icono de lanzamiento del sistema DOS para Windows

Observaciones:
       - Los roms Amstrad tienen un copyright, no puede pues utilizar
normalmente el programa CpcAlive solamente si posea un ordenador Amstrad CPC 6128 en estado de funcionar.
       - Los colores PAPER y PEN 1 se modificaron a la inicialización por razones de ergonomía (menos cansando para los ojos).


II - Pedidos a partir de la línea de pedido del DOS

CpcAlive
[ficheros_de_entrada[:X ]] [
pedidos CpcAlive] [pedidos Cpc] [>fichero_de_salida]
o
!
[ficheros_de_entrada[:X ]] [pedidos CpcAlive] [pedidos Cpc] [>fichero_de_salida]


- 1 - Ficheros de entrada
~~~~~~~~~~~~~~~~~~~~~~~

Los ficheros reconocidos por el emulador son:

Disquetes virtuales al formato. DSK (véase capítulo -1a-)
Ficheros Rom CPC                        (véase capítulo -1b-)
Ficheros al formato INTEL hex       (véase capítulo -1c-)
Ficheros de pedidos CpcAlive          (véase capítulo -1d-)
Documentos texto                          (véase capítulo -1e-)
Ficheros binario                              
(véase capítulo -1f-)

Cargamento a partir de la línea de pedido DOS:
CpcAlive NombreDeFichero[:X]
Es tan posible utilizar el sintaxis: ! NombreDeFichero[:X ]

El marcador representado por el carácter X es facultativo, depende del tipo de fichero que debe encargarse. 
Los marcadores deben ser indicados en mayúsculas. (No poner espacio entre el nombre de fichero y el marcador).

Cargamento a partir de un fichero de pedidos CpcAlive:
NombreDeFichero[:X ]

Cargamento a partir del interpretador BASIC del Cpc:
|INPUT, "NombreDeFichero[:X]"[,@er%]

El parámetro de vuelta de error @er% es faculatif. Si se pone, el significado de los valores recuperados en la variable er% son:
0 = ok
1 = error en los parámetros
2 = camino no encontrado
No olvidar inicializar un er% al principio del programa o antes el pedido.

p.ej.:     10 er%=0
            20 |INPUT,"disque.dsk:A",@er%
            30 if er%<>0 then PRINT"error":STOP

Es posible poner vario nombre de ficheros a la consecuencia, basta con separarlos de un espacio. En este caso, el código de error er% se referirá solamente al último fichero mencionado.


- 1a - Cargamento disquetes virtuales al formato. DSK -

Hacer seguir el nombre de fichero del marcador:A o:B para elegir el lector
destino. (lector A por defecto)

Cargamento a partir de la línea de pedido DOS:
! NombreDeDisquete:A
Cargamento a partir de un fichero de pedidos CpcAlive:
NombreDeDisquete:A
Cargamento a partir del interpretador BASIC del Cpc:
|INPUT, "NombreDeDisquete:A"

Este pedido lanza el emulador encargando el disquete virtual "disque.dsk" en el lector A.


- 1b - Cargamento ROMs CPC -

El Cpc 6128 se proporciona en norma de 48Ko (3 bloques de 16Ko cada uno) de memorias ROM. Uno de estos bloques contiene el sistema de explotación que se conecta en la zona 0 a 03FFFh (rom inferior). Los dos bloques restantes (BASIC y sistema disco) se conectan en la zona 0C000h a 0FFFFh (roms superiores). El sistema puede explotar en esta última zona 252 bloques de 16Ko cada uno. Una particularidad interesante estos de roms es que pueden recibir instrucciones BASIC programables (Resident System eXtension).

Para encargar un fichero en rom, hacer seguir el nombre de fichero del marcador:R. CpcAlive buscará el primer sitio disponible.

Cargamento a partir de la línea de pedido DOS:
! ROMZ80.ROM:
R
Cargamento a partir de un fichero de pedidos CpcAlive:
ROMZ80.ROM:R
Cargamento a partir del interpretador BASIC del Cpc:
|INPUT, "
ROMZ80.ROM:R":call 0

En el caso es necesario tener un número de sitio fijo, sustituir a la carta "R" por el número de sitio deseado.
ejemplo a partir de la línea de pedido DOS: ! ROMZ80.ROM:10

Los roms serán reconocidos por el sistema CPC solamente después de un réinitialisation del CPC por ejemplo con un CALL 0 o impulsando la secuencia de teclas [ CTRL][ALT][Home]. El emulador acepta instrucciones RSX en las totalidades de los roms superiores. Los números de roms ya utilizados por la CPC son 0 para la rom BASIC y 7 para la rom disco. Los módulos X86 (véase capítulo "LUGAR DE PROGRAMACIÓN X86") con mnemotecnias utilizan también sitios de roms Z80. Los roms Z80 con un número de sitio específico deben pues estar cargados antes de los módulos X86. El mejor medio de evitar los conflictos es encargarlos al principio del fichero de pedidos ROM INI situado en el directorio principal.

Ejemplo de creación de una ROM que contiene instrucciones BASIC programables

- 1c - Cargamento ficheros al formato Intel Hex  -

El formato Intel Hex es línea orientada y utiliza solamente caracteres ASCII imprimibles.

línea al formato INTEL hex:

:LLAAAA00DDDDCC   ; ' : ' = carácter inicial                                
                                     ; LL = taille bloque
(2 dígitos hexa)
                                     ; AAAA = adresse inicial (4 dígitos hexa)
                                     ; 00 = tipo de registro (00)
                                     ; DDDD = datos (
2 dígitos hexa para cada octeto de datos)
                                     ; CC = CRC
(Checksum) de la línea (2 dígitos hexa)

ejemplo:

:18A600000109A62111A6C3D1BC15A6C31EA6C335A6000000004F5049A2
:18A61800D8495049D800DD5603DD5E02DD4605DD4E043E0C4052DD7E97
:18A6300000404810C9D5DD5603DD5E02DD4605DD4E043E0D40524048AD
:07A6480010D11213AF12C97B
:00000001FF

En este ejemplo, la primera línea contiene 018h octetos de datos (01h,09h,0A6h... 049h) que se encargarán a partir de la dirección 0A600h. El crc
(Checksum) de la línea es igual a 0A2h. El emulador ignora el crc normalmente presente a cada final de línea en la norma Intel Hex. El tipo de registro igual a 1 indica la última línea del fichero. Esta línea no es necesaria en los ficheros encargados por el emulador.

Cargamento en rom:

Para encargar un fichero al formato intel hex en rom, hacer seguir el nombre de fichero del marcador:X dónde X representa el número de rom destinatario. P.ej. para encargar en la rom número 10:
Cargamento a partir de la línea de pedido DOS:
! FICHERO.HEX:10

Cargamento a partir de un fichero de pedidos CpcAlive:
FICHERO.HEX:10
Cargamento a partir del interpretador BASIC del Cpc:
|INPUT, "
FICHERO.HEX:10"

Si la rom no existe, CpcAlive lo crea. En este caso, es entonces posible utilizar al marcador:R (véase cargamento roms)


Cargamento en ram:

El 6128 poseen una memoria de 128 Ko divididos en ocho bloques de 16 Ko cada uno, numerados de 0 a 7. Sólo cuatro bloques pueden seres conectados simultáneamente.

Cuadro por el que se muestra la localización de los bloques Ram en foncion del tipo
de configuración:
                tipo      posiciones bloques
                0C0h          0,1,2,3             
<= configuración normal
                0C1h          0,1,2,7
                0C2h          4,5,6,7
                0C3h          0,3,2,7
                0C4h          0,4,2,3
                0C5h          0,5,2,3
                0C6h          0,6,2,3
                0C7h          0,7,2,3

El sistema de Cpc so'lo explota el primer tipo de configuración. En esta configuración el bloque 0 ocupa el espacio 0 a 03FFFh de la memoria, el bloque 1 el espacio 04000h a 07FFFh, el bloque 2 el espacio 08000h a 0BFFFh, el bloque 3 el espacio 0C000h a 0FFFFh. La pantalla explota el bloque 3. La parte superior del bloque 2 contiene las variables sistema. La parte inferior del bloque 0 es utilizada por el sistema. Los programas BASIC son encargados por el sistema a partir de la dirección 0170h. Los datos binarios pueden seres encargadas a partir de la dirección definida con ayuda del pedido Basic "MEMORY". Si se trata de programas, podrán llamarse con la instrucción "CALL".

Para encargar un fichero al formato intel hex en ram,
hacer seguir el nombre de fichero del marcador:X dónde X representa el tipo de configuración del Ram destinatario.

Los valores hexadecimales válidos para el cargamento en Ram son:
                0C0h, 0C1h, 0C2h, 0C3h, 0C4h, 0C5h, 0C6h et 0C7h

Por defecto, el cargamento se hace en Ram con la configuración 0C0h
ejemplo a partir del interpretador BASIC:
|input,"fichero.hex" para encargar en la ram con la configuración normal

notas:
- Es posible ver la memoria del Cpc con el emulador CpcAlive utilizando el pedido |DEBUG,&f a partir del interpretador BASIC.
- colocar en Ram en los bloques 0,1,2 ó 3 antes de la inicialización del sistema CPC es inútil puesto que ésta se borra al comienzo. Para colocar en Ram a partir de la línea de pedido del DOS, es necesario que el sistema se haya lanzado luego puesta en víspera antes.
- Los marcadores deben ser indicados en mayúsculas


                                                                                                                                                                                                                      
nota: El ensamblador 8 bites "tasm" es un ensamblador Z80 que genera ficheros al formato Intel hex. Este ensamblador está disponible en el sitio Internet:  www.cpcalive.com
                                                                                                                                                                                                                      


- 1d - Cargamento de ficheros de pedidos CpcAlive

Los pedidos internos del emulador válidos a partir de la línea de pedido del sistema DOS o de un fichero de pedidos CpcAlive son:

CpuFast                    ; 
selecciona la velocidad máximo
CpuSlow                   ; 
selecciona la velocidad normal (velocidad del ordenador CPC)
Sleep                        ; puesta en víspera del emulador         [AltGr][S]
Exit                          ; dejar el emulador                            
[Ctrl][Alt][End]
ROM=X                   ; selecciona un sitio de ROM (X=256 para el Bios)
RAM=X                   ; selecciona el tipo de RAM

                                ; ver capítulo II - 1c - "Cargamento en ram"
                                ; para los valores de configuración disponibles.

:LLAAAA00DDDD   ; cargamento datos. (línea al formato Intel Hex)
CommandEnd (o EndCde) ; indica el final de un fichero de pedido. (facultativo)
KeyBoard                 ; Para pasar del método "pedidos CpcAlive" al método "emulación teclado". Será posible restablecer la interpretación del fichero en método "pedido" con la instrucción |COMMAND.
Los pedidos CommandEnd, EndCde y KeyBoard restablecen la configuración memoria del CPC efectiva al lanzamiento del fichero de pedidos.


ejemplo a partir de la línea de pedido del DOS:
Seleccionar la rom BIOS y colocar 2 en 0B13h (
modo pantalla de comienzo), luego seleccionar el velocidad lenta.

! ROM=256
:010B130002 CpuSlow
(no olvidar el espacio entre los pedidos)

nota:
- colocar en Ram en los bloques 0,1,2 ó 3 antes de la inicialización del sistema CPC es inútil puesto que ésta se borra al comienzo. Para colocar en Ram a partir de la línea de pedido del DOS, es necesario que el sistema se haya lanzado luego puesta en víspera antes.


ficheros de pedidos CpcAlive

Estos ficheros están destinados, como su nombre lo indica, a encargar el emulador a partir de un fichero. Este fichero debe comenzar por la secuencia "CDE:" o "CMD:" sin las comillas (encabezamiento).

Cargamento a partir de la línea de pedido DOS:
! FICHERO.CMD

Cargamento a partir de un fichero de pedidos CpcAlive:
FICHERO.CMD
Cargamento a partir del interpretador BASIC del Cpc:
|INPUT, "
FICHERO.CMD"

ejemplo1:
CMD:               ; encabezamiento
ROM=256        ; seleccionar rom bios
:010B130002    ; 0B13h=2 (modo pantalla de comienzo)
CpuSlow          ; selección velocidad
CommandEnd   ; indica el final del fichero de pedido

ejemplo2:
CMD:
ROM=256        ; seleccionar rom bios
:010B130002    ; 0B13h=2 (modo pantalla de comienzo)
CpuSlow          ; selección velocidad
KeyBoard        ; pasa en método teclado,
                       ; a partir aquí de cada carácter se transmite directamente al teclado
PRINT"ok"

ejemplo3:
PRINT"ok1"
|COMMAND   ; pasa en método "pedidos CpcAlive"
ROM=256        ; seleccionar rom bios
:010B130002    ; 0B13h=2 (modo pantalla de comienzo)
CpuSlow          ; selección velocidad
KeyBoard        ; pasa en método teclado,
                       ; a partir aquí de cada carácter se transmite directamente al teclado
PRINT"ok2"


Es tan posible encargar a partir de un fichero de pedidos CpcAlive los siguientes tipos de ficheros:

 disquetes virtual al formato. DSKficheros Rom CPCficheros al formato INTEL hex ,  ficheros de pedidos CpcAlive , documentos texto y ficheros binario . El traslapo de los ficheros de pedidos CpcAlive se autoriza con los límites de 15 ficheros máximos (los ficheros de texto incluidos). Un buen ejemplo es el fichero ROM INI que es un fichero de pedido que se destina a la inicialización del emulador. Es a partir de éste que están cargados por ejemplo los roms del Cpc se interpreta Cada línea de la misma manera que para los pedidos "CpcAlive" a partir de la línea de pedido DOS. Note la presencia del separador ';' para los comentarios. (no utilizar el pedido "KeyBoard" en el fichero ROM INI). El fichero de pedidos CPC INI situado en el directorio principal es un fichero usuario que puede recibir pedidos de configuración.


- 1e - Cargamento de ficheros al formato texto

En caso de que el tipo de fichero no es reconocido por CpcAlive como uno de ficheros enumerados más arriba, CpcAlive consideran que se trata de un fichero al formato texto.
CpcAlive trata estos ficheros del mani siguiente:
se lee cada carácter del documento, luego enviado al gestor teclado del sistema CPC. Es así posible, por ejemplo, transmitir por esta función un fichero BASIC al formato texto o controlar un programa que vuelve en el emulador.

Cargamento a partir de la línea de pedido DOS:
! ejemplo.bas
Cargamento a partir de un fichero de pedidos CpcAlive:
ejemplo.bas
Cargamento a partir del interpretador BASIC del Cpc:
|INPUT, "
ejemplo.bas"

Estos pedidos encargan el programa nombrado exemple.bas si existe, a través el gestor teclado del Cpc en este ejemplo, el fichero "
ejemplo.bas" se sitúa en el directorio CpcAlive.  Si el fichero no existe, la cadena "ejemplo.bas" será transmitida al gestor teclado del Cpc, lo que desembocará probablemente sobre un mensaje "Syntax error".

ejemplo a partir del interpretador BASIC:

MODE 2
10 |INPUT, "FILE_ID.DIZ"
20 LINE INPUT a$:if a$ = "" then |STOP:END ELSE GOTO 20
run

Este ejemplo encarga el documento "FILE_ID. DIZ" hasta que encuentre una línea vacía. El pedido |STOP firme el fichero.


El traslapo de los ficheros de texto se autoriza con los límites de 15 ficheros máximos (los ficheros de pedidos CpcAlive incluidos).

Cómo encargar programas en el emulador CpcAlive a partir de la función copiar/clavar de Windows XP


- 1f - Cargamento de ficheros binarios

Es posible utilizar al marcador ":D" ('D'atas) para encargar datos en la memoria del Cpc utilizando el siguiente sintaxis:
a partir del interpretador BASIC del Cpc:
|INPUT,"nombre_de_fichero:D,longitud_bloque,dirección_bloque_en_fichero,dirección_cargamento_en_memoria_Cpc"
(pensar por proteger el bloque encargado con el pedido MEMORY 
dirección_cargamento - 1)
a partir de un fichero de pedidos CpcAlive:

nombre_de_fichero:D,longitud_bloque,dirección_bloque_en_fichero,dirección_cargamento_en_memoria_Cpc


Es así posible tratar todo tipo de fichero. El ejemplo siguiente encarga una imagen BMP (opción de formato OS/2, 16 colores, 180*100 máximo) y lo indica sobre la pantalla CPC.

10 memory &3FFF:adr=&4000
20 ximg=0:yimg=0:nameimg$="image.bmp":' <<<< X,Y,IMAGE NAME
30 |input,nameimg$+":D,&4100,0,&4000"
40 if peek(adr+&E)+256*peek(adr+&F)<>12 then mode 2:?"OS/2 format only accepted":end
50 x=peek(adr+&18)+256*peek(adr+&19)
60 if x<>4 then mode 2:?"16 colors in image only accepted.":end
70 mode 0:x=0:for i=0 to 45 step 3:|ink,x,peek(adr+&1C+i),peek(adr+&1B+i),peek(adr+&1A+i):x=x+1:next
80 largeur=peek(adr+&12)+256*peek(adr+&13)
90 hauteur=peek(adr+&14)+256*peek(adr+&15)
100 reste=largeur mod 2:x=int(largeur/2)+reste:while x mod 4 <> 0:x=x+1:wend:larbloc=x
110 adr=adr+peek(adr+&A)+256*peek(adr+&B):'adresse image dans fichier
120 for i=0 to hauteur*4 step 4:x=0
130 for j=adr to adr+(int(largeur/2)+reste)
140 pencil=(peek(j) and &F0)/16:plot ximg+x,yimg+i,pencil:plot ximg+x,yimg+i+2,pencil:x=x+4
150 pencil=peek(j) and &F:plot ximg+x,yimg+i,pencil:plot ximg+x,yimg+i+2,pencil:x=x+4
160 next j:adr=adr+larbloc:next i
run


El marcador :D solo
tras el nombre de fichero indica al emulador que debe transmitir el valor de cada octeto del fichero a través del teclado del Cpc al formato decimal. Esta función se desarrolló para permitir tratar fácilmente los datos de un fichero a partir del interpretador BASIC del CPC.

Como ejemplo, he aquí un pequeño programa cuya función es leer algunos octetos del fichero ROM.INI y de indicarlos al formato hexadecimal.

10 MODE 2:window#0,1,80,2,25:window#1,1,80,1,1
20 |INPUT,"ROM.INI:D"
30 for i=0 to 100
40 input#1,a:Print hex$(a, 2)"";
50 next
60 |STOP
run


El pedido |GO, "cadena numerica"[,@er% ] desplaza al indicador de fichero.
En este caso, "cadena" representa el valor del desplazamiento con relación al principio del fichero.
El parámetro de vuelta de error @er% es faculatif. Si se pone, el significado de los valores recuperados en la variable er% son:
0 = ok
1 = error
(No olvidar inicializar un er% al principio del programa o antes del pedido)

p.ej.: |GO, "&100"   desplaza al indicador de fichero a la posición
&100. El valor máximo es &FFFFFFFF. El indicador de fichero quizá también escrito en decimal.


- 2 - Pedidos Cpc a partir de la linea de pedido del Dos

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Los pedidos CPC deben siempre colocarse en último en la línea de pedido.

p.ej.: ! PRINT"ok"
Lanza el emulador y hace el pedido PRINT"ok" a la CPC, a través del gestor teclado del Cpc.

Caso particular:
El carácter '|' es un pedido Dos. CpcAlive utiliza pues un carácter de sustitución que el '§'
(o carácter 245).

p.ej.: ! §DISC
Lanza el emulador y hace el pedido |DISC a la CPC.

Esta tecla de sustitución siempre se utilizará en CpcAlive en razón de su facilidad de acceso. Puede pues servirte de este
"atajo teclado" a partir de la línea de pedido BASIC del Cpc. Existe otros caracteres reservados por DOS como el "<" o ">" no podrán utilizarse como pedido CPC a partir de la línea de pedido DOS. Para más información, leer la documentación del sistema DOS.


- 3 - Fichero de salida
~~~~~~~~~~~~~~~~~~~~~
Por defecto la salida impresora del CPC se hace en el fichero CPC.PRN situado en el directorio principal CpcAlive. Es posible cambiar el nombre del fichero de salida a partir de la línea de pedido DOS añadiendo el carácter '>' al final de la línea de lanzamiento seguido del nombre de fichero deseado.


ejemplo:
! PRINT#8,"OK" inscrito la palabra "OK" en el fichero Cpc.prn
! PRINT#8,"OK">test.prn inscrito la palabra "OK" en el fichero test.prn

Un único carácter '>' antes del nombre del fichero de salida indica al DOS que a caso o el nombre del 
fichero de salida ya existe, este fichero será reconstruye virgen antes de recibir los datos. (El antiguo fichero de salida del mismo nombre que se borra sin preaviso... prudencia).
Dos caracteres ' > > ' antes del nombre del fichero de salida indican al DOS que debe conservar el fichero y poner los nuevos datos a seguir. (No existe por el momento de pedido equivalente a partir del interpretador BASIC del Cpc)


ejemplo:
! PRINT#8,"OK1":§Exit>test.prn inscrito la palabra "OK1" en el fichero test.prn
! PRINT#8,"OK2":§Exit>>test.prn inscrito la palabra "OK2" que debe seguirse en el fichero test.prn

El resultado en el fichero test.prn da:
OK1
OK2

Es posible cambiar de nombre de fichero de salida a partir del interpretador BASIC de la CCP mecanografiando el siguiente pedido: |OUTPUT, "NombreDelFicheroDeSalida"[,@er%]

El parámetro de vuelta de error @er% es faculatif. Si se pone, el significado de los valores recuperados en la variable er% son:
0 = ok
1 = error en los parámetros
3 = camino no encontrado
4 = más de ha disponible
5 = acceso rechazado
(No olvidar inicializar un er% al principio del programa o antes del pedido)

Un pequeño programa que redi la salida CATalogue hacia el fichero de salida:

10 POKE &BB5C, PEEK(&BD2D):POKE &BB5B, PEEK (&BD2C)
20 CAT
30 CALL &BD37:|DISC
RUN

nota: El fichero Cpc.prn se vacia a cada lanzamiento del emulador.

III - Pedidos a partir del interpretador BASIC del Cpc:

Los pedidos CpcAlive apelables a partir del interpretador BASIC deben precederse de la barra vertical " | ".


|CpuFast                       = selecciona la velocidad máximo
|CpuSlow                      = selecciona la velocidad normal (velocidad del ordenador CPC)
|Sleep                           = puesta en víspera del emulador    [AltGr][S]
|Sleep,"mensaje"           = puesta en vispera con mensaje
|Exit                             = dejar el emulador                        [Ctrl][ALT][End]
|Exit,"mensaje"             = dejar el emulador con mensaje
|COMMAND                = para pasar del método "teclado" al método "pedidos CpcAlive".
                                       (ver capítulo II apartado - 1d -)
|INPUT, "nombre_de_fichero[:X]"[,@er%]
                                   = ver capítulo II apartado - 1 -
|STOP                         = ver capítulo II apartado - 1e -
|GO,"cadena numerica"[,@er% ]

                                   = 
ver capítulo II apartado - 1f -
|OUTPUT, "NombreDelFicheroDeSalida"[,@er%]
                                   = ver capítulo II apartado - 3 -
|OUTASCDOS             = ver capítulo IV
|OUTASCWIN             = ver capítulo IV
|OUTASCOFF              = ver capítulo IV
|PRINT, "cadena"         = saca una cadena de caracteres hacia fichero_de_salida.
                                      (pedido equivalente al pedido PRINT#8,"cadena";)
|LPRINT, "cadena"       = saca una cadena de caracteres hacia fichero_de_salida seguimiento
                                      de una vuelta a la línea.
                                      (pedido equivalente al pedido PRINT#8,"cadena")
|INK,PEN,R,V,A          =  cambio color PEN. Las cartas R, V, A representan los
                                       componentes Rojos, Verdes y Azules (0 a 255)
                                       ex: |INK,0,0,255,0 (PAPER)
                                            |INK,1,255,0,0 (PEN 1)
|INKRESTORE            = res tintas originales
|INKCPC                     = tintas normales CPC
|INKSOFT                   = tintas CpcAlive (tintas por defecto)
                                      La paleta es la misma que la paleta normal CPC pero con menos
                                      por luminosidad, y
los valores Paper y PEN 1 se modifican a
                                      comienzo.
|OBMP, "nombre_de_fichero"[,@er%]
                                   = fabrica un fichero imagen de la pantalla CPC al formato BMP
                                      - ver pedido |OUTPUT para el significado de los códigos de errores.
|DEBUG,adress           =  lance el debugger cuando la reunión del procesador Z80 los adress especificados.
|DEBUGOFF               = 
pare el debugger
|DUMP,adress             = inicializa el dump memoria del debugger
CALL 0                       = inicializa sistema CPC [Ctrl][Alt][Home]



IV - CARáCTERS ACENTUADOS

Inicialización a partir del DOS para obtener un teclado acentuado:
! Accent.ini

El fichero Accent.ini se termina por el pedido |sleep, será necesario pues reactivar el emulador a partir del DOS tras esta pedido. El fichero Accent.ini es un documento texto compuesto de pedidos BASIC fácilmente el integrable en los programas basics.|OutAscDos y |OutAscWin a partir del BASIC CPC indican al emulador que él debe convertir los caracteres 192 a 204 (redefinidos en el fichero ROM INI) antes de dirigirlos hacia el fichero de salida. Para operar una conversión texto al formato DOS hacia el
fichero de salida utilizar |OutAscDos. Para operar una conversión texto al formato Windows hacia el fichero de salida utilizar |OutAscWin. Para cancelar esta conversión utilizar |OutAscOff. Útil si se utiliza del fichero de salida para otra cosa que del texto. (Pedido por defecto)

Los caracteres se redefinen de la siguiente forma:
carácter:                          ë     ù     û    ô     É    é     è     ê     à    â     ç     î      ï
ASCII CPC redefinido:   192.193.194.195.196.197.198.199.200.201.202.203.204
ASCII Dos:                    137.151.150.147.144.130.138.136.133.131.135.140.139
ASCII windows:             235.249.251.244.201.233.232.234.224.226.231.238.239

ejemplo:
Para convertir el documento "CreaDisc" (que es un documento texto al formato ASCII DOS) al formato ASCII windows, escrito la secuencia que sigue a partir de la línea de pedido DOS:

! Accent.ini
!>CreaDisc.win

Luego a partir del interpretador BASIC del Cpc:

MODE 2
|OutAscWin
10 |INPUT, "CreaDisc"
20 LINE INPUT a$
30 |LPRINT,a$:if a$< >"" then 20
run

El resultado se encuentra en el fichero CreaDisc.win

Atención: Sólo se reconvierten los caracteres redefinidos más arriba




V - ACCESO a las INTERRUPCIONES del BIOS Y del DOS a través del microprocesador Z80

Las interrupciones del Bios y del DOS son accesibles gracias a opcodes específicos al emulador CpcAlive a través del microprocesador Z80 emulado y una correspondencia entre los registros Z80 y X86. El cuadro a continuación que figura la correspondencia de los registros establecida entre los dos procesadores:
registros Z80      registros X86
F                 >   F
A                 >   AL
BC               >   CX
DE               >   DX
HL               >   BX
IX                >   SI
IY                >   DI

CpcAlive añade registros al Z80 nombrados AH, BP, DS y ES correspondiendo a los registros de los procesadores X86, y nuevos opcodes Z80.

ejemplo:
opcode:             mnemotecnia:     función:
040h, 052h        LD AH, A
          carga el valor del registro A en el pseudo registro AH
040h, 05Bh        LD A, AH          encarga el valor del pseudo registro AH en el registro A
040h, 048h, xx    INT(xx)             llamada interrupción número xx

ejemplo de macros (aquí para el ensamblador 8 bites tasm)
# define LD_AH_A         db 040h \ db 052h
# define LD_A_AH         db 040h \ db 05Bh
# define INT(xx)             db 040h \ db 048h \ db xx

ejemplo:
; ** SALIDA PIXEL A través de INT 010H **
OutPix:     ld de, 12                  ; dato Y
                ld bc, 24                  ; dato X
                ld a, 0Ch                 ; FUNCIÓN 0CH = ESCRIBIR UN PUNTO GRÁFICO
                LD_AH_A              ; carga el valor del registro A en
                                              ; el pseudo registro AH
                ld a,3                      ; color pedido
                INT(010h)              ; LLAMADA INTERRUPCIÓN BIOS 010H
                ret

notas:
- La correspondencia de los registros Z80-X86 se respeta a la vuelta de la interrupción
- Es necesario saber también que el ram CPC se sitúa en el segmento EMS.
- La interrupción del Bios INT 10H que no acepta que las funciones:

Función 02h // Set cursor position //
Función 03h // Read cursor position //
Función 09h // Write character with color at cursor //
Función 0Ah // Write character with color at cursor //
Función 0Bh // Set color palette //
Función 0Ch // Write graphics pixel at coordinate //
Función 0Dh // Read graphics pixel at coordinate //