480 lines
18 KiB
Prolog
480 lines
18 KiB
Prolog
From: PC-Share, to CIS via Ward Christensen 76703,302 03/10/85
|
||
|
||
<<< NOTE EGA-TECH - 597 LINES >>>
|
||
|
||
Technical Information on the Enhanced Graphics Adapter
|
||
EXT-Info-IBMPC-1VFRR 23-Feb-85 Info-IBMPC Digest V4 #17
|
||
From: {Info-IBMPC Digest <Info-IBMPC@USC-ISIB.ARPA>}DDN
|
||
To: {Info-IBMPC: ;}DDN
|
||
Identifier: EXT-Info-IBMPC-1VFRR
|
||
Length: 5 page(s)[estimate]
|
||
Posted: 23-Feb-85 13:10-PST Received: 5-Mar-85 09:14-PST
|
||
Message:
|
||
Return-path: <INFO-IBMPC@USC-ISIB.ARPA>
|
||
Received: from USC-ISIB.ARPA by OFFICE-2.ARPA; 23 Feb 85 15:44:23 PST
|
||
Info-IBMPC Digest Saturday, 23 February 1985 Volume 4 Issue 17
|
||
|
||
This Week's Editor: Billy Brackenridge
|
||
|
||
Today's Topics:
|
||
|
||
Extended Graphics Adaptor Tech Info
|
||
|
||
How I Got my EGA Manual, a True Story
|
||
|
||
|
||
|
||
Date: 23 Feb 1985 11:57:04 PST
|
||
Subject: Extended Graphics Adaptor Tech Info
|
||
From: Billy <BRACKENRIDGE@USC-ISIB.ARPA>
|
||
|
||
Here is a bit more technical information on the extended graphics adaptor
|
||
card. It still isn't complete, but it is a start:
|
||
|
||
The adapter memory (base) is configured a 4 16K bit planes. The graphics
|
||
memory expansion adds one bank of 16K to each of the 4 bit planes. Additional
|
||
memory may be added to increase each bit plane by another 16K.
|
||
|
||
Modes of Operation
|
||
|
||
IBM Color Display
|
||
|
||
Alpha Buffer Box Max
|
||
Mode # Type Colors Format Start Size Pages Resolution
|
||
------ ---- ------ ------ ------ ---- ----- ----------
|
||
0 A/N 16 40x25 B8000 8x8 8 320x200
|
||
1 A/N 16 40x25 B8000 8x8 8 320x200
|
||
2 A/N 16 80x25 B8000 8x8 8 640x200
|
||
3 A/N 16 80x25 B8000 8x8 8 640x200
|
||
4 APA 4 40x25 B8000 8x8 1 320x200
|
||
5 APA 4 40x25 B8000 8x8 1 320x200
|
||
6 APA 2 80x25 B8000 8x8 1 640x200
|
||
D APA 16 40x25 A8000 8x8 2/4/8 320x200
|
||
E APA 16 80x25 A8000 8x8 1/2/4 640x200
|
||
|
||
Modes 0-6 emulate CGA adapter support.
|
||
|
||
Modes 0,2,5 are identical to 1,3,4 at the adapters direct drive interface.
|
||
|
||
The maximum page fields for modes D and E indicate the number of pages for
|
||
64k,128k,256k bytes of graphics memory.
|
||
|
||
IBM Monochrome Display
|
||
|
||
Alpha Buffer Box Max
|
||
Mode # Type Colors Format Start Size Pages Resolution
|
||
------ ---- ------ ------ ------ ---- ----- ----------
|
||
7 A/N 4 80x25 B0000 9x14 8 720x350
|
||
F APA 4 80x25 A0000 8x14 1/2 640x350
|
||
|
||
Mode 7 provides Mono adapter emulation support.
|
||
|
||
IBM Enhanced Color Display
|
||
|
||
Alpha Buffer Box Max
|
||
Mode # Type Colors Format Start Size Pages Resolution
|
||
------ ---- ------ ------ ------ ---- ----- ----------
|
||
0* A/N 16/64 40x25 B8000 8x14 8 320x350
|
||
1* A/N 16/64 40x25 B8000 8x14 8 320x350
|
||
2* A/N 16/64 80x25 B8000 8x14 8 640x350
|
||
3* A/N 16/64 80x25 B8000 8x14 8 640x350
|
||
10 APA 4/64 80x25 A8000 8x14 1/2 640x350
|
||
16/64
|
||
|
||
* Note that modes 0,1,2,3 are also listed under Color Display. BIOS provides
|
||
support when enhanced display is attached.
|
||
|
||
The values in "Colors" indicates 16 colors out of a palette of 64 or 4 colors
|
||
out of 16.
|
||
|
||
Basic Operations
|
||
|
||
Alphanumeric Modes
|
||
|
||
The data format for alpha modes on the EGA is the same as the data
|
||
format on the CGA and Mono adapter cards.
|
||
|
||
As an added function, bit three of the attribute byte may be
|
||
re-defined by the Character map select register to act as a switch
|
||
between character sets. This gives the programmer access to 512
|
||
characters at one time. This function is valid only when you have
|
||
128K or more of graphics memory.
|
||
|
||
When alpha mode is selected, BIOS transfers character patters from
|
||
ROM into bit plane 2. The processor stores character data into
|
||
plane 0, and the attribute into plane 1. The programmer views
|
||
planes 0 and 1 as a single buffer in alpha modes.
|
||
|
||
The CRTC generates sequential addresses, and fetches one character
|
||
code byte and one attribute byte at one time. The character code
|
||
and row scan count address bit plane 2, which contain the character
|
||
generators. The appropriate dot patterns are then sent to the
|
||
palette in the attribute chip, where the color is assigned
|
||
according to the attribute data.
|
||
|
||
Graphics Modes
|
||
|
||
320x200 Two and Four Color Graphics (Modes 4 and 5)
|
||
--------------------------------------------------- Addressing,
|
||
mapping, and data format are the same as the 320x200 pel mode of
|
||
the CGA. The display buffer is at B8000. The bit image is stored in
|
||
bit planes 0 and 1.
|
||
|
||
640x200 Two Color Graphics (Mode 6)
|
||
|
||
-----------------------------------
|
||
|
||
Addressing, mapping and data formats are the same as the 640x200
|
||
pel mode on the CGA. Buffer starts at B8000 and bit image is in
|
||
plane 0.
|
||
|
||
640x350 Monochrome Graphics (Mode F)
|
||
|
||
---------------------------
|
||
|
||
This supports the Mono display with the following attributes:
|
||
black, video, blinking, intensified. Maps 0,1 and 2,3 are chained
|
||
together to form 2 32k bit planes. The first map is the video bit
|
||
plane, the second is the intensity plane. Both planes reside at
|
||
|
||
A0000.
|
||
|
||
Two bits, one from each plane, define one pel on the screen. The
|
||
bit definition for the pels are given in the following table. Video
|
||
plane is C0, intensity is C2.
|
||
|
||
C2 C0 Pixel Color Valid Attributes
|
||
-- -- ----------- ----------------
|
||
0 0 Black 0
|
||
0 1 Video 3
|
||
1 0 Blinking C
|
||
1 1 Intensified F
|
||
|
||
The byte organization of the memory is sequential. The first 8 pels on
|
||
the screen are defined by the contents in A000:0H, the second 8 in
|
||
A000:1, and so on. The first pel within a byte is bit 7 in the byte, the
|
||
last is bit 0.
|
||
|
||
Mono graphics works in odd/even mode, which means that odd CPU address go
|
||
to odd planes, and even addresses to even planes. Since both planes
|
||
reside at A0000, the user must select the plane or planes to update. This
|
||
is accomplished by the map mask register of the sequencer.
|
||
|
||
16/64 Color Graphics Modes (Mode 10)
|
||
------------------------------------
|
||
|
||
These modes support graphics in 16 colors on either medium or hi
|
||
resolution monitor. This uses all four bit planes. The planes are denoted
|
||
as C0,C1,C2, and C3.
|
||
|
||
C0 = Blue Pels
|
||
C1 = Green Pels
|
||
C2 = Red Pels
|
||
C3 = Intensified Pels
|
||
|
||
Four bits (one from each plane) define one pel on the screen. Color
|
||
combinations are as follows:
|
||
|
||
I R G B Color
|
||
- - - - ------------------
|
||
0 0 0 0 Black
|
||
0 0 0 1 Blue
|
||
0 0 1 0 Green
|
||
0 0 1 1 Cyan
|
||
0 1 0 0 Red
|
||
0 1 0 1 Magenta
|
||
0 1 1 0 Brown
|
||
0 1 1 1 White
|
||
1 0 0 0 Dark Gray
|
||
1 0 0 1 Light Blue
|
||
1 0 1 0 Light Green
|
||
1 0 1 1 Light Cyan
|
||
1 1 0 0 Light Red
|
||
1 1 0 1 Light Magenta
|
||
1 1 1 0 Yellow
|
||
1 1 1 1 Intensified White
|
||
|
||
The display buffer resides at A0000, The map mask register of the
|
||
sequencer is used to select any or all of the bit planes to be updated
|
||
when a memory write to the display buffer is performed.
|
||
|
||
Color Mapping
|
||
|
||
Character Mode 10H Mode 10H
|
||
Attribute Monchrome 64KB > 64KB
|
||
--------- --------- --------- ----------
|
||
00H Black Black Black
|
||
01H Video Blue Blue
|
||
02H Black Black Green
|
||
03H Video Blue Cyan
|
||
04H Blink Red Red
|
||
05H Inten White Magenta
|
||
06H Blink Red Brown
|
||
07H Inten White White
|
||
08H Black Black Dark Grey
|
||
09H Video Blue Light Blue
|
||
0AH Black Black Light Green
|
||
0BH Video Blue Light Cyan
|
||
0CH Blink Red Light Red
|
||
0DH Inten White Light Magenta
|
||
0EH Blink Red Yellow
|
||
0FH Inten White Intens White
|
||
|
||
External Registers
|
||
------------------
|
||
|
||
This section describes registers of the EGA card not contained in the LSI
|
||
device.
|
||
|
||
Name Port Index
|
||
----------------------- ---- -----
|
||
Misc Output Register 3C2 -
|
||
Feature Control Reg 3?A -
|
||
Input Status Reg 0 3C2 -
|
||
Input Status Reg 1 3?2 -
|
||
? = B in Monchrome modes, D in color modes
|
||
|
||
Misc Output Register
|
||
--------------------
|
||
|
||
Write only. Hardware reset causes all bits to zero.
|
||
|
||
Bit 0 - 3BX/3DX CRTC I/O Address - This bit maps the CRTC I/O
|
||
addresses for the mono or CGA emulation. 0 sets the CRTC addresses to
|
||
3BX and Input status reg 1 to 3BA for mono emulation. 1 sets the CRTC
|
||
address to 3DX and status reg 1 to 3DA for CGA emulation.
|
||
|
||
Bit 1 - Enable RAM - 0 disables ram from the processor, 1 enables ram
|
||
to respond at addr's designated by the Contol Data Select value in the
|
||
Graphics Controllers.
|
||
|
||
Bit 2,3 - Clock Select, according to the following table:
|
||
|
||
Bit 2 Bit 3
|
||
----- -----
|
||
0 0 14Mhz from Processor I/O channel
|
||
0 1 16Mhz On-board clock
|
||
1 0 External clock from feature connector
|
||
1 1 Not used
|
||
|
||
Bit 4 - Disable Video Drivers - 0 activates internal video drivers, 1
|
||
disables them. When disabled, the source of the direct drive color output
|
||
becomes the feature connector.
|
||
|
||
Bit 5 - Page Bit for Odd/Even - Selects between 2 64K pages of memory
|
||
when in Odd/Even modes (0,1,2,3,7). 0 selects low pase, 1 selects high
|
||
page of memory.
|
||
|
||
Bit 6 - Horiz Retrace Polarity - 0 selects positive, 1 selects negative.
|
||
|
||
Bit 7 - Vert Retrace Polarity - 0 selects positive, 1 selects neagative.
|
||
|
||
Feature Control Register
|
||
------------------------
|
||
|
||
Write only. Ouput address is 3BA or 3DA.
|
||
|
||
Bits 0,1 - Feature Control Bits - Output of these bits go to FEAT0
|
||
(Pin19) and FEAT1 (Pin 17) of the feature connector.
|
||
|
||
Bits 2,3 - Reserved.
|
||
|
||
Bits 4-7 - Not Used.
|
||
|
||
Input Status Register Zero
|
||
--------------------------
|
||
|
||
Read Only. Input address is 3C2.
|
||
|
||
Bits 0-3 - Not Used.
|
||
|
||
Bit 4 - Switch Sense - When set to 1, this allows proc to read the 4
|
||
config switchs on the board. The setting of the CLKSEL field determines
|
||
switch to be read. The switch setting can also be determined by reading
|
||
40:88H in RAM. 0 indicates switch is closed
|
||
|
||
Bit 5,6 - Feature Code - Input from FEAT0 and FEAT1 on the feature
|
||
connector.
|
||
|
||
Bit 7 - CRT Interrupt - 1 indicates video being displayed, 0 indicates
|
||
vertical retrace is occurring.
|
||
|
||
Input Status Register One
|
||
-------------------------
|
||
|
||
Bit 0 - Display Enable - 0 indicates the CRT raster is in a Horizontal or
|
||
vertical retrace interval. This bit is real time status of display enable
|
||
signal.
|
||
|
||
Bit 1 - Light Pen Strobe - 0 indicates light pen trigger has not been
|
||
set, 1 indicates set.
|
||
|
||
Bit 2 - Light Pen Switch - 0 indicates switch closed, 1 is switch open.
|
||
|
||
Bit 3 - Vertical Retrace - 0 indicates video information being displayed,
|
||
1 indicates CRT is in vertical retrace. This bit can be programmed to
|
||
interrupt the proc at int level 2 at the start of retrace. This is done
|
||
by bits 4,5 of the Vertical End Register of the CRTC.
|
||
|
||
Bit 4,5 - Diagnostic Usage.
|
||
|
||
Bit 6,7 - Not Used.
|
||
|
||
Sequencer Registers
|
||
-------------------
|
||
|
||
Name Port Index
|
||
---------------- ---- -----
|
||
Address 3C4 -
|
||
Reset 3C5 00
|
||
Clocking Mode 3C5 01
|
||
Map Mask 3C5 02
|
||
Char Map Select 3C5 03
|
||
Memory Mode 3C5 04
|
||
|
||
Sequencer Address Register
|
||
--------------------------
|
||
|
||
A pointer register located at output address 3C4H. Loaded with a value to
|
||
indicate where the sequencer data is to be written
|
||
|
||
Bits 0-4 - Sequencer Address.
|
||
|
||
Bits 5-7 - Not Used.
|
||
|
||
Reset Register
|
||
--------------
|
||
|
||
Write only. Written to when address register is 00H.
|
||
|
||
Bit 0 - Asynchronous Reset - 0 commands the sequencer to asynchronous
|
||
clear and halt. 1 causes sequencer to run unless bit 1 is zero. Reseting
|
||
sequencer can cause loss of data in display buffer.
|
||
|
||
Bit 1 - Synchronous Reset - 0 commands sequencer to synchronous clear and
|
||
|
||
halt. bits 0 and 1 both must be 1 to allow sequencer to operate. Reset
|
||
the sequencer with this bit before changing clock mode to allow memory
|
||
contents to be preserved.
|
||
|
||
Clocking Mode Register
|
||
----------------------
|
||
|
||
Write only. Written when address register is 01H.
|
||
|
||
Bit 0 - 8/9 Dot Clocks - 0 directs sequencer to generate character clocks
|
||
9 dots wide, 1 causes 8 dots wide. Mono alpha (Mode 7) is the only mode
|
||
that uses 9 dot clocks.
|
||
|
||
Bit 1 - Bandwidth - 0 makes CRT memory cycles occur 4 out of 5 available
|
||
memory cycles; 1 makes CRT memory cycles occur on 2 out of 5 available
|
||
memory cycles. All hi-res modes must use 4 out of 5 in order to refresh
|
||
the display image.
|
||
|
||
Bit 2 - Shift Load - When 0, video serializes are reloaded every
|
||
character clock, 1 causes load every other clock. The later mode is
|
||
useful when 16 bits are fetched per cycle and chained together in the
|
||
shift registers.
|
||
|
||
Bit 3 - Dot Clock - 0 selects normal dot clocks derived from the
|
||
sequencer master input. 1 causes the clock to be divided by 2 to generate
|
||
the dot clock. Dot clock divided by to is used for modes 0,1,4,5.
|
||
|
||
Bit 4-7 - Not Used.
|
||
|
||
Map Mask Register
|
||
-----------------
|
||
|
||
Write only. Written when address register is 02H.
|
||
|
||
Bit 0-3 - Map Mask - A 1 in bits 3 through 0 enables the proc to write to
|
||
the corresponding maps 3 through 0. If this register is 0FH, the CPU can
|
||
perform a 32 bit write on a single memory cycle. Data scrolling is
|
||
enhanced when this register is 0FH. When odd/even modes are selected,
|
||
maps 0,1 and 2,3 should have the same mask value.
|
||
|
||
Character Map Select Register
|
||
-----------------------------
|
||
|
||
Write only. Written when the address register is 03H.
|
||
|
||
Bit 0,1 - Character map select B - Selects the map used to generate alpha
|
||
characters when attribute bit 3 is 0, according to the following table:
|
||
|
||
Bit1 Bit0 Map Selected Table Location
|
||
---- ---- ------------ ------------------------
|
||
0 0 0 1st 8K of Plane 2 Bank 0
|
||
0 1 1 2nd 8K of Plane 2 Bank 1
|
||
1 0 2 3rd 8K of Plane 2 Bank 2
|
||
1 1 3 4th 8K of Plane 2 Bank 3
|
||
|
||
Bit 2,3 - Character map select A - Selects the map used to generate alpha
|
||
characters when attribute bit 3 is 1, according to the following table:
|
||
|
||
Bit3 Bit2 Map Selected Table Location
|
||
---- ---- ------------ ------------------------
|
||
0 0 0 1st 8K of Plane 2 Bank 0
|
||
0 1 1 2nd 8K of Plane 2 Bank 1
|
||
|
||
1 0 2 3rd 8K of Plane 2 Bank 2
|
||
1 1 3 4th 8K of Plane 2 Bank 3
|
||
|
||
Bits 4-7 - Not used.
|
||
|
||
In alpha modes, bit 3 of the attribute byte normally has the function of
|
||
turning the forground intensity on or off. This bit may be redefined as
|
||
a switch between character sets.This function is selected only when the
|
||
values in character map select A and B are different. When they are the
|
||
same, the function is disabled. Memory mode register bit 1 must be a 1
|
||
in order to enable this function; otherwise bank 0 is always selected.
|
||
|
||
128K of memory is required for 2 character sets, 256K for 4 sets.
|
||
|
||
Memory Mode Register
|
||
--------------------
|
||
|
||
Write only. Written when address register is 04H.
|
||
|
||
Bit 0 - Alpha - 0 indicates non-alpha mode active. 1 indicates alpha mode
|
||
is active and enables character generator map select function.
|
||
|
||
Bit 1 - Extended Memory - 1 indicates memory expansion card installed. 0
|
||
indicates card not installed
|
||
|
||
Bit 2 - Odd/Even - 0 directs even processor addresses to maps 0 and 2,
|
||
odd to maps 1,3. 1 causes processor addresses to sequentially address the
|
||
bit map. The maps are accessed according to the value in the Map Mask
|
||
Register.
|
||
|
||
------------------------------
|
||
|
||
Date: Thu, 21 Feb 85 22:35:27 est
|
||
|
||
From: "John Levine, P.O.Box 349, Cambridge MA 02238-0349 (617-494-1400)"
|
||
<ima!johnl@cca-unix> Subject: How I Got my EGA Manual, a True Story
|
||
|
||
To: brackenridge@USC-ISIB.ARPA
|
||
|
||
I was in the same boat as you -- I had the Seminar Proceedings issue on
|
||
the EGA, but couldn't find the manual pages. Then out of the blue, a
|
||
local guy called me up and offered to swap a copy of the seminar
|
||
proceedings for a copy of the EGA manual. Needless to say, I took him
|
||
up on it.
|
||
|
||
It turns out that he took the totally straightforward approach, entirely
|
||
by accident, and it worked. He bought a copy of the "Options and
|
||
Adapters Technical Reference," which costs $125, a total ripoff,
|
||
particularly since almost everything in it is in the XT technical
|
||
reference, too. In the front of this manual is a postcard you send in
|
||
for the update service. Wait a month, and a mountain of updates arrives
|
||
in the mail, including the EGA manual. It is over 100 pages including a
|
||
lot of diagrams. About half of it is the assembler listing of the BIOS
|
||
code in the ROM.
|
||
|
||
John Levine, ima!johnl or Levine@YALE.ARPA
|
||
------------------------------
|
||
|
||
End of Info-IBMPC Digest
|
||
|
||
|
||
*** CREATED 03/07/85 22:56:13 BY BILL.FRANTZ/BILL ***
|
||
|