Idea de proyecto para CPC, necesito ayuda de gente que sepa de soft y hard de CPC.

Moderador: Fundadores

Avatar de Usuario
alvaroalea
Demonio tercer orden
Demonio tercer orden
Mensajes: 583
Registrado: 25 Oct 2014, 12:49
Ubicación: Asturias, Paraiso Natural
Contactar:

Idea de proyecto para CPC, necesito ayuda de gente que sepa de soft y hard de CPC.

Mensaje por alvaroalea » 30 Ago 2018, 00:14

Bueno, resulta que al final eche a andar un par de CPC464 que tenia por casa y la interfaz de floppy multisistema de wilco2009 (si, se que hace tiempo, pero solo la habia probado en spectrum hasta hoy...) el caso es que hecho de menos no tener los 128Kb de RAM, y en alguna ocasion ya se comento por aqui que seria buena idea esta ampliacioin.

Partamos del echo que para mi, hasta hoy los CPC no eran mas que "topes de puerta" (TM) :D asi que si digo una brutalidad, perdon e iluminarme que estoy "empezando".

Aparentemente la implementacion de la RAM del CPC6128 es la misma que la de un CPC464 + Interfaz de 64K de D'tronic.

La parte hardware la tengo mas o menos definida, se me esta resistiendo la programacion de flip-flops tipo D en una GAL, pero tengo plan B y haré un par de pruebas en unos dias, pero mientras necesito que me contestéis algunas preguntas tecnicas:

1º Basicamente la memoria del CPC se divide en 4 partes, los voy a llamar SLOT para abreviar, en el slot 0 y 3 se puede meter ROM o RAM, segun escribas en un puerto una configuración u otra.
Entiendo que la ROM tiene prioridad sobre la RAM, de manera que en caso de que una rom este paginada y se acceda a uno de estos bancos, la señal RAM_RD NO se activa, y la memoria esta inactiva y la ROM proporciona el dato. ¿CORRECTO?

¿Que pasa cuando ESCRIBES en los bancos 0 o 3 con ROM paginada, ¿escribes en la RAM correspondiente o se ignora?

2º En general la RAM "baja" del CPC se pagina siempre en el mismo sitio (pagina 0 en slot 0, pagina 1 en slot 1, pagina 2 en slot 2, etc....) o bien se pagina uno o toda la RAM "alta".
Pero cuando se escribe en el registro 0x7F00 el valor 0xC3 la configuracion es diferente:
En el slot 0 se pagina la pagina 0 (original del 464)
En el slot 1 se pagina la pagina 3 (original del 464) <- ESTO ES LO RARO
En el slot 2 se pagina la pagina 2 (original del 464)
En el slot 3 se pagina la pagina 7 (el ultimo banco de la ampliacion)

¿Que pasa en un CPC464 a pelo cuando escribes este valor? ¿nada? ¿hay un mirror de la pagina 3 en los slot 1 y 3? creo que este es un punto donde la ampliacion externa y un 6128 serian diferentes, no se si es un mapa de memoria muy habitual o no.
La unica opcion que se me ocurre para esto, es forzar a que la linea A15 se ponga a 1 (cuando se intenta acceder al slot 2), con un transistor a VCC o algo asi, pero esto acabaria extropeando el Z80, salvo que este este preparado y tenga una resistencia entre el Z80 y el resto del circuito (en plan la ULA del Spectrum).
¿Alguien tiene detalles sobre esto?

Y por ultimo, si alguien tiene codigo donde haya basculas tipo D en una GAL22V10 para WinCULPs, me gustaria verlo para coger idea.

(he puesto las notas de lo que voy investigando aqui:
https://docs.google.com/document/d/1A2S ... sp=sharing
por si alguno le quiere echar un ojo y hacer comentarios)

Avatar de Usuario
dandare
Hermano de Lucifer
Hermano de Lucifer
Mensajes: 3267
Registrado: 09 Feb 2016, 15:09
Ubicación: I Register
Contactar:

Re: Idea de proyecto para CPC, necesito ayuda de gente que sepa de soft y hard de CPC.

Mensaje por dandare » 30 Ago 2018, 10:23

1a) Al paginar una rom, las lecturas en esa zona o slot, como lo llamas, se hacen desde la rom
1b) las escrituras siempre se hacen en ram, haya o no haya rom. En los esquemas esto queda claro.

