;************************************************************** ;*** EMS571.ASM *** ;*** *** ;*** function EMS_Ems.swapMemRegions40( *** ;*** var buffer: EMS_MoveMemoryInfo) *** ;*** : Boolean; *** ;*** *** ;*** Swaps memory region from source to destination *** ;*** described in MoveMemoryInfo_type structure *** ;*** *** ;*** Buffer Structure *** ;*** ---------------- *** ;*** DWORD length; ; memory length *** ;*** BYTE srce_type; ; 0=conventional,1=expanded *** ;*** WORD srce_handle; ; source emeory handle *** ;*** WORD srce_offset; ; source memory offset *** ;*** WORD srce_id; ; source seg or phys page *** ;*** BYTE dest_type; ; 0=conventional,1=expanded *** ;*** WORD dest_handle; ; source emeory handle *** ;*** WORD dest_offset; ; source memory offset *** ;*** WORD dest_id; ; source seg or phys page *** ;*** *** ;*** Returns 0 if no error or an error code. *** ;*** *** ;*** *** ;*** *** ;*** (Ems Version 4.0) *** ;************************************************************** .model large,pascal include emsdefs.asm extrn errno:WORD ; ; Define entry point ; public EMS_Ems@swapMemRegions40 .code EMS_Ems@swapMemRegions40 proc buffer:Far Ptr Byte, self:DWord push ds ; Save regs push si lds si,buffer ; DS:SI gets swap buffer address mov ax,SwapMemRegions40 ; Do the EMS call int Ems or ah,ah ; Set flags jnz error xor ax,ax ; Return OK pop si ; Restore regs pop ds ret error: pop si ; Restore regs pop ds mov al,ah ; AL gets error code xor ah,ah ; Zero extend mov errno,ax ; Save in errno too ret EMS_Ems@swapMemRegions40 endp ; End of procedure end ; End of source file