Dec 052017
Programming information for the ATI VGA Wonder card. Has plenty of info for generic VGA programming as well. | |||
---|---|---|---|
File Name | File Size | Zip Size | Zip Type |
PROGINFO.DOC | 37388 | 8798 | deflated |
Download File PROGINFO.ZIP Here
Contents of the PROGINFO.DOC file
File Name : PROGINFO.DOC
Source : Disk P/N 008004811 Rev. 1.07
Date : February 21, 1990
========================================================================
1.0 INTRODUCTION
1.1 PURPOSE
The purpose of this document is to aid professional programmers who
wish to write software to use the high resolution modes supported by
this VGA video board. Working knowledge of EGA/VGA graphics and
assembly language programming is required and assumed. The document
describes several features unique to this VGA board and how each high
resolution mode is similar or is different compared to standard VGA
modes. It does not contain any programming information about standard
EGA/VGA modes. Refer to the Reference list in the appendix for
recommended EGA/VGA programmer's references.
1.2 CONVENTIONS
The code segments contained in this document follow the conventions of
the MicroSoft MASM assembler. Numbers given in hexadecimal end with a
lower case h.
2.0 FEATURES OF THE VGA BOARD
2.1 STANDARD VIDEO MODES
AH = 0 ;set video mode
AL = MODE/ RESOLUTION DIM/ START
TYPE COLOR ADDRESS
---------------------------------------------------------------
0h color/alpha 320x200 40x25/ BW b800:0h
1h color/alpha 320x200 40x25/ 16 b800:0h
2h color/alpha 640x200 80x25/ BW b800:0h
3h color/alpha 640x200 80x25/ 16 b800:0h
0* color/alpha 320x350 40x25/ BW b800:0h
1* color/alpha 320x350 40x25/ 16 b800:0h
2* color/alpha 640x350 80x25/ BW b800:0h
3* color/alpha 640x350 80x25/ 16 b800:0h
0+ color/alpha 360x400 40x25/ BW b800:0h
1+ color/alpha 360x400 40x25/ 16 b800:0h
2+ color/alpha 720x400 80x25/ BW b800:0h
3+ color/alpha 720x400 80x25/ 16 b800:0h
4h color/graphics 320x200 40x25/ 4 b800:0h
5h color/graphics 320x200 40x25/ BW b800:0h
6h color/graphics 640x200 80x25/ BW b800:0h
7h mono/alpha 720x350 80x25/ BW b000:0h
0dh color/graphics 320x200 40x25/ 16 a000:0h
0eh color/graphics 640x200 80x25/ 16 a000:0h
0fh mono/graphics 640x350 80x25/ BW a000:0h
10h color/graphics 640x350 80x25/ 16 a000:0h
11h color/graphics 640x480 80x30/ BW a000:0h
12h color/graphics 640x480 80x30/ 16 a000:0h
13h color/graphics 320x200 80x25/256 a000:0h
2.2 ENHANCED VIDEO MODES
23h color/alpha 1056x350 132x25/16 b800:0h
27h mono/alpha 1056x350 132x25/BW b000:0h
33h color/alpha 1056x352 132x44/16 b800:0h
37h mono/alpha 1056x352 132x44/BW b000:0h
53h color/graphics 800x600 16 a000:0h
54h color/graphics 800x600 16 a000:0h
61h color/graphics 640x400 256 a000:0h
62h color/graphics 640x480 256 a000:0h
63h color/graphics 800x600 256 a000:0h
65h color/graphics 1024x768 16 a000:0h
67h color/graphics 1024x768 4 a000:0h
2.3 REQUIRED CONFIGURATIONS
Some enhanced modes require 512K memory rather than 256K memory.
Some enhanced modes are supported only on certain monitor types. The
following chart describes the requirements for each enhanced mode.
Mode# Resolution Colors/ Memory Monitors
(hex) Palette Required Supported
-----------------------------------------------------------------
23 132x25 16/64 256K 1,2,5
27 132x25 B&W 256K 1,2,5
33 132x44 16/64 256K 1,2,5
37 132x44 B&W 256K 1,2,5
54 800x600 16/256K 256K 5
61 640x400 256/256K 256K 3,4,5
62 640x480 256/256K 512K 3,4,5
63 800x600 256/256K 512K 5
65 1024x768 16/256K 512K 4,5
67 1024x768 4/16 256K 4,5
Monitors: (1) TTL mono (2) EGA (3) VGA (4) IBM 8514 (5) Multisync
3.0 DETERMINING THE STATUS OF THE CARD
The VGA BIOS features some special functions which will allow the
programmer to determine if a compatible VGA board is installed and how
the card is configured within his program.
3.1 IDENTIFYING THE VIDEO CARD
All EGA and VGA display adapters manufactured by ATI Technologies will
contain the character string: "761295520" starting at address: C000:31.
VGA boards which are based on the 18800 series VGA chip set are
identified by the character string "31" at address C000:40. The card is
further identified by 2 bytes. The definition of the byte at address
C000:42 is:
bit 0 = 0 hardware is fixed at either 8 or 16 bits ROM operation
bit 0 = 1 hardware can be switched between 8 and 16 bits ROM
operation
bit 1 = 1 mouse port present on display adapter
bit 2 = 1 supports non-interlaced 1024x768
bit 3 = 1 microchannel product
bit 4 = 1 contains programmable video clock chip
bit 5-7 = not currently defined
The character at address C000:43 contains the revision of the VGA gate
array. Currently, revisions 1, 2 and 3 exist and other revisions may
follow in the future.
3.2 DETERMINING THE MONITOR TYPE
The following assembler code segment can be used to determine for
which monitor the VGA board is currently configured.
cli
mov dx,EXTENDED_REG
mov al,DATA_I
out dx,al
inc dx
in al,dx
sti
and al,0fh
returns al = 0 EGA monitor
1 PS/2 monochrome monitor
2 TTL monochrome monitor
3 PS/2 color monitor
4 RGB color monitor
5 Multisync monitor
7 PS/2 8514 monitor
9 NEC MultiSync 2A
b NEC MultiSync 3D
d NEC MultiSync XL
where
EXTENDED_REG = see section 4.41 in this document
DATA_I = 0bbh
Note : We reserve the right to add more monitor types at any time. We
recommend that if an undefined value is returned that the program
assumed that a multisync is installed.
3.3 DETERMINING MEMORY SIZE
The follow code segment can be used to determine the amount of video
memory installed.
cli
mov dx,EXTENDED_REG
mov al,DATA_I
out dx,al
inc dx
in al,dx
sti
and al,020h
al = 0 ; 256K display memory installed
= 20h; 512K display memory installed
where EXTENDED_REG = see section 4.41 of this manual
DATA_I = 0bbh
3.4 DETERMINING WHETHER A MODE IS SUPPORTED
Your VGA board implements an extended video BIOS call which can be
used to determine if a particular mode is actually available in the
user's current configuration. The following assembler routine
demonstrates this technique:
push bp
mov bp,sp
push es
mov al,ARG
mov ah,12h
mov bx,5506h
mov bp,0ffffh
int 10h
mov ax,bp
pop es
pop bp
ret
where ARG = mode desired in hexadecimal
If this routine returns ax = 0ffffh, that mode is not supported in the
current configuration. If the mode is supported, ax will contain the
offset start address of the CRTC parameter table for that mode.
Note : We recommend this technique as the only reliable means of
determining if a particular mode is supported on our EGA or VGA boards.
4.0 PROGRAMMING THE HIGH RESOLUTION MODES
4.1 SETTING THE VIDEO MODE
The VGA card can be set into a video mode through the BIOS by using
the standard IBM method: AH is set to 0, AL is set to the video mode
number, and a call to software interrupt 10h is executed. See sections
2.1 and 2.2 of this manual for a list of available modes. The
following example will perform this function:
mov ah,0 ;set mode function
mov al,MODE ;select video mode
int 10h ;make BIOS call by using the video
;interrupt
We recommend that programmers select the video mode through BIOS
whenever possible rather than programming the mode via the registers.
For any particular video mode, the configuration of the internal
registers may differ depending on the type of monitor installed.
Also, we reserve the right to change the product in a way which would
be transparent to BIOS but which would have an impact on software
which writes to the registers.
4.2 VIDEO MEMORY ADDRESSING
4.21 ADDRESS RANGE OF VGA BOARD
The VGA board uses the RESERVED area designated by IBM for video
RAM and the video BIOS (A000 to C7FF). The organization is as follows:
Mono text video RAM: B000-B7FF
Color text video RAM: B800-BFFF
Graphics video RAM: A000-AFFF (upto eight 64k banked pages with 512K
RAM)
Video BIOS: C000-C7FF
4.22 PAGES and PLANES:
There are two memory mapping systems used with VGA graphics modes:
Bit-packed and Planar organization.
The Bit-packed mapping scheme is associated with pages and uses
contiguous memory to describe each pel. IBM VGA mode 13h uses this
system. Extended modes 61, 62, 63, and 65h also use the Bit-packed
scheme but they use a unique method to select which page is
available for reading and writing.
The Planar organized memory mapping scheme is associated with
planes and uses a bit from each plane to describe a pel. IBM VGA
mode 12h uses this system as does Extended modes 54 and 67h.
4.23 SELECTING MEMORY PAGES:
The memory organization of extended modes 61, 62, 63, and 65h are
arranged into 64k page segments. The data in each page is displayed on
a specific region of the screen image. For example, mode 63h has eight
pages. The first page is displayed on the top eighth of the screen
image, the second page is displayed on the second eighth of the screen
image, and so on. Data can be read or written to one page at a time.
The default active page is Page 0. A special code segment is required
to be executed before data can be read or written to a specific page.
A page selecting code segment is provided below. VGA cards with 256K
of RAM have a maximum of four pages available and those with 512K have
eight. Modes 61, 62, 63h require 1 byte per pel and mode 65h requires
1/2 byte per pel.
The following code segment can be used to select the required page:
cli
mov dx,EXTENDED_REG
mov al,PAGE_SELECT
out dx,al
inc dl
in al,dx
mov ah,al
and ah,PAGE_MASK
shl ch,1
or ah,ch
mov al,PAGE_SELECT
dec dl
out dx,ax
sti
where ch = required page value (0 to 7 for mode 63h for example)
PAGE_SELECT = 0B2h
PAGE_MASK = 0E1h
EXTENDED_REG = value of extended register stored at memory
address C000:0010h. See section 4.31
The following is a table that describes the visible range for
each extended mode which uses the bit-packed memory organization:
Mode 61h (640 x 400 - 256 colors):
Page Visible range (column,row) Memory range
0 (0,0) --> (255,102) A0000 - AFFFF
1 (256,102) --> (511,204) A0000 - AFFFF
2 (512,204) --> (127,307) A0000 - AFFFF
3 (128,307) --> (639,399) A0000 - AE7FF
Mode 62h (640 x 480 - 256 colors):
Page Visible range (column,row) Memory range
0 (0,0) --> (255,102) A0000 - AFFFF
1 (256,102) --> (511,204) A0000 - AFFFF
2 (512,204) --> (127,307) A0000 - AFFFF
3 (128,307) --> (383,409) A0000 - AFFFF
4 (384,409) --> (639,479) A0000 - AAFFF
Mode 63h (800 x 600 - 256 colors):
Page Visible range (column,row) Memory range
0 (0,0) --> (735,81) A0000 - AFFFF
1 (736,81) --> (671,163) A0000 - AFFFF
2 (672,163) --> (607,245) A0000 - AFFFF
3 (608,245) --> (543,327) A0000 - AFFFF
4 (544,327) --> (479,409) A0000 - AFFFF
5 (480,409) --> (415,491) A0000 - AFFFF
6 (416,491) --> (351,573) A0000 - AFFFF
7 (352,573) --> (799,599) A0000 - A561F
Mode 65h (1024 x 768 - 16 colors):
Page Visible range (column,row) Memory range
0 (0,0) --> (1023,127) A0000 - AFFFF
1 (0,128) --> (1023,255) A0000 - AFFFF
2 (0,256) --> (1023,383) A0000 - AFFFF
3 (0,384) --> (1023,511) A0000 - AFFFF
4 (0,512) --> (1023,639) A0000 - AFFFF
5 (0,640) --> (1023,767) A0000 - AFFFF
6 spare
7 spare
4.3 DETAILS OF EACH EXTENDED VIDEO MODE
4.31 132X25 - Color text (Mode 23h)
132x25 - B&W text (Mode 27h)
132X44 - Color text (Mode 33h)
132X44 - B&W text (Mode 37h)
Video Memory Organization:
The memory organization of very similar to standard text modes. Only
one page of 6,660 bytes (132X25 modes) or 11,616 bytes (132X44 modes)
is available.
Video Data Organization:
The video data organization is identical to standard text modes.
BIOS support
All BIOS calls supported on standard text modes are supported.
NOTE! It is a good idea to avoid DOS calls when using the 132X44 text
modes. Most versions of ANSI.SYS are not compatible with text modes
which have more than 25 lines. This is particularly a problem when
scrolling the screen.
4.32 800x600 - 16 COLORS (Mode 54h)
Video Memory Organization:
The memory organization is identical to 16 color IBM EGA/VGA modes
and consists of 256K organized into 4 maps of 64K each. One bit from
each of the 4 maps is used to compose each pel. The IBM EGA/VGA Map
Mask Register is used to select any or all the maps to be updated.
A0000:0 -> ---------- <===========================================\
| 60,000 |---------- |
| | 60,000 |---------- |
|----------| | 60,000 |--------- <==\ 240,000
| Reserved |----------| | 60,000 | | |
----------| Reserved |----------| | |64K |
Plane 0 ----------| Reserved |---------|<==|=======/
Plane 1 ----------| Reserved| |
Plane 2 --------- <==/
Plane 3
Video Data Format:
The video data format is identical to the 16 color IBM EGA/VGA modes.
Color Mapping:
Color selection and palette changing is identical to the 16 color IBM
EGA/VGA modes.
4.33 640x400 - 256 COLORS (Mode 61h)
Video Memory Configuration:
This enhanced resolution mode uses a page memory system unique to this
VGA board. The memory is organized into contiguous 64K blocks located
at A0000H to AFFFFH. A VGA board equipped with 256K or 512K of RAM
will support this mode. Mode 61h uses four 64K pages. For information
on selecting the active page, refer to section 4.23 "SELECTING MEMORY
PAGES" of this document.
A0000:0 -> ---------- <=========================================\
| |---------- |
| 64K | |---------- |
| | | |---------- 256,000
| | 64K | | 59,392 | |
----------| | 64K | | |
Page 0 ----------| |----------|<========/
Page 1 ----------| Reserved |
Page 2 ----------
Page 3
Video Data Format:
The video data format is identical to IBM VGA mode 13h (320x200-256
color). Each pel is represented by 1 byte.
Color Mapping:
Color selection and palette changing is identical to VGA mode 13h.
4.34 640x480 - 256 COLORS (Mode 62h)
Video Memory Configuration:
This enhanced resolution mode uses a page memory system unique to this
VGA board. The memory is organized into contiguous 64K blocks located
at A0000H to AFFFFH. The VGA board must be equipped with 512K of RAM
to support this mode. Mode 62h uses five 64K pages. For information on
selecting the active page, refer to section 4.23 "SELECTING MEMORY
PAGES" of this document.
A0000:0 -> ---------- <=============================================\
| |--------- |
| 64K | |--------- |
| | 64K | |--------- |
| | | 64K | |--------- 307,200
----------| | | 64K | 45,056 | |
Page 0 ---------| | | | |
Page 1 ---------| |---------|<=====/
Page 2 ---------| Reserved|
Page 3 ---------
Page 4
Video Data Format:
The video data format is identical to IBM VGA mode 13h (320x200-256
color). Each pel is represented by 1 byte.
Color Mapping:
Color selection and palette changing is identical to VGA mode 13h.
4.35 800x600 - 256 COLORS (Mode 63h)
Video Memory Configuration:
This enhanced resolution mode uses a page memory system unique to this
VGA board. The memory is organized into contiguous 64K blocks located
at A0000H to AFFFFH. The VGA board must be equipped with 512K of RAM
to support this mode. Mode 63h uses eight 64K pages. For information
on selecting the active page, refer to section 4.23 "SELECTING MEMORY
PAGES" of this document.
A0000:0 -> ----------<==============================================\
| |---------- |
| 64K | |---------- |
| | 64K | | \ |
| | | 64K | \ |
----------| | | \ 480,000
Page 0 ----------| | \ |
Page 1 ---------- ---------- |
Page 3 \ | 21,248 | |
\ | | |
\ |----------|<======/
\ | Reserved |
----------
Page 7
Video Data Format:
The video data format is identical to IBM VGA mode 13h (320x200-256
color). Each pel is represented by 1 byte.
Color Mapping:
Color selection and palette changing is identical to VGA mode 13h.
4.36 1024x768 - 16 COLORS (Mode 65h)
Video Memory Organization:
This enhanced resolution mode uses a page memory system unique to this
VGA board. The memory is organized into contiguous 64K blocks located
at A0000H to AFFFFH. The VGA board must be equipped with 512K of RAM
to support this mode. Mode 65h uses six 64K pages. For information
on selecting the active page, refer to section 4.23 "SELECTING MEMORY
PAGES" of this document.
A0000:0 -> ---------- <=============================================\
| |---------- |
| 64K | |---------- |
| | 64K | | \ |
| | | 64K | \ |
----------| | | \ |
Page 0 ----------| | \ |
Page 1 ---------- ---------- 393,216
Page 2 \ | | |
\ | 64K | |
\ | | |
\ | | |
---------- <=====/
Page 5
Video Data Format:
The video data format is unique to this mode. Each pel requires 4 bits
or half a byte.
____________________________________________ High Order
| | | | | Pixel
|____|____|____|____|____ ____ ____ ____
| H | H | H | H | L | L | L | L |
|____|____|____|____|____|____|____|____|
| | | | |
|____|____|____|____|________ Low Order
Pixel
Color Mapping:
This mode has a different memory organization than standard EGA mode
10h. If users want to use colors other than the standard 16 colors,
users are required to reprogram the external palettes (3C8h/3C9h). Re-
programming the internal palettes (3C0h) will not work the same as it
would in EGA mode 10h because the color mapping in mode 65h is
different. It is not recommended to change the internal palettes at
all for mode 65h. The following table shows the mapping of colors and
external palettes.
Palette registers available for reprogramming are:
Palette register Palette register default color color
(low order pels) (high order pels) assignment value
---------------- ----------------- ------------- -----
00h 00h Black 0h
01h 10h Blue 1h
02h 20h Green 2h
03h 30h Cyan 3h
04h 40h Red 4h
05h 50h Magenta 5h
06h 60h Brown 6h
07h 70h White 7h
08h 80h Dark Gray 8h
09h 90h Light Blue 9h
0Ah A0h Light Green Ah
0Bh B0h Light Cyan Bh
0Ch C0h Light Red Ch
0Dh D0h Light Magenta Dh
0Eh E0h Yellow Eh
0Fh F0h Bright White Fh
For example, to change the default color assignment for palette
register 4 from Red to Bright White, palette register 4 and 40h would
need to be reprogrammed with the values:
Red Intensity = 3Fh
Green Intensity = 3Fh
Blue Intensity = 3Fh
so that both the low order AND high order pels are affected. The only
exception is palette register 0 (Black); reprogramming this register
will affect both the low order and high order pels.
An Example:
The following example uses a standard IBM EGA/VGA BIOS call. If more
information is required, consult the IBM EGA/VGA programmers reference
list included in this document.
Example segment to reprogram a palette register:
mov ah,10h ;EGA/VGA Set Palette Register BIOS call
mov al,10h
mov bx,PALETTE_REG_LOW ;Palette register to be reprogrammed
; for low order pels.
mov ch,GREEN_INTENSITY ;Load new values
mov cl,BLUE_INTENSITY
mov dh,RED_INTENSITY
int 10h
mov ah,10h ;EGA/VGA Set Palette Register BIOS call
mov al,10h
mov bx,PALETTE_REG_HIGH ;Palette register to be reprogrammed
; for high order pels.
mov ch,GREEN_INTENSITY
mov cl,BLUE_INTENSITY
mov dh,RED_INTENSITY
int 10h
where:
PALETTE_REG_LOW = low pel palette register (00,01,02,..,0F)
PALETTE_REG_HIGH = high pel palette register (00,10,20,..,F0)
GREEN_INTENSITY
BLUE_INTENSITY = 6 bit intensity values for defining the default color
RED_INTENSITY
4.37 1024x768 - 4 COLORS (Mode 67h)
Video Memory Organization:
The memory organization is identical to the IBM 16 color EGA and VGA
modes. 256K of RAM is divided into 4 maps of 64k. The IBM EGA/VGA Map
Mask Register is used to select the maps to be updated.
A0000:0 -> ---------- <===========================================\
| 49,152 |---------- |
| C0 | 49,152 |---------- |
|----------| C1 | 49,152 |--------- <==\ 196,608
| Reserved |----------| C0 | 49,152 | | |
----------| Reserved |----------| C1 | |64K |
^ Plane 0 ----------| Reserved |---------|<==|=======/
| Plane 1 ^----------| Reserved| |
| | Plane 2 ---------^<==/
\------odd pels-------/ Plane 3 |
^ |
| |
| |
\------even pels----/
Video Data Format:
This mode uses a unique data format where 2 bits are required per pel.
Plane 0 and 1 contain the data for odd numbered pels and Planes 2 and
3 contain the data for the even numbered pels.
Color Mapping:
This mode supports four palette selections. The palette or color set
is selected by setting bits 0 & 1 of the IBM EGA/VGA Color Select
Register.
Color Values (C0, C1)
Color set # C0=0,C1=0 C0=1,C1=0 C0=0,C1=1 C0=1,C1=1
0 black white gray bright white
1 black cyan red white
2 black green red yellow
3 black cyan magenta white
Examples:
The following examples use standard IBM EGA/VGA registers. If more
information is required, consult the EGA/VGA programmers reference
list included in this document.
Segment example for selecting the active palette or color set:
mov dx,03dah ;Load Input Status Register One
;
wait:
in al,dx ;Wait for vertical retrace bit to be set
test al,8 ; (bit 3 = 1)
jnz wait ;It is good practice to wait for the vertical
; retrace bit before directly modifying the
; palette registers
mov ah,ARG ;Arg = color set # (0 to 3)
mov cl,4 ;Multiply arg by 8 so that bits 4 & 5 of the
shl ah,cl ; palette registers can be modified
mov dx,03c0h ;Load Palette Control Register
mov cx,16 ;16 Palette registers to be modified
xor bl,bl ;Start from 0
;
repeat: ;Modify bits 4 & 5 of all 16 palette registers with
mov al,bl ; Arg value (color set #)
out dx,al ;Select palette register
or al,ah
out dx,al ;Write modified data to selected palette register
loop repeat
mov al,20h ;Restore internal registers access to palette data
out dx,al ; bit 5 must be zero during palette data writing
; and one after data writing is complete
Segment example for selecting Bit Planes to be modified during a
memory write:
mov dx,03c4h ;Load Sequencer Address Register
mov al,2 ;Load index of Map Mask Register
out dx,al ;Select Map Mask Register
inc dl
mov al,ARG ;Value to select which bit planes are to be
; modified during a memory write
out dx,al ;Select EGA/VGA planes to be modified
IBM EGA/VGA Map Mask Register (3C5h, index 2) organization:
Bits: 0 Controls access to Bit Plane 0
1 Controls access to Bit Plane 1
2 Controls access to Bit Plane 2
3 Controls access to Bit Plane 3
4-7 Not used
A bit value of 0 disables access to the corresponding Bit Plane and a
bit value of 1 enables it.
4.4 SPECIAL NOTES
4.41 NOTE ON EXTENDED REGISTER ADDRESS
Hard-coding this value is not recommended since it is programmable
and may be changed in subsequent BIOS releases. The value of
EXTENDED_REG should be retrieved from the BIOS at location C000:0010h.
The 'mov dx, EXTENDED_REG statement in the page selecting segment can
be replaced with code to load the value of EXTENDED_REG from its stored
location. The registers that need to be saved will depend greatly on
the particular application:
push es ;save registers es and bx
push bx
mov ax,0c000h ;define storage location of EXTENDED_REG
mov es,ax
mov bx,10h
mov dx,es:[bx] ;get the value of EXTENDED_REG from contents
;of the storage location C000:0010h
pop bx ;restore registers es and bx
pop es
4.42 NOTE ON DAC REGISTER PROGRAMMING
In IBM VGA mode 13h (320x200 - 256 color), each color is controlled by
a corresponding DAC register. There are a total of 256 18-bit DAC
registers. Therefore, each DAC register can be assigned a color value
from 0 (BLACK) to 262,143 (BRIGHT WHITE). The first 16 DAC registers
have assigned color values that correspond to the 16 colors used in
mode 12h (640x480 - 16 color). DAC register zero, which has an
assigned color value of 0 (BLACK), also controls the color of the
overscan border. This function is also supported in ATI modes 61, 62,
63, and 65h. On some analog monitors, a non-BLACK overscan border may
cause line wrapping at either the top or bottom of the screen image
due to the video bandwidth required. For this reason, it is not
recommended to change the color value of this DAC register.
4.43 BIOS FUNCTION SUPPORT
Some of the extended graphics modes do not support certain video BIOS
function calls. The following chart lists the modes affected and the
functions which are not supported:
MODE # BIOS FUNCTION
61h, 62h, 63h ah = 06h - Scroll active page up
ah = 07h - Scroll active page down
65h, 67h ah = 06h - Scroll active page up
ah = 07h - Scroll active page down
ah = 09h - Read Character at Cursor
ah = 0ch - Write Dot
ah = 0dh - Read Dot
ah = 0eh - Write TTX
All extended modes have only one active page regardless of the amount
of memory installed.
5.0 APPENDIX
5.1 LIST OF SUGGESTED REFERENCES
TITLE: Programmer's Guide to the EGA/VGA *
AUTHOR: George Sutty and Steve Blair
PUBLISHER: Brady Books / Simon and Schuster, Inc.
DATE: 1988
TITLE: Programmer's Guide to IBM PC and PS/2 Video Systems
AUTHOR: Richard Wilton
PUBLISHER: MicroSoft Press
DATE: 1987
TITLE: Programmer's Guide to the EGA and VGA Cards
AUTHOR: Richard F. Ferraro
PUBLISHER: Addison - Wesley Publishing Co.
DATE: July, 1988
TITLE: EGA/VGA A Programmer's Reference Guide
AUTHOR: Bradley Dyck Kliewer
PUBLISHER: McGraw Hill
DATE: 1988
TITLE: Personal System/2 Model 50 and 60 Technical Reference
AUTHOR: unknown
PUBLISHER: IBM
DATE: April, 1987
TITLE: Personal System/2 and Personal Computer BIOS Interface
Technical Reference
AUTHOR: unknown
PUBLISHER: IBM
DATE: April, 1987
* recommended
TO OBTAIN A PRINT COPY OF THIS DOCUMENT ON YOUR SYSTEM
PRINTER, ENTER THE FOLLOWING COMMAND AT THE DOS PROMPT:
TYPE PROGINFO.DOC>PRN
Source : Disk P/N 008004811 Rev. 1.07
Date : February 21, 1990
========================================================================
1.0 INTRODUCTION
1.1 PURPOSE
The purpose of this document is to aid professional programmers who
wish to write software to use the high resolution modes supported by
this VGA video board. Working knowledge of EGA/VGA graphics and
assembly language programming is required and assumed. The document
describes several features unique to this VGA board and how each high
resolution mode is similar or is different compared to standard VGA
modes. It does not contain any programming information about standard
EGA/VGA modes. Refer to the Reference list in the appendix for
recommended EGA/VGA programmer's references.
1.2 CONVENTIONS
The code segments contained in this document follow the conventions of
the MicroSoft MASM assembler. Numbers given in hexadecimal end with a
lower case h.
2.0 FEATURES OF THE VGA BOARD
2.1 STANDARD VIDEO MODES
AH = 0 ;set video mode
AL = MODE/ RESOLUTION DIM/ START
TYPE COLOR ADDRESS
---------------------------------------------------------------
0h color/alpha 320x200 40x25/ BW b800:0h
1h color/alpha 320x200 40x25/ 16 b800:0h
2h color/alpha 640x200 80x25/ BW b800:0h
3h color/alpha 640x200 80x25/ 16 b800:0h
0* color/alpha 320x350 40x25/ BW b800:0h
1* color/alpha 320x350 40x25/ 16 b800:0h
2* color/alpha 640x350 80x25/ BW b800:0h
3* color/alpha 640x350 80x25/ 16 b800:0h
0+ color/alpha 360x400 40x25/ BW b800:0h
1+ color/alpha 360x400 40x25/ 16 b800:0h
2+ color/alpha 720x400 80x25/ BW b800:0h
3+ color/alpha 720x400 80x25/ 16 b800:0h
4h color/graphics 320x200 40x25/ 4 b800:0h
5h color/graphics 320x200 40x25/ BW b800:0h
6h color/graphics 640x200 80x25/ BW b800:0h
7h mono/alpha 720x350 80x25/ BW b000:0h
0dh color/graphics 320x200 40x25/ 16 a000:0h
0eh color/graphics 640x200 80x25/ 16 a000:0h
0fh mono/graphics 640x350 80x25/ BW a000:0h
10h color/graphics 640x350 80x25/ 16 a000:0h
11h color/graphics 640x480 80x30/ BW a000:0h
12h color/graphics 640x480 80x30/ 16 a000:0h
13h color/graphics 320x200 80x25/256 a000:0h
2.2 ENHANCED VIDEO MODES
23h color/alpha 1056x350 132x25/16 b800:0h
27h mono/alpha 1056x350 132x25/BW b000:0h
33h color/alpha 1056x352 132x44/16 b800:0h
37h mono/alpha 1056x352 132x44/BW b000:0h
53h color/graphics 800x600 16 a000:0h
54h color/graphics 800x600 16 a000:0h
61h color/graphics 640x400 256 a000:0h
62h color/graphics 640x480 256 a000:0h
63h color/graphics 800x600 256 a000:0h
65h color/graphics 1024x768 16 a000:0h
67h color/graphics 1024x768 4 a000:0h
2.3 REQUIRED CONFIGURATIONS
Some enhanced modes require 512K memory rather than 256K memory.
Some enhanced modes are supported only on certain monitor types. The
following chart describes the requirements for each enhanced mode.
Mode# Resolution Colors/ Memory Monitors
(hex) Palette Required Supported
-----------------------------------------------------------------
23 132x25 16/64 256K 1,2,5
27 132x25 B&W 256K 1,2,5
33 132x44 16/64 256K 1,2,5
37 132x44 B&W 256K 1,2,5
54 800x600 16/256K 256K 5
61 640x400 256/256K 256K 3,4,5
62 640x480 256/256K 512K 3,4,5
63 800x600 256/256K 512K 5
65 1024x768 16/256K 512K 4,5
67 1024x768 4/16 256K 4,5
Monitors: (1) TTL mono (2) EGA (3) VGA (4) IBM 8514 (5) Multisync
3.0 DETERMINING THE STATUS OF THE CARD
The VGA BIOS features some special functions which will allow the
programmer to determine if a compatible VGA board is installed and how
the card is configured within his program.
3.1 IDENTIFYING THE VIDEO CARD
All EGA and VGA display adapters manufactured by ATI Technologies will
contain the character string: "761295520" starting at address: C000:31.
VGA boards which are based on the 18800 series VGA chip set are
identified by the character string "31" at address C000:40. The card is
further identified by 2 bytes. The definition of the byte at address
C000:42 is:
bit 0 = 0 hardware is fixed at either 8 or 16 bits ROM operation
bit 0 = 1 hardware can be switched between 8 and 16 bits ROM
operation
bit 1 = 1 mouse port present on display adapter
bit 2 = 1 supports non-interlaced 1024x768
bit 3 = 1 microchannel product
bit 4 = 1 contains programmable video clock chip
bit 5-7 = not currently defined
The character at address C000:43 contains the revision of the VGA gate
array. Currently, revisions 1, 2 and 3 exist and other revisions may
follow in the future.
3.2 DETERMINING THE MONITOR TYPE
The following assembler code segment can be used to determine for
which monitor the VGA board is currently configured.
cli
mov dx,EXTENDED_REG
mov al,DATA_I
out dx,al
inc dx
in al,dx
sti
and al,0fh
returns al = 0 EGA monitor
1 PS/2 monochrome monitor
2 TTL monochrome monitor
3 PS/2 color monitor
4 RGB color monitor
5 Multisync monitor
7 PS/2 8514 monitor
9 NEC MultiSync 2A
b NEC MultiSync 3D
d NEC MultiSync XL
where
EXTENDED_REG = see section 4.41 in this document
DATA_I = 0bbh
Note : We reserve the right to add more monitor types at any time. We
recommend that if an undefined value is returned that the program
assumed that a multisync is installed.
3.3 DETERMINING MEMORY SIZE
The follow code segment can be used to determine the amount of video
memory installed.
cli
mov dx,EXTENDED_REG
mov al,DATA_I
out dx,al
inc dx
in al,dx
sti
and al,020h
al = 0 ; 256K display memory installed
= 20h; 512K display memory installed
where EXTENDED_REG = see section 4.41 of this manual
DATA_I = 0bbh
3.4 DETERMINING WHETHER A MODE IS SUPPORTED
Your VGA board implements an extended video BIOS call which can be
used to determine if a particular mode is actually available in the
user's current configuration. The following assembler routine
demonstrates this technique:
push bp
mov bp,sp
push es
mov al,ARG
mov ah,12h
mov bx,5506h
mov bp,0ffffh
int 10h
mov ax,bp
pop es
pop bp
ret
where ARG = mode desired in hexadecimal
If this routine returns ax = 0ffffh, that mode is not supported in the
current configuration. If the mode is supported, ax will contain the
offset start address of the CRTC parameter table for that mode.
Note : We recommend this technique as the only reliable means of
determining if a particular mode is supported on our EGA or VGA boards.
4.0 PROGRAMMING THE HIGH RESOLUTION MODES
4.1 SETTING THE VIDEO MODE
The VGA card can be set into a video mode through the BIOS by using
the standard IBM method: AH is set to 0, AL is set to the video mode
number, and a call to software interrupt 10h is executed. See sections
2.1 and 2.2 of this manual for a list of available modes. The
following example will perform this function:
mov ah,0 ;set mode function
mov al,MODE ;select video mode
int 10h ;make BIOS call by using the video
;interrupt
We recommend that programmers select the video mode through BIOS
whenever possible rather than programming the mode via the registers.
For any particular video mode, the configuration of the internal
registers may differ depending on the type of monitor installed.
Also, we reserve the right to change the product in a way which would
be transparent to BIOS but which would have an impact on software
which writes to the registers.
4.2 VIDEO MEMORY ADDRESSING
4.21 ADDRESS RANGE OF VGA BOARD
The VGA board uses the RESERVED area designated by IBM for video
RAM and the video BIOS (A000 to C7FF). The organization is as follows:
Mono text video RAM: B000-B7FF
Color text video RAM: B800-BFFF
Graphics video RAM: A000-AFFF (upto eight 64k banked pages with 512K
RAM)
Video BIOS: C000-C7FF
4.22 PAGES and PLANES:
There are two memory mapping systems used with VGA graphics modes:
Bit-packed and Planar organization.
The Bit-packed mapping scheme is associated with pages and uses
contiguous memory to describe each pel. IBM VGA mode 13h uses this
system. Extended modes 61, 62, 63, and 65h also use the Bit-packed
scheme but they use a unique method to select which page is
available for reading and writing.
The Planar organized memory mapping scheme is associated with
planes and uses a bit from each plane to describe a pel. IBM VGA
mode 12h uses this system as does Extended modes 54 and 67h.
4.23 SELECTING MEMORY PAGES:
The memory organization of extended modes 61, 62, 63, and 65h are
arranged into 64k page segments. The data in each page is displayed on
a specific region of the screen image. For example, mode 63h has eight
pages. The first page is displayed on the top eighth of the screen
image, the second page is displayed on the second eighth of the screen
image, and so on. Data can be read or written to one page at a time.
The default active page is Page 0. A special code segment is required
to be executed before data can be read or written to a specific page.
A page selecting code segment is provided below. VGA cards with 256K
of RAM have a maximum of four pages available and those with 512K have
eight. Modes 61, 62, 63h require 1 byte per pel and mode 65h requires
1/2 byte per pel.
The following code segment can be used to select the required page:
cli
mov dx,EXTENDED_REG
mov al,PAGE_SELECT
out dx,al
inc dl
in al,dx
mov ah,al
and ah,PAGE_MASK
shl ch,1
or ah,ch
mov al,PAGE_SELECT
dec dl
out dx,ax
sti
where ch = required page value (0 to 7 for mode 63h for example)
PAGE_SELECT = 0B2h
PAGE_MASK = 0E1h
EXTENDED_REG = value of extended register stored at memory
address C000:0010h. See section 4.31
The following is a table that describes the visible range for
each extended mode which uses the bit-packed memory organization:
Mode 61h (640 x 400 - 256 colors):
Page Visible range (column,row) Memory range
0 (0,0) --> (255,102) A0000 - AFFFF
1 (256,102) --> (511,204) A0000 - AFFFF
2 (512,204) --> (127,307) A0000 - AFFFF
3 (128,307) --> (639,399) A0000 - AE7FF
Mode 62h (640 x 480 - 256 colors):
Page Visible range (column,row) Memory range
0 (0,0) --> (255,102) A0000 - AFFFF
1 (256,102) --> (511,204) A0000 - AFFFF
2 (512,204) --> (127,307) A0000 - AFFFF
3 (128,307) --> (383,409) A0000 - AFFFF
4 (384,409) --> (639,479) A0000 - AAFFF
Mode 63h (800 x 600 - 256 colors):
Page Visible range (column,row) Memory range
0 (0,0) --> (735,81) A0000 - AFFFF
1 (736,81) --> (671,163) A0000 - AFFFF
2 (672,163) --> (607,245) A0000 - AFFFF
3 (608,245) --> (543,327) A0000 - AFFFF
4 (544,327) --> (479,409) A0000 - AFFFF
5 (480,409) --> (415,491) A0000 - AFFFF
6 (416,491) --> (351,573) A0000 - AFFFF
7 (352,573) --> (799,599) A0000 - A561F
Mode 65h (1024 x 768 - 16 colors):
Page Visible range (column,row) Memory range
0 (0,0) --> (1023,127) A0000 - AFFFF
1 (0,128) --> (1023,255) A0000 - AFFFF
2 (0,256) --> (1023,383) A0000 - AFFFF
3 (0,384) --> (1023,511) A0000 - AFFFF
4 (0,512) --> (1023,639) A0000 - AFFFF
5 (0,640) --> (1023,767) A0000 - AFFFF
6 spare
7 spare
4.3 DETAILS OF EACH EXTENDED VIDEO MODE
4.31 132X25 - Color text (Mode 23h)
132x25 - B&W text (Mode 27h)
132X44 - Color text (Mode 33h)
132X44 - B&W text (Mode 37h)
Video Memory Organization:
The memory organization of very similar to standard text modes. Only
one page of 6,660 bytes (132X25 modes) or 11,616 bytes (132X44 modes)
is available.
Video Data Organization:
The video data organization is identical to standard text modes.
BIOS support
All BIOS calls supported on standard text modes are supported.
NOTE! It is a good idea to avoid DOS calls when using the 132X44 text
modes. Most versions of ANSI.SYS are not compatible with text modes
which have more than 25 lines. This is particularly a problem when
scrolling the screen.
4.32 800x600 - 16 COLORS (Mode 54h)
Video Memory Organization:
The memory organization is identical to 16 color IBM EGA/VGA modes
and consists of 256K organized into 4 maps of 64K each. One bit from
each of the 4 maps is used to compose each pel. The IBM EGA/VGA Map
Mask Register is used to select any or all the maps to be updated.
A0000:0 -> ---------- <===========================================\
| 60,000 |---------- |
| | 60,000 |---------- |
|----------| | 60,000 |--------- <==\ 240,000
| Reserved |----------| | 60,000 | | |
----------| Reserved |----------| | |64K |
Plane 0 ----------| Reserved |---------|<==|=======/
Plane 1 ----------| Reserved| |
Plane 2 --------- <==/
Plane 3
Video Data Format:
The video data format is identical to the 16 color IBM EGA/VGA modes.
Color Mapping:
Color selection and palette changing is identical to the 16 color IBM
EGA/VGA modes.
4.33 640x400 - 256 COLORS (Mode 61h)
Video Memory Configuration:
This enhanced resolution mode uses a page memory system unique to this
VGA board. The memory is organized into contiguous 64K blocks located
at A0000H to AFFFFH. A VGA board equipped with 256K or 512K of RAM
will support this mode. Mode 61h uses four 64K pages. For information
on selecting the active page, refer to section 4.23 "SELECTING MEMORY
PAGES" of this document.
A0000:0 -> ---------- <=========================================\
| |---------- |
| 64K | |---------- |
| | | |---------- 256,000
| | 64K | | 59,392 | |
----------| | 64K | | |
Page 0 ----------| |----------|<========/
Page 1 ----------| Reserved |
Page 2 ----------
Page 3
Video Data Format:
The video data format is identical to IBM VGA mode 13h (320x200-256
color). Each pel is represented by 1 byte.
Color Mapping:
Color selection and palette changing is identical to VGA mode 13h.
4.34 640x480 - 256 COLORS (Mode 62h)
Video Memory Configuration:
This enhanced resolution mode uses a page memory system unique to this
VGA board. The memory is organized into contiguous 64K blocks located
at A0000H to AFFFFH. The VGA board must be equipped with 512K of RAM
to support this mode. Mode 62h uses five 64K pages. For information on
selecting the active page, refer to section 4.23 "SELECTING MEMORY
PAGES" of this document.
A0000:0 -> ---------- <=============================================\
| |--------- |
| 64K | |--------- |
| | 64K | |--------- |
| | | 64K | |--------- 307,200
----------| | | 64K | 45,056 | |
Page 0 ---------| | | | |
Page 1 ---------| |---------|<=====/
Page 2 ---------| Reserved|
Page 3 ---------
Page 4
Video Data Format:
The video data format is identical to IBM VGA mode 13h (320x200-256
color). Each pel is represented by 1 byte.
Color Mapping:
Color selection and palette changing is identical to VGA mode 13h.
4.35 800x600 - 256 COLORS (Mode 63h)
Video Memory Configuration:
This enhanced resolution mode uses a page memory system unique to this
VGA board. The memory is organized into contiguous 64K blocks located
at A0000H to AFFFFH. The VGA board must be equipped with 512K of RAM
to support this mode. Mode 63h uses eight 64K pages. For information
on selecting the active page, refer to section 4.23 "SELECTING MEMORY
PAGES" of this document.
A0000:0 -> ----------<==============================================\
| |---------- |
| 64K | |---------- |
| | 64K | | \ |
| | | 64K | \ |
----------| | | \ 480,000
Page 0 ----------| | \ |
Page 1 ---------- ---------- |
Page 3 \ | 21,248 | |
\ | | |
\ |----------|<======/
\ | Reserved |
----------
Page 7
Video Data Format:
The video data format is identical to IBM VGA mode 13h (320x200-256
color). Each pel is represented by 1 byte.
Color Mapping:
Color selection and palette changing is identical to VGA mode 13h.
4.36 1024x768 - 16 COLORS (Mode 65h)
Video Memory Organization:
This enhanced resolution mode uses a page memory system unique to this
VGA board. The memory is organized into contiguous 64K blocks located
at A0000H to AFFFFH. The VGA board must be equipped with 512K of RAM
to support this mode. Mode 65h uses six 64K pages. For information
on selecting the active page, refer to section 4.23 "SELECTING MEMORY
PAGES" of this document.
A0000:0 -> ---------- <=============================================\
| |---------- |
| 64K | |---------- |
| | 64K | | \ |
| | | 64K | \ |
----------| | | \ |
Page 0 ----------| | \ |
Page 1 ---------- ---------- 393,216
Page 2 \ | | |
\ | 64K | |
\ | | |
\ | | |
---------- <=====/
Page 5
Video Data Format:
The video data format is unique to this mode. Each pel requires 4 bits
or half a byte.
____________________________________________ High Order
| | | | | Pixel
|____|____|____|____|____ ____ ____ ____
| H | H | H | H | L | L | L | L |
|____|____|____|____|____|____|____|____|
| | | | |
|____|____|____|____|________ Low Order
Pixel
Color Mapping:
This mode has a different memory organization than standard EGA mode
10h. If users want to use colors other than the standard 16 colors,
users are required to reprogram the external palettes (3C8h/3C9h). Re-
programming the internal palettes (3C0h) will not work the same as it
would in EGA mode 10h because the color mapping in mode 65h is
different. It is not recommended to change the internal palettes at
all for mode 65h. The following table shows the mapping of colors and
external palettes.
Palette registers available for reprogramming are:
Palette register Palette register default color color
(low order pels) (high order pels) assignment value
---------------- ----------------- ------------- -----
00h 00h Black 0h
01h 10h Blue 1h
02h 20h Green 2h
03h 30h Cyan 3h
04h 40h Red 4h
05h 50h Magenta 5h
06h 60h Brown 6h
07h 70h White 7h
08h 80h Dark Gray 8h
09h 90h Light Blue 9h
0Ah A0h Light Green Ah
0Bh B0h Light Cyan Bh
0Ch C0h Light Red Ch
0Dh D0h Light Magenta Dh
0Eh E0h Yellow Eh
0Fh F0h Bright White Fh
For example, to change the default color assignment for palette
register 4 from Red to Bright White, palette register 4 and 40h would
need to be reprogrammed with the values:
Red Intensity = 3Fh
Green Intensity = 3Fh
Blue Intensity = 3Fh
so that both the low order AND high order pels are affected. The only
exception is palette register 0 (Black); reprogramming this register
will affect both the low order and high order pels.
An Example:
The following example uses a standard IBM EGA/VGA BIOS call. If more
information is required, consult the IBM EGA/VGA programmers reference
list included in this document.
Example segment to reprogram a palette register:
mov ah,10h ;EGA/VGA Set Palette Register BIOS call
mov al,10h
mov bx,PALETTE_REG_LOW ;Palette register to be reprogrammed
; for low order pels.
mov ch,GREEN_INTENSITY ;Load new values
mov cl,BLUE_INTENSITY
mov dh,RED_INTENSITY
int 10h
mov ah,10h ;EGA/VGA Set Palette Register BIOS call
mov al,10h
mov bx,PALETTE_REG_HIGH ;Palette register to be reprogrammed
; for high order pels.
mov ch,GREEN_INTENSITY
mov cl,BLUE_INTENSITY
mov dh,RED_INTENSITY
int 10h
where:
PALETTE_REG_LOW = low pel palette register (00,01,02,..,0F)
PALETTE_REG_HIGH = high pel palette register (00,10,20,..,F0)
GREEN_INTENSITY
BLUE_INTENSITY = 6 bit intensity values for defining the default color
RED_INTENSITY
4.37 1024x768 - 4 COLORS (Mode 67h)
Video Memory Organization:
The memory organization is identical to the IBM 16 color EGA and VGA
modes. 256K of RAM is divided into 4 maps of 64k. The IBM EGA/VGA Map
Mask Register is used to select the maps to be updated.
A0000:0 -> ---------- <===========================================\
| 49,152 |---------- |
| C0 | 49,152 |---------- |
|----------| C1 | 49,152 |--------- <==\ 196,608
| Reserved |----------| C0 | 49,152 | | |
----------| Reserved |----------| C1 | |64K |
^ Plane 0 ----------| Reserved |---------|<==|=======/
| Plane 1 ^----------| Reserved| |
| | Plane 2 ---------^<==/
\------odd pels-------/ Plane 3 |
^ |
| |
| |
\------even pels----/
Video Data Format:
This mode uses a unique data format where 2 bits are required per pel.
Plane 0 and 1 contain the data for odd numbered pels and Planes 2 and
3 contain the data for the even numbered pels.
Color Mapping:
This mode supports four palette selections. The palette or color set
is selected by setting bits 0 & 1 of the IBM EGA/VGA Color Select
Register.
Color Values (C0, C1)
Color set # C0=0,C1=0 C0=1,C1=0 C0=0,C1=1 C0=1,C1=1
0 black white gray bright white
1 black cyan red white
2 black green red yellow
3 black cyan magenta white
Examples:
The following examples use standard IBM EGA/VGA registers. If more
information is required, consult the EGA/VGA programmers reference
list included in this document.
Segment example for selecting the active palette or color set:
mov dx,03dah ;Load Input Status Register One
;
wait:
in al,dx ;Wait for vertical retrace bit to be set
test al,8 ; (bit 3 = 1)
jnz wait ;It is good practice to wait for the vertical
; retrace bit before directly modifying the
; palette registers
mov ah,ARG ;Arg = color set # (0 to 3)
mov cl,4 ;Multiply arg by 8 so that bits 4 & 5 of the
shl ah,cl ; palette registers can be modified
mov dx,03c0h ;Load Palette Control Register
mov cx,16 ;16 Palette registers to be modified
xor bl,bl ;Start from 0
;
repeat: ;Modify bits 4 & 5 of all 16 palette registers with
mov al,bl ; Arg value (color set #)
out dx,al ;Select palette register
or al,ah
out dx,al ;Write modified data to selected palette register
loop repeat
mov al,20h ;Restore internal registers access to palette data
out dx,al ; bit 5 must be zero during palette data writing
; and one after data writing is complete
Segment example for selecting Bit Planes to be modified during a
memory write:
mov dx,03c4h ;Load Sequencer Address Register
mov al,2 ;Load index of Map Mask Register
out dx,al ;Select Map Mask Register
inc dl
mov al,ARG ;Value to select which bit planes are to be
; modified during a memory write
out dx,al ;Select EGA/VGA planes to be modified
IBM EGA/VGA Map Mask Register (3C5h, index 2) organization:
Bits: 0 Controls access to Bit Plane 0
1 Controls access to Bit Plane 1
2 Controls access to Bit Plane 2
3 Controls access to Bit Plane 3
4-7 Not used
A bit value of 0 disables access to the corresponding Bit Plane and a
bit value of 1 enables it.
4.4 SPECIAL NOTES
4.41 NOTE ON EXTENDED REGISTER ADDRESS
Hard-coding this value is not recommended since it is programmable
and may be changed in subsequent BIOS releases. The value of
EXTENDED_REG should be retrieved from the BIOS at location C000:0010h.
The 'mov dx, EXTENDED_REG statement in the page selecting segment can
be replaced with code to load the value of EXTENDED_REG from its stored
location. The registers that need to be saved will depend greatly on
the particular application:
push es ;save registers es and bx
push bx
mov ax,0c000h ;define storage location of EXTENDED_REG
mov es,ax
mov bx,10h
mov dx,es:[bx] ;get the value of EXTENDED_REG from contents
;of the storage location C000:0010h
pop bx ;restore registers es and bx
pop es
4.42 NOTE ON DAC REGISTER PROGRAMMING
In IBM VGA mode 13h (320x200 - 256 color), each color is controlled by
a corresponding DAC register. There are a total of 256 18-bit DAC
registers. Therefore, each DAC register can be assigned a color value
from 0 (BLACK) to 262,143 (BRIGHT WHITE). The first 16 DAC registers
have assigned color values that correspond to the 16 colors used in
mode 12h (640x480 - 16 color). DAC register zero, which has an
assigned color value of 0 (BLACK), also controls the color of the
overscan border. This function is also supported in ATI modes 61, 62,
63, and 65h. On some analog monitors, a non-BLACK overscan border may
cause line wrapping at either the top or bottom of the screen image
due to the video bandwidth required. For this reason, it is not
recommended to change the color value of this DAC register.
4.43 BIOS FUNCTION SUPPORT
Some of the extended graphics modes do not support certain video BIOS
function calls. The following chart lists the modes affected and the
functions which are not supported:
MODE # BIOS FUNCTION
61h, 62h, 63h ah = 06h - Scroll active page up
ah = 07h - Scroll active page down
65h, 67h ah = 06h - Scroll active page up
ah = 07h - Scroll active page down
ah = 09h - Read Character at Cursor
ah = 0ch - Write Dot
ah = 0dh - Read Dot
ah = 0eh - Write TTX
All extended modes have only one active page regardless of the amount
of memory installed.
5.0 APPENDIX
5.1 LIST OF SUGGESTED REFERENCES
TITLE: Programmer's Guide to the EGA/VGA *
AUTHOR: George Sutty and Steve Blair
PUBLISHER: Brady Books / Simon and Schuster, Inc.
DATE: 1988
TITLE: Programmer's Guide to IBM PC and PS/2 Video Systems
AUTHOR: Richard Wilton
PUBLISHER: MicroSoft Press
DATE: 1987
TITLE: Programmer's Guide to the EGA and VGA Cards
AUTHOR: Richard F. Ferraro
PUBLISHER: Addison - Wesley Publishing Co.
DATE: July, 1988
TITLE: EGA/VGA A Programmer's Reference Guide
AUTHOR: Bradley Dyck Kliewer
PUBLISHER: McGraw Hill
DATE: 1988
TITLE: Personal System/2 Model 50 and 60 Technical Reference
AUTHOR: unknown
PUBLISHER: IBM
DATE: April, 1987
TITLE: Personal System/2 and Personal Computer BIOS Interface
Technical Reference
AUTHOR: unknown
PUBLISHER: IBM
DATE: April, 1987
* recommended
TO OBTAIN A PRINT COPY OF THIS DOCUMENT ON YOUR SYSTEM
PRINTER, ENTER THE FOLLOWING COMMAND AT THE DOS PROMPT:
TYPE PROGINFO.DOC>PRN
December 5, 2017
Add comments