Te recomiendo que la gestión de memoria lo dejes para lo último, y
trabajes para MSX-DOS, osea compilando directamente a ficheros .COM ya que
así tendrás casi todas las 64Kb RAM para tí solo.
OK, intentaré trabajar en este modo.
Te adjunto las rutinas que usé en el desarrollo del Ark-A-Noah para
leer
ficheros de disco a la RAM. Son unas rutinas hechas 'deprisa y corriendo'
por eso NO se molestan en detectar si el fichero no existe, si hay errores,
etc... Siempre asumo que todo ha ido BIEN!!! Por supuesto estas rutinas NO
están en la versión final del Ark-A-Noah, ya que solo las usaba para el
desarrollo del juego. La versión final carga directamente de los sectores
del disco, con unas rutinas 100% compatibles con todos los MSX, programadas
por MkII!!!!
Vaya con MkII!! 8)
Bueno, en cuanto al acceso a disco, también tengo unas rutinas muy bien
documentadas que me pasó Nestor. Echaré un vistazo a ambas, a ver si soy
capaz de entender como funciona.
Si posees un minimo de 512Kb en tu MSX te recomiendo el COMPASS, de lo
contrario NO te lo recomiendo como ensamblador pues NO tendrás memoria
suficiente para poder trabajar. Yo uso el COMPASS 1.2 con 1Mb de RAM!!!!
^_^! (que conste que soy usuario registrado)
Tengo 512 KB de RAM, y una ampliación externa de 1 MB. Me encantaría usar
Compass, pero no veo forma de adquirirlo. Parece ser que en España lo
distribuye Ramón Ribas, pero no consigo ponerme en contacto con él. Alguien
de la lista tiene el Compass y está dispuesto a venderlo? (el original y con
manuales, por supuesto).
Ayer por fin lo pude probar y la primera impresión que tuve fué muy
buena.
Me alegro 8)
También lo estuve desensamblando para ver que tal era el código por
encima, veo que usas la Bios al 99%, eso está bien, pero si quieres un
consejo personal, olvidaté lo máximo posible de ella, de esta forma
aprenderás 1000 veces más del MSX, y lo mejor de TODO es que serás TU y
solo
TU el que controle al MSX. Leer el teclado, Joy, Acceso al VDP,
Interrupciones, etc...
Así lo haré. Al principio me pareció arriesgado pasar de la BIOS, pero este
debe ser el momento de quitar las ruedecillas a la bici 8)
Veo que tu juego corre bajo UN BUCLE, osea que no está hecho sobre la
interrupción de la vBlank, no se si lo has hecho a proposito, pero si no
sabes lo que esto significa, cuando este mismo código lo veas corriendo
bajo
interrupción vas a flipar lo 'guapo' que se verá.
Al principio lo hice sobre un bucle para ir probando. Mi intención era
hacerlo como tú dices, pero al final, como soy muy vago, no lo cambié.
Si quieres te lo puedo 'retocar' para que funciona bajo interrupción de
vBlank y lo puedas ver, es muy sencillo...
Bueno, imagino que te refieres a la interrupción del VDP, ¿no? ¿la que se
genera 50 veces por segundo?
Animo y sigue así, programar en ensamblador es UNA GOZADA, pero te
aviso, SIEMPRE, SIEMPRE, SIEMPRE, perderás miles de horas para hacer
cualquier 'chorrada' Te lo aseguro.
Me hago a la idea 8)
Pero creo que el resultado bien merece el esfuerzo.
Hasta pronto.
---
Antoni Burguera i Burguera
Correu electrònic: burguera(_en_)novenadimensio(_punto_)net
Visita 9D-La Novena Dimensió: http://www.novenadimensio.net
---