

    ######+  ########++      ######+   ########+  ####    ####++  ##++     ##++

  ##++++++   ##+++++##++   ##++++++    ##++++++   ##+##  ##+##++  ##++     ##++

 ##++        ##++   ##++  ##++         ##+++      ##++ ##++ ##++  ##++     ##++

 ##++        ########++   ##++         ########+  ##++ +++  ##++  ##++     ##++

 ##++        ##++++++     ##++         ##++++++   ##++      ##++  ##++     ##++

  ##++       ##++          ##++        ##++       ##++      ##++  ##++     ##++

    ######+  ##++            ######+   ########+  ##++      ##++   #########++

    +++++++  ++++            +++++++   +++++++++  ++++      ++++   ++++++++++



                                                                      v3.0





                                  D O C U M E N T A C I O N





                                     (c) Marco Vieth 2001

                        Traducido por Gerardo Briseño, Junio de 1998









-------------------------------------------------------------------------------









Tabla de Contenidos:



       1.  Introducción

           1.1  Consejos sobre como se debería leer esta documentación

           1.2  Copyright, garantías

           1.3  ¿Qué es un CPC?

           1.4  ¿Qué cosas te ofrece CPCEMU?



       2.  Instalación de CPCEMU

           2.1  Ficheros que contiene el paquete CPCEMU

           2.2  Requisitos del sistema e instalación

           2.3  Indicaciones sobre memoria y tarjetas de sonido

             2.3.1  Usando Memoria EMS

             2.3.2  Definiendo el entorno BLASTER

             2.3.3  Definiendo el entorno ULTRASND



       3.  Diferencias entre el CPC y CPCEMU

           3.1  Teclado

           3.2  Cargando Programas, Menús

             3.2.1  Cargando desde Disco, Menús

                    - El Menú de Inserción de Discos

                    - El Menú de Selección de Ficheros

             3.2.2  Cargando y guardando con el casete

             3.2.3  Cargando y guardando snapshots



       4.  Cambiando la Configuración

           4.1  El menú de configuración

           4.2  El fichero de configuración

           4.3  Parámetros en línea de comandos



       5.  Transferencia de datos CPC <-> PC

           5.1  El disco como intermediario

             5.1.1  El programa para transferencia de discos CPCTRANS

             5.1.2  La utilidad de formateo y copia 22DISK por SYDEX

           5.2  El interface paralelo

             - El adaptador paralelo

           5.3  El interface serie

           5.4  Otras posibilidades



       6.  Fuentes de Suministro, Soporte y Reconocimientos

           6.1  ¿Dónde conseguir software para el CPC?

           6.2  Noticias, intercambio de experiencias

           6.3  Si tienes preguntas o sugerencias

           6.4  Otros emuladores del Amstrad CPC

           6.5  Planes para futuras versiones de CPCEMU

           6.6  Reconocimientos

           6.7  Marcas registradas



       7.  Información Interna de CPCEMU

           "Caja Negra", con su propia tabla de contenidos





       Apéndice:



       A.1  Glosario

       A.2  Bibliografía

       A.3  Indice





---------------------------











1.  Introducción

****************





¡Bienvenido al mundo de los emuladores!



¡¿Cómo?! ¿Que quieres saber qué es CPCEMU, y qué es lo que puedes hacer

con este extraño programa que escribe en amarillo sobre un fondo azul y

que muestra "Syntax Error" después de cada entrada?





Para evitarte largas búsquedas aquí te lo pongo:

        CPCEMU emula un Amstrad CPC 464, 664 ó 6128 con muchas

        extensiones. En otras palabras, el programa imita el

        comportamiento de los ordenadores Amstrad más antiguos

        en tu más reciente PC.



¿Con qué propósito?

Veamos, si aún no lo sabes me temo que CPCEMU no te hará falta para nada.



Algunas razones:

        - nostalgía (ah, que agradable era mi viejo CPC ...)

        - mejores prestaciones comparado con el original

        - mejor entorno para el desarrolo de programas

        - para jugar

        - trabajo (sí, un CPC es suficiente para un simple tratamiento

          de textos)

        - [                                  ] <- añade otras razones por

                                                  tu cuenta.









1.1  Consejos sobre como se debería leer esta documentación

===========================================================





  Lo primero sería darse una vuelta por la ayuda en línea, luego, si

  necesitas profundizar o información más precisa, continúa leyendo...





  He intentado organizar la documentación de un modo ordenado. Si aún

  tienes dudas (¡después de haberla leído varias veces!), puedes ponerte

  en contacto conmigo. Por supuesto puedes hacerlo aún cuando tengas

  todo perfectamente claro. Mira el capítulo 6 (Fuentes, Soporte, ...)

  para ver la manera de contactar.



  En el capítulo 1 (Introducción) describo la mejor forma de leer esta

  documentación, quién posee el copyright y algunas cosas del CPC en

  general.



  En el capítulo 2 (Instalación) por fin empieza todo. Se te indicará

  como instalar y ejecutar CPCEMU.



  El capítulo 3 (Diferencias entre el CPC y CPCEMU) trata las

  características del emulador que deberías conocer si ya estás

  familiarizado con un CPC real. Fundamentalmente describo el teclado,

  los discos, las cintas y los snapshots.



  En el capítulo 4 (Cambiando la Configuración) describo como adaptar

  CPCEMU a tus necesidades. Puede que para entonces ya seas capaz de

  ejecutar tus programas favoritos.



  En el capítulo 5 (Transferencia de datos CPC <-> PC) descubrirás como

  traspasar tus antiguos programas para el CPC al PC. Más adelante se

  describen las utilidades que acompañan a CPCEMU.



  En el capítulo 6 (Fuentes, Soporte y Reconocimientos) se te indicará

  cómo conseguir la última versión de CPCEMU y a quién acudir si tienes

  alguna pregunta.



  El capítulo 7 (Información Interna de CPCEMU) es sólo para expertos. La

  parte "oficial" del manual de usuario finaliza en el capítulo anterior.

  Aquí describo como va uno de aquí para alla programando un emulador, y

  qué es necesario saber para realizarlo. También se explica el menú de

  depuración, que te permite analizar el procesador y la memoria en

  *cualquier* momento durante la emulación. Los usuarios ocasionales

  deberían saltarse este capítulo, por lo menos en la primera lectura.



  El Apéndice A.1 contiene un glosario con descripciones de los términos

  técnicos más importantes. El Apendice A.2 es la bibliografía y el A.3

  el índice.







1.2  Copyright, Garantías

=========================



  CPCEMU ha sido desarrollado por (ver también la sección 6.3):



         Marco Vieth

         Auf dem Uekern 4

         D-33165 Lichtenau

         Alemania



  e:



         Rainer Loritz

         Rosenbachweg 4/Whg. 1

         D-37075 Göttingen



  CPCEMU es Freeware, lo que significa que puedes pasar el programa a

  amigos y conocidos *gratis*. Los mantenedores de archivos tienen

  permitido incluir CPCEMU en sus colecciones para "downloading". Los

  distribuidores de shareware tienen permitido distribuir CPCEMU,

  siempre y cuando sólo cobren una pequeña cantidad por cada copia.

  En comparación al Dominio Público, Freeware no significa que es

  "gratuito" y puedes hacer lo que te de la gana con el. Yo sigo

  manteniendo el copyright.



  Tanto el software como la documentación se entregan "como tal", sin

  ningún tipo de garantía.





  Aunque este programa es freeware, desde luego aceptaría cualquier clase

  de apoyo, técnico o financiero.

  Para más detalles mira el capítulo 6.







1.3  ¿Qué es un CPC?

===================



  Si ya sabes lo que es un CPC sáltate esta sección y continúa leyendo

  la 1.4.









  ¿Sigues aquí?



  No quiero meterme en detalles técnicos ahora, en cambio voy a darte una

  visión retrospectiva para que puedas comprender mejor qué es un CPC.



  CPC es la abreviatura de Colour Personal Computer (Ordenador Personal

  en Color). Los ordenadores de este tipo se empezaron a fabricar en 1984

  por la compañía británica Amstrad y se vendieron con distinto nombre

  en otros países.

  Fué la época de los ordenadores domésticos; Commodore C64, Sinclair

  Spectrum, Atari 800XL, ... entonces se desveló el CPC 464. Tenía tanta

  RAM como el Commodore C64 (en concreto 64 KB), una grabadora de casetes

  incorporada y el Locomotive BASIC 1.0. Le siguió el CPC 664, que tenía

  incorporada una unidad de disco de 3" y un Locomotive BASIC 1.1

  ligeramente ampliado. El CPC 6128 salió en 1985, con 128 KB de RAM y

  prácticamente las mismas características que el CPC 664. Los discos de

  3" eran extremadamente caros, pero más fiables que los discos de 5.25"

  (casi tan fiables como los de 3.5" actuales), y eran notablemente más

  rápidos en contraposición a la velocidad de la cinta, muy distinto a

  lo que pasaba con el C64 ...

  Los tres modelos se vendían con monitor en color o fósforo verde, el

  cual llevaba incorporada la fuente de alimentación. Más adelante se

  introdujeron dos o tres modelos más (el CPC+ por ejemplo). El BASIC

  tenía casi 178 intrucciones potentes y rápidas. Se podía programar

  gráficos, sonido e incluso control de interrupciones, todo en BASIC

  sin utilizar PEEKs o POKEs. El suministro de software se incrementó

  espectacularmente según pasaron los años.









1.4  ¿Qué cosas te ofrece CPCEMU?

=================================



  La siguiente es una visión general de lo que te ofrece CPCEMU.

  En las siguientes secciones de la documentación se profundizará más.





  Gráficos del CPC en 3 modos de pantalla diferentes (X x Y x COLORES):

       Modo 0: 180x200x16

       Modo 1: 320x200x4

       Modo 2: 640x200x2

       (Con BIOS VESA estos gráficos pueden visualizarse en resoluciones

        que van desde 640x400x16 hasta 1280x1024x16, dependiendo del

        monitor y la tarjeta VGA que uses.)



  Sonido: por el altavoz interno del PC, la Soundblaster (3 canales + ruido,

       en estéreo), la Soundblaster (3 canales con sonido FM, en estéreo)

       o por la Gravis UltraSound (3 canales + ruido, en estéreo)



  Memoria:

       ROM: OS, BASIC, AMSDOS, hasta 13 ROMs adicionales (con EMS)

       RAM: 64KB, 128KB, hasta 576KB de RAM compatibles con Dk'tronics

            (con EMS)



  Disco: Imágenes de disco especiales, con extensión .DSK



  Casete: Ficheros normales bajo DOS, p.ej. ficheros BASIC y binarios del

       CPC con extensiones .BAS y .BIN respectivamente.



  Snapshots: Puedes realizar volcados de memoria de programas que se esten

       ejecutando para poder continuar con ellos más tarde. Los Snapshots

       llevan extensión .SNA .



  Velocidad: En un 386/33 con memoria EMS, CPCEMU es más rápido que el

       original. Un modo de tiempo real permite ralentizar la emulación

       a la velocidad exacta del CPC. Este modo de tiempo real funciona

       bien en un 486DX2/66.









2.  Instalación de CPCEMU

*************************



En este capítulo aprenderás como instalar y ejecutar CPCEMU. La sección

2.3 expone algunas razones por las que se debería usar memoria EMS y

explica como configurar el entorno de la Soundblaster. Más adelante,

en el capítulo 4 (Cambiando la Configuración), se describe la instalación

completa definida por el usuario junto al fichero de configuración







2.1  Ficheros que contiene el paquete CPCEMU

============================================



  Tienes en tu poder el paquete CPCEMUxx.xxx, el cual contiene los

  siguientes ficheros:

  (He puesto los directorios entre paréntesis, puesto que ese será el

  lugar donde se encontrarán los ficheros después de la instalación.)



  COPYMATE.ROM   ROM con un programa para copia (ROM)

  CPC464.BAT     fichero de arranque para el CPC 464

  CPC464.ROM     ROM (firmware+BASIC) de un CPC 464 (ROM)

  CPC664.BAT     idem, para el CPC 664

  CPC664.ROM     (ROM)

  CPC6128.BAT    idem, para el CPC 6128

  CPC6128.ROM    (ROM)

  CPC6128P.BAT   idem, para el CPC 6128 plus

  CPCADOS.ROM    AMSDOS para todos los CPCs (ROM)

  CPCEMU.CFG     fichero de configuración para todos los CPCs (o CPCEMU0.CFG)

  CPCEMU.DAT     fichero de datos de CPCEMU

  CPCEMU.DBF     fichero de pokes

  CPCEMU.EXE     el emulador

  CPCEMU.HLP     la ayuda en línea, prueba a pulsar F1...

  CPCEMU.MSG     el fichero de mensajes (necesario)

  CPCEMU_D.TXT   documentación en Alemán

  CPCEMU_E.TXT   documentación en Inglés

  CPCEMU_F.TXT   documentación en Francés

  CPCEMU_S.TXT   documentación en Español (este fichero)

  CPCPARA.BAS    programa en Locomotive-BASIC para el adaptador paralelo

                 (UTILITY)

  CPCPD1.DSK     imagen de disco con algunos programas de Dominio Público

                 de ejemplo (DISC)

  CPCREC.BAS     programa en Locomotive-BASIC para recibir programas

                 (UTILITY)

  CPCT0.BAT      fichero batch para CPCTRANS.EXE (ejemplo) (UTILITY)

  CPCTRANS.CFG   fichero de configuración para CPCTRANS (UTILITY)

  CPCTRANS.EXE   programa para transferir imágenes de disco (UTILITY)

  CPMDISKS.DEF   definiciones de formato para 22DISK (UTILITY)

  FILE_ID.DIZ    descripción de archivo para BBSes

  INSTALL.BAT    fichero batch para la instalación

  KCC.BAT        fichero de arranque para el KC compact

  PCPARA.EXE     parte PC del adaptador paralelo (UTILITY)

  README_D.TXT   Readme en Alemán

  README_E.TXT   Readme en Inglés

  README_F.TXT   Readme en Francés

  README_S.TXT   Readme en Español

  ROMGET.BAS     programa en Locomotive-BASIC para guardar ROMs (UTILITY)

  SNA2GIF.EXE    un conversor de snapshot a GIF: consigue las pantallas

                 de tu CPC...





  Se incluyen las ROMs de Amstrad originales. El Firmware tiene copyright

  de Locomotive Software; el BASIC tiene copyright de Amstrad. Amstrad y

  Locomotive me han dado permiso para distribuir las ROMs con CPCEMU.







2.2  Requisitos del sistema e instalación

=========================================



  Necesitarás como mínimo (no hay límite superior por supuesto)

  - PC AT 386 con gráficos VGA

  - MS-DOS, posiblemente con EMS,  o

    Novell DOS (DRDOS)  o

    Sesión DOS en Windows 95 (o 3.1)  o

    Sesión DOS en OS/2 2.x.

  - Si quieres ejecutar programas desde archivos ZIP, para poder

    extraerlos necesitarás el programa PKUNZIP disponible en algún

    directorio que este en el path de búsqueda del DOS.





  La instalación es muy simple:

  Copia el archivo CPCEMUxx.ZIP en tu disco duro y descomprímelo

  con el siguiente comando 'PKUNZIP CPCEMUxx.ZIP'. Ejecuta INSTALL.BAT

  para crear los subdirectorios necesarios. Arranca CPC464.BAT,

  CPC664.BAT o CPC6128.BAT dependiendo del CPC que quieras emular.

  Cuando lo ejecutes por primera deberás seleccionar tu idioma, pulsando

  "0" se elige Inglés, para elegir otro pulsa otro distinto.

  (La configuración se guarda en el directorio TMP como CPCEMU.CFG.)

  Después de mostrarse la configuración, aparecerá la conocida pantalla

  de inicio del CPC en amarillo y azul.

  Puedes salir del emulador con F12 y ver la ayuda en línea con F1.

  Lo mejor es que lo pruebes ahora mismo antes de seguir leyendo ...









  Si se produce algún error durante la configuración se te llevará al

  llamado menú de depuración, del cual puedes salir pulsando 'q' <INTRO>.

  En tal caso es útil, algunas veces, redirigir los mensajes de

  inicialización a un fichero, p.ej. con el comando 'CPCEMU > INIT.TXT'.

  Con esto puedes analizar el problema más adelante.







2.3  Indicaciones sobre memoria y tarjetas de sonido

====================================================



  Lo que viene a continuación te ayudará si deseas una emulación

  especialmente rápida, o si tu tarjeta de sonido no es detectada

  correctamente.

  Si usas Windows 95 sin configuraciones especiales esto no debe

  preocuparte. Windows 95 suministra EMS en las sesiones DOS, y

  define el entorno BLASTER automáticamente si tu tarjeta de sonido

  es una Soundblaster.





  2.3.1  Usando Memoria EMS

  -------------------------



    Es aconsejable tener EMS por hardware o emulada en tu PC (EMS=Expanded

    Memory System, que significa Sistema de Memoria Expandida). Esto

    incrementa la velocidad de la emulación de manera significativa,

    en particular en el BASIC. El EMS simulado es demasiado lento.

    Todo lo que necesitas es un EMM (Expanded Memory Manager, que

    significa Gestor de Memoria Expandida) que soporte el estándar

    LIM 4.0 (LIM EMS 4.0).



    Si es posible usar EMS aparecerá un contador de memoria

    'EMS xxx Bytes ok.' durante la inicialización.

    De lo contrario verás un "Sorry, using conventional memory"

    ("Lo siento, usando memoria convencional").



    Ejemplo bajo OS/2 2.x (valores de configuración para la sesión):

        EMS_FRAME_LOCATION = auto

        EMS_HIGH_OS_MAP_REGION = 32     (o más)

        EMS_LOW_OS_MAP_REGION = 0       (o más)



    Ejample bajo DOS en el fichero CONFIG.SYS:

        DEVICE=C:\DOS\HIMEM.SYS

        DEVICE=C:\DOS\EMM386.EXE 1024

        ...













  2.3.2  Definiendo el entorno BLASTER

  ------------------------------------



    Para poder escuchar sonido por la Soundblaster debes definir la

    variable de entorno BLASTER adecuadamente. Bien usando el programa

    'SET-ENV.EXE' (o 'SBTEST.EXE') incluído con tu tarjeta o modificando

    el AUTOEXEC.BAT directamente. En el AUTOEXEC.BAT deberías tener una

    línea similar a la siguiente:

        SET BLASTER=A220 I7 D1 T3



    Donde:

      A especifica la dirección base (0x220)

      I especifica la IRQ (7)

      D especifica el canal DMA (1)

      T especifica el tipo de tarjeta de sonido:

          1 : Soundblaster 1.0/1.5

          2 : Soundblaster Pro

          3 : Soundblaster 2.0/2.5

          4 : Soundblaster Pro 3/Pro 4.0

          5 : Soundblaster Pro (Microchannel)

          6 : Soundblaster 16



    Para las versiones 2,4,5 & 6 se activa el sonido estéreo.



    Hay algunos parámetros más que se ignoran:

      H especifica el canal DMA de 16 bits para tarjetas de 16 bits (5)

      M especifica la dirección base del mixer de la soundblaster  (224)

      P especifica la dirección del puerto para el MIDI (330)







    Si no escuchas sonido prueba a usar A388 (en lugar de A220). Esto

    funciona en la tarjeta Media Vision Pro Audio Spectrum 16 y puede

    que en otras tarjetas con emulación de SB. También podría funcionar

    en una tarjeta Adlib (Joe Cotroneo)









  2.3.3  Definiendo el entorno ULTRASND

  -------------------------------------



    Para tener sonido en tu GUS (Gravis Ultrasound Classic/ MAX/ACE)

    debes tener definida la variable de entorno ULTRASND.



    Tu fichero AUTOEXEC.BAT debería contener la línea siguiente:

      SET ULTRASND=220,1,1,11,7



    Donde el significado de los números es (en el orden mostrado):



        220 es la dirección base (0x220)

          1 es el canal DMA de la GUS

          1 es el canal DMA de la SoundBlaster

         11 es la IRQ de la GUS 

          7 es la IRQ de la SoundBlaster



    Lo más importante son la dirección base y la IRQ de la GUS. El resto

    de valores deben especificarse para que la emulación funcione

    correctamante.









3.  Diferencias entre el CPC y CPCEMU

*************************************



En este capítulo se describen aquellas características que diferencían a

CPCEMU de un CPC real. La sección siguiente explicará qué teclas tienen

un cometido especial durante la emulación, principalmente las teclas de

función. Después se te indicará como cargar desde disco o casete.







3.1  Teclado

============



  Puede que ya hayas notado que las teclas de función del PC no tienen

  la misma disposición que las del CPC. Esto provoca una salida extraña

  que describo más abajo. También puede que lleves horas buscando la

  tecla COPY...

  Todas las teclas del CPC están emuladas de alguna forma, puedes estar

  seguro de ello. Aquí se desvelan todos los secretos al respecto:



  - ALT, ALTgr : COPY en el CPC {DOS}

    ALT a la izquierda {No-DOS}



  - Tecla de PAUSA : detiene el PC hasta que se vuelve a pulsar.

    Si las teclas de función del PC dejan de responder es porque

    habrás activado la tecla de PAUSA. {DOS solamente}



  - Teclado numérico : Dependiendo del estado de "Bloq Num" el teclado

    numérico funciona de distinta forma. Con "Bloq Num" activado el

    teclado numérico representa las teclas de función del CPC, de lo

    contrario emulará el joystick 0. Si quieres utilizar un joystick

    de PC analógico tendrás que calibrarlo primero. (Ver capítulo 4 -

    Cambiando la Configuración).



  Para completar:

  - Av Pág/Re Pág: Mueve la pantalla entera del CPC.

    (No me preguntes con qué propósito.)



  Y, por supuesto, las teclas de función.

  F1  : Tecla de Ayuda en Línea. Podría ser la tecla más importante al

        principio.

  F2  : Cambia entre la pantalla del CPC (visión normal) y la pantalla de

        mensajes (la que tiene un borde rojo). Esta última pantalla puede

        mostrar mensajes de control. {DOS solamente}

  F3  : Inserta un disco, ver sección 3.2.1

  F4  : Activa y desactiva el sonido

  F5  : Carga un snapshot (volcado de memoria), ver sección 3.2.3

  F6  : Guarda un snapshot, ver sección 3.2.3

  F7  : Menú de configuración, ver sección 4.1

  F8 :  Reset de hard, actúa como el botón de reset en un CPC (o apagar

        el CPC y volver a encenderlo). Usa esto si CTRL+MAYS+ESC deja

        de funcionar.

  F9  : Permite/desactiva actualización de paleta.

  F10 : Menú de depuración, explicado en el capítulo 7. Si entras por

        accidente en este menú pulsa 'r' para R)un (ejecutar) o 'q'

        para Q)uit (salir)

  F11 : Reservada para uso próximo

  F12 : Salir del emulador









