[comp.os.msdos.programmer] Relocating Data Segment to High Memory

trier@cwlim.INS.CWRU.Edu (Stephen C. Trier) (03/17/91)

Our PC/IP software here uses a TSR for TCP/IP support, eating about
88K of conventional memory.  I'd like to add an option to move part
of this into XMS memory.  Since the kernel is small model, with about
60K used in its data segment, it seems that I could move the data
segment into the 64K High Memory Area with code like the following:

    Request the HMA
    Copy all but first 16 bytes of DS into the HMA
    Point DS and SS at the HMA
    Execute TSR call, reserving only enough space for CS

Then, when it comes time to unload the TSR, I release the HMA and
the code segment, in that order.  Can I assume that the A20 line
will remain enabled, so that I can access the data segment in an
interrupt handler?

Does this make sense?  Am I missing anything critical?  It seems too
simple to be DOS!  :-)

-- 
Stephen Trier                              Case Western Reserve University
Work: trier@cwlim.ins.cwru.edu             Information Network Services
Home: sct@seldon.clv.oh.us               %% Any opinions above are my own. %%