;**************************************************************
;***    XMS00.ASM                                           ***
;***                                                        ***
;***    function        XMS_Xms.getVersion(                 ***
;***                        var xmsVersion: Word;           ***
;***                        var xmmVersion: Word;           ***
;***                        var hmaFlag:    Word)           ***
;***                        : Boolean;                      ***
;***                                                        ***
;***    Returns the version number of the XMS, the XMM,     ***
;***    and indicates whether HMA is available.             ***
;***                                                        ***
;**************************************************************

        .model  large,pascal 

        include xmsdefs.asm 

        extrn   errno:WORD  
        extrn   xmsHandler:DWord

;
;   Define entry point
;
        public  XMS_Xms@getVersion

        .code

XMS_Xms@getVersion  proc    xmsVer:Far Ptr Word, xmmVer: Far Ptr Word, HMAFlag: Far Ptr Word, self:DWord

        mov     ah,XMSGetVersion        ; Function code
        call    xmsHandler              ; call the guy

        or      ax,ax                   ; AX=0 means error
        jz      errorReturn

    ;
    ;   Save BX, which has the XMM version.
    ;
        mov     cx,bx

    ;
    ;   Now return the values.
    ;
        les     bx,xmsVer
        mov     es:[bx],ax              ; XMS version returned
        les     bx,xmmVer
        mov     es:[bx],cx              ; XMM version returned
        les     bx,HMAFlag
        mov     es:[bx],dx              ; HMA indicator

        mov     ax,XMSErrOK             ; No error
        ret

errorReturn:
        mov     al,bl                   ; Move error code to AL
        xor     ah,ah                   ; Zero extend to 16 bits
        mov     errno,ax                ; Copy to errno
        ret

XMS_Xms@getVersion  endp                ; End of procedure

        end
                                        ; End of source file
