[comp.os.msdos.programmer] 25 vs. 43 lines, 80 vs 40 columns

kdq@demott.COM (Kevin D. Quitt) (08/11/90)

Ok, folks, I need help.  I've got a system where I'm switching back and
forth between graphics mode, 80x25, 80x43, and 40x25.  I have yet to
find a completely reliable way of changing from each of these to any of the
others.  Using MSC's _setvideomode doesn't hack it, because they don't
support 43/50 line mode.

Here's my code (condensed):


For 80 by 25 mode, I've tried both of the following.  This generally seems
to work, but not always.

    regs.x.ax   = 0x0003;		Technique 1
    int86( 0x10, &regs, &regs );

    _setvideomode( _DEFAULTMODE );	Technique 2
    _setvideomode( _TEXTC80 );



For 40 by 25 mode.  It reliably switches to 40 columns, but not to 25 lines.

    _setvideomode( _DEFAULTMODE );
    _setvideomode( _TEXTC40 );


For 80 by 43 mode.  This works.

    set_25_lines();

    regs.x.ax   = 0x0300;               /* Ask about the cursor             */
    regs.h.bh   = 0;
    int86( 0x10, &regs, &regs );

    regs.x.ax   = 0x1112;               /* Load ROM 8x8 double-dot font     */
    regs.h.bl   = 0;                    /* Page zero                        */
    int86( 0x10, &regs, &regs );



Graphics mode (EGA 640 by 350, 16 colours)

    regs.x.ax   = 0x0010;                This doesn't work
    int86( 0x10, &regs, &regs );


    _setvideomode( _ERESCOLOR );	This does.




    Has anybody got code that does this that really works?
-- 
 _
Kevin D. Quitt         demott!kdq   kdq@demott.com
DeMott Electronics Co. 14707 Keswick St.   Van Nuys, CA 91405-1266
VOICE (818) 988-4975   FAX (818) 997-1190  MODEM (818) 997-4496 PEP last

                96.37% of all statistics are made up.

joe@proto.COM (Joe Huffman) (08/12/90)

In article <475@demott.COM>, kdq@demott.COM (Kevin D. Quitt) writes:
> 
> Ok, folks, I need help.  I've got a system where I'm switching back and
> forth between graphics mode, 80x25, 80x43, and 40x25.  I have yet to
> find a completely reliable way of changing from each of these to any of the

Here is what I use for the 80 column text modes.  It's easy to adapt to
the other modes if you know the mode numbers.  It's assembly code for
stand alone .com files (included) you should be able to easily adapt it
to be callable from your 'C' program...

-----
uuencoded self extracting archive
-----
begin 644 video.com
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
5F_55G!R]^ 9.-!FLOK>+B=BSK0  
 
end
-- 
joe@proto.com
uunet!proto!joe
FAX: 208-263-8772