INT 15H 87H: Move Memory Block

                                                                        [AT]

 Expects: AH    87H

          CX    amount of memory to move, in 2-byte words (max 8000H words)

          ES:SI address of 30-byte structure describing the operation

          

 Returns: AH    00H = successful move

                01H = RAM parity error occurred

                02H = other exception interrupt error occurred

          CF    NC (0) no error

                CY (1) some sort of error

          ZF    NZ (0) error; unsuccessful move

                ZR (1) successful move

          

    Info: You can use this to move chunks of memory around, even when you

          are running in real mode (access to RAM above 1MB is normally

          accessible only when in 80286 protected mode).



    Note: Only old programs use this BIOS interface.  It is much better to

          use XMS Functions or the DPMI API to access RAM above 1MB.



    ES:BX The caller must supply a 30-byte data record which will be used

          as a GDT (Global Descriptor Table).  This is used to translate

          between 32-bit addresses and 24-bit addresses.  It is laid out as

          follows:



          MoveMemGdtRec

            Offset Size Contents

              

             +0      8  res1      8 bytes of 0

             +8      8  res2      this GDT (filled-in by BIOS)

            +10H     2  wLimits   source block limits (filled-in by BIOS)

            +12H     3  p24Source 24-bit physical address of block to copy

            +15H     5  res3      (filled-in by BIOS)

            +1aH     3  p24Dest   24-bit physical address of destination

            +1dH    19  res4      (filled-in by BIOS)

                    30            size of buffer



          You need only fill-in the p24Source and p24Dest with 24-bit

          physical memory addresses.  Physical memory addresses are linear

          and can range from 000000H to ffffffH (i.e., up to 16 MB).



   Notes: Interrupts are disabled during block moves.  Therefore, use of

          this fn can interfere with serial I/O or other interrupt-driven

          tasks.



See Also: INT 15H (extended AT services)

          BIOS Data Area

          ROM-BIOS Functions

                                    -*-