[comp.lang.c] video mode question

brs@unix.cis.pitt.edu (Brian Stupar) (12/01/90)

does anyone know how to set the video mode to 80 x 43?  i have
tried using int 10 func 00, but any values over 11 result in
no change in the screen mode.  the interrupt list documents
mode values up to around 70, but any over 11 have no effect.
is there something i'm missing, something i've done wrong, or
is this mode not available for use?  the machine is 386 based
with VGA graphics.

any help would be greatly appreciated.
brian

ong@d.cs.okstate.edu (ONG ENG TENG) (12/01/90)

From article <66205@unix.cis.pitt.edu>, by brs@unix.cis.pitt.edu (Brian Stupar):
> does anyone know how to set the video mode to 80 x 43?  i have
> tried using int 10 func 00, but any values over 11 result in
> no change in the screen mode.  the interrupt list documents
> mode values up to around 70, but any over 11 have no effect.
> is there something i'm missing, something i've done wrong, or
> is this mode not available for use?  the machine is 386 based
> with VGA graphics.

Well, I did a little bit of DEBUGing on programs that detect the existance
of VGA and goes into 80x50 mode, and found the following code:

          mov  ax,1112h       ; go into 80x50 mode
          sub  bl,bl
          int  10h

This will switch the VGA card into 80x50 mode.  I suggest you play around
with the content of AX to get 80x43 mode.

E. Teng Ong (ong@d.cs.okstate.edu)
Computer Science Dept.
Oklahoma State University
(Opinions are mine and mine alone)

wjb@moscom.UUCP (Bill de Beaubien) (12/04/90)

In article <66205@unix.cis.pitt.edu> brs@unix.cis.pitt.edu.UUCP (Brian Stupar) writes:
>does anyone know how to set the video mode to 80 x 43?  i have
>tried using int 10 func 00, but any values over 11 result in
>no change in the screen mode.  
>
>brian
You should first use int 10h, service 12h, subservice 30h.  That's alternate 
select - select scan lines for EGA/VGA text modes.  You then set the mode to
standard text mode (you have to do this after calling the above subservice).
Normally, that's mode 3.

Registers
AH	12h			AL 0-200	1-350 (EGA)		2-400 (VGA)
				BL 30h (subservice id)

Note that setting AL to 2 definitely won't work on an EGA.  I'm not sure
if 1 will work on a VGA or not.
Bill
-- 
Bill de Beaubien / wjb@moscom.com 

c145gmk@utarlg.utarl.edu (GORDON KEEGAN) (12/11/90)

In article <66205@unix.cis.pitt.edu>, brs@unix.cis.pitt.edu (Brian Stupar) writes...
>does anyone know how to set the video mode to 80 x 43?  i have
>tried using int 10 func 00, but any values over 11 result in
>no change in the screen mode.  the interrupt list documents
>mode values up to around 70, but any over 11 have no effect.
>is there something i'm missing, something i've done wrong, or
>is this mode not available for use?  the machine is 386 based
>with VGA graphics.
> 
>any help would be greatly appreciated.
>brian

	There's a 4K or 5K file in the simtel20 archives that is
	supposed to have examples for setting the video mode to
	25, 43, and 50 lines.  I haven't gotten it and looked at
	it yet, but it may be somewhere for you to start.

	    ftp to:  wsmr-simtel20.army.mil  (26.2.0.74)

	Then change directories to PD1:<MSDOS.SCREEN> and get
	the file VIDMODE.ZIP.  Hope this helps.

-----------------------------------------------------------------------------
|  Gordon Keegan                    ||   Bitnet  : c145gmk@utarlg           |
|  Systems Programmer               ||   THEnet  : UTARLG::C145GMK          |
|  Academic Computing Services      ||   Internet: c145gmk@utarlg.utarl.edu |
|  University of Texas, Arlington   ||   AT&TNet : 817-273-2208             |
-----------------------------------------------------------------------------
|  Beauty does what beauty does best: it's beautiful...                     |
-----------------------------------------------------------------------------

ben_pedersen@canrem.uucp (ben pedersen) (12/17/90)

Subject: Re: video mode question

In article <66205@unix.cis.pitt.edu>, brs@unix.cis.pitt.edu
(Brian Stupar) writes...
BS>does anyone know how to set the video mode to 80 x 43?  i have
BS>tried using int 10 func 00, but any values over 11 result in
BS>no change in the screen mode.  the interrupt list documents
BS>mode values up to around 70, but any over 11 have no effect.
BS>is there something i'm missing, something i've done wrong, or
BS>is this mode not available for use?  the machine is 386 based
BS>with VGA graphics.

The following function written by <steverimmer@canremote.uucp>,
(Steve Rimmer) in COMPUTING NOW! Jan1990 works well for me -

/* select the 8x8 font for 43 line mode */
set43line()
{
    union REGS r;
    int cpage;

    /* get current page */
    r.x.ax = 0x0f00;
    int86(0x10, &r, &r);
    cpage = r.h.bh;

    /* set page to zero */
    r.x.ax = 0x0500;
    int86(0x10, &r, &r);

    /* load 8x8 character set */
    r.x.ax = 0x1112;
    r.h.bl = 0;
    int86(0x10, &r, &r);

    /* set old active page */
    r.x.ax = 0x0500 + cpage;
    int86(0x10, &r, &r);
}

/* select the 8x14 font for 25 line mode */
set25line()
{
    union REGS r;
    int cpage;

    /* get current page */
    r.x.ax = 0x0f00;
    int86(0x10, &r, &r);
    cpage = r.h.bh;

    /* set page to zero */
    r.x.ax = 0x0500;
    int86(0x10, &r, &r);

    /* load 8x14 character set */
    r.x.ax = 0x1111;
    r.h.bl = 0;
    int86(0x10, &r, &r);

    /* set old active page */
    r.x.ax = 0x0500 + cpage;
    int86(0x10, &r, &r);
}

Hope this is of use to you.

--Regards!
---
 ~ DeLuxe}aa #5459 ~ 
--
Canada Remote Systems.  Toronto, Ontario
NorthAmeriNet Host