3.2  Cargando Programas, Menús

==============================



  En esta sección aprenderás como cargar programas desde disco, casete o

  snapshots. Obviamente se aplica lo mismo en el caso de guardar. También

  se describe como usar el menú.







  3.2.1  Cargando desde Disco, Menús

  ----------------------------------



    En circunstancias normales el AMSDOS (DOS de Amstrad) está activado,

    y todas las instrucciones para trabajo con ficheros usan el disco.

    No hace falta que insertes un disco del CPC real en la unidad del PC

    cada vez que accedas a un fichero (eso sin tener en cuenta que,

    posiblemente, todos tus discos del CPC son de 3").

    Para conseguir mayor velocidad se copia el contenido de un disco del

    CPC a la conocida como imagen de disco. Este fichero puede encontrarse

    en cualquier parte del disco duro (o en un disquete de alta densidad).



    Aquí tienes algunas instrucciones BASIC del AMSDOS:

    - CAT <INTRO> : visualiza el catálogo



    - Con 'RUN"<nombre de fichero>"'  se carga y arranca un programa.

      Pueden omitirse las comillas finales. Esta instrucción es útil para

      los programas BASIC que tienen extensión .BAS, y en muchos casos

      para programas binarios con extensión .BIN .



      Un modo simple de ejecutar un programa es:

      1. Meter el nombre del fichero, p.ej.  'disc' *sin* pulsar <INTRO>

      2. Mantén pulsada la tecla CTRL y pulsa cursor-izquierda (una vez

         hecho esto el cursor debe haberse movido a la primera columna)

      3. Con la tecla CTRL aún pulsada dale a la tecla INTRO que está en

         el teclado numérico (ahora debe aparecer RUN"disc y el programa

         deberá ejecutarse)



    - LOAD"<nombre de fichero>" carga un programa pero sin arrancarlo.

      Puedes inspeccionar los programas en BASIC con LIST y ejecutarlos

      con RUN. Normalmente los programas binarios no se cargarán con

      LOAD, se puede intentar usar la instrucción MEMORY primero,

      p.ej. 'MEMORY &1fff'.



    - SAVE"<nombre de fichero>" guarda un programa BASIC. Para programas

      binarios hay que especificar algunos parámetros más, p.ej.

      'SAVE"<nombrefichero>",b,&c000,&4000' guardará el contenido de la

      pantalla.



    - MERGE"<nombre de fichero>" es otra posibilidad. Combina un programa

      BASIC con otro que ya este en memoria en ese momento.





    Algunas instrucciones especiales del AMSDOS se introducen

    precediéndolas del carácter "|":

    - |A, |B para seleccionar la unidad (se puede conseguir lo mismo

      con |DRIVE,0 ó 1)

    - |DIR,"<comodín nombre de fichero>" para ver el directorio.

      Nota importante: Se debe usar lo siguiente en un CPC 464:

           a$="<comodín nombre de fichero>" : |DIR,@a$

    - |ERA,"<nombre de fichero>" para borrar un fichero.

      Nota importante: Se debe usar lo siguiente en un CPC 464:

           a$="<nombre de fichero>" : |ERA,@a$

    - |REN,"<nombre nuevo>","<nombre antiguo>" para renombrar un fichero.

      Nota importante: Se debe usar lo siguiente en un CPC 464:

           a$="<nombre nuevo>" : b$="<nombre antiguo>" : |REN,@a$,@b$

    - |TAPE  para activar el casete. Se explica en la siguiente sección.

    - |DISC  para volver al disco

    Hay algunas instrucciones más pero no son tan importantes.







    El Menú de Inserción de Discos

    ------------------------------



    Hasta ahora sólo podías usar un disco, el que estaba ya "metido" en

    la unidad. Para insertar otro disco tan solo debes pulsar F3 y

    aparecerá el siguiente menú:



                     Insertar Disco

                     Número de Unidad                0

                     Seleccionar Cara                0

                     Protección contra Escritura     0

                     Autoarranque                    1



    Con las teclas de cursor <arriba/abajo> puedes seleccionar una línea.

    También puedes realizar esto pulsando letras (para volver con <SUPR>).

    Para cambiar los números usa las teclas de cursor <izquierda/derecha>

    o mediante introducción directa de dígitos.

    Con <INTRO> en cualquier línea (p.ej. la primera) se aceptan los

    cambios. Para descartarlos pulsa <ESC>.

    "Número de Unidad" es la unidad deseada (0=A, 1=B); "Seleccionar Cara"

    es para cambiar de cara en los discos de doble cara, no tiene ningún

    efecto cuando se usa en discos de simple cara.

    Con "Protección contra Escritura" se puede marcar un disco como

    protegido contra escritura. (0=No, 1=Si, protegido contra escritura).

    Si "Autoarranque" está activado, se ejecuta automáticamente el primer

    programa BASIC que haya en el disco nada más insertarlo (como

    alternativa: DISC.BAS).







    El Menú de Selección de Ficheros

    --------------------------------



    Pulsa <INTRO> y aparecerá el directorio de la unidad de disco.

    Selecciona un nuevo disco de la forma descrita más arriba.



    Si ya hay un disco metido dentro de la unidad no hace falta que lo

    saques como hay que hacer con el real. Esto se hace automáticamente.

    En la parte baja de la pantalla se muestra este disco.



    Verás como máximo 15 ficheros, en caso de haber más aparecerá "[]".

    - <INICIO> se coloca en el primer fichero, <FIN> en el último

    - <Re Pág/Av Pág> para moverse por páginas dentro de la lista

    - <INTRO> acepta el fichero seleccionado, <ESC> cancela.

    También puedes seleccionar nombres directamente pulsando las letras

    iniciales de éstos.



    Si estás usando un ratón puedes pinchar "[]" para <página arriba>,

    "[]" para <página abajo>, "[<]" para <cursor izquierda>, "[>]" para

    <cursor derecha> y [ok] para <intro>.

    Usa "[þ]" como <ESC>. Usa el botón derecho del ratón para seleccionar

    una línea.



    ".." es el directorio anterior; [A], [B], ... son las unidades

    disponibles.

    Procura seleccionar unidades de disquete que tengan uno metido. De lo

    contrario podrías tener problemas.



    También es posible insertar discos que esten dentro de archivos ZIP.

    Selecciona un archivo ZIP pulsando <INTRO> y se mostrará su contenido

    como si se tratara de un directorio normal. Si eliges un fichero de

    un archivo ZIP éste se extrae automáticamente a un fichero temporal.

    Para que esto funcione, hace falta que el programa PKUNZIP se encuentre

    en algún directorio del path de búsqueda del DOS, o en el directorio

    de CPCEMU.

    Los ficheros temporales se borran automáticamente cuando ya no se

    necesitan. Los cambios *no* se escriben en el archivo ZIP. Si guardas

    algo en una imagen de disco que está dentro de un ZIP se perderá al

    insertar otro disco. Si quieres realizar cambios en imágenes de disco

    que están dentro de archivos ZIP, deberás extraerlas antes de entrar

    en CPCEMU.



    El proceso para crear imágenes de disco a partir de discos tuyos del

    CPC se explica en el capítulo 5  (Transferencia de datos CPC <-> PC).









  3.2.2  Cargando y guardando con el casete

  -----------------------------------------



    ¿Qué es realmente un casete para CPCEMU?

    Los ficheros de casete no son más que ficheros normales en directorios

    del DOS.

    Una vez metida la instrucción '|TAPE' todas las instrucciones BASIC

    para manejo de ficheros hacen referencia al casete. Pero ojo, sólo

    las que no empiezan con el caracter "|".

    En está situación es posible usar las instrucciones explicadas en

    la sección anterior (CAT, RUN", LOAD", SAVE", MERGE") con el casete.

    Si omites el nombre del fichero aparecerá el menú de selección de

    ficheros tal como se describe en la sección previa.

    Con SAVE"" puedes bien sobreescribir un fichero que ya existe o

    crear uno nuevo especificando su nombre en la última línea donde

    aparece "(new file)".



    Obviamente puedes cargar programas que esten dentro de archivos ZIP,

    a su vez que guardarlos se ignora.



    ¡La única forma de tener una unidad de casete tan sofisticada es con

    el emulador!







  3.2.3  Cargando y guardando snapshots

  -------------------------------------



    Los snapshots son volcados de memoria que no solamente guardan

    el contenido actual de la memoria, sino que también se guarda el

    estado interno de los chips de hardware, p.ej. el procesador.

    En cualquier momento puedes interrumpir el programa que se este

    ejecutando y guardarlo como snapshot. Más adelante puedes cargarlo

    y continuar en la misma posición en la que lo interrumpiste.

    Para crear un snapshot se usa la tecla F6. Hay que especificar el

    tamaño del snapshot, bien 64K o 128K. Los snapshots de 128K sólo

    tienen sentido si se está utilizando en ese momento el segundo

    banco de memoria. En este último caso se usaría "128K Snapshot = 1",

    donde 1=Si.



    El menú de selección de snapshots es el mismo que el ya descrito

    con el de discos, con el añadido de lo comentado para el casete

    (3.2.1 y 3.2.2).



    Para cargar un snapshot ya creado se usa la tecla F5.









4.  Cambiando la Configuración

******************************



En este capítulo se te mostrará como configurar CPCEMU para adaptarlo

a tus necesidades.

Se explican el menú de configuración, el fichero de configuración y los

parámetros en línea de comandos.







4.1  El menú de configuración

=============================



  Esta es la forma más simple de realizar ajustes en CPCEMU. Sin embargo,

  este menú no te permite modificar todas las opciones. Por poner un

  ejemplo, si deseas usar ROMs adicionales tendrás que usar el fichero

  de configuración, explicado en la sección 4.2.



  Como ya se mencionó en la sección del teclado, para entrar en el menú de

  configuración hay que usar la tecla F7. Hecho esto aparecerá el siguiente

  menú:



       Opción:                     Valor:    Breve descripción:

  -----------------------------------------------------------------------

       ___Emulación

       Retardo Emulación           0

       Velocidad Emulación         1

       Frecuencia Interrupción     300

       Reanudar Interrupción       0

       Tiempo Real                 0

       

       ___Pantalla

       Monitor Color               1

       Actualizar Multimodo        0

       Cambio Paleta               1

       Desplazar Pantalla          0

       Modo Video                  0

       Posición VSYNC              5

       

       ___Sonido

       Sonido Activado             1

       Dispositivo Sonido          3

       Retardo SB                  35

       Retardo0 SB                 6

       Buffer DMA SB               128

       Vel Muestreo SB             0

       SB Estéreo                  0

       

       ___Control

       Calibrar JOY0

       Calibrar JOY1

       Idioma Teclado              3

       Ratón Activado              1

       

       ___Opciones PPI

       Fabricante                  7

       PPI 50Hz                    1

       PPI Señal Expansión         1



       ___Miscelánea

       AMSDOS Desactivado          0

       AMSDOS Acelerado            1

       Máscara Ruptura             3

       EMS Activada                1

       Idioma                      3

       Desvío Cinta                1

       Tamaño RAM                  128

       Modelo CPC                  2

       Mostrar Configuración       0

       Cargar Configuración

       Reiniciar Emulación

       Guardar Configuración

       Fichero de Pokes                      fichero con trucos para juegos

       Shell al DOS

       Continuar





  Modifica los valores de las opciones tal como se explicó en 3.2.1.





  Retardo Emulación

    Esta opción permite ralentizar la emulación si ésta es demasiado

    rápida.

    0 significa sin retardo, 100 un retardo pequeño, 300 algo más ...



  Velocidad Emulación

    0   = emulación del Z80 lenta

    1   = emulación del Z80 rápida



  Frecuencia Interrupción

    Sirve para cambiar la frecuencia a la que que se generan las

    interrupciones.

    En un CPC real ésta es simpre de 300 Hertzios. Si incrementas este

    valor muchos programas darán la impresión de ir más rápido, pero hay

    menos capacidad de cálculo entre dos interrupciones. Si tienes un

    ordenador lento deberías reducir este valor a 100 o 200 algunas

    veces. Los valores posibles van desde 18 hasta 600.

    Para información más detallada mira el capítulo 7.



  Reanudar Interrupción

    Esta es otra de esas opciones que no pueden explicarse si no se tienen

    suficientes conocimientos técnicos. Si no hay memoria EMS disponible

    esta opción se pone a 0, lo que significa que las interrupciones

    pueden ignorarse. Por supuesto esto no es lo más adecuado, pero con

    1 la emulación se ralentiza mucho. Con EMS está opción es 1, de modo

    que CPCEMU procura manejar todas y cada una de las interrupciones.

    Nota importante:

    Parece ser que CP/M Plus funciona solamente teniendo EMS y ¡con esta

    opción = 0 !

    Para información más detallada mira el capítulo 7.



  Tiempo Real

    Activa el CPC en tiempo real. El emulador realiza esperas según

    convenga para ser igual de rápido que un CPC real.



  Monitor Color

    Emulación de monitor en fósforo verde o en color mediante cambio

    de paleta.



  Actualizar Multimodo

    Si tienes programas que usan varios modos de pantalla simultáneos

    activa esta opción. De esta forma CPCEMU intentará manejarlo

    correctamente.

    Por defecto esta opción está desactivada porque no funciona

    adecuadamente en todos los casos.



  Cambio Paleta

    Pon esta opción a 0 para desactivar los cambios de paleta. Esto viene

    bien cuando es difícil ver lo que aparece en pantalla debido a los

    continuos parpadeos de la misma.

    Si pulsas la tecla F8 para provocar un reset de hardware esta opción

    se pone a 1 automáticamente.

    Consejo: Si la actualización de paleta está desactivada y los colores

    de pantalla son erróneos prueba a pulsar F2 dos veces seguidas.



  Desplazar Pantalla

    Sirve para especificar el número de líneas que debería desplazarse

    la pantalla del CPC.

    Normalmente esta opción no hace falta. Se consigue el mismo efecto

    pulsando las teclas <Re Pág> y <Av Pág>. Valores posibles:

    0=sin desplazamiento, hasta 25.



  Modo Video

    Especifica el modo de video de la tarjeta VGA.

    0 = 640x200x16 (por defecto)

    1 = 640x350x16

    2 = 640x480x16

    y si tu tarjeta tiene BIOS VESA, principalmente:

    3 = 800x600x16

    4 = 1024x768x16

    5 = 1280x1024x16

    ...

    AVISO:

    ¡Usa modos de vídeo >= 3 sólo si tu monitor soporta esas resoluciones!

    ¡Si ves que hace unos ruidos raros desactiva ese modo inmediatamente!

    De todas formas, esto podría pasar sólo en monitores antiguos.



  Posición VSYNC

    De normal esta opción no te hará falta, pero no pasa nada por probarla.

    Por cada vez que se actualiza la pantalla hay un haz vertical con un

    bit especial activado, es el conocido como bit VSYNC (sincronización

    vertical). Mediante esta opción puedes especificar la posición en la

    que se produce el VSYNC. Los valores posibles son de 0 a 5. Para

    información más detallada mira el capítulo 



  Sonido Activado

    Activa el sonido. 1=activado, 0=desactivado. Otra forma de conseguirlo

    es pulsando la tecla F4.



  Dispositivo Sonido

    Especifica el dispositivo para la salida de sonido:

    0 = none

    1 = Altavoz interno del PC

    2 = Soundblaster (Pro), sonido FM

    3 = Soundblaster (Pro), sonido digital, gracias a Ulrich Doewich

    4 = GUS (Gravis Ultrasound), gracias a Ulrich Doewich



  Retardo SB

    Retardo para la tarjeta Soundblaster.

    Especifica el tiempo de retardo después de un acceso a la tarjeta

    de sonido para escritura.

    Con valores pequeños (p.ej. 0) se incrementa la velocidad en la salida

    del sonido. Si se producen problemas con tu tarjeta de sonido usa el

    valor 35.



  Retardo0 SB

    Otro retardo para la Soundblaster. No lo cambies.



  Buffer DMA SB

    Especifica el tamaño del buffer para el sonido digital de la

    Soundblaster.



  Vel Muestreo SB 

    Especifica el ratio de muestreo para el sonido digital de la

    Soundblaster.

    0=22kHz, 1=44kHz



  SB Estéreo

    Activa o desactiva el sonido estéreo.



  Calibrar JOY0

    Es muy probable que ya conozcas esto por otros programas en los que

    primero hay que calibrar el joystick analógico del PC. Elige esta

    opción pulsando <INTRO>, mueve el joystick a la esquina superior

    izquierda, luego a la esquina inferior derecha.

    A continuación se te mostrarán algunos valores. Si vas usar el

    joystick frecuentemente es mejor que te apuntes estos valores

    y los escribas en el fichero de configuración (mira la siguiente

    sección). De todas formas tendrías que volver a calibrarlo si

    modificas la frecuencia de reloj.



  Calibrar JOY1

    Se aplica lo mismo que en Calibrar JOY0, pero para el joystick 1.



  Idioma Teclado

    Mediante esta opción se puede seleccionar un esquema de teclado de

    otros paises.

    0 = UK, por defecto

    1 = GR, Teclado "estilo Alemán". Por desgracia es imposible conseguir

        un teclado completamente Alemán, ya que las teclas obtenidas

        mediante MAYS no pueden sustituirse por las obtenidas sin MAYS.

        Aún y todo la "Z" y la "Y" estan intercambiadas, y hay algunos

        caracteres más modificados.

    2 = FR, Teclado "estilo Francés". Después de añadir el teclado Alemán

        el Francés no iba a ser menos. Se ha conseguido implementar

        algunas partes del teclado AZERTY. Pero se dan los mismos

        problemas que en el Alemán.

    3 = SP, Teclado "estilo Español"



  Ratón Activado

    Posibilita el uso del ratón en los menús.



  Fabricante

    El nombre del fabricante que aparece en la pantalla de inicio.

    0 = Isp

    1 = Triumph

    2 = Saisho

    3 = Solavox

    4 = Awa

    5 = Schneider

    6 = Orion

    7 = Amstrad



  PPI 50Hz

    El CPC es capaz de funcionar a

      0 - 60 Hz, o

      1 - 50 Hz (el usado en Alemania, Francia)

    Cuando se produce un reset se verifica el bit 4 del puerto B del PPI,

    y el CRTC se inicializa adecuadamente.

    Déjalo en 50 Hz.



  PPI Señal Expansión

    Algunas tarjetas de expansión activan esta señal.

    En el CPC 464 está activada cuando tiene conectada una unidad de disco.

    En el CPC 6128 está siempre activada.



  AMSDOS Desactivado

    Impide la inicialización del AMSDOS. Esto viene bien para cargar

    programas del casete sin tener que introducir la orden '|TAPE'

    cada vez.

    Es cierto que también se podría poner como comentario la línea del

    AMSDOS en el ROM_BLOCK (con ROM_BLOCK se puede especificar la ROM

    a cargar), pero tiene el inconveniente de que el AMSDOS no se

    encuentra presente en el sistema.

    Mediante esta opción se consigue que el AMSDOS este disponible para

    algunos programas que lo requieren.



  AMSDOS Acelerado

    Posibilita realizar modificaciones en la ROM del AMSDOS para acelerar

    los accesos al disco.

    Esto se consigue minimizando los tiempos de espera para el motor

    de la unidad de disco, que no son necesarios en el emulador.



  Máscara Ruptura

    Esta opción es sólo para depuración. Con el valor 3 del fichero

    de configuración se suprimen varios errores provocados por

    instrucciones ilegales.

    ¡No cambies este valor!



  EMS Activada

    Permite el uso de memoria EMS (Expanded Memory System).

    Si no hay EMS disponible o no hay suficiente, CPCEMU usa memoria

    convencional automáticamente.

    Para información de EMS más detallada consulta 2.3.1 y el capítulo 7.



  Idioma

    Idioma para los mensajes de ayuda.

      0=UK (Inglés)

      1=GR (Alemán)

      2=FR (Francés)

      3=SP (Español)



  Desvío Cinta

    Posibilita el uso del casete.

    Hay información más detallada del CASETE en el capítulo 7.



  Modelo CPC

    Especifica el modelo de CPC a usar

    0 = CPC 464

    1 = CPC 664

    2 = CPC 6128

    3 = CPC 464+ (?)

    4 = CPC 6128+ (?)

    5 = KC compact

    Para usar los modelos del 3 al 5 debes especificar antes, en el fichero

    CPCEMU.CFG, las imágenes ROM.



  Mostrar Configuración

    Permite que se muestre la configuración cuando se arranca el emulador.



  Cargar Configuración

    Carga un fichero de configuración guardado con "Guardar Configuración".

    Algunas opciones pueden no tener efecto hasta que elijas "Reiniciar

    Emulación".



  Reiniciar Emulación

    Con esta opción puedes reiniciar la emulación con nuevos valores después

    de cargar un fichero de configuración con "Cargar Configuración".



  Guardar Configuración

    Guarda la configuración actual.

    Ten en cuenta que no puedes sobreescribir el fichero de configuración

    maestro CPCEMU.CFG.



  Fichero de Pokes

    ¿Estás con un juego que no puedes terminar? Prueba a usar esta opción.

    Si el juego está en la lista puedes hacerlo más fácil obteniendo vidas

    infinitas, p.ej. También puedes ampliar la lista (CPCEMU.DBF) añadiendo

    tus propios pokes. Mira en el capítulo 7 la descripción de este

    fichero.



  Shell al DOS

    Abre un shell de DOS con mucha memoria libre, del cual puedes salir

    con 'EXIT'.



  Continuar

    Acepta los valores introducidos y continúa con la emulación.

    Puedes realizar lo mismo pulsando <INTRO> en cualquier línea que

    tenga un valor.











4.2  El fichero de configuración

================================



  Aquí se muestra otra forma de configurar CPCEMU.

  Por defecto, lo primero que CPCEMU hace es leer el fichero de

  configuración CPCEMU.CFG.

  Fíjate que cuando se arranca CPCEMU con un fichero CPCxxx.BAT, el

  fichero de configuración se localiza en el directorio TMP. Esto

  permite usar configuraciones definidas por el usuario incluso

  cuando CPCEMU está en un CD-ROM.

  A continuación se explica la estructura de este fichero de modo que

  puedas usar tus propias ROMs, cambiar el idioma del teclado

  permanentemente, etc...





  Echa un vistazo al fichero CPCEMU.CFG:



    ;CPCEMU.CFG - The Configuration File for CPCEMU (v1.5)

    ;Marco Vieth, 20.11.1997

    ;

    ;standard configuration for CPC 464, 664, 6128, 464+, 6128+, KC compact

    ;

    SHOW_CONFIG=0       ;should the configuration be displayed?

    CPC_TYPE = 2        ;CPC 6128, if no command line parameter -t

    ...



  Con tan sólo estas líneas puede verse cual es la estructura básica:

  Los comentarios empiezan por punto y coma (";"). Las opciones se

  modifican escribiendo una palabra clave seguida de "=" y de un

  <valor>. El <valor> depende de la palabra clave y es una cadena o

  un número. Los números pueden especificarse en notación decimal,

  hexadecimal ("0x") o binaria ("%").



  Una vez conocido el significado de las palabras clave podrás adaptar

  los valores a tus necesidades con un editor de texto.





  La mayoría de las palabras clave ya las conoces por el menú de

  configuración.

  En primer lugar la lista de todas las palabras clave ordenadas

  alfabéticamente:





  #ENDIF

  #IFCPC

  AMSDOS_DISABLED       (AMSDOS_Desactivado)

  AMSDOS_SPEEDUP        (AMSDOS_Acelerado)

  BREAK_MASK            (Máscara_Ruptura)

  COLOUR_SCREEN         (Monitor_Color)

  COMPANY_NAME          (Fabricante)

  CPC_TYPE              (Modelo_CPC)

  DATA_FILE

  DRIVE_A

  DRIVE_A_AUTOSTART

  DRIVE_A_SIDE

  DRIVE_A_WRITEPROT

  DRIVE_B

  DRIVE_B_AUTOSTART

  DRIVE_B_SIDE

  DRIVE_B_WRITEPROT

  EMS_ENABLED           (EMS Activada)

  EMULATION_DELAY       (Retardo Emulación)

  EMULATION_SPEED       (Velocidad Emulación)

  HELP_FILE

  INTERRUPT_FREQUENCY   (Frecuencia Interrupción)

  INTERRUPT_RESUME      (Reanudar Interrupción)

  JOY0_CALIBRATE        (Calibrar JOY0)

  JOY1_CALIBRATE        (Calibrar JOY1)

  KBD_LANGUAGE          (Idioma Teclado)

  LANGUAGE              (Idioma)

  MOUSE_ENABLED         (Ratón Activado)

  MULTIMODE_UPDATE      (Actualizar Multimodo)

  PALETTE_CHANGE        (Cambio Paleta)

  POKE_DATABASE         (Fichero de Pokes)

  PPI_50HZ              (PPI 50Hz)

  PPI_EXP_SIGNAL        (PPI Señal Expansión)

  PRINTER

  RAM_SIZE              (Tamaño RAM)

  REALTIME              (Tiempo Real)

  ROM_BLOCK

  ROM_PATH

  SB_DELAY              (Retardo SB)

  SB_DELAY0             (Retardo0 SB)

  SB_DMA_BUF            (Buffer DMA SB)

  SB_SAMPLE_RATE        (Vel Muestreo SB)

  SB_STEREO             (SB Estéreo)

  SCREEN_OFFSET         (Desplazar Pantalla)

  SHOW_CONFIG           (Mostrar Configuración)

  SNAPSHOT

  SOUND_DEVICE          (Dispositivo Sonido)

  SOUND_ENABLED         (Sonido Activado)

  TAPE_BYPASS           (Desvío Cinta)

  TAPE_PATH

  TMP_PATH

  VIDEO_MODE            (Modo Video)

  VSYNC_POSITION        (Posición VSYNC)





  En segundo lugar el significado de las nuevas palabras clave:





  - #ENDIF, #IFCPC

    Instrucciones de control para la configuración condicional dependiendo

    del CPC deseado:

      #IFCPC <modelo de CPC> ... #ENDIF

    Para <modelo de CPC> son válidos todos los valores de "CPC_TYPE"

    (Modelo_CPC).

    En consecuencia sólo se necesita un fichero de configuración para

    todos los CPCs.

    Los ficheros batch CPC464.BAT, CPC664.BAT y CPC6128.BAT seleccionan

    el modelo deseado mediante parámetros en la línea de comandos. Estos

    se explican en la sección siguiente.



  - DATA_FILE = "<path+nombre de fichero>" (Fichero de Datos)

    Especifica el fichero de datos (CPCEMU.DAT).



  - DRIVE_A = "<path+nombre de fichero>" (Unidad A)

    Indica el path donde se encuentran las imágenes de disco. Si se

    especifica un nombre de fichero junto al path, éste se insertará

    automáticamente en la unidad A.

    La sección 3.2.1 explica como Cargar y Guardar en Disco.



  - DRIVE_A_AUTOSTART = 0,1 (Unidad A Autoarranque)

    Cuando se inserta una imagen de disco se ejecuta automáticamente el

    primer programa BASIC que haya en el disco. Si existe DISC.BAS en el

    disco será éste el que se ejecute.

    Puedes utilizar la orden |DIR del AMSDOS para mirar cuál el el primer

    programa BASIC.



  - DRIVE_A_SIDE = 0,1 (Unidad A Cara)

    En los formatos de doble cara cuando se selecciona la cara 1, se inserta

    la cara (B).



  - DRIVE_A_WRITEPROT = 0,1 (Unidad A Protección contra Escritura)

    La imagen de disco se inserta protegida contra escritura, por tanto

    es de sólo lectura.

    Esto viene bien si la imagen de disco está en un soporte de sólo lectura

    (p.ej. CD-ROM).



  - DRIVE_B = "<path+nombre de fichero>" (Unidad B)

    Lo mismo que en DRIVE_A, pero para la unidad B.



  - DRIVE_B_AUTOSTART = 0,1 (Unidad B Autoarranque)

    Lo mismo que en DRIVE_A_AUTOSTART, pero para la unidad B.



  - DRIVE_B_SIDE = 0,1 (Unidad B Cara)

    Lo mismo que en DRIVE_A_SIDE, pero para la unidad B.



  - DRIVE_B_WRITEPROT = 0,1 (Unidad B Protección contra Escritura)

    Lo mismo que en DRIVE_A_WRITEPROT, pero para la unidad B.



  - HELP_FILE = "<path+nombre de fichero>" (Fichero de Ayuda)

    Especifica el path y nombre del fichero de ayuda (CPCEMU.HLP)

  

  - JOY0_CALIBRATE = <xcen>, <ycen>, <xdead>, <ydead>

    Sirve para definir un calibrado de tu joystick analógico.

    Utiliza los valores mostrados después de calibrar el joystick en el

    menú de configuración (mira la sección 4.1, Calibrar_JOY0)

    Esta palabra clave requiere 4 valores. Debes especificarlos todos

    siempre. Poniendo los 4 valores a cero significa que no está

    calibrado.



  - JOY1_CALIBRATE = <xcen>, <ycen>, <xdead>, <ydead>

    Lo mismo que en JOY0_CALIBRATE.



  - POKE_DATABASE = "<path+nombre de fichero>"

    Especifica el fichero de pokes (CPCEMU.DBF).



  - PRINTER = "<path+nombre de fichero>" (Impresora)

    Indica el fichero de impresora donde se vuelcan todas los datos

    dirigidos a la impresora.

    Este fichero se borra cada vez que se inicia la emulación.

    Al salir del emulador puedes imprimirlo con

    'COPY <nombre de fichero> prn:'.

    Puedes usar la impresora directamente con PRINTER="prn".



  - ROM_BLOCK = <número de ROM>,  "<nombre de fichero>", <posición de ROM>

    (Bloque ROM)

    Indica qué ROM ha de cargarse y dónde.

    Repite esta línea para cada ROM que quieras cargar.

    El número máximo de ROMs son unas 20, usando EMS.



    - <número de ROM> es el número asignado a la ROM, esto significa que se

      selecciona mediante 'OUT &DF00,<Número ROM>' .

      Los valores posibles son los siguientes:

        0       : ROM de primer plano (p.ej. BASIC)

        1 - 251 : ROMs de segundo plano. En un CPC 664/6128 las ROMs

                  1-15 se inicializan con el reset automáticamente

                  (en un CPC 464 sólo las 1-7).

                  La ROM del AMSDOS lleva siempre el número 7.

        255     : ROM baja (p.ej. OS; sólo lleva este número en el

                  emulador).

    - <nombre de fichero> es un fichero que se encuentra en el directorio

      ROM_PATH, que es donde se hayan todas las ROMs.

      

    - <posición de ROM> normalmente es 0. Si un fichero contiene más de una

      ROM, ésta es la posición de la ROM deseada 0, 1, 2, ...

        ROM_BLOCK = 255, "CPC6128.ROM", 0

        ROM_BLOCK = 0  , "CPC6128.ROM", 1

      La ROM baja y la ROM de primer plano se cargan una después de la

      otra desde el mismo fichero.



  - ROM_PATH = "<path>" (Path ROM)

    Indica el path de las imágenes ROM. En el fichero de configuración

    este path se especifica como ".\ROM". Las ROMs como ficheros

    individuales se definen con la palabra clave ROM_BLOCK.



  - SNAPSHOT = "<path+nombre de fichero>"

    Indica el path para los snapshots. Si se especifica un nombre de

    fichero junto al path, éste snapshot se cargará automáticamente al

    arrancar el emulador.

    Para información más detallada mira la sección 3.2.3.



  - TAPE_PATH = "<path>" (Path Cinta)

    Indica el path de los ficheros de cinta. En el fichero de configuración

    este path se especifica como ".\TAPE".

    Para información más detallada mira la sección 3.2.2.



  - TMP_PATH = "<path>" (Path TMP)

    Especifica el path para ficheros temporales. Tiene relevancia sólo si

    se seleccionan ficheros dentro de un archivo ZIP y CPCEMU tiene que

    extraerlos con PKUNZIP.









4.3  Parámetros en línea de comandos

====================================



  Como ya sabrás por otros programas también es posible usar parámetros

  en la línea de comandos con CPCEMU. De momento sólo hay unos pocos.





  Ejecuta CPCxxx.BAT con las siguientes opciones:

       /f       : usa el modo rápido (por defecto)

       /s       : usa el modo lento

       /d       : usa el modo de depuración, explicado en el capítulo 7

       /x       : desactiva el uso de EMS

       /c <file>: especifica otro fichero de configuración, sustituyendo

                  al usado por defecto CPCEMU.CFG. Ver sección 4.2.

       /t <modelo>: indica el modelo de CPC deseado 464, 664, 6128, 464+,

                  6128+ o KC compact con  /t 0 a /t 5 respectivamente.

       /h       : muestra una pantalla de ayuda



  La opción "/d" se usa automáticamente cuando se especifica una opción

  desconocida.

  En lugar de "/" puede usarse también "-", como en UNIX.









5.  Transferencia de datos CPC <-> PC

*************************************



¿Qué se puede hacer con un buen emulador si no se tienen programas para el,

o si no se vislumbra la posibilidad de traspasar programas del CPC al PC?

En el capítulo 6 (Suministro, ...) se listan algunos sitios ftp donde puede

encontrarse software para el CPC.

Este capítulo trata de la transferencia de software del CPC al PC.

Se describen algunas utilidades para los distintos métodos de realizar

esto (disco, mediante interface paralelo o serie).









5.1  El disco como intermediario

================================



  Esta es la forma más simple de transferir software del CPC al PC. Lo

  único que hace falta es una segunda unidad de discos del CPC con el

  tamaño adecuado. Tamaño adecuado significa que los discos que use deben

  encajar también en la unidad del PC. (Si no es así, aún se podría

  intentar conectar una unidad de 3" al PC.) Al PC se le engaña, para que

  reconozca los discos formateados con el CPC, con una utilidad llamada

  CPCTRANS.







  5.1.1  El programa para transferencia de discos CPCTRANS

  --------------------------------------------------------



    He desarrollado CPCTRANS para crear imágenes de disco a partir de

    discos del CPC.

    Tiene soporte para formatos de CPC estándares, así como para formatos

    Vortex de doble cara.

    ¡CPCTRANS no está preparado para transferir discos protegidos contra

    copia!

    Si se ejecuta CPCTRANS sin parámetros se visualizará una breve ayuda.

    CPCTRANS es similar a la orden COPY del DOS:

    'CPCTRANS <origen> <destino> <opciones>'.

    Ejemplos:

    'CPCTRANS B: DISK1.DSK' copia el disco de la unidad B a la imágen de

    disco DISK1.DSK. Si ésta no existe se creará.

    'CPCTRANS DISK1.DSK B:' escribe la imagen de disco de vuelta al disco

    de la unidad B.



    Este primer ejemplo sólo funciona con el formato DATA.

    Para copiar otros formatos hay que usar una opción:

      /f 0    : formato DATA (por defecto)

      /f 1    : formato DATA, doble cara

      /f 2    : formato SYSTEM

      /f 3    : formato SYSTEM, doble cara

      /f 4    : formato VORTEX, doble cara

      /f 5    : desconocido, CPCTRANS intenta averiguarlo

      /f 6    : +3DOS

    Fíjate que hay un espacio entre "/f" y el número.

    Si usas un formato DATA o SYSTEM de doble cara podrás elegir la cara

    A o B en el menú de disco (3.2.1).



    Cuando se vaya a escribir una imagen de disco de vuelta, ¡el disco que

    está en la unidad debe tener el mismo formato! Para formatear con

    formatos simples puede usarse 22DISK, explicado en la siguiente sección.



    Para copiar la cara B de un disco se usa la opción "/s 1"

    Con 'CPCTRANS B: DISK1.DSK /s 1' se copia sólo la cara B del disco,

    con 'CPCTRANS DISK1.DSK B: /s 1' se escribe de vuelta.



    La opción "/v" activa la "verificación", de esta forma CPCTRANS

    comprueba que la copia es correcta. Por supuesto esto hace más lento

    el proceso, pero se incrementa la seguridad.



    La opción "/t <número>" indica el númbero de pistas a copiar.

    Normalmente es 40 pistas, sólo en los formatos VORTEX es de 80.



    La opción "/q" (formateo rápido) es una característica con la se puede

    formatear una imagen de disco, en lugar de copiar datos en ella.

    No obstante se debe especificar primero una unidad válida como

    parámetro.

    Ejemplo:

    'CPCTRANS a: SYSTEM.DSK /f 2 /q' formatea SYSTEM.DSK como imagen

    de disco con formato SYSTEM.







  5.1.2  La utilidad de formateo y copia 22DISK por SYDEX

  -------------------------------------------------------



    Este programa se distribuye como shareware. Con las definiciones

    adecuadas se pueden usar ¡casi todos los formatos CP/M!

    Por desgracia sólo los formatos del CPC no están incluídos con la

    versión de evaluación de 22DISK. Por tanto he definido yo los formatos

    en el fichero CPMDISKS.DEF. Este fichero lo encontrarás en el

    subdirectorio UTILITY.

    ¿Qué es lo que se puede hacer con 22DISK?

    Pueden transferirse ficheros individuales entre formatos DOS y no DOS

    de un lado para otro, formatear discos y cosas por el estilo.

    Copia los ficheros del CPC en el sirectorio TAPE. Mira en la sección

    3.2.2 la explicación de cómo cargarlos.







5.2  El interface paralelo

==========================



  Si no tienes segunda unidad en tu CPC, puedes realizar las transferencias

  mediante el interface paralelo. La idea original proviene de Gilles

  Molinari, además también ha escrito algunos programas en Turbo Pascal.

  Pero probablemente perteneces al grupo de usuarios que no tienen un

  compilador de Turbo Pascal en su CPC, por lo que de poco te serviría

  tener el código fuente en Pascal. Debido a esto he re-escrito las

  utilidades en Locomotive BASIC, y las he apliado añadiendo la dirección

  PC->CPC.

  Por tanto es posible transferir ficheros entre el CPC y el PC ¡de un lado

  para otro!

  El CPC y el PC se enlazan mediante sus respectivos interfaces paralelos.



  Si tienes un CPC 6128 con conector Centronics y lo comparas con el de

  impresora te darás cuenta que el CPC y el PC se enlazan perfectamente

  ¡usando un cable de impresora de PC estándar! Un momento, no hagas eso

  ahora, continúa leyendo.

  Parece ser que únicamente los CPC Schneider incluían conector Centronics.

  Si tienes un Amstrad CPC 6128 con conector simple, o un CPC 464, 664,

  usa el diagrama que hay al final de esta sección.



  Lo primero de todo es superar dos obstáculos:

  1. construir un adaptador simple

  2. meter un pequeño programa en el CPC



  ¡Alto!   ¡No te saltes lo demás!



  Ambos pasos son muy fáciles, ya que

  1. es posible realizarlo sin tener que soldar     y

  2. es realmente muy corto (unas 30 líneas de BASIC)



  Para el paso 2.

  El programa que necesitas se llama CPCREC.BAS y está en el directorio

  UTILITY.

  Está guardado en ASCII, por lo que puedes imprimirlo sin problemas y

  teclearlo en el CPC.

  Su cometido es parecido al de una cuerda fina que se mete en una tubería

  para luego servir de guía a un cable grueso.

  En nuestro caso, la cuerda fina es CPCREC.BAS, que sirve para recibir

  ficheros desde el PC.

  Con esta pequeña utilidad se puede transferir CPCPARA.BAS (el cable

  grueso) al CPC. Con CPCPARA.BAS se puede recibir y enviar. Por lo que

  una vez trasferido al CPC ya no hará falta para nada CPCREC.BAS.

  Por lado del PC se usa PCPARA.EXE, también incluído en el directorio

  UTILITY.



  Antes de que teclees CPCREC.BAS echa un vistazo al paso 1:





  El adaptador paralelo

  ---------------------



  Hace falta tener un adaptador entre el cable de impresora del PC y el

  conector de impresora del PC.

  La forma más sencilla es usar una caja para cableado de tipo RS-232, la

  cual tiene un conector D-Sub macho de 25 pines (clavija) y un conector

  D-Sub hembra de 25 pines (enchufe).

  Puede realizarse cualquier tipo de conexión entre ambos lados conectando

  cables cortos en esta caja. Normalmente esta caja se usa - como su propio

  nombre indica - para adaptar interfaces RS-232. Las conexiones en serie

  no suelen funcionan a la primera, para que sepas.

  Este adaptador lo usamos en sentido inverso, esto es, la clavija es para

  el lado del PC y el enchufe para el cable de impresora.



  Conéctalos ahora:



        Clavija para el conector de      Enchufe para el cable de

        impresora del PC                 impresora

        (lado izquierdo):                (lado derecho):



               Pin 2     ---------------       Pin 11

               Pin 10    ---------------       Pin 8

               Pin 11    ---------------       Pin 1

               Pin 12    ---------------       Pin 7

               Pin 13    ---------------       Pin 6

               Pin 15    ---------------       Pin 5

               Pin 19    ---------------       Pin 19





  Como puedes ver no hacen faltan los 25 cables, sólo 7 de ellos.



  Aunque la caja para cableado es barata, si se compra en una empresa de

  electrónica de venta por correo, puede salir más barato todavía usando

  una caja para jumper. En este caso habría que soldar los cables. La forma

  más barata es comprar una clavija D-Sub de 25 pines, un enchufe D-Sub de

  25 pines, una caja y algunos cables.



  En este momento asumo que ya has conectado ambos ordenadores y que tienes

  el programa CPCREC.BAS en el CPC.

  ¿Qué es lo siguiente?



  1. En el CPC :  Ejecuta CPCREC.BAS (después de habelo guardado)

  2. En el PC  :  Ejecuta 'PCPARA /s CPCPARA.BAS'



  La cosa se pone interesante, si no aparece ningún mensaje de error en el

  PC es que todo funciona correctamente, el fichero debe estar en el CPC.



  Si el PC no envía nada y da un mensaje de error, es posible que la

  conexión no este bien.

  Si está enviando ("Sending block xx"), pero aparecen mensajes de error

  de vez en cuando, puede que tu PC sea, bien demasiado rápido, bien

  demasiado lento. En la dirección PC->CPC es muy importante la medición

  del tiempo, tenlo en cuenta.

  En mi 386/33 tengo que quitar la memoria EMS, de lo contrario es

  demasiado lento. En un ordenador muy rápido podría hacer falta usar el

  botón de turbo.

  Utiliza el programa bajo DOS puro, ni OS/2 ni Windows.



  Si no funciona en absoluto comunícamelo.

  Mientras tanto puedes ir tecleando el programa CPCPARA.BAS, el cual es

  algo más largo. La dirección CPC->PC funciona siempre, también bajo OS/2,

  debido a que es prácticamente lo mismo que imprimir. El PC se comporta

  como una impresora.



  Ahora asumo que ya tienes CPCPARA.BAS en el CPC.

  Hay que transferir ficheros del CPC al PC de la siguiente forma:

  1. En el PC  : Ejecuta 'PCPARA /r'.

  2. En el CPC : Ejecuta CPCPARA, selecciona S)end (Enviar) e introduce

     todos los ficheros que quieras transferir. (Ejecuta 'PCPARA /r' para

     cada fichero que quieras transferir, CPCPARA se ejecuta en un bucle

     sin fin.)





  Po tanto, usa PCPARA de la siguiente manera:

  - PCPARA /r : inicia PCPARA en modo de recepción

  - PCPARA /s <fichero> : envía el <fichero> al CPC, si usas 'TRM:' como

    fichero entrarás en modo terminal.



  Todos los programas del directorio UTILITY muestran una pequeña

  descripción de sus opciones si los ejecutas sin especificar ningún

  parámetro.





  AVISO:

  Aún cuando la construcción es muy simple, no puedo garantizar que no

  se pueda dañar algo, si el puerto de impresora del CPC queda dañado

  después de todo es una pena y más bien un accidente desafortunado.

  Es muy posible que también se hubiera dañado por la simple conexión

  de una impresora.

  Por ejemplo, tengo conocimiento de un antiguo usuario de CPC cuyo

  teclado dejó de funcionar correctamente de un día para otro.

  Después de repararlo le dijeron que no debía conectar el joystick

  ¡mientras el ordenador estaba encendido!

  (¿¡¿ No sé, yo siempre lo he hecho así ?!?)



  Donde estaba:

  Yo he construído el adaptador con éxito. Y algunas veces incluso me

  he "olvidado" de insertar el adaptador en la conexión y no he tenido

  ningún problema.











  Diagramas por David Chapeau, en caso de que tu CPC no tenga conector

  Centronics:



   34 <- - - - - - - - 18      \

   ______________________      |

  |   ________________   |     |

  |  |________________|  |   - | ---> Conector de impresora (Hembra) al CPC

  |______________________|     |

                               |

   17 < - - - - - - - - 1      |

                               |

     ||||||||||||||||||        |

     ||||||||||||||||||        \

     ||||||||||||||||||         >   Cable "CPC 6128 a DMP 2160"

     ||||||||||||||||||        /

     ||||||||||||||||||        |

                               |

   1 - - - - - - - - > 18      |

  ________________________     |

  \    ______________    /     |

   \  |______________|  /    - | ---> Conector Centronics (Macho)

    \__________________/       |

                               |

   19 - - - - - - - -> 36      /







   18 < - - - - - - - - 1      \

  ________________________     |

  \    ______________    /     |

   \  |______________|  /    - | ---> Conector Centronics (Hembra)

    \__________________/       |

                               |

   36 <- - - - - - - - 19      |

                               |

     ||||||||||||||||||        |

     ||||||||||||||||||        \

     ||||||||||||||||||         >   Adaptador Paralelo del PC

     ||||||||||||||||||        /

     ||||||||||||||||||        |

                               |

   1 - - - - - - - - > 13      |

  ________________________     |

  \  ..................  /     |

   \  ................  /    - | ---> Conector Sub-D (Macho) al PC (LPT1)

    \__________________/       |

                               |

   14 - - - - - - - -> 25      /





   13 < - - - - - - - - 1      \

  ________________________     |

  \  ..................  /     |

   \  ................  /    - | ---> Conector Sub-D (Hembra)

    \__________________/       |

                               |

   25 <- - - - - - - - 14      |

                               |

     ||||||||||||||||||        |

     ||||||||||||||||||        \

     ||||||||||||||||||         >   "Caja para cableado" RS 232

     ||||||||||||||||||        /

     ||||||||||||||||||        |

                               |

   1 - - - - - - - - > 13      |

  ________________________     |

  \  ..................  /     |

   \  ................  /    - | ---> Conector Sub-D (Macho) al PC (LPT1)

    \__________________/       |

                               |

   14 - - - - - - - -> 25      /







  Conector    Centronics   Centronics    Conector     Conector     Conector

  Impresora    (Hembra)     (Macho)        Sub-D        Sub-D        Sub-D



      1 ---------  1            1 ---------  1           11 ---------  2

            .                         .                   8 --------- 10

            .                         .                   1 --------- 11

            .                         .                   7 --------- 12

     17 --------- 17           14 --------- 14            6 --------- 13

     18 --------- 19           19 --------- 19            5 --------- 15

            .                  21 --------- 20           19 --------- 19

            .                  23 --------- 21

            .                  25 --------- 22

     34 --------- 35           27 --------- 23

                               29 --------- 24

                               30 --------- 25

                               31 --------- 16

                               32 --------- 15

                               33 --------- 18

                               36 --------- 17







  Velocidad de transferencia CPCPARA -> PCPARA (v1.1):



  Tiempo para transferir un bloque de 0x4000 Bytes del CPC al PC con el

  adaptador paralelo:



  Origen en el CPC:             bytes/s:        bit/s:

  -----------------------------------------------------------

  Fichero de disco:             1600            12800



  Bloque de memoria:            2240            17920



  Bloque de memoria, sin ints.: 2445            19560

  (poke &b941,&c9 en el CPC 6128)



  El bloque enviado estaba controlado en BASIC (dentro de CPCPARA):

  defstr a:a="test.$$$":call sstr,@a

  a=string$(&80):for i=1 to &80:call sstr,@a:next:call sbyte,0:stop





  Puedes leer información más detallada acerca del adaptador paralelo en

  el capítulo 7.







5.3  El interface serie

=======================



  Si posees un interface serie en tu CPC desde luego puedes usarlo

  para transferencias de datos al PC.







5.4  Otras posibilidades

========================



  Hay otros métodos más exóticos de poner el software en el PC.



  - Conectar la unidad de 3" al PC. Algunos modelos (antiguos) deberían

    encajar en un conector de 5.25".



  - Mediante un desvío hacía el Spectrum+3: leer el disco de 3" en el

    Spectrum+3, convertirlo al formato del Spectrum y usar una utilidad

    para leerlo en el PC. Esta utilidad está disponible en el emulador

    de Spectrum Z80 hecho por Gerton Lunter.



  - Cuando es necesario obtener la ROM tu mismo, alguien me comentó este

    método:

    El quitó el chip de la ROM del CPC y lo colocó en lugar de la BIOS de

    la VGA. Con un pequeño programa fue capaz de leer el contenido.

    

  - ¿Tal vez tú puedas encontrar otras formas?









6.  Suministros, Soporte y Reconocimientos

******************************************



En este capítulo podrás averiguar dónde conseguir software para el CPC,

y a quién preguntar en caso de dudas. Más aún, hago mención de otros

emuladores para el Amstrad.





6.1  ¿Dónde conseguir software para el CPC?

===========================================



  Si tienes acceso a Internet esto no supone ningún problema.

  De forma parecida a los emuladores de Spectrum existen una serie

  de colecciones "anónimas" donde puedes obtener software para el CPC

  mediante FTP o WWW.





  FTP

  ---



  - ftp.nvg.unit.no:/pub/cpc, gracias a Arnt Gulbrandsen por

    crear el lugar, y a Noel Llopis por su mantenimiento,

    una de las colecciones más grandes de programs para el CPC;

    envía lo que tengas a /pub/cpc/incoming



  - sunshine.informatik.uni-wuerzburg.de:/pub/joscho/cpcemu

    mirror de ftp.nvg.unit.no. Enviar preguntas, comentarios y demás a

    joscho@informatik.uni-wuerzburg.de

    Si tienes problemas accediendo a Noruega puedes intentarlo con éste.



  - ftp://ftp.lip6.fr/pub/amstrad, gracias a Remy Card,

    ftp://ftp.lip6.fr/pub/amstrad/frontend/menu.htm (HTML)

  - todas las preguntas concernientes a este sitio deben dirigirse a

    roussin@genesis8.frmug.org

    Todos los ficheros provienen de 'Genesis the 8bit generation BBS'

    (ver más abajo)



  - ftp.demon.co.uk:/pub/cpm, gracias a Paul Martin

    ficheros del CP/M específicos para el amstrad

    Paul Martin (pm@nowster.demon.co.uk) enviará a cualquiera, que pueda

    probar poseer una copia original del disco Amstrad CP/M Plus, las

    imágenes ROM binarias de sus "CP/M Plus ROMs" gratuitamente.



  - oak.oakland.edu : /Simtel/msdos/emulator/cpcemu15.zip



  - otros mirrors de Simtel:

    ftp.ibp.fr : /pub3/pc/SimTel/msdos/emulator/

    ftp.demon.co.uk : /simtel/msdos.

    ftp.uni-paderborn.de





  WWW

  ---



  - http://andercheran.aiind.upv.es/~amstrad

    and an UK mirror: http://www.dcs.warwick.ac.uk/~divine/~amstrad/



  - ...







  BBS

  ---



  - Aspects (2:250/107) : +44 1617920260, en el Reino Unido, sysop Dave

    Gorski, V32b, CPCEMU v1.2, programas (la mayoría en basic),



  - Genesis the 8bit generation (2:320/220) : +33 1 53 95 32 43, en

    Francia, hasta VFC, sysop : Emmanuel Roussin.

    últimas versiones de emuladores, ROMs qwerty y azerty del 6128,

    freeware, shareware, PD, revistas en disco, pokes, soluciones, demos

    y unos cuantos juegos comerciales (con el permiso de sus respectivos

    autores).

    De momento hay unos 29,5 Mo de programas comprimidos en zip. Los

    usuarios de fido pueden hacer "file request" de ALLFILES.ZIP, y a

    partir de ahí lo que sea de interés.



  - ZNODE 51 : + 49 89 961 45 75, en Alemania, desde las 15:00 hasta las

    3:00 CET (MEZ), hasta V32b, ficheros de CPC



  - ...







6.2  Noticias, intercambio de experiencias

==========================================



  ¿Quieres tener siempre la última versión de CPCEMU?

  ¿Quieres estar informado si se publica una nueva?



  De momento se ha puesto en marcha un grupo de noticias ¡específicamente

  para el CPC!

  Se llama



     comp.sys.amstrad.8bit.



  En el encontrarás charlas acerca de los CPCs (y también del CPCEMU),

  y puedes comentar tus experiencias con los CPCs.



  Hay una FAQ (preguntas más frecuentes) disponible en este grupo

  (ftp://ftp.lip6.fr/pub/amstrad/amstrad.htm, FAQ en HTML).



  Si no puedes leer el grupo de noticias por cualquier razón, escríbeme

  un email.

  Encontrarás mi dirección en la próxima sección.

  Por supuesto también puedes usar correo normal para hacerme preguntas

  (o a David, mirar más abajo), pero por favor no te olvides del franqueo

  de vuelta.





  Si me envías una contribución me sentiré obligado a enviarte la última

  versión por lo menos una o dos veces.









6.3  Si tienes preguntas o sugerencias

======================================





  Puedes escribirme directamente a:



       Marco Vieth

       Auf dem Uekern 4

       D-33165 Lichtenau

       Alemania



       Teléfono: +49-5292-1366 (sólo fines de semana)



       Internet: cpcemu@hotmail.com

                 (ali@uni-paderborn.de)



       Como probablemente ya habrás deducido, leyendo mi dirección de

       Internet, he estudiado Ciencia de las Computadoras en la Universidad

       de Paderborn. Terminé en la primavera de 1997.







  En caso de que hables inglés también puedes escribirle a David Cantrell:



       David Cantrell

       116, London Road

       Bexhill-on-sea

       East Sussex

       TN39 4AA

       Inglaterra



       Phone: +44-1424-221015



       Internet: david@diablo.eimages.co.uk

                 ftp://ftp.eimages.co.uk/users/davidc/cpc/

                 http://www.ThePentagon.com/NukeEmUp/uaug





  David se ha ofrecido a ayudarme a contestar el "montón de cartas".

  El ha escaneado el manual de firmware del CPC, de forma que cualquiera

  puede obtenerlo en formato electrónico.









  Aunque este programa es Freeware aceptaría cualquier clase de apoyo,

  financiero o técnico.

  (unos 30-50 Marcos alemanes sería lo apropiado.)

  (Eso equivale a unos 20-33 Dólares americanos o 13-21 Libras esterlinas.)



  Aún en el caso de que no se me envíe dinero, suelo reponder a todas las

  cartas e intento recordar todas las sugerencias (estoy seguro de que

  David hace lo mismo).

  Por eso no tengas reparos en enviarme tus comentarios.







6.4  Otros emuladores del Amstrad CPC

=====================================



  A comienzos de 1994 pensaba que CPCEMU era el único emulador para el

  Amstrad CPC. Ahora tengo conocimiento de otros tres:

  

  - SIMCPC:

    Presumiblemente el primer emulador de CPC escrito.

    Emulador de CPC para PC/XT/AT   (c) 1989, 90 por GHE, Aachen.

    Sólo en blanco y negro, pero con ROMs adicionales;

    tan sólo una "muestra de humor".



  - CPC2PCxx:

    En desarrolo desde Octubre de 1993 por Paco Lopez (España), y está

    disponible ahora en algunos sitios. Está escrito completamente en

    modo protegido y usa el mismo formato de disco que CPCEMU.



  - CPE:

    En desarrolo por Bernd Schmidt. Mediante el uso de un modo de video

    especial de 50 hertzios, algunos bloques de colores están reproducidos

    exactamante.

    Un CPE2 especial de 256 colores muestra bloques de colores con más

    de 50 hertzios.

    También soportado: Modos múltiples, overscan.

    Ultima versión: v5.2.







6.5  Planes para futuras versiones de CPCEMU

============================================





  - overscan

  - mejoras en modos múltiples

  - centrado de pantalla en modos de alta resolución

  - scroll por hardware rápido

  - los teclados US no tienen "<>", ALTgr

  - simular el puerto de expansión del CPC

  - cargar discos del CPC directamente

  - cargar cintas del CPC directamente (mediante el puerto de impresora

    o la tarjeta Soundblaster)

  - transferir imágenes de disco enteras mediante el adaptador paralelo

  - control de volumen para la Soundblaster

  - emulación de digiblaster

  - teclas de joystick redefinibles

  - usar el ratón como joystick

  - autodetección de .SNA y .DSK



  Puede que nunca lo realice debido a que tengo trabajo "de verdad"...







6.6  Reconocimientos

====================



  - Agradecimiento especial para Juergen Weber, no sólo por muchos

    consejos y sugerencias, también, y especialmente, por la rápida

    emulación del Z80 de su emulador de CP/M ZSIM.



                Juergen G. Weber

                Wiesentalstrasse 1

                74523 Schwaebisch Hall

                Alemania



                email: weberj@dia.informatik.uni-stuttgart.de





  - También gracias a Bernd Schmidt. Debido a que Bernd ha escrito su

    propio emulador hemos tenido los mismos problemas muchas veces. Sólo

    si intentas escribir un emulador de este tipo tú mismo puedes hacerte

    una idea de los detalles que causan problemas.

    No hay información del CPC disponible, lo que condiciona enormemente.

    La mayoría de comportamientos del CPC hay que detectarlos por medio

    de experiementos con un CPC real.



  - Gracias a Ulrich Doewich por incluir sonido para la Gravis UltraSound

    en el emulator y leerse completamente la documentación. Ulrich ha

    escrito una herramienta similar a CPCTRANS. Busca CPDREAD con el cual

    se pueden leer también discos protegidos contra copia.



  - Gracias a Emmanuel Roussin por su esfuerzo infatigable por el CPC.

    El realizó los pasos básicos para crear el grupo de noticias y me

    prestó su Multiface II durante meses, de modo que pudiera incluirlo

    en el emulador de alguna forma.



  - Gracias a Arnt Gulbrandsen por el fuente de su JPP, donde encontré

    ideas para el controlador de teclado y la rutina de joystick.

    A propósito, JPP es un emulador de Spectrum muy bueno.



  - Gracias a Martin Zacho por aportar una rutina de joystick.



  - Gracias a Fernando J. Echevarrieta Fernandez por apuntar el primero

    que la versión v0.8 no emulaba un CPC 664.



  - Gracias a Gilles Molinari por su programa para transferencia por el

    puerto paralelo.



  - Gracias a Paul Martin por corregir la documentación en Inglés de la

    versión 1.0.



  - Gracias a Mark Haigh-Hutchinson por su esfuerzo en hacer los programas

    de la compañía Vortex de dominio público.



  - Gracias a Martin Young por sus excelentes ideas de como emular un Z80.



  - Gracias a Linh Hsiesh por muchas ideas para mejoras, la mayoría de las

    cuales se habrán incorporado ya.



  - Gracias a Fred Harris por escribir una carta a AMSTRAD acerca de

    las ROMs.



  - Gracias a Amstrad, especialmente a Cliff Lawson por permitirme

    distribur la ROM del BASIC. Amstrad retiene el copyright.



        Amstrad plc, Brentwood House,

        169 Kings Road, Brentwood,

        Essex CM14 4EF



  - Gracias a Richard Clayton de Locomotive por permitirme distribur

    la ROM del Firmware. Locomotive retiene el copyright.



  - Y gracias a los usuarios por enviarme sugerencias o aportar ideas.

    Sin ellos CPCEMU tal vez no habría alcanzado la versión 1.0









6.7  Marcas registradas

=======================



  CP/M, CP/M 2.2 y DRDOS son marcas registradas de Digital Research.

  MS-DOS es marcas registrada de Microsoft.

  IBM PC, PC-XT, PC-AT y OS/2 son marcas registradas de International

    Business Machines.

  CPC, AMSDOS por Amstrad,

  BORLAND C, TASM (Turbo Assembler) por Borland,

  22DISK por SYDEX

  Soundblaster por Creative Labs

  ...











------------------------------------------------------------------------------







7.  Información Interna de CPCEMU

*********************************





Este capítulo da información más detallada y contesta la pregunta,

"¿POR QUE haría yo esto o aquello ahora?"

También se describe el potente menú de depuración. Asimismo encontrarás

las estructuras de las imágenes de disco y los ficheros snapshot.

Esta información no está orientada a los usuarios de CPCEMU sin

conocimiento de los interiores de un CPC. Podría ser útil alguna vez.

He colocado esta información al final, incluso después de las marcas

registradas, en un intento por mostrar su "relativa insignificancia".

Si no te gusta leer frases ininteligibles e información desordenada,

¡no sigas leyendo!

Ve directamente al Apéndice.







AVISO: ¡ Continúa leyendo a tu propio riesgo !











7.1  Lista de contenidos para el capítulo 7

===========================================



  7.2  Minidescripción de las características Internas de CPCEMU

    7.2.1  La CPU Z80 (El Procesador)

    7.2.2  El Gate Array (El "Co-Procesador")

    7.2.3  El PAL (Programmable Logic Array)

           (Array Lógico Programable)

    7.2.4  El CRTC 6845 (Cathode Ray Tube Controller)

           (Controlador del Tubo de Rayos Catódicos)

    7.2.5  El PIO 8255 (Programmable Input Output)

           (Entrada Salida Programable)

    7.2.6  El PSG AY 3-8912 (Programmable Sound Generator)

           (Generador de Sonido Programable)

    7.2.7  El FDC 765 (Floppy Disc Controller)

           (Controlador de Unidad de Disco)

    7.2.8  El interface de impresora Centronics

           (Centronics printer interface)



  7.3  El menú de Depuración

    - Breve descripción del menú de depuración

    - Preliminares

    - Breve descripción de los commandos

    - Manipulación de registros



  7.4  Gestión de la memoria

    7.4.1  Una vez más: configuración de EMS

    7.4.2  ¿Cómo se ha realizado el Banking?



  7.5  Modificación de ROM

    7.5.1  Ignorando la ROM con el casete

    7.5.2  Modificaciones de la ROM AMSDOS



  7.6  Miscelánea

    7.6.1  Otra vez: El fichero de configuración

    7.6.2  El adaptador paralelo

       - Dirección CPC->PC

       - Dirección PC->CPC

    7.6.3  CPCTRANS



  7.7  Estructura de los fichero elegidos para CPCEMU

    7.7.1  Imágenes de Disco

       - El bloque de Información de Disco

       - El bloque de Información de Pista

    7.7.2  Ficheros Snapshot

    7.7.3  Cabecera AMSDOS

    7.7.4  Fichero de Pokes



  7.8  Histórico Interno









7.2  Minidescripción de las características Internas de CPCEMU

==============================================================





  ¿Qué grado de compatibilidad tiene CPCEMU realmente?







  7.2.1  La CPU Z80 (El Procesador)

  ---------------------------------



  + Todas las instrucciones del Z80 están emuladas, incluyendo las

    conocidas como ilegales.

    Puedes elegir entre una emulación lenta del Z80 escrita en C y una

    emulación del Z80 rápida escrita en ensamblador por Jurgen Weber.

    Mediante la técnica COCPU cada instrución del Z80 se emula

    simultáneamente por la versión lenta y la rápida, de esta forma se

    ralentiza mucho, pero comparando los registros después de cada

    instrucción se han encontrado muchos errores. Obviamente esto

    se ha usado sólamente durante el desarrolo del programa.

  + Instrucciones adicionales 'ED FC xx' sólo las conoce el emulador.

    Entre ellas la de ruptura de usuario 'ED FC FC  USER &BCFC'.



  - No hay un temporizador exacto de las instrucciones sino calibración

    de tiempo en el modo tiempo real.







  7.2.2  El Gate Array (El "Co-Procesador")

  ----------------------------------------



  + Los 32 colores del CPC (27 diferentes)

  + Los tres modos de video (X x Y x COLORES):

        modo 0 = 160x200x16

        modo 1 = 320x200x4

        modo 2 = 640x200x2

  + Banking de ROM (16KB OS, 16KB BASIC, 16KB AMSDOS y ROMs adicionales)



  - Parpadeo en los haces de colores







  7.2.3  El PAL (Programmable Logic Array)

  ----------------------------------------



  El PAL se encuentra lógicamente en la misma dirección que el gate array

  pero en hardware distinto a éste.



  + Banking de RAM (128 KB, hasta 576 KB) con memoria EMS o convencional.

    Con emulación mediante EMS los bloques se mapean por hardware, de modo

    que la velocidad es adecuada. CPCEMU proporciona una RAM de expansión

    compatible Dk'tronics de hasta 576 KB.



  - Sin EMS, el banking de RAM es muy lento, puesto que los bloques de

    memoria han de moverse de aquí para alla en la memoria base del PC.

    Además, tan sólo se dispone de 128 KB RAM.









  7.2.4  El CRTC 6845 (Cathode Ray Tube Controller)

  -------------------------------------------------



  + Base y desplazamiento de pantalla para scroll por hardware

  + Varios tamaños de pantalla desde 0x0 hasta 80x25 con los registros

    1 y 6 del CRTC

  + Direfentes tamaños de carácteres (1..7) con el registro 9 del CRTC

  + Múltiples modos (usan otros registros)



  - El Overscan no está aún implementado







  7.2.5  El PIO 8255 (Programmable Input Output)

  ----------------------------------------------



  + Teclado (connectado al PSG)

  + Emulación de VSYNC: Un bit que se activa entre dos interrupciones

    durante un refresco de pantalla. Puedes cambiar su posición.

  + El casete es muy rápido, ignorar la ROM permite acceder a cualquier

    fichero del DOS.



  - El bit VSYNC está activado demasiado tiempo

  - Los puertos de casete no están emulados, por lo que la mayoría de los

    programas que acceden a los puertos directamente no funcionan.





  7.2.6  El PSG AY 3-8912 (Programmable Sound Generator)

  ------------------------------------------------------

  

  + Bien por el altavoz interno del speaker (pésimo, puesto que

    los 3 canales se combinan en uno y el volumen no puede cambiarse),

    o por una tarjeta GUS o Soundblaster. Cualquier sonido digital con

    todo el ruido o la parte FM compatible Adlib sin ruido.



  - Sin sonido digital o demasiado bajo.





  7.2.7  El FDC 765 (Floppy Disc Controller)

  ------------------------------------------



  + Todos los comandos FDC necesarios para controlar dos unidades A y B

    (incluyendo lectura/escritura de sector, búsqueda/formateo de pista,

    lectura de sector-ID, ...)

    Formatos de disco muy flexibles (hasta 18 sectores por pista).

    Incluyendo formatos de doble cara, p.ej. VORTEX.



  - No están soportados los formatos de protección contra copia

    complicados.







  7.2.8  El interface de impresora Centronics

  -------------------------------------------



  + Salida de impresora, con parche para impresoras de 8-bits, redirigida

    a un fichero definido en PRINTER.









7.3  El menú de Depuración

==========================



  Se muestra el juego completo de registros de la CPU y puede modificarse.

  Puedes "volcar" la memoria, desensamblarla o modificarla. Puedes

  cargar o guardar áreas en memoria. Y la cosa más interesante:

  ¡Puedes ejecutar paso a paso los programas!

  (Parecido a un depurador de verdad.)

    



  Breve descripción del menú de depuración

  ----------------------------------------



  R)un T)race S)tep  A)ssem D)ump I)nput  L)oad saV)e  M)ode  F)ast Q)uit

  AF=0000 BC=0000 DE=0000 HL=0000 IX=0000 IY=0000 SP=0000 PC=0000 IR=0000

  AF'=0000 BC'=0000 DE'=0000 HL'=0000 IFF1=0 IFF2=0 IMD=0  NZ NC PO P

  0000 : 01 89 7F       LD BC,&7F89

  -f->



  La primera línea muestra los comandos disponibles, usa las letras

  mayúsculas.

  Las dos siguientes líneas muestran los valores actuales de los

  registros del Z80.

  La siguiente desensambla la instrucción que hay en ese momento en

  la posición PC y la última es un indicador de espera para meter

  tus comandos.

  (la 'f' indica que estás usando la CPU rápida.)





  Preliminares

  ------------



  Los parámetros entre corchetes son opcionales [opt].

  Usa sólo valores hexadecimales, p.ej. <dirección> = 0000-ffff

  "<ret>" indica que estás en un modo especial. Puedes pulsar <intro>

  para continuar. <Cadena><Intro> mantiene este modo

  (usar p.ej. b<intro>).

  Las letras son comandos, muchas veces seguidos de una dirección

  opcional.

  Entre la letra y esta dirección debe haber un espacio o tabulador.

  Sin una dirección se toma por defecto el PC (contador de programa).





  Breve descripción de los commandos

  ----------------------------------



  R)un: (Ejecutar)

  r [<dirección>] : comienza la emulación a partir de PC o de una dirección

    opcional

    Ejemplos:

    -f-> r      comienza la emulación a partir de PC

    -f-> r 100  pone PC a 0x100 y comienza la emulación



  T)race (trazar dentro de): (Trazar)

  t [<dirección>] : ejecuta sólo la instrucción mostrada en ese momento.

    Usar <intro> para continuar en este modo, y así sucesivamente.

    <cadena><intro> vuelve al estado normal.

    Todos los comandos de un solo paso se ejecutan en la CPU lenta (incluso

    cuando se muestra "-f->"), debido a que ya no hay contador en la CPU

    rápida.



  S)tep (paso adelante): (Paso)

  s [<dirección>] : ejecuta la siguiente instrucción.

    Más bien todas las instrucciones hasta que PC se iguala a la siguiente

    instrucción. Esto puede llevar mucho tiempo, p.e después de un 'Ret'.

    En este caso F10 puede ser útil (como de costumbre).

    Todos los comandos de un solo paso se ejecutan en la CPU lenta (incluso

    cuando se muestra "-f->"), debido a que ya no hay contador en la CPU

    rápida.



  A)ssemble (en realidad desensamblar): (Ensamblar)

  a [<dirección>] : desensambla las 16 instrucciones siguientes.

    Usa <intro> para continuar en este modo, y así sucesivamente.

    <cadena><intro> vuelve al modo normal.



  D)ump: (Volcar)

  d [<dirección>] : muestra un volcado hex/ASCII de los siguientes 256

    bytes a partir de dirección (o PC).

    Usa <intro> para continuar en este modo, y así sucesivamente.

    <cadena><intro> vuelve al modo normal.



  I)nput (modificando memoria): (Entrada)

  i [<dirección>] : muestra la dirección de memoria en la que se está

    en ese momento con su valor correspondiente, el cual puedes aceptar

    con <intro> o cambiar con <valor-hex><intro>.

    Sal de este modo introduciendo un número incorrecto como '-1':

    -1<intro> .



  L)oad (cargando un programa): (Cargar)

  l [<dirección>]  : aparece un indicador para que introduzcas un nombre

    de fichero <nombre> y lo carga desde el directorio TAPE_PATH a

    <dirección>

    Es capaz de reconocer una cabecera AMSDOS.

    Si pulsas <Intro> en el indicador aparecerá el más que conocido

    menú de selección de ficheros ...

    Ejemplos:

    -f-> l<intro> demo<intro>         :

        carga fichero 'demo' al PC actual

    -f-> l a000<Intro> miprog<Intro>  :

        carga fichero 'miprog' a la dirección 0xA000



  saV)e (guardando un programa): (Guardar)

  v [<dirección>]  : aparece un indicador para que introduzcas un nombre

    <nombre> y la longitud del bloque de memoria. Este bloque se guarda

    desde <dirección> (o PC) como fichero binario en el directorio

    TAPE_PATH, el cual incluye una cabecera AMSDOS.

    Ejemplo:

    -f-> v<intro> demo<intro> 4000<intro>    :

        guarda fichero "demo" desde PC con longitud 0x4000.



  M)ode (cambiando el modo de video): (Modo)

  m : Cambia el modo de video: visualización de registros, desensamblado

      de instructiones activado/desactivado.



  F)ast (seleccionando el tipo de emulación): (Rápido)

  f : Intercambia la emulación rápida del Z80 (desarrollada en ensamblador

    por Juergen Weber, por defecto) y la lenta (escrita en C).

    El indicativo cambia a "-f->" para rápida y "-s->" para lenta.

    Todos los comandos r, s, y t se refieren al tipo de emulación

    elegida en ese momento.



  Q)uit (saliendo del programa): (Salir)

  q : sale del emulador.





  Manipulación de registros

  -------------------------



  Además de los comandos de una letra puedes cambiar los valores de los

  registros con la siguiente sintaxis:  '<registro>=<valor-hex>'

  Ejemplos:

  - af=345        : pone el registro AF a 0x0345

  - pc=a000       : pone le contador de programa a 0xA000



  También puedes escribir '<registro><espacio><valor-hex>'.

  Puedes modificar todos los registros mostrados, p.ej.

  AF, BC, DE, HL, IX, IY, SP, PC, IR, AF', BC', DE', HL',

  y también IFF1, IFF2 y IMD.











