Sigo por aquí una conversación que teníamos por whatsapp, pero que quedó interrumpida anoche porque me quedé dormido O:-)
La cuestión era por qué el registro MASTERMAPPER (que permite mapear cualquier slot de RAM del ZXUno en la zona que ve el Spectrum) solo funciona en modo boot, y por tanto no puede usarse una vez arrancado el Spectrum. Esta es la respuesta de mcleod, que llegó cuando yo ya dormía:
A priori me parece correcta, al menos por la parte de las ROMs, porque a la RAM del DivMMC ya podemos acceder por otro lado. ¡Pero hay tantas cosas en el Spectrum que si haces algo mal se cuelga! Prueba a escribir a boleo en las variables del sistema en basic, a cambiar la pila sin tener cuidado en assembler, a hacer un salto a una dirección de la ROM errónea por error,etc.Porque parte de esos 512KB se usan para guardar la ROM del sistema, La ROM de ESXDOS y la RAM de DivMMC y por tanto no deberían poder estar disponibles como simple RAM para el usuario
Sinceramente me parece que se peca de exceso de celo en este asunto, porque a diferencia de la escritura en la flash, que es un peligro real, equivocarse al usar MASTERMAPPER lo más que puede llevar es a tener que hacer un master reset ¿no? O sea, lo mismo que hacemos en un Spectrum real cuando la cagamos y se nos cuelga.
Sinceramente yo dejaría acceso libre a MASTERMAPPER y que lo use quien o necesite o quiera hacerlo, y como mucho si os parece peligrosa la escritura en ROM, que sea necesario activar un nuevo bit de DEVCRTL2 para poder escribir en ciertos slots (algo en plan EnROMWrite). Ni siquiera quitaría del todo la escritura en los bancos de ROM, porque puede que un programador necesite esa memoria y pueda prescindir de las ROMs así que no le importe reescribirlas, o incluso realice escrituras intencionadas para dar un servicio (como el pokeador automático de Microhobby).