Pregunta sobre funcionamiento de la memoria del amstrad cpc

Aquí solo proyectos que incluyan el código fuente

Moderador: Fundadores

Reglas del Foro
Si no se incluyen los fuentes, se debe usar el foro de proyectos de software generales
Avatar de Usuario
Valfac Isle of Man
Aspirante a demonio
Aspirante a demonio
Mensajes: 498
Registrado: 26 Ene 2019, 20:31
Has thanked: 10 times
Been thanked: 15 times

Re: Pregunta sobre funcionamiento de la memoria del amstrad cpc

Mensaje 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.
Avatar de Usuario
dandare
Hermano de Lucifer
Hermano de Lucifer
Mensajes: 3718
Registrado: 09 Feb 2016, 15:09
Ubicación: I Register
Been thanked: 6 times

Re: Pregunta sobre funcionamiento de la memoria del amstrad cpc

Mensaje 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
No tiene los permisos requeridos para ver los archivos adjuntos a este mensaje.
Imagen
Imagen
Avatar de Usuario
Valfac Isle of Man
Aspirante a demonio
Aspirante a demonio
Mensajes: 498
Registrado: 26 Ene 2019, 20:31
Has thanked: 10 times
Been thanked: 15 times

Re: Pregunta sobre funcionamiento de la memoria del amstrad cpc

Mensaje 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!
Responder

Volver a “Proyectos de software abiertos”