Int 67H [EMS 4.0] Function 57H (87) Subfunction 00H Move memory region

Copies a memory region from any location in conventional or expanded memory to any other location without disturbing the current expanded memory mapping context.

Call with:

AH = 57H

AL = 00H

DS:SI = segment:offset of buffer (see Notes)

Returns:

If function successful

AH = 00H

If function unsuccessful

AH = error code

Notes:

The format of the buffer controlling the move operation is:

Offset Length Description 00H 4 region length in bytes 04H 1 source memory type (0 = conventional, 1 = expanded) 05H 2 source memory handle 07H 2 source memory offset 09H 2 source memory segment or physical page number 0BH 1 destination memory type (0 = conventional, 1 = expanded) 0CH 2 destination memory handle 0EH 2 destination memory offset 10H 2 destination memory segment or physical page number

A length of zero bytes is not an error. The maximum length of a move is 1 MB. If the length exceeds a single expanded memory page, consecutive expanded memory pages (as many as are required) supply or receive the data.

If the source and destination addresses overlap, the move will be performed in such a way that the destination receives an intact copy of the original data, and a nonzero status is returned.