[comp.sys.ibm.pc] MSDOS's recognition

dhw@itivax.iti.org (David H. West) (12/29/89)

 
A while ago, someone asked what he called a "weird question" -
does MSDOS have or recognise "a graphics mode".  The posted answers
were inconclusive.  

I used to think that this was quite straightforward: every display
adaptor has 1 or more text modes and 0 or more graphics modes, and
MSDOS itself (i.e. excluding utilities such as ansi.sys and 
graphics.com) concerns itself with this only to the extent that 
command.com wants (forces?) the screen to be in text mode when 
prompting for input.

Well, I've just discovered the inadequacy of this model.  I'm using
an Everex Viewpoint VGA, which comes with a utility to set its
modes.  Normally I keep it set to a high-resolution (9 x 14 cell)
text mode, but I find that some graphics programs, which claim to
work with VGA or EGA, will not set an appropriate mode with this
card (instead they hang - why?), but will work if an appropriate mode is
set before they are invoked.

The part I don't understand is as follows: I invoke the utility to
set the card into, say, EGA graphics mode - I think the mode number
is 16, but the manual is at home.  I then get a DOS prompt in a
different text font.  What is happening here - is command.com
temporarily returning the screen to (some other) text mode?  Or is
the card clever enough to know it needs to simulate text even though
it's "really" in a graphics mode?  Or does the card vendor's utility 
not actually set a specific graphics mode, but rather enable a
particular kind of emulation (even though I'm passing it a "mode 
number", specifying number of pixels and colors, as a parameter)?
And how does this square with the fact that if I set a "wrong"
graphics mode, I don't even get a DOS prompt afterwards?

-David West

"You are in a maze of twisty little graphics modes, all different".

cox@jolnet.ORPK.IL.US (Ben Cox) (12/29/89)

In article <4703@itivax.iti.org> dhw@itivax.iti.org (David H. West) writes:
[deleted]
>The part I don't understand is as follows: I invoke the utility to
>set the card into, say, EGA graphics mode - I think the mode number
>is 16, but the manual is at home.  I then get a DOS prompt in a
>different text font.  What is happening here - is command.com
>temporarily returning the screen to (some other) text mode?  Or is
>the card clever enough to know it needs to simulate text even though
>it's "really" in a graphics mode?  Or does the card vendor's utility 
>not actually set a specific graphics mode, but rather enable a
>particular kind of emulation (even though I'm passing it a "mode 
>number", specifying number of pixels and colors, as a parameter)?
>And how does this square with the fact that if I set a "wrong"
>graphics mode, I don't even get a DOS prompt afterwards?

The BIOS knows how to put text on the screen, even in a bitmapped mode, and
COMMAND.COM calls the BIOS to put characters on the screen.  If the resolution
in the graphics mode is different from the resolution in the text mode, the
characters will look different.  If the BIOS doesn't know how to use a given
mode, you will not see characters, and you may hang (although sometimes you
can still type commands -- try typing "mode co80" sometime when you appear
hung -- it may be just that you don't see anything, even though you are not
hung -- you will reset to mode 3, which is 80x25 color text, or 7, which is
BW 80x25).

Ben Cox
b-cox2@uiuc.edu (gets forwarded to me wherever I am)

leonard@bucket.UUCP (Leonard Erickson) (12/31/89)

dhw@itivax.iti.org (David H. West) writes:

>The part I don't understand is as follows: I invoke the utility to
>set the card into, say, EGA graphics mode - I think the mode number
>is 16, but the manual is at home.  I then get a DOS prompt in a
>different text font.  What is happening here - is command.com
>temporarily returning the screen to (some other) text mode?  Or is
>the card clever enough to know it needs to simulate text even though
>it's "really" in a graphics mode?  Or does the card vendor's utility 
>not actually set a specific graphics mode, but rather enable a
>particular kind of emulation (even though I'm passing it a "mode 
>number", specifying number of pixels and colors, as a parameter)?
>And how does this square with the fact that if I set a "wrong"
>graphics mode, I don't even get a DOS prompt afterwards?

What's happening is that when you set those modes, the BIOS data area
in low RAM gets some data values changed. Video mode (of course!),
number of columns on screen (normally 40 or 80, but both 90 and 132
are settable and usable with the proper hardware). screen size (in K)
number of rows of characters. Height of Characters (in scan lines)
etc etc

The height in scan lines is what triggered the font change. The system
saw that you now were in a mode that should be using the 8x8 font
instead of the 9x14 font. If you think waaaay back... to BASIC (anybody
remember BASIC) it had to be able to print text in graphics modes. As
I recall, the CGA modes are "hardwired to the 8x8 fonts and mode 7 is
hardwired to 9x14. Everything else is free to set things up as they
please. (It was ega where the rows and character height varaibles
were added)

I'm all *too* familiar with this after helping put together a TSR to 
allow us to use the 132 column capability of some of our video boards
with a terminal emulator package (Thank God the people who wrote the
emulator had a sample chunk of code available!) We were going nuts until
we noticed the columns variable... duh! 
-- 
Leonard Erickson		...!tektronix!reed!percival!bucket!leonard
CIS: [70465,203]
"I'm all in favor of keeping dangerous weapons out of the hands of fools.
Let's start with typewriters." -- Solomon Short

dmt@pegasus.ATT.COM (Dave Tutelman) (01/02/90)

Two otherwise correct responses to the base note propagate some
misinformation about the monochrome mode.

> From: leonard@bucket.UUCP (Leonard Erickson)
> Message-ID: <1869@bucket.UUCP>
>
> If you think waaaay back... to BASIC (anybody
> remember BASIC) it had to be able to print text in graphics modes. As
> I recall, the CGA modes are "hardwired to the 8x8 fonts and mode 7 is
> hardwired to 9x14. 

	Perhaps true, perhaps not, depending on what Leonard meant.
	True that:
	   -	Mode 7 is 9x14, and hardwired (REALLY, not BIOS).
	   -	BASIC was able to print text in graphics modes.
	Not true that:
	   -	BASIC printed its text in graphics modes in general.

	In fact, you had to explicitly call up a graphic screen mode;
	the default for basic was a text mode.  If you think waaaay
	back, the IBM mono adapter had NO graphic mode whatsoever,
	and (1) it was the basic IBM offering, and (2) BASIC was
	built into ROM on that IBM offering.

	Which brings us to...
 
> From: cox@jolnet.ORPK.IL.US (Ben Cox)
> Message-ID: <2593@jolnet.ORPK.IL.US>
> 
> If the BIOS doesn't know how to use a given
> mode, you will not see characters, and you may hang (although sometimes you
> can still type commands -- try typing "mode co80" sometime when you appear
> hung -- it may be just that you don't see anything, even though you are not
> hung -- you will reset to mode 3, which is 80x25 color text, or 7, which is
> BW 80x25).

	No, no, no.  The modes in confusion here are:
	   -	CO80: mode 3, color 80x25.
	   -	BW80: mode 2, b&w 80x25 _for_CGA-compatible_adapter.
	   -	MONO: mode 7, monochrome 80x25, for the mono adapter.

	Note that mode 7 is the ONLY mode supported by the basic mono
	adapter.  (Hercules came along later with their graphics mode.)
	Mode 2 is intended for use where you have a gray-scale monitor
	on a CGA card, and is the mode set by the command "MODE BW80".

	I suspect mode 7 will be the result if you say MODE CO80 to a
	computer with just a mono adapter in it.  It's also the mode
	if you say anything at all to such a computer.  I don't know
	for sure, but I very much doubt that it's the mode assumed
	by an adapter capable of CGA and mono emulation, in response
	to MODE CO80.

+---------------------------------------------------------------+
|    Dave Tutelman						|
|    Physical - AT&T Bell Labs  -  Lincroft, NJ			|
|    Logical -  ...att!pegasus!dmt				|
|    Audible -  (201) 576 2194					|
+---------------------------------------------------------------+