Testing on QEMU, here are the video options from OpenWatcom's _setvideomode:

> Mode Type Size Colors Adapter
> _MAXRESMODE (graphics mode with highest resolution)
> _MAXCOLORMODE (graphics mode with most colors)
> _DEFAULTMODE (restores screen to original mode)
> _TEXTBW40 M,T 40x25 16 MDPA,HGC,VGA,SVGA
> _TEXTC40 C,T 40x25 16 CGA,EGA,MCGA,VGA,SVGA
> _TEXTBW80 M,T 80x25 16 MDPA,HGC,VGA,SVGA
> _TEXTC80 C,T 80x25 16 CGA,EGA,MCGA,VGA,SVGA
> _MRES4COLOR C,G 320x200 4 CGA,EGA,MCGA,VGA,SVGA
> _MRESNOCOLOR C,G 320x200 4 CGA,EGA,MCGA,VGA,SVGA
> _HRESBW C,G 640x200 2 CGA,EGA,MCGA,VGA,SVGA
> _TEXTMONO M,T 80x25 16 MDPA,HGC,VGA,SVGA
> _HERCMONO M,G 720x350 2 HGC
> _MRES16COLOR C,G 320x200 16 EGA,VGA,SVGA
> _HRES16COLOR C,G 640x200 16 EGA,VGA,SVGA
> _ERESNOCOLOR M,G 640x350 4 EGA,VGA,SVGA
> _ERESCOLOR C,G 640x350 4/16 EGA,VGA,SVGA
> _VRES2COLOR C,G 640x480 2 MCGA,VGA,SVGA
> _VRES16COLOR C,G 640x480 16 VGA,SVGA
> _MRES256COLOR C,G 320x200 256 MCGA,VGA,SVGA
> _URES256COLOR C,G 640x400 256 SVGA
> _VRES256COLOR C,G 640x480 256 SVGA
> _SVRES16COLOR C,G 800x600 16 SVGA
> _SVRES256COLOR C,G 800x600 256 SVGA
> _XRES16COLOR C,G 1024x768 16 SVGA
> _XRES256COLOR C,G 1024x768 256 SVGA


If I write a sample C program (below) to test the video mode, this is
the result I get for each of _MAXCOLORMODE and _MAXRESMODE for both
'cirrus' and 'std' VGA adapters in QEMU:

cirrus:

max color: 320 x 200 @ 256
max res: 640 x 480 @ 16

*However, I can run another program to test the XRES modes, and I can
set (and use) 256-color mode, but cannot set XRES 16-color mode. [I'll
share the XRES test program in a followup email]


std:

max color: 320 x 200 @ 256
max res: 640 x 480 @ 16

*If I run the other program to test XRES modes, I can set both
256-color mode and 16-color mode .. but the 16-color mode doesn't
actually work.


#include <stdio.h>
#include <graph.h>

int main()
{
    struct videoconfig mxcolor, mxres;

    /* try highest colors */

    if (_setvideomode(_MAXCOLORMODE) == 0) {
        puts("cannot set max color video mode");
        return 1;
    }

    _getvideoconfig(&mxcolor);
    _setvideomode(_DEFAULTMODE);

    /* try highest res */

    if (_setvideomode(_MAXRESMODE) == 0) {
        puts("cannot set max res video mode");
        return 1;
    }

    _getvideoconfig(&mxres);
    _setvideomode(_DEFAULTMODE);

    /* print results */

    printf("max color: %d x %d @ %d\n",
           mxcolor.numxpixels, mxcolor.numypixels, mxcolor.numcolors);

    printf("max res: %d x %d @ %d\n",
           mxres.numxpixels, mxres.numypixels, mxres.numcolors);

    return 0;
}


_______________________________________________
Freedos-devel mailing list
Freedos-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freedos-devel

Reply via email to