7.4  Gestión de la memoria

==========================





  7.4.1  Una vez más: configuración de EMS

  ----------------------------------------



    Necesitas un gestor de memoria expandida que soporte el estándar

    LIM 4.0 (LIM EMS 4.0). Este gestor de memoria debe suministrar páginas

    EMS extensas en cualquier región, ya que CPCEMU buscará 6 páginas

    físicas en direcciones contiguas. Si el uso de EMS es posible aparecerá

    un contador de memoria 'EMS xxx Bytes ok.' durante la inicialización



    Se te indicó que usarás los siguientes parámetros bajo OS/2:



        EMS_FRAME_LOCATION = auto

        EMS_HIGH_OS_MAP_REGION = 32     (o más)

        EMS_LOW_OS_MAP_REGION = 0       (o más)



    ¿Qué significa eso?

    "Low region" es para páginas EMS en memoria convencional. Si CPCEMU

    ha de usar estas páginas pon al menos 6*16KB = 84KB.



    "High region" es para páginas EMS por encima de los 640K, añadidos

    a los 64KB del marco estándard. Pon al menos 2*16KB = 32KB.





    Para DOS Se te indicó que incluyeras las siguientes líneas en tu

    CONFIG.SYS:



        DEVICE=C:\DOS\HIMEM.SYS

        DEVICE=C:\DOS\EMM386.EXE 1024

        ...



    Modifica el 1024, dependiendo de la cantidad de memoria disponible en

    tu ordenador.



    Comentarios:

    EMM386 suministra varias páginas extra en memoria convencional.

    La dirección mínima puede cambiarse con la opción /B=<segmento>

    (por defecto es 4000).

    Con /P<número>=<segmento> es posible cambiar los segmentos de

    páginas físicas.









  7.4.2  ¿Cómo se ha realizado el Banking?

  ----------------------------------------



    El Banking se usa para permitir que algunos ordenadores domésticos

    tengan RAM y ROM en las mismas direcciones. De modo que la lectura

    se haga en ROM y la escritura en RAM. El Amtrad CPC tiene 64K de RAM,

    una ROM de 16K en 0-3fff y otra en c000-ffff:



        0 RAM 0000-3fff

        1 RAM 4000-7fff

        2 RAM 8000-bfff

        4 RAM c000-ffff

        L ROM 0000-3fff

        U ROM c000-ffff



    La idea básica es tener diferentes segmentos y desplazamientos para

    leer y escribir. Para cada acceso de lectura se añade un

    desplazamiento de lectura a la dirección deseada, y se hace lo mismo

    con un desplazamiento de escritura para cada acceso de escritura.



                        estado 0                 estado 1



        bloque 5   M       L   c                W  0       <

        bloque 4   M    W  C   c                W  C   c    | intercambio

        bloque 3   M    W  8 b c                W  8 a c    | en el cambio

        bloque 2   M    W  4 b c                W  4 a c    | de estado

        bloque 1   M    W  0 b                     L a c   <

        bloque 0   M       U b                     U a





    (M = memoria convencional o páginas EMS físicas)



    a = ROM baja activada,    ROM alta activada

    b = ROM baja desactivada, ROM alta activada

    c = ROM baja activada,    ROM alta desactivada

    W = ROM baja desactivada, ROM alta desactivada



    Para cambiar de uno a otro estado el bloque '0' y el 'L' deben

    intercambiarse. Para banking de RAM un '0' nuevo debe intercambiarse

    con el viejo. La selección de ROM se realiza copiando la nueva ROM

    a 'U'.



    Con memoria EMS, el banking se realiza por el hardware de EMS (o por

    su emulación). Esto incrementa la velocidad de la emulación en BASIC

    y en CP/M Plus. Ahora puedes comprender porqué se hacen necesarios

    6 páginas físicas de EMS contiguas; el marco estándar de 4 páginas

    es insuficiente.











