Skip to content

barotto/VGATEST

Repository files navigation

VGATEST
================================================================================
Simple DOS program used to test VGA functionality in both text and graphics
modes.

It can be compiled with Open Watcom and needs the DOS/4GW extender.

Source code at https://github.com/barotto/VGATEST


!!! Disclaimer !!!
--------------------------------------------------------------------------------
This program can and will damage the computer that you'll use it on and all of
its attached peripherals. The author(s) cannot be held responsible for any
damage occurred by the use of this program.
Use at your own risk!



Alphanumeric (A/N) tests
--------------------------------------------------------------------------------

Font Maps demo
--------------
This demo shows the double font map capability of the VGA that can be used to 
display 512 different characters on screen.
Font map 0 is the default BIOS map.
Font map 1 is a 8 pixels wide BIOS map loaded with INT 10/AX=11--h
Font maps 2-7 are custom maps.

Keys:
0 to 7 = change Map A's font.
ESC    = exit


Split & Pan demo
----------------
This demo shows the split screen and panning features.

Keys:
+           = increase start address value
-           = decrease start address value
ARROW UP    = increase vertical panning value
ARROW DOWN  = decrease vertical panning value
ARROW LEFT  = decrease horizontal panning value
ARROW RIGHT = increase horizontal panning value
PAGE UP     = decrease split screen scanline value
PAGE DOWN   = increase split screen scanline value
ESC         = exit


Benchmark
---------
Performs a series of video memory access speed tests. Two values are given:
MB/s = the memory bandwidth of the video subsystem in megabytes per second;
fps = how many times per second a single video page can be filled with a fixed
character / attributes pair. This is an ideal condition and represents the
maximum fill rate.
Both values depend not only on the video card and bus speeds but also on the
CPU performance.

Keys:
ESC = exit
r   = repeat tests


Video modes available
---------------------
Name    Format   Box    Resolution
0,1     40x25    8x8    320x200
0*,1*   40x25    8x14   320x350
0+,1+   40x25    9x16   320x400
2,3     80x25    8x8    640x200
2*,3*   80x25    8x14   640x350
2+,3+   80x25    9x16   720x400
7       80x25    9x14   720x350
7+      80x25    9x16   720x400
        80x43    8x8    640x350
        80x50    9x8    720x400
        80x28    9x14   720x400
        80x30    8x16   640x480 (multisync monitor only)
        80x34    8x14   640x480 (multisync monitor only)
        80x60    8x8    640x480 (multisync monitor only)

BEWARE: modes 80x30, 80x34, and 80x60 require a multisync monitor and they may
        damage very old VGA only 31.5 kHz monitors.



All Points Addressable (APA) tests
--------------------------------------------------------------------------------

Circles demo
------------
Shows a bunch of concentric circles that rapidly change their color. Useful to
check the screen aspect ratio.

Keys:
ESC = exit


Lines demo
----------
Shows two lines (green and red) that rotates in opposite directions. In video
modes with only one available page the lines could be only partially drawn (it
depends on how fast the CPU, bus, and VGA are).

Keys:
ESC = exit


Palette demo
------------
Fills the screen with the color palette.

Keys:
ESC = exit


Worms demo
----------
Draws a bunch of worms that crawl on the screen.

Keys:
ESC = exit


Split & Pan demo
----------------
This demo shows the split screen and panning features.

Keys:
+           = increase start address value
-           = decrease start address value
ARROW UP    = increase Preset Row Scan value
ARROW DOWN  = decrease Preset Row Scan value
ARROW LEFT  = decrease Horizontal Pel Panning value
ARROW RIGHT = increase Horizontal Pel Panning value
PAGE UP     = decrease split screen scanline value
PAGE DOWN   = increase split screen scanline value
M           = change Pixel Panning Mode value
ESC         = exit


Scrolling demo
--------------
This demo smoothly scrolls two vertical bars horizontally using the AC
horizontal pel panning register and the CRTC start address.

Keys:
+           = increase scrolling amount
-           = decrease scrolling amount / pause
ESC         = exit


Benchmark
---------
Performs a series of video memory access speed tests. Two values are given:
MB/s = the memory bandwidth of the video subsystem in megabytes per second;
fps = how many times per second a single video page can be filled with a fixed
color value. This is an ideal condition and represents the maximum fill rate.
Both values depend not only on the video card and bus speeds but also on the
CPU performance.

Keys:
ESC = exit
r   = repeat tests


Video modes available
---------------------
Name  Col.  Resolut.  Pages Mode  
04    4     320x200   1     CGA comp.
06    2     640x200   1     CGA comp.
Dh    16    320x200   8     planar
Eh    16    640x200   4     planar
Fh    mono  640x350   2     planar
10h   16    640x350   2     planar
12h   16    640x480   1     planar
13h   256   320x200   1     chain4
      256   160x120   13    planar (multisync monitor only)
Q     256   256x256   1     chain4
      256   296x220   4     planar
Y     256   320x200   4     planar
X     256   320x240   3     planar
      256   320x400   2     planar
      256   360x270   2     planar
      256   360x360   2     planar
      256   360x480   1     planar
      256   400x300   2     planar (multisync monitor only)
      
BEWARE: modes 160x120 and 400x300 require a multisync monitor and they can
        damage very old VGA only 31.5 kHz monitors.



LICENSE
--------------------------------------------------------------------------------
This program is free software: you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation, either version 3 of the License, or (at your option) any later
version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.  See the GNU General Public License for more details.



Authors
--------------------------------------------------------------------------------
Copyright (C) 2019  Marco Bortolin
Portions of code by Robert C. Pendleton and released in the public domain.