dandare escribió:
Es posible que acabe haciendo lo que me sugieres, tengo que ver cómo se comporta todo porque me preocupa especialmente el refresh de la DRAM (principalmente porqués un tema que he obviado pensando que ya me encargaré luego de el).
Lo del refresco es un problema bastante complicado de resolver. Por eso pienso que es más sencillo traspasar los datos vía puerto IO y olvidarse de hacer DMA.
dandare escribió:
Tal y como está diseñado ahora el sistema, el PIC no puede hablar con la SRAM mientras que el Z80 esté activo ya que comparten los mismos buses de datos, direcciones y control, por eso, si tengo que atontar al Z80, ya me da igual escribir en la DRAM alta que en la SRAM.
Tendrías que poner unos multiplexores para los buses o usar el truco del Spectrum y separarlos con unas resistencias
Pero sigue estado el problema del refresco.
La ULA no tiene ese problema con la memoria baja porque el hecho de leer la memoria para pintar la pantalla ya hace de refresco y aunque le quite la señal de reloj al Z80 no pasa nada.
En tu caso, con la memoria alta o haces el DMA alternando el acceso con la CPU para permitir el refresco, o haces tu directamente el refresco con el PIC. No se como se llevará eso con la gestión que hace internamente el Z80.
dandare escribió:
¿Sabes si el código Z80 del divmmc es libre? estaría interesante ver ese SW, sobre todo si está hecho directamente en ensamblador. Seguro que se aprende un montón, principalmente de la gestión FAT y, por curiosidad, cómo han implementado el SPI, que así de entrada se me ocurre que podría ser con SCK, SDO y CS mediante lineas de direcciones en puerto IO y SDI mediante el bus de datos.
El del DivMMC no es libre. Lo único que conozco es el del FATware pero es solo para IDE.
dandare escribió:
De nuevo muchas gracias, si vas a RetroParla me encantará charlar un rato contigo y conocerte.
Mi intención es ir. Y lo mismo digo, a mi también me encantará conocerte y charlar de estas cosas
![Sonrisa :)](./images/smilies/sc_jsmiley.gif)