Function 00h set video mode

Determine or Set Video State

	
Time    Reg     Values                                      
entry   AH      00h     set video mode 
	AL      display mode:                    CGA|PCjr|MDA|MCGA|EGA|VGA|8514 
		00h     40x25 B/W text           CGA|PCjr|   |    |EGA|   | 
  16 color              40x25, 320x400 graphics     |    |   |MCGA|   |   | 
  16 color              40x25, 360x400 graphics     |    |   |    |   |VGA| 
  16 color      01h     40x25 color text         CGA|PCjr|   |    |EGA|   | 
		02h     80x25 B/W text           CGA|PCjr|   |    |EGA|   | 
  16 color              80x25 640x400 graphics      |    |   |MCGA|   |   | 
  16 color              80x25 720x400 graphics      |    |   |    |VGA|   | 
  16 color      03h     80x25 color text         CGA|PCjr|   |    |EGA|VGA| 
  4 color       04h     320x200 color graphics   CGA|PCjr|   |    |EGA|   | 
  4 tone gray   05h     320x200 B/W graphics     CGA|PCjr|   |    |EGA|   | 
  2 color       06h     640x200 B/W graphics     CGA|PCjr|   |    |EGA|   | 
  monochrome    07h     80x25 monochrome text       |    |MDA|    |EGA|   | 
  16 color      08h     160x200 color graphics   CGA|PCjr|   |    |   |   | 
  16 color      09h     320x200 color graphics      |PCjr|   |    |   |VGA| 
  4 color       0Ah     640x200 color graphics      |PCjr|   |    |   |   | 
     N/A        0Bh     BIOS font load              |    |   |    |EGA|VGA| 
     N/A        0Ch     BIOS font load              |    |   |    |EGA|VGA| 
  16 color      0Dh     320x200 graphics            |    |   |    |EGA|VGA| 
  16 color      0Eh     640x200 graphics            |    |   |    |EGA|VGA| 
  monochrome    0Fh     640x350 graphics            |    |   |    |EGA|VGA| 
  16 & 64 color 10h     640x350 color hi-res        |    |   |    |EGA|VGA| 
  2 color       11h     640x480 graphics            |    |   |MCGA|   |VGA| 
  16 color      12h     640x480 graphics            |    |   |    |   |VGA| 
  256 color     13h     320x200 graphics            |    |   |MCGA|   |VGA|8514 
		14h-20h used by EGA and VGA graphics modes 
		18h     132x44 8x8 char mono        | Tseng Labs EVA 
		19h     132x25 8x14 char mono       | Tseng Labs EVA 
		1Ah     132x28 8x13 char mono       | Tseng Labs EVA 
 monochrome     21h     Hercules Graphics, Graphics Page 1 
 monochrome     22h     Hercules Graphics, Graphics Page 2 
		22h     132x44                      | Tseng, Ahead 
		23h     132x25                      | Tseng Labs EVA 
			132x25                      | Ahead Systems EGA2001 
			132x25                      | ATI EGA Wonder 
		24h     132x28                      | Tseng Labs EVA 
		25h     80x60  640x480              | Tseng Labs EVA 
 16 color               640x480                     | VEGA VGA 
		26h     80x60                       | Tseng Labs EVA 
			80x60   640x480             | Ahead Systems EGA2001 
 16 color       27h     720x512                     | VEGA VGA 
 monochrome             132x25                      | ATI EGA Wonder 
		28h     unknown                     | VEGA VGA 
 16 color       29h     800x600                     | VEGA VGA 
 256 color      2Dh     640x350                     | VEGA VGA 
 256 color      2Eh     640x480                     | VEGA VGA 
 256 color      2Fh     720x512                     | VEGA VGA 
 256 color      30h     800x600                     | VEGA VGA 
			unknown                     | AT&T 6300 
 16 color       36h     960x720                     | VEGA VGA 
 16 color       37h     1024x768                    | VEGA VGA 
 monochrome             132x44                      | ATI EGA Wonder 
 2 color        40h     640x400                     | AT&T 6300 
			80x43                       | VEGA VGA 
 16 color       41h     640x200                     | AT&T 6300 
			132x25                      | VEGA VGA 
 16 color       42h     640x400                     | AT&T 6300 
			132x43                      | VEGA VGA 
		43h     unsupported 640x200         | AT&T 6300 
			 of 640x400 viewport        |
			80x60                       | VEGA VGA 
		44h     disable VDC and DEB output  | AT&T 6300 
			100x60                      | VEGA VGA 
		48h     80x50   640x400             | AT&T 6300 
		4Dh     120x25                      | VEGA VGA 
		4Eh     120x43                      | VEGA VGA 
		4Fh     132x25                      | VEGA VGA 
 monochrome     50h     132x25                      | Ahead Systems EGA2001 
 16 color               640x480                     | Paradise EGA-480 
 monochrome             80x43                       | VEGA VGA 
			640x480 mono?               | Taxan 565 EGA 
		51h     80x30                       | Paradise EGA-480 
 monochrome             132x25                      | VEGA VGA 
			640x480 ?                   | ATI EGA Wonder 
 monochrome     52h     132x44                      | Ahead Systems EGA2001 
 monochrome             132x43                      | VEGA VGA 
			752x410 ?                   | ATI EGA Wonder 
		53h     800x560 ?                   | ATI EGA Wonder 
		54h     132x43                      | Paradise EGA-480 
 16 color               132x43                      | Paradise VGA 
 16 color               132x43                      | Paradise VGA on multisync 
			132x43                      | Taxan 565 EGA 
		55h     132x25                      | Paradise EGA-480 
 16 color               132x25                      | Paradise VGA 
 16 color               132x25                      | Paradise VGA on multisync 
			132x25                      | Taxan 565 EGA 
		56h     132x43                      | NSI Smart EGA+ 
			132x43                      | Paradise VGA 
			132x43                      | Paradise VGA on multisync 
 monochrome             132x43                      | Taxan 565 EGA 
		57h     132x25                      | NSI Smart EGA+ 
			132x25                      | Paradise VGA 
			132x25                      | Paradise VGA on multisync 
 monochrome             132x25                      | Taxan 565 EGA 
		58h     100x75   800x600 16/256k    | Paradise VGA 
		59h     100x75   800x600            | Paradise VGA 
		5Eh     640x400                     | Paradise VGA,VEGA VGA 
		5Fh     640x480                     | Paradise VGA 
		60h     80x?   ?x400                | Corona/Cordata BIOS v4.10+ 
			752x410                     | VEGA VGA 
		60h     400 line graph+80 col text  |(Corona/Cordata) 
		61h     400 line graphics           | Corona/Cordata BIOS v4.10+ 
			720x540                     | VEGA VGA 
		62h     800x600                     | VEGA VGA 
 16 color       71h     100x35 800x600              | NSI Smart EGA+ 
		74h     640x400 graphics            | Toshiba 3100 

		7Eh     Special Mode Set            | Paradise VGA (see below) 

			BX      horizontal dimension of the mode desired 
			CX      vertical dimension of the mode desired 
			        (both BX/CX in pixels for graphics modes, rows 
			        for text modes) 
			DX      number of colors of the mode desired 
			        (use 0 for monochrome modes) 
			return  BH      7Eh if successful 

		7Fh     Special Function Set        | Paradise VGA (see below) 
			BH      00h     Set VGA Operation 
			        01h     Set Non-VGA Operation 
			        02h     Query Mode Status 
			return  BL      0       if operating in VGA mode 
			                1       if non-VGA mode. 
			        CH      total video RAM size in 64k byte units 
			        CL      video RAM used by the current mode 
			        03h  Lock Current Mode 
			             Allows current mode (VGA or non-VGA) to 
			             survive reboot. 

		7Fh     Special Function Set        | Paradise VGA (see above) 
			BH     0Ah,0Bh,0Ch,0Dh,0Eh,0Fh 
			       write paradise registers 0,1,2,3,4,5 
			       (port -03CE indexes A,B,C,D,E,F)
			BL     value to set in the paradise register. 
			BH     1Ah,1Bh,1Ch,1Dh,1Eh,1Fh 
			       read paradise registers 0,1,2,3,4,5 
			       (port -03CE indexes A,B,C,D,E,F) 
			return BL       value of the Paradise register 
			       BH       7Fh if successful. 
			note   Color modes (0,1,2,3,4,5,6) will set non-VGA CGA 
			       operation. Monochrome mode 7 will set non-VGA 
			       MDA/Hercules operation. 

		82h     80x25 B&W                   | AT&T VDC overlay mode * 
		83h     80x25                       | AT&T VDC overlay mode * 
		86h     640x200 B&W                 | AT&T VDC overlay mode * 
		C0h     640x400   2/prog pallet     | AT&T VDC overlay mode * 
		C4h     disable output              | AT&T VDC overlay mode * 
		D0h     640x400                     | DEC VAXmate AT&T mode 
		unknown 640x225                     | Z-100 
		unknown 640x400                     | Z-100 
 