7.5  Modificación de ROM

========================





  7.5.1  Ignorando la ROM con el casete

  -------------------------------------



    Introduciendo el comando '|TAPE', o si la ROM AMSDOS está desactivada,

    se direcciona el casete. Los accesos del casete se transforman en

    acceso a ficheros de un directorio. Esta redirección se consigue

    ignorando una ROM.

    Con 'TAPE_BYPASS=1' activas que se ignore la ROM en los vectores

    del casete.

    Si CPCEMU encuentra una ROM conocida de un CPC 464/664/6128, ésta

    se modifica según el caso. Es necesario ignorar la ROM si quieres

    usar el casete.



    Algunas instrucciones especiales están implementadas en la emulación

    del Z80. Estas realizan llamadas a funciones especiales que sólo

    están soportadas por el emulador. Tales funciones se introducen

    directamente en la ROM, por lo que sigue siendo posible parchear

    los vectores de la RAM.



    Están disponibles las siguientes instruciones:

    ED FC xx  USER &BCxx    (sólo válidos para algunos vectores de la RAM)

    Parecido a una instrucción de llamada a una función interna.

    Los siguientes valores para xx son legales:

        65      :       CASSETTE INIT (BC65)

        77      :       CASSETTE IN OPEN (BC77)

        7A      :       CASSETTE IN CLOSE

        7D      :       CASSETTE IN ABANDON

        80      :       CASSETTE IN CHAR

        83      :       CASSETTE IN DIRECT

        86      :       CASSETTE RETURN

        89      :       CASSETTE TEST EOF

        8C      :       CASSETTE OUT OPEN

        8F      :       CASSETTE OUT CLOSE

        92      :       CASSETTE OUT ABANDON

        95      :       CASSETTE OUT CHAR

        98      :       CASSETTE OUT DIRECT

        9B      :       CASSETTE CATALOG



    Además de eso, puedes utilizar la instrucción de ruptura de usuario

    ED FC FC  USER &BCFC. Esto detiene la emulación enseguida.







  7.5.2  Modificaciones de la ROM AMSDOS

  --------------------------------------



    - Con 'AMSDOS_DISABLE=1' inhabilitas la inicialización del AMSDOS.

      Por lo que se desactiva el parcheo de los vectores de casete por

      la ROM AMSDOS. (Luego los vectores de casete siguen apuntando al

      casete, aun cuando la ROM AMSDOS se inicialice.) Esto es necesario

      si quieres seguir cargando de casete después de un reset de disco,

      pero sin haber introducido el comando '|TAPE' antes.

      (Esto se hace con 'poke &CCF2,&18: poke &CCF3,&05' en la ROM AMSDOS.)

      Las instrucciones para sector no se ven afectadas, ya que siempre

      direccionan el disco.



    - 'AMSDOS_SPEEDUP=1' habilita una modificación de la ROM AMSDOS, la

      cual minimiza los tiempos de espera del motor lo que redunda en un

      acceso a disco más rápido.

      (La gestión de estas cosas la reliza DOS, por lo que no son

      necesarios los bucles de espera.)

      Los bytes siguientes se modifican en la ROM AMSDOS:

          poke &C5D4,&01  :'tiempo de carga del motor

          poke &C5D8,&01  :'tiempo de formateo de pista

          poke &C5D9,&01  :'espera corta

          poke &C5DA,&01  :'espera corta

          poke &C602,&01  :'sólo 1 reintento en caso de error

          poke &C784,&01  :'búsqueda rápida

          poke &C7E2,&01  :'búsqueda rápida









