;**************************************************************
;***    EMS590.ASM                                          ***
;***                                                        ***
;***    function  EMS_Ems.getHWConfig40(                    ***
;***                var buffer:     EMS_HardwareConfigInfo) ***
;***                : Boolean;                              ***
;***                                                        ***
;***    HardwareConfigInfo_type structure                   ***
;***    ---------------------------------                   ***
;***    WORD    raw_p_size;  ; size of raw pages in paras   ***
;***    WORD    alt_regs;    ; number of alt reg sets       ***
;***    WORD    save_area;   ; size of map sav area (bytes) ***
;***    WORD    regs_to_dma; ; max num regs assigned to dma ***
;***    WORD    dma_type;    ; 0=alt dma regs OK,           ***
;***                         ; 1=one dma reg only           ***
;***                                                        ***
;***    Returns hardware config info to structure pointer.  ***
;***                                                        ***
;***    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@getHWConfig40

        .code

EMS_Ems@getHWConfig40 proc buffer:Far Ptr Word, self:DWord

        push    di                      ; Save DI

        les     di,buffer               ; ES:DI gets buffer address

        mov     ax,GetHWConfig40        ; Do the EMS call
        int     Ems           

        or      ah,ah                   ; Set flags
        jnz     error

        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@getHWConfig40 endp              ; End of procedure

        end                             ; End of source file

