2026-08-09
Most of the work this week was on converting Eric Auer's LBAcache to provide and use an Alternate Multiplex Interrupt Specification (AMIS) multiplexer. (The use is in uncache, the transient part that works with previously installed instances rather than installing a new one.) The advantages are as follows:
Cooperates with other TSRs by providing an IBM Interrupt Sharing Protocol (IISP) header, and an interrupt list for the AMIS interface.
Decouples the hardcoded variable and entry layout required for prior versions.
Allows detecting resident instances without the error-prone memory scan.
Using the advanced deinstallation method the uninstaller can take advantage of other IISP headers and AMIS interrupt lists.
Multiple resident instances can now uninstall cleanly using a single STOP command.
The disadvantages are:
Need to hook interrupt 2Dh.
Several paragraphs of memory spent for the multiplexer-specific data structures and code handlers. (Due to the optimisations of the resident part, the updated LBAcache including the multiplexer still uses less memory (table @ 1050h) than Eric's last version (table @ 117Ch).)
I found that testing LBAcache works best with buffers=1 in ldos.ini, or by adding append buffers=1 to the kernel command line. That way, DOS cannot buffer as much as it would usually, hence more reads go to LBAcache's handler.
→ Read more...