The vga(4) manual page takes no position on these details.

ropers <[email protected]> wrote:

> Privyet,
> 
> On man 4 vga, it says:
> 
> "This is the standard VGA text mode with 80 columns and 25 rows. (...)
>  Characters are 8 x 16 pixels large (...)."
> 
> To my understanding, that is borderline technically correct, but misleading:
> 
> A naïve calculation of the screen's pixel resolution from these data
> would yield 640x400px.  However, AFAIK, the VGA adapter still treats
> text mode like the MDA adapter did[0], which means that though each
> character's matrix is an eight pixel-wide bitmap (sometimes only seven
> pixels are actually used), the adapter itself always renders a ninth
> pixel for each text mode character (and scanline).  Usually that pixel
> is blank, but for characters C0h–DFh, it is a copy of what was in the
> eighth pixel.  This special-casing of characters C0h through DFh
> (where horizontal box-drawing characters and the like are usually
> located) can be turned off in VGA adapters[1], but is hardwired into
> MDA cards.  The long and short of it is that with a total of nine
> pixel-columns being rendered for each character-column, the
> pixel-resolution of the standard VGA text mode is 720x400, not
> 640x400, as some have naïvely calculated.
> 
> Why am I making noise about this, when the description on vga(4) is
> TECHNICALLY correct?
> Because I have noticed that ever since this edit[2], OpenBSD has been
> cited at Wikipedia as evidence for the incorrect assertion that the
> default VGA text mode was 640x400px.  Evidently the editor in question
> has made exactly the naïve (mis)calculation noted above.  (By this
> edit[3], the error had been propagated to the article's main text
> modes table, leaving it further entrenched.)
> 
> I don't intend to get involved in correcting this at Wikipedia (which
> would probably lead to a life force-sucking edit war), but it bothers
> me that OpenBSD's man page appears to be misleading on this point.
> Though the page actually cited is from OpenBSD 3.9, the same wording
> is still present in 6.9 and -current, with minor differences in
> formatting.
> 
> 
> ========================================================================
> Would people here be able to confirm that I'm not myself mistaken in
> what I'm saying?  And could anyone suggest how to word an edit so as
> to concisely clarify the point and make the vga(4) man page less
> misleading?  I'm not always good at being concise myself.
> ========================================================================
> 
> 
> * I think the 80x25 & 80x25bf, as well as the 80x50 & 80x50bf modes
> all are 720x400px.  If the 80x25 mode in particular is not 720x400px,
> then it is not the standard VGA text mode (as is claimed).
> 
> * The 80x40 & 80x40bf modes confuse me.  It's unclear to me if they
> render a ninth pixel-column and thus whether their screen width is 640
> or 720.  Arithmetically, 8x10px characters with an 80x40 text mode
> ought to yield 640x400px, but the only information I could find is
> here[4], and it suggests a display resolution of 640x480, which is
> neither here nor there.  It would make sense with two extra blank
> scanlines per line of text, but then again, 480 instead of 400 could
> be a typo.  I'm also confused by these modes because I'm much more
> familiar with 80x43 text modes and I'm low-key wondering whether 40
> instead of 43 is an error.  This page[5] makes no mention of an 80x40
> text mode.  I realise that is an altogether different project, but
> still.
> Second thought, I did find this[6], which suggests an 8x12px font for
> an 80x40 text mode, but then, this is again an altogether different
> project and may be nothing to do with OpenBSD's 80x40 text modes.  I'm
> just wondering how VGA-typical are those?
> 
> * If the only difference of the 80x24 & 80x24bf modes from their
> 25-line counterparts is the omission of the last row of text, then
> maybe these are 720x384px?  I really don't know though.
> 
> * I think the "bf" in the *bf modes is for "big font" or "bigger
> font", but I could not find confirmation of that.  Also, if I'm
> reading this right, then it says under BUGS that these modes have not
> been tested and won't work with a monochrome monitor.  (It's a little
> unclear to me how that's meant.)
> 
> 
> I have tried looking at source code, but I don't really know where to
> look, and at least in /src/sys/dev/ic/vga.c, I've not been able to
> identify anything that specifies the correct size of the actual
> default 720x400 VGA text mode, or that would account for the 9th
> pixel-column in each character.  I've not been able to use the source
> to answer my own questions.
> 
> Any help or clarifications would be great appreciated.
> 
> Thanks and regards,
> Ian
> 
> (Ian Ropers)
> 
> 
> PS: Btw., can anyone elucidate the etymology of the "ic" in
> /src/sys/dev/ic/?  Is it because these devices all have integrated
> circuits, or does the "ic" stand for something else?
> 
> 
> [0] http://www.seasip.info/VintagePC/mda.html#memmap
> 
> [1] "LGA - Line Graphics Enable
>      This field is used in 9 bit wide character modes to provide continuity
>      for the horizontal line characters in the range C0h-DFh. If this field
>      is set to 0, then the 9th column of these characters is replicated from
>      the 8th column of the character. Otherwise, if it is set to 1 then the
>      9th column is set to the background like the rest of the characters."
>                         --http://www.osdever.net/FreeVGA/vga/attrreg.htm#10
> 
> [2] 
> https://en.wikipedia.org/w/index.php?title=VGA_text_mode&diff=950771231&oldid=950759222
> 
> [3] 
> https://en.wikipedia.org/w/index.php?title=VGA_text_mode&diff=1022622974&oldid=1021428913#PC_common_text_modes
> 
> [4] https://opencores.org/projects/interface_vga80x40
> 
> [5] http://www.columbia.edu/~em36/wpdos/videomodes.txt
> 
> [6] http://javiervalcarce.eu/html/vhdl-vga80x40-en.html
> 

Reply via email to