7.6  Miscelánea

===============







  7.6.1  Otra vez: El fichero de configuración

  --------------------------------------------



    Puede que recuerdes que los comentarios empiezan con punto y coma ';',

    y pueden comenzar en cualquier sitio de una línea. El resto de la línea

    se ignora.

    Los blancos, tabuladores, nuevas líneas y ';' son delimitadores, y no

    importa cuantos uses.

    Muchas de las definiciones tienen la forma sintáctica

    <palabra-clave> '=' <valor> {T}

    {T} es una secuencia de al menos un delimitador.

    Ejemplo:

      ROM_PATH = ".\ROM"



    <número> puede especificarse en formato decimal, hexadecimal (con 0x)

             o binario (%).

    <nombrepath> puede tener una longitud de hasta 80 caracteres y

    <nombre de fichero> hasta 20 caracteres.



    Información suplementaria para seleccionar palabras-clave:





    BREAK_MASK = <número>               (3)



      De cara a depuración sólo.

      Algunos eventos interrumpen la emulación normal. Con esta flag

      puedes desactivar tales eventos. ¡Usalo con precaución!

      Deja todos los bits activados excepto aquellos para los eventos

      que no quieras que ocurran.

      b2 = 0 -> desactiva la visualización de errores en el puerto (usa 3)

      ¡El significado de los bits puede cambiar más adelante!











  7.6.2  El adaptador paralelo

  -----------------------------



    Lo primero, la construcción del adaptador, ahora con descripción

    funcional:





    PC  D-SUB   Cent.   CPC             Función

    --------------------------------    ---------------------------

    GND    19 ---- 19   GND             GND

    BUSY   11 <--- 1    -STROBE         Synchro (Dato disponible)

    -ACK   10 <--- 8    D6              |

    PE     12 <--- 7    D5              | Data

    SELECT 13 <--- 6    D4              |

    -ERROR 15 <--- 5    D3              |

    D0      2 ---> 11   BUSY            Synchro (Listo para recibir)





    Dirección CPC->PC

    -----------------



    De normal el adaptador está diseñado para esta dirección solamente.

    El envío en un CPC es, en principio, lo mismo que imprimir en una

    impresora en línea. Si el PC activa Not-BUSY (no ocupado), el CPC

    escribe un nibble (4 bits de un byte) al puerto, activa STROBE como

    señal de que el dato ya está ahí, y lo desactiva a continuación. De

    modo que el PC tan solo necesita desactivar BUSY (con D0), esperar

    el STROBE (su línea BUSY) y tomar el nibble (de la línea de entrada

    impresora->PC), y activar BUSY.

    Pregunta: ¿Por qué no enviar 8 bits en paralelo?

    Respuesta:

    1. El puerto de impresora del PC debe reprogramarse para la entrada

       y no estoy seguro de que esto sea posible en todos los PCs y

    2. El CPC tan solo tiene un puerto de impresora de 7 bits.





    Dirección PC->CPC

    -----------------



    Un día me planteé la posibilidad de enviar datos en la otra dirección.

    Desgraciadamente el CPC únicamente tiene una sola línea de entrada en

    el puerto de impresora, llamada señal BUSY. Así que no mejoraría la

    situación si se intentara diseñar un adaptador mejor para esta

    dirección.

    Por lo tanto, toma lo que ya tienes y sácale todo lo que puedas

    desarrollando un protocolo más sofisticado.

    Un interface serie también tiene una única línea de entrada para cada

    dirección.

    Pero, el interface serie usa sincronización por hardware, normalmente

    mediante cuarzo, y ambos lados han de usar exactamente la misma

    velocidad en baudios (p.ej. 1200 baudios).

    Es muy complicado hacer todo eso por software solamente.

    ¿Qué puedo hacer?

    La idea es aprovechar la ventaja de velocidad del PC respecto del CPC.

    Cada byte se divide en 8 bits y se transmiten en serie, el PC tiene

    que activar la línea BUSY según cada caso.

    Durante estos 8 bits el CPC funciona a su máxima velocidad y el PC ha

    de adaptarse a ésta. El CPC escribe una "solicitud de bit" con una

    instrucción en ensamblador. En ese momento el PC debe reaccionar

    puntualmente activando la línea BUSY de acuerdo al siguiente bit.

    Puesto que con la siguiente-excepto-una (?) instrucción el CPC

    lo leerá.

    Para no tener que inhabilitar las interrupciones durante toda la

    transferencia se establece una conexión por cada byte.

    El CPC dice "¡Oye, envíame algo¡", y el PC responde "De acuerdo,

    pero esperaré hasta que tu lo quieras." activando la línea BUSY.

    El proceso entero está protegido con un temporizador, de modo que

    ningún extremo pueda bloquearse cuando este esperando una señal

    que nunca se ha enviado.

    Por esto puedes salir de los programs con <ESC> o <CRTC>+<BREAK>

    en cualquier momento.









  7.6.3  CPCTRANS

  ---------------



    Otra opción no mencionada es "/d 0" or "/d 1". Con 1 se selecciona

    un modo especial de doble paso, en unidades de 80 pistas cada

    segunda pista se omite al trabajar con discos de 40 pistas.

    Esta opción no debería hacer falta, ya que CPCTRANS cambia

    automáticamente a doble paso cundo detecta un disco de 5.25" de

    360 KB.



    Normalmente es muy simple leer o escribir sectores usando la BIOS.

    Pero la BIOS no puede manejar la cara B de discos con marca-cabezal = 0.

    Por esto tuve que programar las funciones del FDC yo mismo, con la

    ayuda del fuente del MINIX como esquema base. Desgraciadamente el

    fuente del MINIX contiene algunos errores, y la temporización en

    partes críticas estaba hecha mediante simples bucles de retardo,

    posiblemente diseñados para un procesador 8086.









