;**************************************************************
;***    EMS591.ASM                                          ***
;***                                                        ***
;***    function        EMS_Ems.getNumRawPages40(           ***
;***                        var total_pages: Word;          ***
;***                        var free_pages: Word)           ***
;***                        : Boolean;                      ***
;***                                                        ***
;***    Returns the total number of free raw pages and the  ***
;***    number of raw pages available.                      ***
;***                                                        ***
;***    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@getNumRawPages40

        .code

EMS_Ems@getNumRawPages40 proc    total:Far Ptr Word, free:Far Ptr Word, self:DWord

        mov     ax,GetNumRawPages40     ;  Do the EMS call
        int     Ems

        or      ah,ah                   ; Set flags
        jnz     error

        mov     ax,bx                   ; Save free pages
        les     bx,free                 ; Return it to caller
        mov     es:[bx],ax
        les     bx,total                ; Return total pages to caller
        mov     es:[bx],dx

        xor     ax,ax                   ; Return OK
        ret

error:
        mov     al,ah                   ; AL gets error code
        xor     ah,ah                   ; Zero extend
        mov     errno,ax                ; Save in errno too
        ret

EMS_Ems@getNumRawPages40 endp           ; End of procedure

        end                             ; End of source file
