Buenas a todos de nuevo. En la ROM que estoy haciendo necesito sustituir la página 0 de la memoria que ve el Z80 (la que contiene la BIOS al arrancar) por memoria RAM y dejarla permanentemente allí. Obviamente sé que no puedo hacer ninguna llamada a la BIOS en mi programa y que tengo que poner mi rutina ISR en 38h que dé servicio a las interrupciones en modo IM1 antes de activarlas. Todo eso ya está hecho, me funciona y no es problema. Pero me surgen unas dudas:
Primero. Tras sustituir la BIOS por RAM y buscando aprovechar el máximo posible de memoria disponible estoy colocando la pila en la dirección 0xFFFF de la RAM, que está situada en la página 3. ¿Se puede hacer esto con seguridad pues al no tener BIOS no se van a necesitar las variables del sistema y demás que empiezan justo debajo? ¿O hay alguna razón por la que pese a no utilizar la BIOS en ningún momento no deba de hacerlo y deba seguir colocando la pila en la dirección segura 0xF380?.
Segundo. Supongamos que la ROM es para un MSX2 o superior. El mínimo de RAM de esas máquinas tengo entendido que va a ser siempre 64K, ¿no?. Lo que estoy haciendo ahora mismo por no complicarme más es ver en qué slot y subslot está la RAM que el sistema ya coloca en la página 3 al arrancar y colocar el mismo slot y subslot en la página 0. Me parece haber leído, no recuerdo donde, que a partir de un MSX2 siempre se cumplía que la RAM estaba en el mismo slot y subslot. ¿Esto es realmente así o lo he leído yo mal?. El caso es que me funciona perfectamente tanto en mi Philips NMS 8280 como en varias máquinas que he probado en el openMSX. Pero la duda que tengo es, ¿se cumple esto SIEMPRE o existen MSX2 o superior donde la RAM que se puede colocar en la página 0 se encuentre en un slot y/o subslot diferente al de la RAM ya colocada en la página 3?.
Tercero. Qué hacer si no se cumple siempre lo anterior, o si queremos hacer lo mismo en un MSX1. Aquí sé que la cosa se complica. Lo primero es que imagino que en un primera generación sólo puedo ver RAM en la página 0 si el equipo tiene 64K, sino es imposible, ¿no?. Lo segundo es que aquí sí que sé que es seguro que me voy a encontrar equipos donde la RAM está en slots/subslots diferentes a la colocada en la página 3. Bien, he leído que lo que se hace es ir probando a colocar en la página deseada todos los slots/subslots posibles y hacer la comprobación de lectura/escritura/lectura/escritura en 16 posiciones consecutivas de memoria con el valor que contienen y su complemento a ver si se puede o no. Si te deja es que has encontrado RAM, sino a probar otro banco. ¿Este es el procedimiento correcto/habitual de hacerlo? ¿No tiene algún peligro el intentar leer/escribir en lo que quiera que sea que haya conectado en esos slots/subslots que desconocemos a priori lo que contienen?. Gracias.