CGA or Mono?

 BBS: Inland Empire Archive
Date: 09-12-92 (11:26)             Number: 254
From: TONY ELLIOTT                 Refer#: NONE
  To: WALTON DELL                   Recvd: NO  
Subj: CGA or Mono?                   Conf: (2) Quik_Bas
Walton,

WD>  How can I tell if a mono or color moniter is being used,
  >WITHOUT using ON ERROR?  Right now I just use ON ERROR with
  >a WIDTH 40 (can still use NOGRAPH.OBJ), but I'd like to be
  >able to stub out error traping!

The bottom line is ... You can't. At least, not 100% accurately. You
can easily determine the type of video -adapter- present, but not the
type of monitor attached. This is what I do, and it works 99% of the
time:

DECLARE FUNCTION IsAColor% ()

IF IsAColor% THEN
    PRINT "A color ";
ELSE
    PRINT "A b/w ";
END IF
PRINT "monitor is attached"
END

FUNCTION IsAColor% ()
    DEF SEG = 0
    VidMode% = PEEK(&H449)      'Current video mode
    DEF SEG
    SELECT CASE VidMode%
        CASE 0,2                'Black & White 40/80 Column
            Result% = 0
        CASE 1,3                'Color 40/80 Column
            Result% = -1
        CASE 7                  'Monochrome (b/w)
            Result% = 0
        CASE ELSE               'Must be Graphics .. assume B/W
            Result% = 0
    END SELECT
    IsAColor% = Result%
END FUNCTION

Before someone points it out to be, the above code can be reduced
to just a couple of lines. I wrote it like this to make it clear
and easy to understand.

The start-up system video mode is defined by either jumpers/switches on
your motherboard, or a field in the CMOS configuration table. After
the system boot, these video modes can be changed using the DOS "MODE"
utility. For example:

        MODE bw40               'Sets video mode 0
        MODE bw80               'Mode 1
        MODE co40               'Mode 2
        MODE co80               'Mode 3
        MODE MONO               'Mode 7

Most commercial apps (including Norton, PCTools, etc.) determine if
the adapter/monitor combination can display colors by these modes.

If you want to know precisely what type of adapter is present
(CGA/EGA/VGA/MONO/HERC, etc.), I've got code for that, too ... As does
most commercial and shareware libraries.

Hope this helps!

Tony
___
 X 1st 1.01b #1030s X I remember when Saturns were rockets, not cars.

--- Maximus 2.01wb
 * Origin: Oakland BBS (1:133/706)
Outer Court
Echo Basic Postings

Books at Amazon:

Back to BASIC: The History, Corruption, and Future of the Language

Hackers: Heroes of the Computer Revolution (including Tiny BASIC)

Go to: The Story of the Math Majors, Bridge Players, Engineers, Chess Wizards, Scientists and Iconoclasts who were the Hero Programmers of the Software Revolution

The Advent of the Algorithm: The Idea that Rules the World

Moths in the Machine: The Power and Perils of Programming

Mastering Visual Basic .NET