La mejora es sencillamente el poder controlar el multiboot por programa. Para ello se han habilitado dos nuevos registros: COREADDR y COREBOOT.
COREADDR: guarda la dirección (24 bits) en la SPI donde se alojará el core que queremos arrancar. Los 24 bits se guardan escribiendo tres veces a este registro, 8 bits cada vez, comenzando por el byte más significativo del valor que queremos guardar.
COREBOOT: lanza una petición de arranque de core a la Spartan
Por ejemplo: para forzar que arranque de nuevo el core de ZX Spectrum, hacer:
Código: Seleccionar todo
10 OUT 64571,252
20 OUT 64827,5: OUT 64827,128: OUT 64827,0: REM SPI addr: 0x58000
30 OUT 64571,253: OUT 64827,1
Código: Seleccionar todo
OUT 64571,253: OUT 64827,1
Detalles (no mucho más de lo que os acabo de contar) en http://www.zxuno.com/wiki/index.php/ZX_ ... _de_ZX-Uno
Quest: ¿es esto lo que me pediste, no?
Cuando una esto a lo que ha hecho Jepalza con la VGA, tendremos el TEST 20. Quería comenzar primero con el multiboot porque cambian muchas cosas del mapa SPI, que en el core de Jepalza ya se dan por hechas, así que voy por pasitos: primero pongo lo de Quest, y a continuación, lo de Jepalza.