home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD2.mdf / c / library / mslang / vm / src / xms / xms.asm next >
Encoding:
Assembly Source File  |  1993-12-13  |  1.1 KB  |  67 lines

  1.     .model    large,pascal
  2.  
  3.     include xms.inc
  4.  
  5.     .data?
  6.  
  7. pfnXms    dd    1 dup (?)
  8.  
  9.  
  10.     .code    XMS_TEXT
  11.  
  12.  
  13.     public    __ErrXmsCall
  14. __ErrXmsCall    proc    near
  15.  
  16.     assume    ds:nothing
  17.  
  18.     call    [pfnXms]        ;AX = 0  and BL < 0 if error
  19.     or    ax,ax
  20.     jnz    Exit            ;Brif no error
  21.     or    bl,bl
  22.     jns    Exit            ;Brif no error
  23.  
  24.     mov    al,bl            ;AL = Error code
  25.     cbw                ;AH = 00 or FF
  26.     add    ax,errXmsBase-0FF80h    ;Map to ERR value
  27.  
  28.     ;This add instruction also sets the carray flag
  29.  
  30. Exit:
  31.     ret
  32.  
  33. __ErrXmsCall    endp
  34.  
  35.  
  36.     ;BOOL PUBLIC __FXmsCheckInstalled(void);
  37.  
  38.     public    __FXmsCheckInstalled
  39. __FXmsCheckInstalled    proc
  40.  
  41.     assume    ds:@data
  42.  
  43.     mov    ax,4300h
  44.     int    2fh
  45.     cmp    al,80h            ;Is driver installed?
  46.     jne    NoXms            ;Brif not
  47.  
  48.     mov    ax,4310h
  49.     int    2fh            ;ES:BX = XMS control function
  50.     mov    word ptr [pfnXms],bx
  51.     mov    word ptr [pfnXms+2],es
  52.  
  53.     xor    ax,ax            ;AH = 00h (Get XMS Version Number)
  54.     call    [pfnXms]        ;AX = XMS Version
  55.     cmp    ax,0200h        ;Is this version 2.00 or better
  56.     jae    Exit            ;Brif so, AX != 0. Returning TRUE
  57.  
  58. NoXms:
  59.     xor    ax,ax            ;Return FALSE
  60.  
  61. Exit:
  62.     ret
  63.  
  64. __FXmsCheckInstalled    endp
  65.  
  66.     end
  67.