######+ ########++ ######+ ########+ #### ####++ ##++ ##++ ##++++++ ##+++++##++ ##++++++ ##++++++ ##+## ##+##++ ##++ ##++ ##++ ##++ ##++ ##++ ##+++ ##++ ##++ ##++ ##++ ##++ ##++ ########++ ##++ ########+ ##++ +++ ##++ ##++ ##++ ##++ ##++++++ ##++ ##++++++ ##++ ##++ ##++ ##++ ##++ ##++ ##++ ##++ ##++ ##++ ##++ ##++ ######+ ##++ ######+ ########+ ##++ ##++ #########++ +++++++ ++++ +++++++ +++++++++ ++++ ++++ ++++++++++ v1.6 beta 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' . 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 - 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. - 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. 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 : visualiza el catálogo - Con 'RUN""' 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 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"" 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"" guarda un programa BASIC. Para programas binarios hay que especificar algunos parámetros más, p.ej. 'SAVE"",b,&c000,&4000' guardará el contenido de la pantalla. - MERGE"" 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,"" para ver el directorio. Nota importante: Se debe usar lo siguiente en un CPC 464: a$="" : |DIR,@a$ - |ERA,"" para borrar un fichero. Nota importante: Se debe usar lo siguiente en un CPC 464: a$="" : |ERA,@a$ - |REN,"","" para renombrar un fichero. Nota importante: Se debe usar lo siguiente en un CPC 464: a$="" : b$="" : |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 puedes seleccionar una línea. También puedes realizar esto pulsando letras (para volver con ). Para cambiar los números usa las teclas de cursor o mediante introducción directa de dígitos. Con en cualquier línea (p.ej. la primera) se aceptan los cambios. Para descartarlos pulsa . "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 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á "[]". - se coloca en el primer fichero, en el último - para moverse por páginas dentro de la lista - acepta el fichero seleccionado, cancela. También puedes seleccionar nombres directamente pulsando las letras iniciales de éstos. Si estás usando un ratón puedes pinchar "[]" para , "[]" para , "[<]" para , "[>]" para y [ok] para . Usa "[þ]" como . 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 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 y . 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 , 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 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 . El 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 ... #ENDIF Para 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 = "" (Fichero de Datos) Especifica el fichero de datos (CPCEMU.DAT). - DRIVE_A = "" (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 = "" (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 = "" (Fichero de Ayuda) Especifica el path y nombre del fichero de ayuda (CPCEMU.HLP) - JOY0_CALIBRATE = , , , 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 = , , , Lo mismo que en JOY0_CALIBRATE. - POKE_DATABASE = "" Especifica el fichero de pokes (CPCEMU.DBF). - PRINTER = "" (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 prn:'. Puedes usar la impresora directamente con PRINTER="prn". - ROM_BLOCK = , "", (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. - es el número asignado a la ROM, esto significa que se selecciona mediante 'OUT &DF00,' . 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). - es un fichero que se encuentra en el directorio ROM_PATH, que es donde se hayan todas las ROMs. - 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 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 = "" 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 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 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 : especifica otro fichero de configuración, sustituyendo al usado por defecto CPCEMU.CFG. Ver sección 4.2. /t : 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 '. 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 " 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 : envía el 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. = 0000-ffff "" indica que estás en un modo especial. Puedes pulsar para continuar. mantiene este modo (usar p.ej. b). 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 [] : 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 [] : ejecuta sólo la instrucción mostrada en ese momento. Usar para continuar en este modo, y así sucesivamente. 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 [] : 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 [] : desensambla las 16 instrucciones siguientes. Usa para continuar en este modo, y así sucesivamente. vuelve al modo normal. D)ump: (Volcar) d [] : muestra un volcado hex/ASCII de los siguientes 256 bytes a partir de dirección (o PC). Usa para continuar en este modo, y así sucesivamente. vuelve al modo normal. I)nput (modificando memoria): (Entrada) i [] : muestra la dirección de memoria en la que se está en ese momento con su valor correspondiente, el cual puedes aceptar con o cambiar con . Sal de este modo introduciendo un número incorrecto como '-1': -1 . L)oad (cargando un programa): (Cargar) l [] : aparece un indicador para que introduzcas un nombre de fichero y lo carga desde el directorio TAPE_PATH a Es capaz de reconocer una cabecera AMSDOS. Si pulsas en el indicador aparecerá el más que conocido menú de selección de ficheros ... Ejemplos: -f-> l demo : carga fichero 'demo' al PC actual -f-> l a000 miprog : carga fichero 'miprog' a la dirección 0xA000 saV)e (guardando un programa): (Guardar) v [] : aparece un indicador para que introduzcas un nombre y la longitud del bloque de memoria. Este bloque se guarda desde (o PC) como fichero binario en el directorio TAPE_PATH, el cual incluye una cabecera AMSDOS. Ejemplo: -f-> v demo 4000 : 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: '=' Ejemplos: - af=345 : pone el registro AF a 0x0345 - pc=a000 : pone le contador de programa a 0xA000 También puedes escribir ''. 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= (por defecto es 4000). Con /P= 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 '=' {T} {T} es una secuencia de al menos un delimitador. Ejemplo: ROM_PATH = ".\ROM" puede especificarse en formato decimal, hexadecimal (con 0x) o binario (%). puede tener una longitud de hasta 80 caracteres y hasta 20 caracteres. Información suplementaria para seleccionar palabras-clave: BREAK_MASK = (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 o + 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"",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()' se usa para leer un byte de memoria, 'POKE ,' 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 ------