notes

  1. ) If the high bit in AL is set, the display buffer is not cleared when a new mode is selected. This may be used to mix modes on the display; for example, characters of two difference sizes might be displayed
    1. ) 28 APR 91 18:12 Apparently, using this feature to change mode without clearing the screen causes bit 7 of BIOS\Address -40:87 (the video mode status flags) to be set. Certain TSR POP-UP programs (including the hyperes HyperText system used to create this reference) check this flag and will not pop-up if it is set. What this bit is and why it is being monitored is unknown at this time.
  2. ) Modes 8-10 are available on the PCjr, Tandy 1000, and PS/2
  3. ) IBM claims 100% software and hardware emulation of the CGA with the MCGA chipset. All registers may be read and written as CGA. All characters are double-scanned to give 80x25 with 400 line resolution. The attributes for setting border color may be set on MCGA, but the borders will remain the default color (they cannot actually be set)
  4. ) The IBM Color Graphics Adapter (CGA) is too slow for the screen to be updated before the vertical retrace of the monitor is completed. If the video RAM is addressed directly, the screen will have "snow" or interference. IBM's default is to turn the adapter off when it is being updated, ie "flickering" when the display is scrolled.
  5. ) The vertical retrace signal may be ignored when using the MCGA adapter. The MCGA will not generate snow when written to. There is no flicker with the MCGA.
  6. ) The PCjr Video Gate Array uses a user-defined block of main system RAM from 4 to 32k in size instead of having dedicated memory for the display. Vertical retrace may be ignored when writing to the PCjr. There is no flicker with the PCjr display.
  7. ) The Hercules Graphics Card has 750x348 resolution
  8. ) The Hercules Graphics Card takes 64k at address -B0000-B3FFF (same as MDA)
  9. ) The CGA, MCGA, and VGA adapters use hardware address -B8000-BBFFF
  10. ) The BIOS clears the screen when the mode is set or reset.
  11. ) For AT&T VDC overlay modes, BL contains the DEB mode, which may be 06h, 40h, or 44h 12) Int 10 will take the shapes of the first 128 characters (00h-7Fh) from the table located in ROM at absolute address -F000:FA6E. EGA and VGA have hardware capability to change this.

Sample Code

Asm\Lib\BIOS.INC -@BIOSVidModeSet MACRO mode