7.7  Estructura de los fichero elegidos para CPCEMU

===================================================





  7.7.1  Imágenes de Disco

  ------------------------



    Las imágenes de disco se componen de un bloque de información de

    disco de 0x100 bytes, y para cada pista un bloque de información de

    pista de 0x100 bytes, seguido de los datos para cada sector en esa

    pista.

    El nuevo formato extendido de disco está orientado a los discos

    protegidos contra copia. Las partes que son nuevas en el formato

    extendido están marcadas con *E*

    (sacado de nuestra Propuesta de Formato Extendido de DISCO, Rev.5.)





    El bloque de Información de Disco

    ---------------------------------

    Byte (hex): Significado:

    00 - 21      "MV - CPCEMU Disk-File\r\nDisk-Info\r\n"

                 ("MV - CPC" es lo distintivo)

            *E*  "EXTENDED CPC DSK File\r\n\Disk-Info\r\n"

            *E*  ("EXTENDED" es lo distintivo)

    22 - 2F      sin usar (0)

            *E*  creador del DSK (nombre de la utilidad) (¡no hace falta

                 que termine en \0 !)

    30           número de pistas (40, 42, puede que 80)

    31           número de cabezales (1 ó 2)

    32 - 33      tamaño de una pista (incluyendo los 0x100 bytes de la

                 información de pista)

                 Con 9 sectores * 0x200 bytes + 0x100 bytes por pista

                 info = 0x1300.

            *E*  sin usar (0)

    34 - FF      sin usar (0)

            *E*  bytes altos de los tamaños de pista para todas las pistas

                 (calculado de la misma forma que 32-33 para el formato

                 normal).

                 Para formatos de una sola cara la tabla contiene los

                 tamaños de pista de una sola cara, de lo contrario es

                 para dos caras alternantes.

                 Un tamaño con valor 0 indica una pista sin formato.

                 Tamaño real de los datos de la pista =

                 = valores de la tabla * 256

                 Hay que tener en cuenta siempre que la imagen contiene

                 256 bytes adicionales por cada información de pista.





    El bloque de Información de Pista (para cada pista)

    ---------------------------------------------------

    Byte (hex):  Significado:

    00 - 0C      Track-Info\r\n

    0D - 0F      sin usar (0)

    10           número de pista (0 al número de pistas-1)

    11           número de cabezal (0 or 1)

    12 - 13      sin usar (0)

    Parámetros del formato de pista:

    14           BPS (bytes por sector) (2 para 0x200 bytes)

    15           SPT (sectores por pista) (9, como mucho 18)

    16           Formato GAP#3 (gap para formatear; 0x4E)

    17           Byte de relleno (byte de relleno para formatear; 0xE5)

    Información del sector (para cada sector de una vez):

    18+i         número de pista    \

    19+i         número de cabezal   | información ID del sector

    1A+i         número de Sector    |

    1B+i         BPS               /

    1C+i         Código de error en estado 1 (0)

    1D+i         Código de error en estado 2 (0)

    1E+i,1F+i    sin usar (0)

             *E* Tamaño de los datos del sector en bytes (pequeña notación

                 final)

                 Esto permite distintos tamaños de sector en una pista.

                 Se calcula como  (0x0080 << BPS reales).





    Anotaciones:

    Los datos del sector deben estar a continuación del bloque de

    información de pista en el orden de los IDs de los sectores.

    No puede omitirse ninguna pista o sector.

    En los formatos de doble cara las pistas son alternativas,

    p.ej. pista 0 cabezal 0, pista 0 cabezal 1, pista 1 ...

    Usa CPCTRANS para copiar discos del CPC con este formato.







  7.7.2  Ficheros Snapshot

  ------------------------



    Los ficheros snapshot se componen de una cabecera de 0x100 bytes

    y un volcado de memoria.



    La cabecera Snapshot:

    Byte (hex):  Significado:

    00 - 07      'MV - SNA' (como distintivo)

    08 - 0F      sin usar (0)

    10           versión de snapshot (2, antes 1)

    11 - 1A      registros Z80 AF, BC, DE, HL, R, I

    1B - 1C      flags Z80 IFF0, IFF1 (0=desactivado, 1=activado)

    1D - 24      registros Z80 IX, IY, SP, PC

    25           modo de interrupción del Z80 IMD (0 - 2)

    26 - 2D      registros Z80 AF', BC', DE', HL'

    2E           Gate Array: número de registro de tinta

    2F - 3F      Gate Array: valor de registro de tinta (0, 1, ..., 15, 16)

    40           Gate Array: registro de multi configuración

    41           Gate Array: registro de configuración de RAM

    42           CRTC: registro de dirección

    43 - 54      CRTC: registro de datos (0, 1, ..., 17)

    55           Número de ROM alta

    56 - 59      PIO: puerto A, puerto B, puerto C, puerto de control

    5A           PSG: registro de dirección

    5B - 6A      PSG: registro de datos (0, 1, ..., 15)

    6B - 6C      tamaño del volcado de memoria (64K ó 128K)

    (los parámetros siguientes aparecen sólo en snapshot con versión 2.0

     en adelante:)

    6D           modelo de CPC en el que se ha generado el snapshot

                 (0=CPC 464, 1=CPC 664, 2=CPC 6128, 3 = desconocido)

    6E           número de interrupción (0..5), la última interrupción

                 ocurrida durante un ciclo de refresco de pantalla.

    6F - 74      6 bytes multimodo, por tanto modos de pantalla (0..2)

                 para las interrupciones 0..5.

    75 - FF      sin usar (0), puede que más adelante para configuración

                 de emuladores











  7.7.3  Cabecera AMSDOS

  ----------------------



    Byte (hex):  Significado:

    00           número de usuario (0 , valores posibles 0-15)

    01 - 0F      nombre de fichero+extensión (posiblemente rellenado con 0)

    10           número de bloque (0)

    11           flag del último bloque (0)

    12           tipo de fichero (0=basic, 1=basic protegido, 2=binario,...)

    13 - 14      tamaño del bloque (0)

    15 - 16      dirección de carga (0-FFFF)

    17           primera flag de bloque (0)

    18 - 19      tamaño lógico (0-FFFF)

    1A - 1B      dirección de entrada (0-FFFF)

    1C - 3F      de uso libre para el usuario (0)

    40 - 42      tamaño real de un fichero (1-FFFFFF)

    43 - 44      checksum de los bytes 00-42

    45 - 7F      sin usar (valores aleatorios del buffer del sector)



    Anotación:

    Hay una cabecera al principio de todos los ficheros que no son ASCII.

    Se le identifica calculando el checksum.

    Los bytes 00-3F se originan en el "area de casete", donde los ficheros

    se habrán distribuído en bloques.

    Los bytes 12, 15-16, 1A-1B, 40-42, 43-44 son necesarios.





  7.7.4  Fichero de Pokes:

  ------------------------



  Un elemento (una línea) se compone de 7 partes, cada un encerrada

  entre '"', y separadas por comas.

  1. número de la parte (1 caracter, 0-F):

     El primer elemento tiene número 0 y es seleccionable.

     Si un programa necesita más de un poke el resto de elementos tiene

     los números 1, 2, ...

  2. Nombre del programa (hasta 20 caracteres)

  3. Descripción (hasta 20 caracteres)

  4. Tipo (1 caracter):

     ('t'=Cinta, 'd'=disco, 'a'=todos), actualmente ignorado.

  5. Dirección del poke (4 caracteres, hexadecimal):

     Especifica la posición de memoria a modificarse

  6. Byte para el poke (2 caracteres, hexadecimal o '??'):

     Si es '??' debes introducir un valor, p.ej. número de vidas.

  7. Byte antiguo (2 caracteres, hexadecimal o '??'):

     Permite verificar si el poke modifica el entorno correcto.

     Si el byte en esa dirección es distinto al byte antiguo, se muestra

     un mensaje de aviso. No hay verificación cuando se usa '??'.



  Ejemplo:

    "0","Devils Crown","oxígeno infinito","t","863b","00","??"

    "1","","","t","863c","00","??"

    "2","","","t","863d","00","??"



    Aquí se mustran tres pokes para el programa "Devils Crown", los tres

    van juntos. Los valores antiguos se desconocen por lo que el byte

    antiguo es '??'.

    Puedes omitir el nombre y la descripción en los elementos siguientes.











7.8  Histórico Interno