2) hay bastantes configuraciones de memoria en un 6128. Aquí tienes el detalle : http://www.cpcwiki.eu/index.php/Gate_Ar ... AM_Banking

Hay dos problemas serios en un 464:
A) El video se genera siempre desde la memoria baja, independientemente de si está paginada una memoria alta o no en la zona de lectura del CRTC, por ejemplo en $C000
B) El 464 no deshabilita la escritura en RAM mediante RAMDIS (señal del conector edge), sólo la lectura. El 6128 deshabilita ambas. Por tanto, si paginamos algo en $4000, siempre vamos a machacar el contenido de la memoria interna $4000. Bueno, pues hacemos una extensión de 128k y pasamos de la memoria interna.... pues no podemos por el punto A de arriba.

echa un ojo a esto para el C3 en 464 :

http://www.cpcwiki.eu/forum/amstrad-cpc ... extension/
http://www.cpcwiki.eu/forum/amstrad-cpc ... ction-464/


Por lo que sé, la forma de expandir RAM en un 464 es forzando MREQ a 1 (Colisionando con el Z80) cuando nos interese. Esto lo hemos hablado en el grupo de Hardware Devs y se ha llegado a la conclusión de que no debería dañar mucho al Z80, pero en mi opinión es hacer un poco el bestia. Al parecer esta es la fórmula que usaba la expansión de DK'Tronics.
Imagen
Imagen

Avatar de Usuario
llopis
Aspirante a demonio
Aspirante a demonio
Mensajes: 243
Registrado: 05 Jul 2018, 09:43
Ubicación: Asturias
Contactar:

Re: Idea de proyecto para CPC, necesito ayuda de gente que sepa de soft y hard de CPC.

Mensaje por llopis » 30 Ago 2018, 11:05

Pues no tengo nada que añadir a la respuesta de Dandare. La verdad es que no sabía cosas como lo que forzaban la línea MREQ. Parece una burrada, pero si lo hizo la DK'Tronics, pues nada :D

Supongo que ya te has revisado las extensiones de memoria que hay por ahí. Por lo que veo parece que la mayoría pasan de la ampliación de 64K y se van directamente a más memoria. ¿Tu quieres hacer uno que simplemente añada los 64K a un 464 en la misma configuración que un 6128, no?

El proyecto me parece interesante, o sea que me apunto a ayudar en lo que pueda (software, probar cosas, lo que sea).

Avatar de Usuario
wilco2009
Hermano de Lucifer
Hermano de Lucifer
Mensajes: 7329
Registrado: 01 Abr 2013, 23:47
Ubicación: Valencia
Contactar:

Re: Idea de proyecto para CPC, necesito ayuda de gente que sepa de soft y hard de CPC.

Mensaje por wilco2009 » 30 Ago 2018, 11:24

Yo estuve haciendo pruebas al respecto. Hay que forzar MREQ y A15.
Para poder forzar la señal hay que meter +5V de forma "casi" directa, ya que para resistencias mayores de 75ohm no conseguía hacer el forzado.
Teoricamente el z80 se queda al límite de lo que soporta, pero ahí están las expansiones de dktroniks funcionando durante años.
"Aprender a volar es todo un arte. Aunque sólo hay que cogerle el truco. Consiste en tirarse al suelo y fallar".

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

Avatar de Usuario
alvaroalea
Demonio tercer orden
Demonio tercer orden
Mensajes: 583
Registrado: 25 Oct 2014, 12:49
Ubicación: Asturias, Paraiso Natural
Contactar:

Re: Idea de proyecto para CPC, necesito ayuda de gente que sepa de soft y hard de CPC.

Mensaje por alvaroalea » 30 Ago 2018, 13:34

wilco2009 escribió:
30 Ago 2018, 11:24
Yo estuve haciendo pruebas al respecto. Hay que forzar MREQ y A15.
Para poder forzar la señal hay que meter +5V de forma "casi" directa, ya que para resistencias mayores de 75ohm no conseguía hacer el forzado.
Teoricamente el z80 se queda al límite de lo que soporta, pero ahí están las expansiones de dktroniks funcionando durante años.
Contesto un poco en desorden, vaya majos los de dk'tronics, efectivamente parece que fuerzan las señales,
Asi pensando en voz alta, ya que vamos a hacer la PCB de la ampliacion, podriamos hacer una pequeña placa, tipo las de tu memoria, pero para el Z80, que mediante una OR SMD lleve MREQ a 5V conectado a RAM_DIS, y aislar A15 con una resistencia y asi protegemos el Z80.

