
  History

  12.04.2022: v3.54
  - reallocating super-extended memory blocks did loose data if
    the block's old size was > 4 GB and had to be moved ( that is,
    the block's size was increased and there was not enough free space
    "behind" the block ).
  09.04.2022: v3.53
  - implements interface v3.51. This adds a new block move function,
    selected with AH=0CBh, to the XMM. This new function allows to 
    set 40-bit offsets for the source or destination addresses.
    Done by Jason Hood.
  17.12.2020: v3.52
  - set RW page flag for page 0, else, if CR0.WP is set, a reboot occurs.
  11.12.2020: v3.51
  - xms block move function speed-up.
  - optionally place page dir at the end of first memory block.
  - return DX=0 if emb allocation fails (XMS spec).
  - debug version: exceptions in protected-mode caught.
  - bugfix: printf() did assume SS==DS.
  - restore rm CS after sx pmode (needed by some machines, but why?)
  29.10.2020: v3.50
  - fixed: if a memory block beyond 4 GB was reallocated and had to be
    "moved" (because its size increased and there was no free space "behind"
    it), its new location was below the 4 GB barrier.
  27.10.2020:
  - fixed: block move with length > 2 GB failed due to signed comparison.
  26.10.2020:
  - fixed: cpuid check for PSE-36 used bit 16 instead of bit 17.
  - cleaned source (use prototypes & invoke)
  - added option /SUPERMAX=xxx.
  - removed option /NOX2MAX32.
  - block move function in V86 mode supports memory beyond 4GB
    if the EMM is Jemm386 v5.80+.
  25.10.2020:
  - block move overlap check works for entire 40-bit address space.
  25.10.2020:
  - ensured that no memory beyond the 1 TB barrier is used.
  23.10.2020:
  - fixed: block move crossing a 4 GB barrier may have lost data.
  21.10.2020:
  - initial version.

