Por zupuezto
Lo que sigue es un extracto del proceso de inicialización del MSX-DOS, que hasta cierto momento entiendo que es común con el BOOT estandar de una máquina MSX. Sólo incluyo esos pasos comunes (en negrita el que creo que es clave) :
1. Resetting MSX causes all the slots to be examined first, and when two
bytes, 41H and 42H, are written in the top of the examined slot, the slot is
interpreted as connected to a certain ROM. When connected with ROM, the INIT
(initialize) routine whose address is set to the header portion of ROM is
carried out. In the case of the INIT routine of the disk interface ROM, the
work area for the drive connected to the interface is allocated first.
2. When all slots have been examined, FEDAH (H.STKE) is then referred to.
Unless the contents of this address is C9H (unless a certain routine is set
to the hook of H.STKE during INIT routine), the environment for DISK-BASIC is
prepared and execution jumps to H.STKE.
3. When the contents of H.STKE is C9H in the examination above, the cartridge
with TEXT entry is searched in each slot and, if found, the environment for
DISK-BASIC is prepared, and then the BASIC program at the cartridge is
carried out.
4. Then, the contents of the boot sector (logical sector #0) is transferred
to C000H to C0FFH. At this time, when "DRIVE NOT READY" or "READ ERROR"
occurs, or when the top of the transferred sector is neither EBH nor E9H,
DISK-BASIC is invoked.
5. The routine at C01EH is called with CY flag reset. Normally, since code
"RET NC" is written to this address, nothing is carried and the execution
returns. Any boot program written here in assembly language is invoked
automatically.
6. RAM capacity is examined (contents of RAM will not be destroyed). Less
than 64K bytes causes DISK-BASIC to be invoked.
Y citando a BiFi en un mensaje de MRC :
It's not that hard to do actually. Have the init set up the H.STKE hook to continue with the rest of the init... It'll init the disk interface and continue with the game after that.
After that, you can do BDOS functions to access disk. The address for the routine to do BDOS function calls is $F37D. Info on BDOS can be found on the MSX Assembly Page.
o este otro :
- A MSX cartridge (eg ROM) can patch the H.STKE to take control of the disksystem. In this case, as soon as the initialization of the disksystem is ready, control is passed to the basic interpreter (so no basic roms, bootsectors to take control), and at a certain point H.STKE is called, and control is back to the cartridge. This is used by ROM games, which use the disksystem.
A pesar de todo hay algo que no me queda claro y tendría que coger lápiz y papel para darle unas vueltas. Si das con el método preciso, no dejes de comentarlo
.
(antes del segundo impacto Grin )
Jejejeeeee,
Como se te nota la vena evangelizadora...