Interface de ROM externa para Amstrad CPC

Avatar de Usuario
wilco2009
Mensajes: 1858
Registrado: 07 Ene 2013 16:48
Ubicación: Valencia
Agradecido : 97 veces
Agradecimiento recibido: 164 veces

Interface de ROM externa para Amstrad CPC

Mensajepor wilco2009 » 31 Jul 2013 22:16

INTRODUCCIÓN

Por fin, y después de haber sido anunciado hace algún tiempo, ha funcionado con éxito el primer interface de ROM externa para Amstrad CPC made in Vade-Retro. :D

No esperéis grandes cosas. No es ni mucho menos un divIDE para Amstrad (qué más quisiera yo jejeje). Es simplemente un interface de ROM, y además con algunas limitaciones. :|

Como os digo, este interface no es la panacea, pero teniendo en cuenta que hace tres meses los chips temblaban solo de oírme nombrar y buscaban confesor cuando me veían con el soldador :)) :)) , yo me lo he tomado como un medio más de aprender.
Y la verdad es que para mí ha sido una gran satisfacción ver como algo que he diseñado yo, funciona llevado a la práctica. ¿Quién me lo iba a decir a mí cuando hace unos meses me ponía a temblar solo de abrir la carcasa de mi spectrum? :))

Antes de continuar, y para que podáis entender el resto, os voy a soltar un poco de rollo de teoría :? . No quiero hacerme pesado, pero es que me parece importante saberlo para poder explicar después porque se pueden hacer algunas cosas sí y otras no y cual es la direrencia con un interface similar para Spectrum. Así que intentad no dormiros y aguantar el chaparrón de lo que sigue. :D

COMO FUNCIONAN LAS ROMs en un AMSTRAD CPC.

UPPER ROMs
En principio, el hardware del CPC está preparado para funcionar con hasta 256 ROMs externas, cada una de ellas de 16Kb, y están numeradas comenzando en el 0.
Cada ROM contiene uno o más programas y utilidades. A esas ROMs se las conoce como Upper ROMs.
Los programas que contienen dichas ROMs, pueden ser ejecutados mediante comandos "RSX", que son unos comandos especiales que siempre comienzan por el carácter "|".
Este tipo de ROMs que he mencionado, pueden ser incorporadas a un CPC mediante interface de ROM existentes, como son el MegaROM o el MegaFlashROM.

Aunque el hardware está preparado para 256 ROMs simultáneas, el firmware del CPC464 sólo inicializa 8 (0..7) y el del CPC6128 inicializa 16 (0..15).
¿Significa eso que no se pueden utilizar más ROMs?. Pues no, únicamente significa que si queremos utilizarlas deberemos hacerlo manualmente.

Dentro de las 256 posibles ROMs simultáneas para un CPC, existen dos posiciones que están reservadas; La ROM cero está reservada para el interprete de Basic y en el caso del 6128, la ROM 7 está reservada para el DOS (Disk Operating System).

Una limitación adicional que tiene la posición número 0, es que tiene que ser autoarrancable como lo es el Basic del CPC. ¿Que quiere decir esto?, pues que esta ROM no será llamada mediante un comando, sino que se ejecutará automáticamente desde el firmware, por lo que debe estar preparada para ello.

LOWER ROM
Además de las ROMs anteriormente mencionadas, todos los CPC llevan una ROM interna donde se almacena el firmware. Dicha ROM solo puede ser sustituida por otra ROM que contenga un sistema operativo válido. Ya sea cualquiera de las versiones válidas que existen dependiendo de la región, o una versión modificada como es el "FO DOS".

¿Y QUE PUEDO HACER YO CON ESTE INTERFACE?
Pues llegados a este punto tengo dos noticias para vosotros. Una mala y una buena. :|

La mala es que este interface no está pensado para insertar UpperROMs (vaya con lo bien que sonaba eso :~( ) y la buena es que nos permite sustituir la LowerROM (firmware) y el BASIC (UpperROM 0) :-].

Y cómo entre la LowerROM y el Basic ocupan un total de 32Kb, que coincide exactamente con el tamaño de la ROM interna, y resulta que hoy en día es muy barato conseguir EPROMs de 64Kb, pues diseñé el interface pensando en almacenar dos conjuntos diferentes de LowerROM+UpperROM(0), pudiendo seleccionar un conjunto u otro con un selector.

¿Y esto para que me puede servir a mí? ::? . Pues se me ocurren tres motivos principales :idea: (no, si a veces me da por pensar y todo :D ):

