;************************************************************** ;*** EMS580.ASM *** ;*** *** ;*** function EMS_Ems.getAddrsMappable40( *** ;*** var buffer: EMS_MappablePagesInfoArr; *** ;*** var num_entries: Word) *** ;*** : Boolean; *** ;*** *** ;*** Returns, in the buffer specified a list of the *** ;*** pages in memory which can be mapped. These include *** ;*** pages in the middle of the 640K area so caution *** ;*** must be exercised in mapping them. *** ;*** *** ;*** 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@getAddrsMappable40 .code EMS_Ems@getAddrsMappable40 proc buffer:Far Ptr Byte, num_entries:Far Ptr Word, self:DWord push di ; Save di les di,buffer ; Get the buffer address into ES:DI mov ax,GetAddrsMappable40 ; Make the EMS call int Ems or ah,ah ; Set flags jnz error les bx,num_entries ; Return number of pages mov word ptr es:[bx],cx xor ax,ax ; return OK pop di ; restore di ret error: pop di ; restore di mov al,ah ; AL gets error code xor ah,ah ; Zero extend mov errno,ax ; Save in errno too ret EMS_Ems@getAddrsMappable40 endp ; End of procedure end ; End of source file