;**************************************************************
;***    EMS4D.ASM                                           ***
;***                                                        ***
;***    function    EMS_Ems.getPagesAllHandles(             ***
;***                    var info:        EMS_HandleInfoArr  ***
;***                    var num_handles: Word)              ***
;***                    : Boolean;                          ***
;***                                                        ***
;***    Gives the number of pages associated with each      ***
;***    active EMM handle, and the number of active         ***
;***    EMM handles.                                        ***
;***                                                        ***
;***                                                        ***
;***    (Ems Version 3.0)                                   ***
;**************************************************************

        .model  large,pascal   

        include emsdefs.asm 

        extrn   errno:WORD  

;
;   Define entry point
;
        public  EMS_Ems@getPagesAllHandles

        .code

EMS_Ems@getPagesAllHandles proc    info:Far Ptr DWord, num_handles:Far Ptr Word, self:DWord

        push    di                      ; Save DI, we need it

;
;   ES:[DI] gets the buffer address
;
        les     di,info

        mov     ah,GetPagesAllHandles   ; Move function code
        int     Ems                     ; Do the ems call

        or      ah,ah                   ; Set flags
        jnz     error

;
;   Return the number of handles:
;
        mov     ax,bx                   ; Number of handles
        les     bx,num_handles
        mov     es:[bx],ax              ; Give it back

        xor     ax,ax                   ; AX gets 0
        pop     di                      ; Restore di
        ret                             ; Return to caller

error:
        pop     di                      ; Restore di

        mov     al,ah                   ; Transfer return code to al
        xor     ah,ah                   ; Zero high byte
        mov     errno,ax                ; Save in errno too
        ret                             ; Return to caller

EMS_Ems@getPagesAllHandles endp         ; End of procedure

        end                             ; End of source file