1º Diagnóstico de hardware averiado :geek: . Cuando tenemos un CPC averiado y queremos comprobar si el problema está en la ROM, no es necesario que desoldemos el chip para ponerle un zócalo y así poder sustituirlo por una EPROM. Simplemente grabamos la EPROM, la insertamos en nuestro interface y arracamos el CPC. De esta manera, si el problema estaba en el chip propiamente dicho el CPC arrancará. (no si ya os decía yo que esto servía para algo)

2º Sustitución del Sistema operativo del CPC. Existen numerosos sistemas operativos alternativos al sistema operativo de nuestro CPC. Por nombrar algunos os puedo mencionar los siguientes: C64 Replica (convierte la apariencia de tu CPC en la de un C64. No sirve pa na, pero mola un huevo jejeje), CPC Future OS o el Firmware 3.1 (estos sí que sí). También podemos ponerle por ejemplo un OS con otra distribución de teclado o de otra nacionalidad (imaginaos que invitáis a vuestro primo danés y le da por utilizar vuestro CPC :D ....)

3º Sustitución del Basic del CPC por cualquier otra ROM autoarrancable. Como por ejemplo un basic mejorado o un juego (ahí queríamos llegar jejeje).

Como habréis visto, existen utilidades que no podemos cubrir con este tipo de interface, pero sin embargo este interface, nos permite sustituir el firmware, cosa que no podíamos hacer en algunos interface de ROM de la época. Pero de todas formas qué queréis si es que no doy pa más. :))

Bueno, bueno no os desaniméis, que ya le tenemos echado el ojo a un interface tipo UpperROM que nos abrirá un mundo de posibilidades. En lugar de EPROM, trabajará con memoria flash y una pila, y permitirá el volcado a dicha memoria flash directamente desde el CPC. No será un divIDE, pero nos permitirá almacenar hasta 8 o 16 ROMs simultáneamente en un sólo chip. :o

DISEÑO DEL INTERFACE

Vamos con el diseño......

El diseño del interface es muy simple. Para entender como funciona voy a incluir aquí el esquema del BUS de un CPC y el esquema del interface.

Imagen

Imagen

Imagen

El bus del CPC nos permite deshabilitar la ROM interna mediante la señal ROMDIS disponible en la pista 43 del conector de expansión. Si ponemos dicha pista en nivel alto (5V) deshabilitamos la ROM interna y podemos gestionar los accesos a la ROM que llegan desde el BUS. De esa manera podemos redigir todos los accesos a la ROM hacia nuestra EPROM externa.

Para poder gestionar la información que nos llega desde el BUS, deberemos saber si se está accediendo a la ROM, o si por el contrario es un acceso a algo que debemos ignorar. Para poder diferenciar estas dos situaciones disponemos de una señal en el bus llamada /ROMENABLE que es generada desde el GateArray y nos indica cuando se está accediendo a la ROM. Solo en el caso de que dicha señal esté a nivel bajo (0V) activaremos el chip poniendo a 0v la patilla 22 de nuestra EPROM (/OE).

Imagen

Como os dije en un parrafo anterior, la ROM interna del CPC tiene una capacidad de 32Kb, 16Kb para el firmware (LowerROM) y 16Kb para el BASIC (UpperROM(0)). En nuestro diseño hemos pensado en una EPROM de 64Kb (27C512, 512 Kbits = 64Kbytes), por lo que nos cabrán dos parejas de LowerROM/UpperROM(0), que serán seleccionables poniendo a 5V o a 0V la patilla 1 de la EPROM (A15) mediante un selector.
Como esta señal nos hace falta tanto para desactivar la ROM interna poniendo a 5V la patilla 43 (ROMDIS) como para activar nuestra EPROM poniendo a 0V la patilla 20 de la EPROM (/CE) necesitamos añadir un chip que nos invierta la señal.
Podía haber utilizado perfectamente un chip de puertas NOT, pero después de un exahustivo estudio de las posibilidades existentes :ugeek: y finalmente como el que tenía por casa era un chip de 4 puertas NAND de dos entradas, pues he utilizado este :D . Juntando las dos entradas de una puerta NAND se puede utilizar como puerta NOT.

Imagen

Tenemos otro selector que nos permitirá activar o desactivar la ROM externa. Cuando el selector lo tenemos en posición "INT". ¿Qué selector más chorra no? ¿Si tengo el interface conectado será porque lo quiero activar?. Ya ya lo sé, pero es que es una especie de tradición secular que sigo a pies juntillas. Como lo he visto en otros, pues selector que te crio. :D

Imagen

Y el resto es tan sencillo como unir una a una las señales del bus de direcciones (A0..A14) y de datos (D0..D7) de la EPROM con las del CPC.

