;**************************************************************
;***    EMS500.ASM                                          ***
;***                                                        ***
;***    function        EMS_EmBlk.mapPagesByNum40(          ***
;***                        pages:          Word;           ***
;***                        buffer:         Pointer)        ***
;***                        : Boolean;                      ***
;***                                                        ***
;***    Fill buffer with 32 bit entries which control pages ***
;***    to be mapped by page number                         ***
;***                                                        ***
;***    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_EmBlk@mapPagesByNum40

        .code

EMS_EmBlk@mapPagesByNum40   proc num:Word, buffer:Far Ptr Word, handle:Far Ptr DWord

        push    ds                      ; Save regs
        push    si

        les     bx,handle
        mov     dx,es:[bx]              ; EMS handle
        mov     cx,num                  ; Number of pages to map

        lds     si,buffer               ; Map info buffer

        mov     ax,MapPagesByNum40      ; Make 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 get error code
        xor     ah,ah                   ; Zero extend
        mov     errno,ax                ; Save in errno too

        ret

EMS_EmBlk@mapPagesByNum40   endp        ; End of procedure

        end                             ; End of source file
