home *** CD-ROM | disk | FTP | other *** search
/ io Programmo 23 / IOPROG_23.ISO / SOFT / NFSRC305.ZIP / ASM / ADAPTER.ASM next >
Encoding:
Assembly Source File  |  1995-05-01  |  3.1 KB  |  111 lines

  1. ; File......: ADAPTER.ASM
  2. ; Author....: Ted Means
  3. ; CIS ID....: 73067,3332
  4.  
  5. ; This is an original work by Ted Means and is placed in the
  6. ; public domain.
  7. ;
  8. ; Modification history:
  9. ; ---------------------
  10. ;
  11. ;     Rev 1.3   17 Aug 1993 19:25:38   GLENN
  12. ;  Ted modified so it would work in protected mode.
  13. ;
  14. ;     Rev 1.2   15 Aug 1991 23:07:18   GLENN
  15. ;  Forest Belt proofread/edited/cleaned up doc
  16. ;
  17. ;     Rev 1.1   14 Jun 1991 19:54:18   GLENN
  18. ;  Minor edit to file header
  19. ;
  20. ;     Rev 1.0   01 Apr 1991 01:03:08   GLENN
  21. ;  Nanforum Toolkit
  22. ;
  23. ;
  24.  
  25.  
  26.  
  27. ;  $DOC$
  28. ;  $FUNCNAME$
  29. ;     FT_ADAPTER()
  30. ;  $CATEGORY$
  31. ;     Video
  32. ;  $ONELINER$
  33. ;     Report the type of video adapter installed
  34. ;  $SYNTAX$
  35. ;     FT_ADAPTER() -> nResult
  36. ;  $ARGUMENTS$
  37. ;     None
  38. ;  $RETURNS$
  39. ;     Integer representing type of video adapter
  40. ;
  41. ;        0 - monochrome
  42. ;        1 - CGA
  43. ;        2 - EGA
  44. ;        3 - VGA
  45. ;  $DESCRIPTION$
  46. ;     This function is valuable if you use a graphics library and need to
  47. ;     know what type of graphics adapter is installed.
  48. ;
  49. ;     The source code is written to adhere to Turbo Assembler's IDEAL mode.
  50. ;     To use another assembler, you will need to rearrange the PROC and
  51. ;     SEGMENT directives, and also the ENDP and ENDS directives (a very
  52. ;     minor task).
  53. ;  $EXAMPLES$
  54. ;     iVideo := FT_ADAPTER()
  55. ;
  56. ;     DO CASE
  57. ;        CASE iVideo == 0
  58. ;           QOUT( "You have a monochrome adapter." )
  59. ;        CASE iVideo == 1
  60. ;           QOUT( "You have a CGA adapter." )
  61. ;        CASE iVideo == 2
  62. ;           QOUT( "You have an EGA adapter." )
  63. ;        CASE iVideo == 3
  64. ;           QOUT( "You have a VGA adapter." )
  65. ;     ENDCASE
  66. ;  $SEEALSO$
  67. ;     FT_SETMODE()
  68. ;  $END$
  69. ;
  70.  
  71. IDEAL
  72.  
  73. Public   FT_ADAPTER
  74.  
  75. Extrn    __RetNI:Far
  76.  
  77. Segment  _NanFor   Word      "CODE"
  78.          Assume    CS:_NanFor
  79.  
  80. Proc     FT_ADAPTER          Far
  81.  
  82.          Mov       AX,40h
  83.          Mov       ES,AX
  84.          Xor       AX,AX
  85.          Cmp       [Word Ptr ES:63h],3B4h
  86.          JE        Done
  87.  
  88. IsVGA:   Mov       AX,1A00h                  ; VGA-only BIOS call
  89.          Int       10h                       ; Call video BIOS
  90.          Cmp       AL,1Ah                    ; See if call supported
  91.          JNE       IsEGA                     ; If not, try EGA
  92.          Mov       AX,3                      ; Indicate VGA
  93.          JMP       Short Done                ; Return to application
  94.  
  95. IsEGA:   Mov       AH,12h                    ; EGA-only BIOS call
  96.          Mov       BL,10h                    ; Set BL to test value
  97.          Int       10h                       ; Call video BIOS
  98.          Cmp       BL,10h                    ; Did BL change?
  99.          JE        IsCGA                     ; No, so it's a CGA
  100.          Mov       AX,2                      ; Indicate EGA
  101.          Jmp       Short Done                ; Return to application
  102.  
  103. IsCGA:   Mov       AX,1                      ; Indicate CGA
  104.  
  105. Done:    Push      AX                        ; Save adapter type on stack
  106.          Call      __RetNI                   ; Return it
  107.          Pop       AX
  108.          RetF
  109. Endp     FT_ADAPTER
  110. Ends     _NanFor
  111. End