Bueno, se me olvidaba aún otra cosa. He añadido también dos pulsadores, uno de reset (qué siempre viene bien) y otro de NMI, por si a alguien le da por hacer una ROM con menú que se active pulsando el botoncito. (como era fácil y tenía los pulsadores por casa pues ala, ahí van.

Imagen

Aunque prometo que os dejaré un pdf para poder hacer la placa definitiva, inicialmente he desarrollado el interface en una placa de desarrollo.
En cuanto lo tenga lo subo, de momento os lo imagináis.

Os pego aquí algunas fotos del proceso.

Primero soldamos los zócalos y los componentes.

Imagen

Seguidamente cableamos y soldamos el conector.

Imagen

Es un conector igual que el del Spectrum pero de 50 pines. Además no tiene la típica ranura que tiene el del Spectrum sustituyendo a una de las pistas.
En los conectores originales de Amstrad hay insertada una chapita muy fina entre dos pistas, en lugar de sustituir a una de ellas. Esto hace que su fabricación sea muy complicada, por lo que he optado por poner topes en los dos laterales para guiar la entrada del conector.

Imagen

Una vez soldado todo hacemos algunas comprobaciones con el polímetro para asegurarnos que está todo bien y que los voltajes son correctos e insertamos los chips en sus zócalos.

Imagen

Finalmente conectamos, damos tensión y la prueba de fuego final.......
Imagen

Imagen

Bien!!! todo funcionando a la perfección. :D :D

Imagen
"Nada viaja a mayor velocidad que luz con la posible excepción de las malas noticias las cuales obedecen a sus propias leyes."

Douglas Adams. Guía de autoestopista galáctico.

Avatar de Usuario
Goody
Mensajes: 140
Registrado: 04 Oct 2012 21:36

Re: Interface de ROM externa para Amstrad CPC

Mensajepor Goody » 31 Jul 2013 22:25

Enhorabuena wilco!! Estás hecho un monstruo -thumbup

flopping
Mensajes: 2211
Registrado: 26 Jun 2011 17:50
Agradecido : 1 vez
Agradecimiento recibido: 15 veces

Re: Interface de ROM externa para Amstrad CPC

Mensajepor flopping » 31 Jul 2013 22:55

¿Como?, -shock ¿me esta saliendo competencia?, -hypo ahora ya cualquiera crea hilos de PM, joder voy a tener que aplicarme mas, -grin -grin .

Enhora buena wilco2009, estos hilos son los que hacen que aprendamos cosas, -thanks a tu salud colega, -drinks y a seguir así como mínimo, jajajajaja....

Avatar de Usuario
htdreams
Mensajes: 645
Registrado: 12 Nov 2012 19:34
Agradecido : 34 veces
Agradecimiento recibido: 47 veces

Re: Interface de ROM externa para Amstrad CPC

Mensajepor htdreams » 31 Jul 2013 23:16

Pedazo de hilo!! Muy bien explicado, y aunque de momento sean pasos discretos, son pasos en la buena dirección, así que muchos ánimos y que sigas relatándonos tus peleas y victorias (o fracasos que si los hay por lo menos te daremos apoyo :-) )

Avatar de Usuario
wilco2009
Mensajes: 1858
Registrado: 07 Ene 2013 16:48
Ubicación: Valencia
Agradecido : 97 veces
Agradecimiento recibido: 164 veces

Re: Interface de ROM externa para Amstrad CPC

Mensajepor wilco2009 » 31 Jul 2013 23:36

flopping escribió:¿Como?, -shock ¿me esta saliendo competencia?, -hypo ahora ya cualquiera crea hilos de PM, joder voy a tener que aplicarme mas, -grin -grin .

Enhora buena wilco2009, estos hilos son los que hacen que aprendamos cosas, -thanks a tu salud colega, -drinks y a seguir así como mínimo, jajajajaja....


Ya ves, es lo que hay. -grin . Si te pensabas que te podías dormir en los laureles sin que te pisaran los hilos lo llevas claro, jejeje -507

En serio, yo de mayor quiero ser como tú. Pues no me queda....
"Nada viaja a mayor velocidad que luz con la posible excepción de las malas noticias las cuales obedecen a sus propias leyes."

Douglas Adams. Guía de autoestopista galáctico.

Avatar de Usuario
wilco2009
Mensajes: 1858
Registrado: 07 Ene 2013 16:48
Ubicación: Valencia
Agradecido : 97 veces
Agradecimiento recibido: 164 veces

Re: Interface de ROM externa para Amstrad CPC

Mensajepor wilco2009 » 31 Jul 2013 23:36