Avatar de Usuario
wilco2009
Hermano de Lucifer
Hermano de Lucifer
Mensajes: 7329
Registrado: 01 Abr 2013, 23:47
Ubicación: Valencia
Contactar:

Re: Idea de proyecto para CPC, necesito ayuda de gente que sepa de soft y hard de CPC.

Mensaje por wilco2009 » 30 Ago 2018, 13:57

Sí, digamos que metiendo mano dentro ya tienes libertad para hacer cualquier cosa. De hecho hay ampliaciones a 4Mb que se basan en meter mano en el interior del CPC y que son mucho más sencillas que una ampliación externa.
"Aprender a volar es todo un arte. Aunque sólo hay que cogerle el truco. Consiste en tirarse al suelo y fallar".

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

Avatar de Usuario
alvaroalea
Demonio tercer orden
Demonio tercer orden
Mensajes: 583
Registrado: 25 Oct 2014, 12:49
Ubicación: Asturias, Paraiso Natural
Contactar:

Re: Idea de proyecto para CPC, necesito ayuda de gente que sepa de soft y hard de CPC.

Mensaje por alvaroalea » 30 Ago 2018, 14:39

dandare escribió:
30 Ago 2018, 10:23
1a) Al paginar una rom, las lecturas en esa zona o slot, como lo llamas, se hacen desde la rom
1b) las escrituras siempre se hacen en ram, haya o no haya rom. En los esquemas esto queda claro.

2) hay bastantes configuraciones de memoria en un 6128. Aquí tienes el detalle : http://www.cpcwiki.eu/index.php/Gate_Ar ... AM_Banking
OK, ese punto esta claro, viene bien explicado en el enlace, aunque se me habia pasado por alto.
dandare escribió:
30 Ago 2018, 10:23
Hay dos problemas serios en un 464:
A) El video se genera siempre desde la memoria baja, independientemente de si está paginada una memoria alta o no en la zona de lectura del CRTC, por ejemplo en $C000
Pero esto no es un problema ¿no? es decir en el 6128 pasa lo mismo, al menos en todos los enlaces que he visto, nadie indica que en el 6128 sea diferente.
dandare escribió:
30 Ago 2018, 10:23
B) El 464 no deshabilita la escritura en RAM mediante RAMDIS (señal del conector edge), sólo la lectura. El 6128 deshabilita ambas. Por tanto, si paginamos algo en $4000, siempre vamos a machacar el contenido de la memoria interna $4000. Bueno, pues hacemos una extensión de 128k y pasamos de la memoria interna.... pues no podemos por el punto A de arriba.

echa un ojo a esto para el C3 en 464 :

http://www.cpcwiki.eu/forum/amstrad-cpc ... extension/
http://www.cpcwiki.eu/forum/amstrad-cpc ... ction-464/


Por lo que sé, la forma de expandir RAM en un 464 es forzando MREQ a 1 (Colisionando con el Z80) cuando nos interese. Esto lo hemos hablado en el grupo de Hardware Devs y se ha llegado a la conclusión de que no debería dañar mucho al Z80, pero en mi opinión es hacer un poco el bestia. Al parecer esta es la fórmula que usaba la expansión de DK'Tronics.
esos enlaces son muy interesantes, no los habia visto, voy a leerlos con calma un poco.

Avatar de Usuario
alvaroalea
Demonio tercer orden
Demonio tercer orden
Mensajes: 583
Registrado: 25 Oct 2014, 12:49
Ubicación: Asturias, Paraiso Natural
Contactar:

Re: Idea de proyecto para CPC, necesito ayuda de gente que sepa de soft y hard de CPC.

Mensaje por alvaroalea » 30 Ago 2018, 14:59

llopis escribió:
30 Ago 2018, 11:05
Pues no tengo nada que añadir a la respuesta de Dandare. La verdad es que no sabía cosas como lo que forzaban la línea MREQ. Parece una burrada, pero si lo hizo la DK'Tronics, pues nada :D

Supongo que ya te has revisado las extensiones de memoria que hay por ahí. Por lo que veo parece que la mayoría pasan de la ampliación de 64K y se van directamente a más memoria. ¿Tu quieres hacer uno que simplemente añada los 64K a un 464 en la misma configuración que un 6128, no?

