home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / xbase / library / clipper / rettig / source / dosvers.asm < prev    next >
Assembly Source File  |  1990-10-21  |  2KB  |  70 lines

  1. ; Function: DOSVERS.ASM
  2. ;
  3. ; By Leonard Zerman
  4. ;
  5. ; Placed in the public domain by Tom Rettig Associates, 10/22/1990.
  6. ;
  7. ;    Syntax:  m_dos = DOSVERS()
  8. ;    Return:  <expC> = version of user's DOS
  9. ;----------------------------------------------------------------
  10.  
  11.           PUBLIC DOSVERS
  12.           EXTRN __RETC:FAR
  13.  
  14. _DATA SEGMENT WORD PUBLIC 'DATA'
  15.    VERSTR   DB "0.00"
  16.    DOS1     DB "1.xx"
  17. _DATA ENDS
  18.  
  19. DOSVERS_TEXT SEGMENT BYTE PUBLIC 'CODE'
  20.         ASSUME  CS:DOSVERS_TEXT, DS:_DATA
  21.  
  22. DOSVERS PROC FAR
  23.           PUSH    SI
  24.           MOV     AH,30H
  25.           INT     21H         ; Get DOS version.
  26.           OR      AL,AL       ; If AL is 0, it's DOS 1.something
  27.           JZ      BADDOS
  28.  
  29.           LEA     SI, VERSTR
  30.           PUSH    AX
  31.           XOR     AH,AH
  32.           AAM                 ; Convert AL to decimal digits in AH and AL
  33.           ADD     AL,30H
  34.           MOV     [SI],AL     ; And store in string area
  35.           INC     SI
  36.           MOV     AL,'.'      ; Decimal point
  37.           MOV     [SI],AL
  38.           INC     SI
  39.           POP     AX
  40.           XCHG    AH,AL
  41.           XOR     AH,AH
  42.           AAM                 ; Convert minor version number 
  43.                               ; to decimal digits
  44.           ADD     AH,30H
  45.           ADD     AL,30H
  46.           MOV     [SI],AH     ; and store in return string
  47.           INC     SI
  48.           MOV     [SI],AL
  49.           INC     SI
  50.           XOR     AL,AL
  51.           MOV     [SI],AL
  52.           LEA     SI, VERSTR
  53.           JMP     SHORT RETURN
  54. ;
  55. BADDOS:   LEA     SI, DOS1   ; return '1.xx'
  56. ;
  57. RETURN:   PUSH    DS
  58.           PUSH    SI
  59.           CALL    __RETC
  60.           ADD     SP,4
  61.           POP     SI
  62.           RETF
  63. DOSVERS   ENDP
  64. DOSVERS_TEXT    ENDS 
  65.                 END  
  66. ;--------------------------------------------------------------------------
  67. ;***************************************
  68.           END
  69.  
  70.