======================





  Z80EMU (sólo un Z80 con poco CPC)

  ---------------------------------



  - v1.0 (1991)

    primera versión en Pascal (sólo emulación del Z80)

  - v1.2 (12/8/1992 - 16/8/1992)

    primera versión en C (traducido con TPTC)

    problemas en el Z80: ADD HL..., DAA, LDIR activaban P-flag

    incorrectamente. BIT... activaba Z-flag incorrectamente, las

    intrucciones rotate activaban Z-flag y S-flag incorrectamente;

    ya es posible usar ROMs.

  - v1.3 (18/8/1992)

    direccionamiento de puerto errónea: byte bajo incorrecto. Nueva gestión

    de memoria con RAM de 128 KB y ROM de 32 KB

  - v2.0 (18/8/1992 - 22/8/1992)

    implementada la ténica de COCPU para encontrar errores (la COCPU usa

    memoria aparte y sólo se activa en un modo especial de depuración).

    problemas en el Z80: AND... activa H-flag incorrectamente,

    CPI... activa N-flag incorrectamente. Anteriormente la pantalla sólo

    estaba en blanco y negro, ahora ya es azul y amarillo como en un CPC

    real.

  - v2.1 (25/8/1992 - 27/8/1992)

    Emulación de todos los pinceles, colores en todos los modos. La

    escritura se realiza sólo en la pantalla activa, que es la que tu

    ves. La COCPU encontró un error: todas las instrucciones que contenían

    (IX+zz) con una separación negativa ¡ eran erróneas ! Se había olvidado

    tomar el "caracter signo".

  - v2.2 (30/8/1992 - 3/9/1992)

    Nueva rutina de teclado, la paleta se actualiza sin parpadeos

    (esperando el HSYNC).

    Se introduce la "ROM necesaria" con COPYMATE.

  - v2.3 (15/9/1992 - 19/9/1992)

    Emulación de FDC para cargar/guardar sectores. La COCPU encontró un

    error: LD XH,... era LD H,...

  - v2.3b (19/9/1992)

    Se realiza actualización de pantalla sólo si la pantalla está en

    los bloques de RAM 0..3 (y no 4..7);

    Se hace el puerto FCxx un alias para FBxx (para CP/M Plus). En ese

    momento no sabía que OUTI... pre-decrementaba el registro B.

  - v2.4 test (25/10/1992)

    Ya sólo se desea emular el registro R (para "DEFINE"). Ahora la

    actualización de pantalla se realiza cada interrupción nth y no

    por cada byte individual escrito en memoria.

    (Aún muy lento, debido a que está todo hecho en C). Nueva gestión

    de memoria con bloques alineados a segmentos.

  - v2.5 test (31/10/1992)

    Se cambia la gestión de memoria. Scroll por hardware y tamaños

    diferentes de pantalla son ya posibles.

  - v2.6 test (5/11/1992)

    Nuevo controlador de teclado por Arnt Gulbrandsen: son posibles todas las

    combinaciones de teclas. Actualización de pantalla en ensamblador.

  - v2.7 test

    Intento sin éxito de incluir la rápida emulación del Z80 de Juergen

    Weber.

  - v2.8

    Mejorada la actualización de Pantalla: Sólo las partes que cambian

    son modificadas en pantalla.

  - v2.9

    Se usa el Timer del PC para generar interrupciones con 300 Hertzios.

    La emulación rápida funciona sólo si no se usa banking de ROM.



  CPCEMU (ahora un CPC)

  ---------------------

  - v0.2 (23/12/1992), continuación de Z80EMU v2.9

    Después de casi 4 horas analizando con el Turbo Debugger, he encontrado

    el fallo que bloqueaba la emulación rápida: PUSH ES en lugar de PUSH DS.

  - v0.3 (28/12/1992 - 29/12/1992)

    Activar N-flag para INI, OUTI. En el Z80 rápido CPI activa las flags

    erróneas. RL (HL) utilizaba lectura de segmento (en DS) en lugar de

    escritura de segmento (en ES). LD A,R ahora produce números aleatorios.

    Se incorporan todas las rutinas de Casete (aunque CASSETTE IN CHAR era

    incorrecto).

  - v0.4 (1/1/1993)

    IN A,(n): A a b8..b15 (en lugar de B). Configuración de RAM 0xC3:

    corregida a 0,3,2,7 (para CP/M Plus). El KC-Compact (un compatible CPC

    del antiguo DDR) usa los puertos EE00 - EE3D, ¿pero para qué?

  - v0.5 (28/1/1993 - 8/2/1993)

    INIR,... el incremento del regsitro R depende de B, no de BC.

    CASSETTE IN CHAR arreglado (parche erróneo para el CPC 6128).

  - v0.6 (23.3.1993 - 24.5.1993)

    Alguien comentó que las instrucciones OUTI ¡pre-decrementaban el

    registro B! Se compilan las partes en C con código 386 (con Borland

    C++ v3.1). Las imágenes de disco llevan el sufijo .DSK. CPCREAD.PAS

    corregido (el cabezal no se inicializaba a 0) y convertido a CPCREAD.C.

    Mejorado el direccionamiento de puertos del PIO (la CPU puede leer,

    incluso cuando el puerto está programado para salida, ...)

  - v0.7 (26/7/1993 - 29/8/1993) (no publicada)

    Fuente renovado completamente, modularizado, ...  Fichero de

    configuración, es posible incluir más ROMs. Cambiado el nombre de

    la compañía de 'Schneider' a 'Amstrad'. (Se puede seleccionar entre

    varios nombres.)  Error en el banking de RAM removido. Nueva

    documentación en Alemán.

  - v0.8 (30/8/1993 - 9/9/1993)

    Emulación lenta: mejoradas las instrucciones con paridad mediante el uso

    de una tabla que no sólo sirve para paridad. Z80: Se ignora ED xx con

    xx ilegales. Nueva documentación en Inglés.

  - v0.8a (10/9/1993 - 15/9/1993)

    Error grave en la emulación rápida: Si se ejecuta una instrucción

    DD CB xx y se produce una interrupción, ¡la instrucción se ignora!

  - v0.8b (16/9/1993 - 21/9/1993)

    Implementado un VSYNC "real", si VSYNC_CT = 0. Problema en el puerto

    PIO A arreglado: OUT &F400,xx con el Puerto A en modo de entrada era

    ignorado. Nueva rutina para joystick de Martin Zacho.

  - v0.8c (22/9/1993 - 13/12/1993)

    Verificada la documentación con "ispell". La emulación no comenzaba si

    "USE_JOYSTICK=1" y no había un joystick disponible (PUSH AX en el sitio

    equivocado). Emulación lenta: DAA corregido (los corchetes habían

    desaparecido desde la versión v0.8). Parche erróneo para el CPC 664

    en la rutina de interrupciones. Este parche reemplazaba EI con NOP

    para evitar el problema con EI (activar las interrupciones una

    instrucción más tarde). Ahora corregido para todos los CPCs.

  - v0.8d (14/12/1993 - 29/12/1993)

    Emulación de FDC re-escrita para formatos de doble cara. CPCTRANS

    sustituye al antiguo CPCREAD y permite leer discos Vortex una vez

    instalado el parche 720KB.COM. Aparte de eso, se pueden escribir

    imágenes de disco de vuelta al disco. Nueva selección de ficheros

    al pulsar F3. Se introducen algunos alias para direcciones de puertos,

    p.ej. &7000 - &7f00 para direccionar el gate array, &0c00, &1c00, &2c00,

    &3c00, &bc00 para el CRTC. Se activa la emulación del registro R.

  - v0.9 alfa (30/12/1993 - 20/1/1994)

    Memoria EMS posible con una configuración especial de EMS/UMB. Dígitos

    binarios en el fichero de configuración. Direccionamiento del banking

    de RAM arreglado: el emulador aceptaba &d0-&ff como &c0-&c7.

    Ahora hasta 576 KB de RAM con EMS.

  - v0.9b (21/1/1994 - 31/1/1994)

    Uso de EMS simplificado mediante EMS extendida (o LIM EMS 4.0) con más

    de 4 páginas físicas de EMS. Selección de ficheros añadida a 'l' (menú

    de depuración), RUN" .

  - v0.9c (1/2/1994 - 29/4/1994)

    Algo de sonido pésimo por el altavoz interno del PC (desactivarlo con

    F4). Selección de ficheros también con 'v'; corregida la documentación

    en Inglés; sonido por Soundblaster (puede mejorarse); nuevo CPCTRANS

    con línea de comandos, acceso directo al FDC; testeado el adaptador

    paralelo y mejorado el software. Z80 rápido: INC (HL), DEC (HL),

    INC (IX+n), DEC (IX+n) para RAM por debajo de la ROM arreglado.

    PgUp, PgDn para mover pantallas demasiado grandes; se muestran partes

    de pantallas overscan.

    Ahora es posible: snapshots de 64K.

  - v0.9d (30/4/1994 - 12/5/1994)

    Las interrupciones durante DI no se omiten, y éstas ya no se activan

    directamente después de una instrucción EI. Nuevas funciones para el

    color: ahora sin nieve en OS/2. Z80 rápido: incrementada la velocidad

    de lectura de código.



  - v1.0 (13/5/1994 - 20/5/1994)

    Mejorada la parte de pantalla: direfentes tamaños de caracter desde 1

    hasta 8. Selección de ficheros añadida a SAVE" , añadida selección

    rápida pulsando una letra. Mejorado CPCTRANS con una opción de

    verificación. Nuevo menú de configuración pulsando F7. De este modo

    se puede desactivar el parpadeo de color.



  - v1.0a (21/5/1994 - 9/6/1994)

    Mejorado el menú de configuración con entrada directa o teclas de

    cursor, añadido esquema de teclado Alemán, añadida opción de retardo

    simple. Visualización correcta de tamaños de pantalla más pequeños

    (sin trozos de las más grandes). Mejorada la parte rápida del Z80:

    RRA,RLA, ... más rápidos, instrucciones CB xx más rápidas. Añadidas

    más instrucciones ilegales (ED xx). ¡ Faltaban LD D,XH y LD YL,YH !

    Corregido CPDR, CPIR con BC=0 (0 equivale a 65536 en un Z80, pero

    ¡si que es 0 para el prefijo REPE del 80x86!). Corregidas las flags

    DAA. Nuevo software para el adaptador paralelo: ahora es posible

    enviar al CPC. Gracias a Bernd Schmidt por apuntarme que una

    interrupción incrementa el registro R en 1. Con esta ayuda la

    emulación del registro del puerto C del PIO se ha mejorado.



  - v1.1a (10/6/1994 - )

    Surge una nueva era para CPCEMU: ¡Amstrad ha permitido el uso de las

    ROMs!

    Cambios en el fichero de configuración: ROM_BLOCKS -> ROM_BLOCK,

    DISC_BYPASS -> DISABLE_ADOS, ya no hace falta un espacio de separación

    para '='. Cambios en la parte del sonido, en la parte gráfica: tamaño

    vertical por el VGA-CRTC. La calibración del Joystick se encuentra ahora

    en el menú de configuración, se han mejorado las rutinas de casete para

    guardar. Mejorada la parte del FDC: ahora puede usarse COPYMATE. Puede

    insertarse discos con formato distinto al de datos (data) sin error de

    lectura (sin búsqueda de la pista 0). Un retardo más en CPCTRANS,

    espero que yano haga falta usar el botón de turbo; formateo de imágenes

    de disco. Corregido una vez más el puerto C del PIO: se desactiva

    después de out &7f00,n. Grandes cambios en el fichero de configuración:

    Ahora con configuración condicional (#IFCPC, #ENDIF). Cambiadas algunas

    palabras clave (VSYNC_CT -> /, DISC_PATH -> /, SNAP_PATH -> SNAPSHOT,

    DRV_A -> DRIVE_A, DRV_B -> DRIVE_B). Craga de programas desde archivos

    ZIP. Hace falta PKUNZIP.



  - v1.1b (17/8/1994 - 2/9/1994)

    Se introducen los multimodos, eso significa que puede haber varios

    modos de pantalla simultáneos en la misma pantalla. La actualización

    de pantalla se ha dividido en hasta 6 áreas, cada una de ellas se

    actualiza cuando se produce una interrupción. (Puede mejorarse.)

    Ahora es posible: Snapshots de 128K, ampliado para multimodos.

    CPCPARA mejorado: Ahora pueden transferirse ficheros binarios con

    cabecera. Se ha incluido detección del CPC 6128 Plus. Se han incluido

    más alias para puertos.



  - v1.2 (3/9/1994 - )

    Esta versión se publicó. Fundamentalmente hay cambios en el menú de

    ayuda.



  - v1.2a (27/9/1994 - )        (estuvo disponible como UPD12A.ZIP)

    Selección de Ficheros: Sólo se muestran las unidades disponibles.

    Y: Con el driver ANSI.SYS el fondo de algunos textos era negro.

    TMP_PATH: Se puede especificar una unidad sin path.

    Shell de DOS (F7): CPCEMU se mueve primero a XMS, EMS o disco, de modo

    que hay mucha más memoria en el shell de DOS. (Esta caracteríastica

    se ha tomado del Programa de Dominio Público SWAP300.ZIP por Marty

    Del Vecchio.)

    La actualización de pantalla podría corromperse si el ancho de

    pantalla no era divisible por 4.

    Otra versión de CPCEMU para lograr más velocidad si cabe: C2.EXE. Usa

    una gestión de memoria distinta, con dos marcos de EMS de 64KB cada.

    Uno para lectura y otro para escritura. Pero funciona únicamente con

    EMS.

    Las ROMs también tienen (c) de Locomotive Software, no sólo de Amstrad.



  - v1.2b (  )

    No había sonido estéreo en una Soundblaster Pro, incluso si así lo

    ponía la configuración. Si no se encontraba una Soundblaster no había

    sonido hasta que se usaba USE_SB=0.

    Z80 rápido: Cambiados algunos accesos word a accesos byte.

    Es un poco más lento pero no bloquea el ordenador cada vez que se

    realiza un acceso word a la dirección 0xffff.

    Z80 rápido: Corregido el problema con EI HALT DI: La dirección a HALT

    era metida en la stack en lugar de la de DI.

    Documentación en Inglés corregida.

    Mejorados CPCPARA y PCPARA v1.1: test del adaptador test, mucha más

    velocidad en CPC->PC: approx. ¡1600 bytes por segundo leyendo de

    disco! (486/66) llegaron a medirse.

    De este modo pueden transferirse ¡16KB en 10 segundos! Gracias a Klaus

    Weber por apuntarme que era demasiado lento.

    En PCPARA había un DELAY(1) después de cada nibble para esperar un

    milisegundo. Esto no hace falta.



  - v1.2c (28/2/1995 - )        (estuvo disponible como UPD12C.ZIP)

    Algunas partes de CPCEMU re-escritas en C++. Esto permite funciones

    inline e interface mejorado para mantener un mejor control del

    proyecto.



  - v1.2d (16/3/1995 - )      (sólo para 'subscriptores' del mailing list)

    Z80 rápido: Cambios internos no visibles para el usuario, excepto un

    pequeño incremento de velocidad. Ahora todos los datos se mantienen

    en el segmento de datos en lugar del segmento de código.

    Por fin se introdujo el modo absolutamente necesario para ordenadores

    rápidos: 'realtime CPC' ('CPC a velocidad real') (Seleccionable en el

    menú de configuración o con REALTIME=1).



  - v1.3 (16/4/1995 - )

    Fichero de pokes para pokear fácilmente, documentación en

    Francés, comando para formateo en el FDC (re-formatea imágenes de

    disco del mismo tamaño), nuevo sistema de manús con soporte de ratón

    (MOUSE=1), pueden insertarse imágenes de disco con atributo de

    sólo-lectura (deben insertarse como "read only"), menú de depuración:

    añadido 'find'



  - v1.3a (30/4/1995 - )        (estuvo disponible como UPD13A.ZIP)

    Con la versión v1.3 Boulder Dash no funcionaba, aún cuando sí lo

    hacía en la v1.2. El modo 2 de interrupciones del Z80 no estaba

    simulado correctamente (omitido PUSH/POP). La emulación lenta del

    Z80 tenía un bug parecido.

    CPCTRANS: Opción -f 6 activada.



  - v1.3b (20/5/1995 - )        (está disponible como UPD13B.ZIP)

    Algunos usuarios comunicaron que no había sonido en la Soundblaster

    desde la versión 1.3.



  - v1.4 (v1.3c)

    Soporte de sonido GUS por Ulrich Doewich; ayuda en línea en Inglés,

    Alemán, Francés y Español; documentación en Francés completa;

    soporte para 2 joysticks; modos de video VESA para altas resoluciones;

    mejorado el menú y el fichero de configuración; añadidas opciones para

    cargar y guardar en el menú de configuración; mejoradas las rutinas

    del FDC para formatos no estándares; formato de disco extendido;

    colores y teclas configurables por el usuario;

    CPCTRANS mejorado (v2.3); nuevo SNA2GIF (v1.1);

    emulación del Z80 rápida: algunas veces la pantalla no se borraba

    completamente después de un reset (problema con HALT);







  CPCEMU está escrito en C++ y ensamblador, usando Borland C 3.1 con

  optimización para 386 y Turbo Assembler. Para Depuración se ha usado

  el Turbo Debugger.

  Los colores se obtuvieron mediante el programa VGAMETER por J. Stephen

  Shattuck, Jr., con el CPC conectado a un TV mediante un adaptador Scart.







------------------------------------------------------------------------







(A partir de este punto puedes continuar leyendo sin ningún riesgo.)







Apéndice

********







A.1  Glosario

*************



Aquí se explican algunos términos relacionados con ordenadores. No pretendo

dar definiciones completas o precisas. Los términos se describen desde el

punto de vista del CPC.

Las referencias se marcan con "»".





386/33 (AT 386/33)

  Abreviación de »PC AT con procesador 80386, a velocidad de 33 MHz.

  Debido al "alto" índice de velocidad debería ser un 386DX con un bus de

  datos de 32 bits, real, no el barato 386SX con bus de datos de 16 bits.



AMSDOS (DOS de Amstrad)

  »DOS desarrollado por »Amstrad, para los ordenadores »CPC.



Amstrad

  Fabricante de ordenadores Británico, el cual ha diseñado los »CPCs.



Archivo

  Almacenamiento de ficheros.

  O: Un fichero que incluye otros varios.

  En archivos »ZIP los ficheros se comprimen antes de ser incluídos.



ASCII (Abreviación de: American Standard Code of Information Interchange,

  que significa Código Estándar Americano para Intercambio de Información)

  En un ordenador todos los caracteres y números se representan internamente

  como números.

  La mayoría de los ordenadores usan ASCII, con la letra "A" codificada como

  65. El »PC y el »CPC también usan ASCII. En el »Locomotive-BASIC puede

  guardarse un fichero ASCII tecleando 'SAVE"<nombre de fichero>",A'.



BASIC (Abreviación de: beginners all purpose symbolic instruction code,

  que significa Código de Instrucciones Simbólicas para cualquier propósito

  orientado a Principiantes)

  Ampliamente usado, lenguaje de programación, fácil de aprender, para

  ordenadores domésticos y personales. Antes cada ordenador tenía que

  tener su propio dialecto BASIC.

  Los BASICs modernos permiten programación estructurada, de forma que ya

  no se está obligado a programar "código espagueti".

  Asimismo el »CPC tiene su propio BASIC, el Locomotive BASIC por la

  compañía del mismo nombre.



BBS



C64:

  Ordenador doméstico hecho por la compañía Commodore con 64 KB de »RAM,

  muy popular.

  Debido a la inmensa cantidad de software que tenía disponible fue

  "el ordenador para juegos" muchos años. Más tarde fue apartado en

  importancia por el Commodore AMIGA, pero a pesar de estar obsoleto

  sobrevivió un poco más.



Caja para cableado

  Un adaptador para realizar cualquier conexión entre dos conectores

  mediante el uso de cables cortos. En comparación a la »caja para jumper,

  los cables no necesitan estar soldados.



Caja para jumper

  Un adaptador para realizar cualquier conexión entre dos conectores

  usando cables cortos que han de estar soldados.

  Ver también »Caja para cableado.



Chips hardware

  Componentes dentro del ordenador, p.ej. procesador, chips de memoria,

  controlador de la unidad de disco, ...

  Dentro del CPC se encuentra el procesador Z80, el Gate Array, el CRTC

  6845 para direccionamiento de la memoria de pantalla, el PIO 8255 para

  entrada/salida, el chip de sonido PSG AY 3-8912, el controlador de la

  unidad de disco FDC 765, ...



Configuración

  Aquí: Configurar un programa para sus propias necesidades.

  Puede realizarse con el »Menú de configuración o un fichero de

  configuración.



Controlador de teclado

  Un programa al que se llama cuando el teclado genera una »interrupción.

  El controlador toma el número de la tecla que se ha pulsado o soltado.



CPC (Abreviación de: Colour Personal Computer,

  que significa Ordenador Personal a Color)

  Desarrollado por la compañía »Amstrad, estuvo disponible en varios

  modelos.

  Vuelve a leer la introducción.



CPC puerto de impresora

  Interface Centronics del »CPC para conectar una impresora.

  Desgraciadamente los diseñadores del CPC fueron demasiado ahorrativos:

  Tan sólo tenía 7 bits.

  Mediante un pequeño cable era posible ampliarlo a 8. Para conseguirlo

  el puerto de casete se "desaprovechaba", no siendo necesario para

  imprimir.



CPC manual de firmware

  Libro acerca del »CPC, describía especialmete el interface del sistema

  operativo del CPC.



CPC grupo de noticias

  Grupo de noticias sólo para el »CPC. Su nombre es "comp.os.amstrad.8bit"

  y se creó en agosto de 1994.



CP/M Plus (Abreviación de: control program for microcomputers,

  que significa programa de control para microordenadores)

  Sistema operativo de la compañía Digital Research, orientado

  principalmente a microordenadores de 8 bits. Ampliamente usado hasta

  que IBM decidió usar MS-DOS para sus PCs.

  El CP/M Plus (CP/M 3.0) fue el sucesor del CP/M 2.2 y fue incluído en

  el paquete de software para el »CPC 6128.



CTRL/MAYS/ESC (control/mayúsculas/escape)

  "Combinación de tres dedos" en un »CPC para provocar un reset.

  Es parecido a la combinación 'CTRL/ALT/Del' para reset en un PC.

  Algunos programas bloquean tal reset de forma que hay que apagar el

  ordenador o usar el botón de reset. Los CPCs no tenían ese botón,

  pero era fácil construir uno.

  En CPCEMU la tecla de función F8 es el botón de reset.



Cursor

  Caracter en la pantalla que muestra la posición de escritura actual.

  En algún lugar del teclado hay unas teclas de cursor que sirven para

  moverlo por la pantalla.



D-Sub

  Conectores con una forma especial.



Definiciones de formato

  Definiciones de formatos de disco.

  

Dirección Base

  Esto hay que especificarlo en muchas »configuraciones si se posee una

  tarjeta de sonido.

  CPCEMU busca en una »variable de entorno.



Dk'tronics

  Compañía Británica que ofrecía extensiones del hardware para el »CPC,

  p.ej. expansiones de memoria.



DMA (Abreviación de: Direct Memory Access,

  que significa Acceso Directo a Memoria)

  Acceso directo a la memoria del ordenador sin usar el procesador.

  Se usa con unidades de disco, pero para ahorrar costes no se

  implementó en los CPCs.

  La tarjeta Soundblaster también puede usar un canal DMA, leyendo datos

  de sonido digital "a través" de el.



DOS (Abreviación de: disk operating system,

  que significa sistema operativo de disco)

  Siatema operativo orientado al disco, p.ej. AMSDOS, DRDOS, MS-DOS.

  Hoy en día es sinónimo para MS-DOS.



DRDOS

  »DOS compatible MS-DOS por la compañía Digital Research.



E-Mail (Abreviación de: Electronic Mail,

  que significa Correo Electrónico)

  Usar un ordenador como buzón de correo.





EMM (Abreviación de: Expanded Memory Manager,

  que significa Gestor de Memoria Expandida)

  Parecido a »EMS.



EMS (Abreviación de: Expanded Memory System,

  que significa Sistema de Memoria Expandida)

  Ampliación de memoria para el »PC, sirve para sobrepasar el límite de

  640KB.

  Con la técnica de banking otras páginas de memoria se mapean en una

  ventana EMS. EMS fue desarrollado por Lotus, Intel y Microsoft, por

  esto es conocida como LIM-EMS.

  Hay EMS por hardware, emulada y simulada.

  Tarjetas de memoria especiales suministran EMS por hardware,

  principalmente usado en viejos PCs XT.

  En un PC AT con al menos procesador 80386 es posible tener EMS emulada

  usando el mecanismo de paginación para el banking.

  Este tipo está suministrado por el EMM386.EXE y debería usarse para

  incremetar la velocidad de CPCEMU.

  La EMS simulada es demasiado lenta, tiene que copiar las páginas de

  memoria.



Emular

  Imitación de un sistema (hardware o software) por otro.

  El sistema imitador calcula los mismos resultados basados en los mismos

  datos que el sistema imitado.

  CPCEMU emula un »CPC en un »PC.



Emulador

  El sistema que »emula otro.



Fichero

  Colección de datos que están todos juntos. En el »CPC hay ficheros de

  varios tipos, p.e ficheros BASIC con programas BASIC, normalmente con

  la extensión '.BAS', ficheros ASCII con cualquier texto, y ficheros

  binarios con todo tipo de bytes, normalmente con la extensión '.BIN'.

  Los ficheros binarios pueden contener programas en código máquina o

  cualquier otro dato.



Fichero BASIC

  Ver »Fichero.



Fichero Batch

  Contiene instrucciones que normalmente se teclean en el ordenador. Si se

  realiza una llamada a tal fichero, las instrucciones se van ejecutando

  una por una, incluso cuando tu las introduces.



Fichero Binario

  Ver »Fichero.



Frecuencia de reloj

  Mide la velocidad del procesador conectado al ordenador. Determina

  la velocidad del procesador de manera significativa. Hoy en día el

  procesador 486DX2/66 funciona a una velocidad interna de 66 MHz.

  El Z80A en el »CPC tiene una velocidad de 4 MHz, funcionando de hecho

  a 3.3 MHz ya que tiene que esperar periódicamente al refresco de

  pantalla.



FTP (Abreviación de: File Transfer Protocol,

  que significa Protocolo para Transferencia de Ficheros)

  Un protocolo para transferir ficheros en una red de ordenadores.

  Al programa que ejecuta este protocolo también se le suele llamar "FTP".



Hardware

  Partes de un ordenador que pueden "tocarse", p.ej. periféricos como la

  impresora, monitor; internos como el procesador y otros »chips hardware.



Imagen ROM

  Fichero con el contenido de una »ROM. Si lees el contenido de una ROM y

  escribes los bytes en un fichero obtienes una imagen ROM.



Inicializar

  Rellenar la memoria con valores específicos, de modo que las variables

  queden definidas.



Interface

  Conexión de un ordenador a sus periféricos o desde un programa a otro.

  Por tanto hay interfaces hardware y software.

  El también llamado interface Centronics es un interface paralelo,

  trasfiere los bits de un byte en paralelo. Con los interfaces serie es

  necesario transferir los bits de uno en uno.



Internet

  Una Internet está compuesta de varias sub-redes de ordenadores.

  Aquí: *La* Internet, es una red de ordenadores mundial para comunicación.



Interrupción

  Si el procesador recibe una señal con prioridad alta, interrumpe el

  programa que se está ejecutando y llama a un controlador especial para

  interrupciones. Cuando termina continúa con el programa interrumpido.

  En un PC hay distintas señales de interrupción, p.ej. cuando se pulsa

  una tecla, cuando un temporizador finaliza, cuando llegan datos

  procedentes del interface serie (p.ej. cuando se mueve el ratón)

  cuando la tarjeta de sonido termina de tocar su última muestra y

  necesita más datos, ...

  Al Z80 en el CPC se le interrumpe unas 300 veces por segundo.



LIM estándar (Abreviación de: Lotus Intel Microsoft)

  Expansión de memoria (»EMS), desarrollada por Lotus, Intel y Microsoft.



Locomotive

  Compañía Británica que escribió el »BASIC de los »CPCs.



Mailing list

  Un servicio mío, mediante el cual yo añado tu dirección email a una

  lista. De esta forma serás informado de novedades relacionadas con

  CPCEMU.



Menú de configuración

  Para cambiar los »parametros de un programa, de modo que funcione de

  forma distinta.

  Puedes decirle al menú de configuración que tienes una tarjeta de sonido,

  que quieres usar un joystick, ...



Microchannel

  Arquitectura de bus especial.



MS-DOS (Abreviación de: Microsoft Disk Operating System,

  que significa Sistema Operativo de Disco de Microsoft)

  Sistema operativo, desarrollado por la compañía Microsoft para

  procesadores de 16 bits (8086). El sistema operativo más popular en el PC.

  Sigue usándose en los procesadores de 32 bits 80386 y 80486.



Multi Modos

  Técnica de programación que permite tener distintos modos de pantalla

  simultáneamente en la pantalla. El modo de pantalla se cambia durante

  un refresco de pantalla más de una vez. En el CPC se obtienen zonas con

  alta resolución y pocos colores, y zonas con baja resolución y muchos

  colores.



Multiface II (Abreviación de: Multipurpose Interface,

  que significa Interace Multipropósito)

  Una extensión hardware para el CPC. permite interrumpir cualquier

  programa en cualquier momento y analizarlo o guardarlo.

  Desarrollado por la compañía Británica Romantic Robot.



Número de Interrupción IRQ (IRQ=Abreviación de: Interrupt Request,

  que significa Petición de Interrupción)

  En un PC las distintas »interrupciones tienen asignados números

  diferentes.

  Por ejemplo, la interrupción del teclado tiene el número 9,

  la interrupción del temporizador tiene el número 8. Si se pulsa una

  tecla el teclado envía una petición de interrupción al procesador,

  de modo que éste este informado.

  

OS (Abreviación de: Operating System,

  Significa Sistema Operativo)

  Programa necesario para usar un ordenador. Suministra funciones básicas

  a las aplicaciones. Los nuevos sistemas operativos realizan complicadas

  tareas como programación de eventos en sistemas multitarea, ...



Overscan

  Es el borde que está alrededor de la zona de escritura en pantalla.

  En el PC es muy pequeño pero se le puede cambiar el color, p.ej. en

  CPCEMU con 'BORDER 10'. En el CPC el overscan es mucho más amplio,

  por esto los programadores han buscado la forma de escribir en el.

  Mediante trucos de programación es posible escribir en toda la

  pantalla.

  A esta técnica de programación se le llama overscan.



Parámetro

  Variable con un significado específico, el comportamiento del programa

  se basa en esto.



Parámetro en línea de comandos

  Parámetro que se especifica en la línea de comandos después del

  fichero al que se quiere llamar.



Path de Búsqueda en DOS

  El DOS usa un path compuesto por subdirectorios para buscar un fichero.

  Esta especificado en la »variable de entorno 'PATH'.



PC (Abreviación de: Personal Computer,

  que significa Ordenador Personal)

  Ordenador con un microprocesador como procesador (o CPU=central processing

  unit, que significa unidad central de proceso). Hoy en día es sinónimo del

  IBM PC con procesador 8086 ó 8088.

  Los PC AT (advanced technology, que significa tecnología avanzada) son

  ordenadores con procesador 80286, 80386 ó 80486.



PEEKs y POKEs:

  Instrucciones »BASIC para modificar la memoria directamente.

  'PEEK(<dirección>)' se usa para leer un byte de memoria,

  'POKE <dirección>,<número>' modifica la memoria. Los programas con

  muchos PEEKs y POKEs son difíciles de comprender, pero algunas veces

  es necesario superar los límites del BASIC, especialmente si el BASIC

  tiene pocas instrucciones.



PKUNZIP

  Programa de PK-Software para descomprimir archivos »ZIP.



RAM (Abreviación de: Random Access Memory,

  que significa Memoria de Acceso Aleatorio).

  Chip de memoria. Memoria del ordenador.

  Los CPCs tienen bien 64KB (kilo bytes) de RAM  o 128KB. Con extensiones

  hardware podían llegar a tener hasta 576KB de RAM.





Representaciones numéricas

  Dependiendo de la base elegida hay distintas representaciones para el

  mismo número.

  Es bien conocida la representación decimal con base 10 y los dígitos del

  0 al 9.

  Los ordenadores usan la representación binaria (base 2) con los dígitos

  0 y 1. Los programadores prefieren la representación hexadecimal con

  base 16, ya que 16 es una potencia de 2 (2 elevado a 4). Por esto las

  representaciones pueden calcularse fácilmente de una a otra. Además un

  byte necesita sólo 2 dígitos (0 a 9, A a F) en la notación hexadecimal.



ROM (Abreviación de: read-only-memory,

  que significa memoria de sólo lectura).

  Chip de memory. Memoria que sólo puede leerse pero no modificarse.

  Está disponible nada más encender el ordenador.

  Los CPCs tienen 16KB de ROM del »OS, 16KB de ROM del »BASIC y 16KB de ROM

  para el AMSDOS.



RS-232

  Interface serie para conectar monitores o impresoras al ordenador.

  (RS 232 C).



Schneider

  Compañía Alemana, fue la que vendió los CPCs en Alemania.



Screen mode



Scroll por hardware

  Mover la pantalla sin que el procesador tenga que copair de una parte a

  otra. El procesador sólo tiene que modificar la dirección base de la

  pantalla, el resto lo hace el »chip hardware.



Sesión DOS en OS/2

  Una ventana, bajo el sistema operativo de 32 bits de IBM, donde se

  pueden ejecutar programas DOS. La también conocida como

  "DOS compatibility box" (ventana de compatibilidad DOS).



SIMTEL

  Un archivo enorme de software que está en USA.

  El Depósito de Software Simtel (SimTel Software Repository) lo

  mantiene Coast to Coast Telecommunications, Inc. (CCT) en su servidor

  de »Internet situado en "SimTel.Coast.NET". Este archivo tiene mirrors

  (copias) en otros lugares. Uno de los mirrors es la Universidad de

  Oakland situado en "OAK.Oakland.Edu".



Snapshots

  Un volcado de memoria completado con estados internos de los »chips

  hardware.

  Este contiene la descripción completa de un estado momentáneo del

  ordenador.

  Si el snapshot se vuelve a cargar el ordenador vuelve al estado que

  está descrito en el snapshot.

  Por tanto es similar a un snapshot (foto) real, solo que dentro del

  ordenador.



Software

  Programas de un sistema computerizado.



Soundblaster

  Tarjeta de sonido de la compañía Creative Labs.



Spectrum

  El Sinclair Spectrum es un ordenador doméstico desarrollado por la

  compañía Sinclair.



Compilador de Turbo Pascal

  Pascal es un lenguaje de programación de alto nivel que permite

  programación estructurada, hoy en día es usado en muchos centros de

  enseñanza.

  Si alguien habla de Pascal, puede que se refiera más a Turbo Pascal,

  aún cuando éste es sólo un Pascal extendido hecho por la compañía

  Borland. El compilador de Turbo Pascal es particularmente rápido

  porque compila el programa en una sola pasada.



Utilidad

  Programa muy útil.



Variable de entorno BLASTER

  Ver »Variable de entorno.



VGA (Abreviación de: Video Graphics Array,

  que significa Vector para Gráficos de Video)

  Gráficos estándar en el PC. Sucesor de la CGA (Colour Graphics

  Adapter, que significa Adaptador para Gráficos en Color), de la MCGA

  (Multi Colour Graphics Adapter, que significa Adaptador para Gráficos

  en Multiples Colores) y EGA (Enhanced Graphics Adapter, que significa

  Adaptador para Gráficos Mejorado). Ampliado a la SVGA (Super VGA) con

  resoluciones mayores.



VGA-BIOS (Abreviación de: VGA Basic Input Output Operating System,

  que significa Sistema Operativo Básico de Entrada Salida para la VGA)

  El sistema operativo para la tarjeta gráfica »VGA.



Windows

  Algo que puede ponerse en »DOS.



Z80

  Un procesador de 8 bits desarrolado por la compañía Zilog. Es compatible

  con el 8080 de Intel y fue muy popular.

  En el »CPC hay un Z80A que funciona a una velocidad de 4 MHz.



Z80, instrucciones

  Instrucciones máquina que el »Z80 entiende.

  No son más que cifras numéricas, por lo que para recordarlas más

  fácilmente se crearon los mnemonicos, que son traducidos por un

  ensamblador en códigos binarios.

  La instrucción "LD A,B" carga el registro A con el conenido del

  registro B y es lo mismo que el código binario 0x78.

  

ZIP

  Un proceso especial de comprimir »ficheros.

  Los »archivos llevan la extensión "ZIP".











A.2  Bibliografía

*****************





El manual del CPC es indispensable para principiantes del CPC:

- Spital Ivor und Perry, Roland und Poel, William und Lawson,Cliff:

    CPC 6128 Benutzerhandbuch, Schneider Computer Division 1985,

    Originalausgabe (c) 1985 (my one contains 1895)

    by AMSOFT, AMSTRAD Consumer Electronics plc and Locomotive

    Software Ltd.



Un listado de la ROM muy bien comentado, con capítulos iniciales que

tratan especialmente del CPC por el lado del software:

- Janneck, Joern W. und Mossakowski,Till: ROM-Listing CPC 464/664/6128,

    Markt & Technik Verlag 1986



Por el contrario: mal estructurado, comentado extrañamente, trata más

el lado del hardware:

- Brueckmann, Englisch, Gertis: CPC 464 Intern mit kommentiertem

    ROM-Listing, Data Becker 1985



Es bueno aprender C, con muchos ejercicios:

- Kellay, Al and Pohl, Ira: A Book on C, Second Edition, 1990 by

    Benjamin/Cummings Publishing Company, Inc.



El libro estándar de C++:

- Stroustrup, Bjarne: The C++ Programming Language, Second Edition,

  Addison-Wesley, 1992



Otro buen libro de C++:

- Eckel, Bruce: C++ Inside & Out, 1993 by Osborne McGraw-Hill



Consejos, como escribir un manual legible y bueno, nos lo da:

- Boedicker, Dagmar: Handbuch-Knigge, Software Handbuecher schreiben

    und beurteilen. Wissenschaftsverlag 1990











A.3  Indice

***********



Los números detrás de los elementos muestran el capítulo en el cual están

descritos.



(incompleto)



#ENDIF 4.2

#IFCPC 4.2

22DISK 5.1.2

Adaptador, paralelo 5.2

AMSDOS_DI 4.2

AMSDOS_SPDUP 4.2

BLASTER Entorno 2.3.2

BREAK_MASK 4.2

Casete 3.2.2

COLOUR 4.2

CPC 1.3

CPC Grupo de noticias 6.2

CPCEMU.CFG 4.2

CPCPARA.BAS 5.2

CPCREC.BAS 5.2

CPCTRANS.EXE 5.1.1

DELAY 4.2

Disco 3.2.1

DRIVE_A 4.2

DRIVE_B 4.2

EMS_EI 4.2

Fichero de configuración 4.2

Imagen de disco 3.2.1

INT_FREQ 4.2

INT_RESUME 4.2

JOY_CALIBRATE 4.2

KBD_LANGUAGE 4.2

Keyboard 3.1

Memoria EMS 2.3.1

Menú de depuración 7.3

Menú de configuración 4.1

Menus 3.2.1

Multi Modo 4.1

MULTIMODE 4.2

PCPARA.EXE 5.2

PIO_PORT_B 4.2

PRINTER 4.2

RAM_SIZE 4.2

ROM_BLOCK 4.2

ROM_PATH 4.2

SBLASTER 4.2

SB_DELAY 4.2

SHOW_CONFIG 4.2

SNAPSHOT 4.2

Snapshot 3.2.3

SOUND 4.2

Soundblaster 2.3.2

TAPE_BYPASS 4.2

TAPE_PATH 4.2

TMP_PATH 4.2

Teclas de función 3.1

VSYNC Bit 4.1





------------------------------------------------------------------------------

final

------



