July/August work
callver, fdapm, seekext
Preserve CF when chaining to the int 21h downlink:
For seekext, additionally:
Preserving CF for int 21h handlers is based on an answer on stackoverflow in which I modified an example to create an int 21h hook that can call its downlink (using pushed flags and a far call). The needed modifications:
Pass CF and ZF returned from the downlink call to our caller, done using lahf
and setting up bp
to access the iret frame.
-
Pass input flags to the downlink (either in the far call or far jump). DOS probably doesn't care about the live flags in the fl
register, but another caller using pushf
would pass along the live fl
to its iret stack frame.
Free the environment and close all process file handles.
LZEXE
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Optimise depack.asm:
-
-
Store the tag position as a cycle mask rotating a single set bit through the word's 16 bits instead of a byte counter that counts down from 16. The advantage is one instruction less as the cycle mask needn't be re-initialised like the counter does need to be. (Picked
from lDebug repo.)
inicomp lzexedat.asm
Interc3
Do early check for sp size, checked later in process. This allows LZEXE's comtoexe to detect the minimum required memory block size.
Add the E. of my initials and update some attribution years.
-
Use the hw reset retf in interrupt handlers
as a trampoline to help debugging. In particular, lDebug's P command can work with the call near instruction now as the instruction immediately following this call is used as the trampoline instruction. (Prior to this the debugger would not re-gain control as expected.)
-
-
-
-
-
-
-
-
-
lDebug