Página 2 de 2

Re: Pregunta sobre funcionamiento de la memoria del amstrad cpc

Publicado: 05 May 2020, 18:32
por Valfac
Hola, dandare,

Con permiso de @atomico :)

Podrías explicar el punto que te he comentado? Como una de las particularidades del amstrad es como gestiona el gate array la memoria, para que el Z80 la vea, de que forma el G.A organiza las páginas de memoria en bloques?

Y otra cosa, he observado que el Multiface2 tiene 8kb ROM y 8kb RAM, que mapea en una sola página con la siguiente estructura:

0x0000 a 0x1FFF ROM
0x2000 a 0x3FFF RAM

Cómo hace esto? Imagino que lo hace con su propia electrónica, pero si conoces más del tema agradecería que me guiases.

Gracias!

Saludos,
dandare escribió: 03 May 2020, 00:25
Por tanto, desde un punto de vista HW, para leer algo, habrá que mandar la instrucción IO al Gate Array, con un OUT, para que organice el mapa de memoria a nuestro gusto y, luego, leer.

Re: Pregunta sobre funcionamiento de la memoria del amstrad cpc

Publicado: 05 May 2020, 21:52
por dandare
Esta página tiene información bastante detallada:
http://www.cpcwiki.eu/index.php/Gate_Array

Hay que distinguir entre los registros relativos a la ROM, que están presentes en todos los equipos, y los relativos a la paginación de la RAM, solo disponibles en equipos de 128k

El registro 2 del Gate Array permite activar o desactivar las roms alta y baja de manera individual. Ojo que este registro también selecciona la resolución y datos relativos a interrupciones.

El registro 3 es el que sólo está en el 6128 y gestiona el modo en el que se configura la RAM. Este registro tiene dos grupos de 3 bits relacionados con la memoria. Los bits 0,1 y 2 son los que seleccionan de qué forma se presenta la memoria según el siguiente cuadro
Memoria CPC.png
Los bits 3,4 y 5 sólo se usan para CPC6128 expandidos a más de 128k y, por defecto, deben estar siempre a 0 en un 6128 sin expansiones de memoria externas.

Del cuadro anterior, una forma habitual de acceder es usando los modos 0, 4,5 6,7. De tal manera que vas poniendo páginas de los 64K más altos de la memoria en la dirección 0x4000. Así, por ejemplo, lo suele hacer 4Mhz.
Ten en cuenta que la configuración RAM solo es visible para la CPU (el z80). El CRTC, que es el que pone el video, siempre mira en los 64K bajos de la memoria, y dónde exactamente dentro de ellos se programa en el propio CRTC.

No sé exactamente cómo funciona el Multiface, pero anular la RAM del CPC en escritura no es posible en un 464. Esto significa que si usas memoria RAM externa, como esos 8K, los pongas donde los pongas, vas a escribir también en la memoria interna. En un 6128 sí es posible anular la RAM interna mediante HW.
Desde un punto de vista de lectura, en todos los CPC se puede anular cualquier espacio de direcciones, haya RAM o ROM para que lea de otro sitio (La CPU, el video siempre se lee de la ram interna).

Espero haberte aclarado algo

Re: Pregunta sobre funcionamiento de la memoria del amstrad cpc

Publicado: 05 May 2020, 23:11
por Valfac
Si, muchas gracias, me ha sido de gran utilidad, ahora ya sé por donde empezar, voy a poner en práctica lo que has comentado y observar los resultados.

Gracias por tu tiempo.

Saludos!