Hi Ralph,
Not sure if I explained why just "walking the MCB chain" is not sufficient to
locate the driver during the meeting.
When the config sys includes "DOS=UMB” the upper memory blocks are part of the
MCB chain. If that is option is not included, then those blocks are not linked
to the chain. (Un)Linking can be performed using INT 0x21,AH=0x58.
https://fd.lod.bz/rbil/interrup/dos_kernel/2158.html
<https://fd.lod.bz/rbil/interrup/dos_kernel/2158.html>
However, based on what memory management drivers are loaded and config
settings, (un)linking may not be possible and allocating a UMB may not succeed.
If this is the case, the driver will try to allocate a UMB through the XMS
memory manager. The memory may then be allocated but not part of the MCB chain
because DOS itself is not managing that region of memory.
If that fall-back allocation is successful, "walking the MCB chain" will not
locate the driver. It is a rare combination of system configuration options
that can permit the fall-back memory allocation to be successful. It would be
easier to not go through the extra steps and only allocate memory when DOS is
managing that region.
I do not recall at present the exact configuration of options and drivers that
are required, that will fail to allocate the memory through DOS but are
successful when directly using the XMS driver. I can not seem to duplicate that
result at present. I should have made notes on it.
The UMB test program can demonstrate most of that stuff. However, it does not
perform the fall-back of using the XMS manager to try and allocate memory.
https://fd.lod.bz/redist/memory/ <https://fd.lod.bz/redist/memory/>
On a side note, once I determine the best interrupt hook, It would be faster to
just call that interrupt function to see if it is loaded. That could also
provide an “API” for other programs to easily write to the Log and perform
other interactions with the driver.
:-)
Jerome
_______________________________________________
Freedos-devel mailing list
Freedos-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freedos-devel