home *** CD-ROM | disk | FTP | other *** search
- {->>>>QueryAdapterType<<<<-------------------------------------}
- { }
- { Filename : QUERYDSP.SRC -- Last Modified 7/11/88 }
- { }
- { This routine determines the currently installed primary }
- { display adapter and returns it in the form of a value from }
- { the enumerated type AdapterType. }
- { }
- { AdapterType must be predefined: }
- { }
- { AdapterType = (None,MDA,CGA,EGAMono,EGAColor,VGAMono, }
- { VGAColor,MCGAMono,MCGAColor); }
- { }
- { From: COMPLETE TURBO PASCAL 5.0 by Jeff Duntemann }
- { Scott, Foresman & Co., Inc. 1988 ISBN 0-673-38355-5 }
- {--------------------------------------------------------------}
-
- FUNCTION QueryAdapterType : AdapterType;
-
- VAR
- Regs : Registers;
- Code : Byte;
-
- BEGIN
- Regs.AH := $1A; { Attempt to call VGA Identify Adapter Function }
- Regs.AL := $00; { Must clear AL to 0 ... }
- Intr($10,Regs);
- IF Regs.AL = $1A THEN { ...so that if $1A comes back in AL... }
- BEGIN { ...we know a PS/2 video BIOS is out there. }
- CASE Regs.BL OF { Code comes back in BL }
- $00 : QueryAdapterType := None;
- $01 : QueryAdapterType := MDA;
- $02 : QueryAdapterType := CGA;
- $04 : QueryAdapterType := EGAColor;
- $05 : QueryAdapterType := EGAMono;
- $07 : QueryAdapterType := VGAMono;
- $08 : QueryAdapterType := VGAColor;
- $0A,$0C : QueryAdapterType := MCGAColor;
- $0B : QueryAdapterType := MCGAMono;
- ELSE QueryAdapterType := CGA
- END { CASE }
- END
- ELSE
- { Next we have to check for the presence of an EGA BIOS: }
- BEGIN
- Regs.AH := $12; { Select Alternate Function service }
- Regs.BX := $10; { BL=$10 means return EGA information }
- Intr($10,Regs); { Call BIOS VIDEO }
- IF Regs.BX <> $10 THEN { BX unchanged means EGA is NOT there...}
- BEGIN
- Regs.AH := $12; { Once we know Alt Function exists... }
- Regs.BL := $10; { ...we call it again to see if it's... }
- Intr($10,Regs); { ...EGA color or EGA monochrome. }
- IF (Regs.BH = 0) THEN QueryAdapterType := EGAColor
- ELSE QueryAdapterType := EGAMono
- END
- ELSE { Now we know we have an EGA or MDA: }
- BEGIN
- Intr($11,Regs); { Equipment determination service }
- Code := (Regs.AL AND $30) SHR 4;
- CASE Code of
- 1 : QueryAdapterType := CGA;
- 2 : QueryAdapterType := CGA;
- 3 : QueryAdapterType := MDA
- ELSE QueryAdapterType := CGA
- END { Case }
- END
- END;
- END;