;************************************************************** ;*** EMS42.ASM *** ;*** *** ;*** function EMS_Ems.getFreeEM( *** ;*** var total: Word; *** ;*** var free: Word) *** ;*** : Boolean; *** ;*** *** ;*** Returns the total number of EMS pages and the *** ;*** number of pages available. Returns 0 if no error *** ;*** or an error code. *** ;*** *** ;*** *** ;*** (Ems Version 3.0) *** ;************************************************************** .model large,pascal include emsdefs.asm extrn errno:WORD ; ; Define entry point ; public EMS_Ems@getFreeEM .code EMS_Ems@getFreeEM proc total:Far Ptr word, free:Far Ptr Word, self:Dword mov ah,GetFreeEM ; Move function code int Ems ; Do the ems call or ah,ah ; Set flags jnz error ; ; BX now has the number of free EMS pages, DX has the total ; number of EMS pages. Return the values: ; mov ax,bx ; Save free pages les bx,free ; Get address of free mov es:[bx],ax ; Put free pages down les bx,total ; Get address of total mov es:[bx],dx ; Put total pages down xor ax,ax ret ; AX has zero error: mov al,ah xor ah,ah ; Zero high byte mov errno,ax ; Save in errno too ret EMS_Ems@getFreeEM endp ; End of procedure end ; End of source file