El proyecto me parece interesante, o sea que me apunto a ayudar en lo que pueda (software, probar cosas, lo que sea).
Si, basicamente lo que quiero es hacer un clon del interfaz dk'tronics de 64Kb, pero aprobechando los chips que tengo por casa O:-) ademas como tengo el interfaz de disco (un clon del DD-1) pues asi convierto un 464 en 6128 :D

Avatar de Usuario
wilco2009
Hermano de Lucifer
Hermano de Lucifer
Mensajes: 7329
Registrado: 01 Abr 2013, 23:47
Ubicación: Valencia
Contactar:

Re: Idea de proyecto para CPC, necesito ayuda de gente que sepa de soft y hard de CPC.

Mensaje por wilco2009 » 30 Ago 2018, 15:35

alvaroalea escribió:
30 Ago 2018, 14:39
dandare escribió:
30 Ago 2018, 10:23
Hay dos problemas serios en un 464:
A) El video se genera siempre desde la memoria baja, independientemente de si está paginada una memoria alta o no en la zona de lectura del CRTC, por ejemplo en $C000
Pero esto no es un problema ¿no? es decir en el 6128 pasa lo mismo, al menos en todos los enlaces que he visto, nadie indica que en el 6128 sea diferente.
Te equivocas, eso sí es un problema. En el 6128 también ocurre pero no hay problema porque, como la memoria baja se puede paginar a voluntad, es perfectamente utilizable.
El problema viene en un 464, en el que dependiendo de la situacion no se puede paginar correctamente la memoria baja sin forzar A15 y MREQ . Al no poder ser paginada ni deshabilitada va a recibir siempre las escrituras en ese rango de direcciones, vayan o no dirigidas a ella.
Es entonces cuando entra en escena el dilema, ¿porque no ignoro la memoria interna y utilizo 128Kb externos?. Pues no puedes porque el video siempre va a tirar de la memoria interna.
"Aprender a volar es todo un arte. Aunque sólo hay que cogerle el truco. Consiste en tirarse al suelo y fallar".

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

Avatar de Usuario
alvaroalea
Demonio tercer orden
Demonio tercer orden
Mensajes: 583
Registrado: 25 Oct 2014, 12:49
Ubicación: Asturias, Paraiso Natural
Contactar:

Re: Idea de proyecto para CPC, necesito ayuda de gente que sepa de soft y hard de CPC.

Mensaje por alvaroalea » 30 Ago 2018, 16:40

wilco2009 escribió:
30 Ago 2018, 15:35
alvaroalea escribió:
30 Ago 2018, 14:39
dandare escribió:
30 Ago 2018, 10:23
Hay dos problemas serios en un 464:
A) El video se genera siempre desde la memoria baja, independientemente de si está paginada una memoria alta o no en la zona de lectura del CRTC, por ejemplo en $C000
Pero esto no es un problema ¿no? es decir en el 6128 pasa lo mismo, al menos en todos los enlaces que he visto, nadie indica que en el 6128 sea diferente.
Te equivocas, eso sí es un problema. En el 6128 también ocurre pero no hay problema porque, como la memoria baja se puede paginar a voluntad, es perfectamente utilizable.
El problema viene en un 464, en el que dependiendo de la situacion no se puede paginar correctamente la memoria baja sin forzar A15 y MREQ . Al no poder ser paginada ni deshabilitada va a recibir siempre las escrituras en ese rango de direcciones, vayan o no dirigidas a ella.
Es entonces cuando entra en escena el dilema, ¿porque no ignoro la memoria interna y utilizo 128Kb externos?. Pues no puedes porque el video siempre va a tirar de la memoria interna.
Vale, pero yo no me referia a eso, me refiero a que en un 6128 nunca se usa la memoria alta para video, p.e. cuando paginas el modo C2, que pagina toda la memoria alta para el Z80, el chip de video sigue generando la imagen desde los primeros 64K. es decir si solucionamos lo de a15 y MREQ, no hay problema adicional. no es como en un spectrum 16K, que aunque lo amplies a 128K nunca vas a conseguir tener 2 paginas de video.

Responder

¿Quién está conectado?

Usuarios navegando por este Foro: Alucard Saeba y 2 invitados