htdreams escribió:Pedazo de hilo!! Muy bien explicado, y aunque de momento sean pasos discretos, son pasos en la buena dirección, así que muchos ánimos y que sigas relatándonos tus peleas y victorias (o fracasos que si los hay por lo menos te daremos apoyo :-) )


Pues muchas gracias por el apoyo. Seguiremos con cositas para el CPC a ver si sacamos algo bueno. ;)
"Nada viaja a mayor velocidad que luz con la posible excepción de las malas noticias las cuales obedecen a sus propias leyes."

Douglas Adams. Guía de autoestopista galáctico.

Avatar de Usuario
wilco2009
Mensajes: 1858
Registrado: 07 Ene 2013 16:48
Ubicación: Valencia
Agradecido : 97 veces
Agradecimiento recibido: 164 veces

Re: Interface de ROM externa para Amstrad CPC

Mensajepor wilco2009 » 31 Jul 2013 23:37

Goody escribió:Enhorabuena wilco!! Estás hecho un monstruo -thumbup

Pero de feo!!! jejeje.
"Nada viaja a mayor velocidad que luz con la posible excepción de las malas noticias las cuales obedecen a sus propias leyes."

Douglas Adams. Guía de autoestopista galáctico.

race8086
Mensajes: 442
Registrado: 29 Oct 2010 22:05
Agradecimiento recibido: 14 veces

Re: Interface de ROM externa para Amstrad CPC

Mensajepor race8086 » 02 Ago 2013 13:28

Interesantísimo -thumbup , no conocia esta faceta de los -4mstr4d .
se agradace un monton este tipo de post
-thanks -thanks

Avatar de Usuario
wilco2009
Mensajes: 1858
Registrado: 07 Ene 2013 16:48
Ubicación: Valencia
Agradecido : 97 veces
Agradecimiento recibido: 164 veces

Re: Interface de ROM externa para Amstrad CPC

Mensajepor wilco2009 » 02 Ago 2013 16:36

La verdad es que también ha sido nuevo para mi.
Quería diseñar un interface de ROM externa para Amstrad tal y como el que existía para Spectrum, pero según lo iba desarrollando y buscando la info, me di cuenta que en el caso de Amstrad el tema de las ROMs era diferente y que un interface como el que estaba haciendo tenía un uso más limitado.
Ahora a buscar el tiempo para hacerme uno de UpperROMs......
"Nada viaja a mayor velocidad que luz con la posible excepción de las malas noticias las cuales obedecen a sus propias leyes."

Douglas Adams. Guía de autoestopista galáctico.

Avatar de Usuario
ron
Mensajes: 18626
Registrado: 28 Oct 2010 14:20
Ubicación: retrocrypta
Agradecido : 1448 veces
Agradecimiento recibido: 1433 veces

Re: Interface de ROM externa para Amstrad CPC

Mensajepor ron » 02 Ago 2013 20:59

Wilco !!! me encanta el hilo. Gracias tío, me has dado un par de ideas muy chulas... aparte de animarte, muchas gracias

Avatar de Usuario
Taburoto
Mensajes: 1248
Registrado: 15 Mar 2011 00:40
Agradecido : 14 veces
Agradecimiento recibido: 80 veces

Re: Interface de ROM externa para Amstrad CPC

Mensajepor Taburoto » 03 Ago 2013 12:00

Fantastico Wilco!
Que demo o soft es de la ROM que saca una pantalla de C64?

flopping
Mensajes: 2211
Registrado: 26 Jun 2011 17:50
Agradecido : 1 vez
Agradecimiento recibido: 15 veces

Re: Interface de ROM externa para Amstrad CPC

Mensajepor flopping » 03 Ago 2013 17:54

No es una demo, digamos que es como un "skin" para el CPC, dandole el aspecto de un C64.

Avatar de Usuario
wilco2009
Mensajes: 1858
Registrado: 07 Ene 2013 16:48
Ubicación: Valencia
Agradecido : 97 veces
Agradecimiento recibido: 164 veces

Re: Interface de ROM externa para Amstrad CPC

Mensajepor wilco2009 » 03 Ago 2013 21:41

Taburoto escribió:Fantastico Wilco!
Que demo o soft es de la ROM que saca una pantalla de C64?


Como dice flopping, es una modificación del sistema operativo del 464 para hacerlo parecer estéticamente un commodore 64.
No se le incluyen modificaciones en el basic ni en las funcionalidades, es simplemente eso.

Aquí tienes el link: http://cpcwiki.eu/imgs/a/ae/C64_replica_ROMs.zip
"Nada viaja a mayor velocidad que luz con la posible excepción de las malas noticias las cuales obedecen a sus propias leyes."

Douglas Adams. Guía de autoestopista galáctico.


Volver a “Amstrad”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado