I'm writing a game and it would be nice to load resources for the next level in the background.
I'm writing a game and it would be nice to load resources for the next level in the background.
Edit: then you effectively have your main loop doing IO and such, while your game loop is a co-routine in modern parlance. The game loop can write a global variable which the main code takes as a hint to start loading file data.
- maintain a, say, ring buffer :) for I/O commands (operation, file handle, offset, buffer address, callback address)
- add requests to the buffer from the game loop
- timer wakes up periodically, splits requests into palatable chunks, completes a portion of the requested work, when it reaches the end it either sets a flag on the request to signal its completion and/or jumps to its callback address
- game loop can periodically check and empty the request buffer or set the requests to self-destruct on completion
Presumably and perhaps more compatibly can also call the DOS function with interrupts disabled but with an interrupt line active (e.g. a timer) and handle it.