
minuszerodegrees.net
----- ------_---------.---------
Personal Computer
IBM Enhanced Graphics Adapter
iv
Contents
Description .................................... 1
Major Components .......................... 3
Modes of Operation ......................... 5
Basic Operations ............................ 8
Registers ................................. 12
Programming Considerations ..................... 62
Programming the Registers ................... 62
RAM Loadable Character Generator ........... 69
Creating a 512 Character Set ................. 70
Creating an 80 by 43 Alphanumeric Mode ....... 71
Vertical Interrupt Feature .................... 72
Creating a Split Screen ...................... 73
Compatibility Issues ........................ 74
Interface ..................................... 76
Feature Connector ......................... 76
Specifications ................................. 79
System Board Switches ...................... 79
Configuration Switches ...................... 80
Direct Drive Connector ..................... 83
Light Pen Interface ......................... 84
Jumper Descriptions ........................ 85
Logic Diagrams ................................ 87
BIOS Listing ................................. 103
Vectors with Special Meanings ............... 103
Index ........................................ Index-l
v
Description
The IBM Enhanced Graphics Adapter (EGA) is a graphics controller that supports both color and monochrome direct drive displays in a variety of modes. In addition to the direct drive port, a light pen interface is provided. Advanced features on the adapter include bit-mapped graphics in four planes and a RAM (Random Access Memory) loadable character generator. Design features in the hardware substantially reduce the software overhead for many graphics functions.
The Enhanced Graphics Adapter provides Basic Input Output System (BIOS) support for both alphanumeric (A/N) modes and all-points-addressable (APA) graphics modes, including all modes supported by the Monochrome Display Adapter and the Color/Graphics Monitor Adapter. Other modes provide APA 640x350 pel graphics support for the IBM Monochrome Display, full 16 color support in both 320x200 pel and 640x200 pel resolutions for the IBM Color Display, and both A/N and APA support with resolution of 640x350 for the IBM Enhanced Color Display. In alphanumeric modes, characters are formed from one of two ROM (Read Only Memory) character generators on the adapter. One character generator defines 7x9 characters in a 9x14 character box. For Enhanced Color Display support, the 9x14 character set is modified to provide an Sx14 character set. The second character generator defines 7x7 characters in an SxS character box. These generators contain dot patterns for 256 different characters. The character sets are identical to those provided by the IBM Monochrome Display Adapter and the IBM Color/Graphics Monitor Adapter.
The adapter contains 64K bytes of storage configured as four 16K byte bit planes. Memory expansion options are available to expand the adapter memory to 12SK bytes or 256K bytes.
The adapter is packaged on a single 13-1/8 inch (333.50 mm) card. The direct drive port is a right-angle mounted connector at ~ the rear of the adapter and extends through the rear panel of the system unit. Also on the card are five large scale integration (LSI) modules custom designed for this controller.
August 2, 1984
IBM Enhanced Graphics Adapter 1
Located on the adapter is a feature connector that provides access to internal functions through a 32-pin berg connector. A separate 64-pin connector provides an interface for graphics memory expansion.
The following is a block diagram of the Enhanced Graphics Adapter:
CPU Addr.
CPU
Data
..~ .
~
CRTC I LSI
~
f. --.. MUX
~
I~
GRAPH
~ LSI
H
1.
4
BIT
0
f-
MAP ~
~t--- GRAPH ...
4
I-
LSI ~
SEQ
~
:J
3~
...
4
BIT 2f--
MAP ~Iil
LSI
I--
,1. p,1r
...
ATTRIB LSI
::
DIRECT DRIVE ... OUTPUT
Enhanced Graphics Adapter Block Diagram
2 IBM Enhanced Graphics Adapter
August 2, 1984
Major Components
CRT Controller
The CRT (Cathode Ray Tube) Controller (CRTC) generates horizontal and vertical synchronous timings, addressing for the regenerative buffer, cursor and underline timings, and refresh addressing for the dynamic RAMs.
Sequencer
The Sequencer generates basic memory timings for the dynamic RAMs and the character clock for controlling regenerative memory fetches. It allows the processor to access memory during active display intervals by inserting dedicated processor memory cycles periodically between the display memory cycles. Map mask registers are available to protect entire memory maps from being changed.
~ Graphics Controller
The Graphics Controller directs the data from the memory to the attribute controller and the processor. In graphics modes, memory data is sent in serialized form to the attribute chip. In alpha modes the memory data is sent in parallel form, bypassing the graphics controller. The graphics controller formats the data for compatible modes and provides color comparators for use in color painting modes. Other hardware facilities allow the processor to write 32 bits in a single memory cycle, (8 bits per plane) for quick color presetting of the display areas, and additional logic allows the processor to write data to the display on non-byte boundaries.
Attribute Controller
--~ The Attribute Controller provides a color palette of 16 colors, each of which may be specified separately. Six color outputs are
August 2, 1984
IBM Enhanced Graphics Adapter 3
available for driving a display. Blinking and underlining are controlled by this chip. This chip takes data from the display memory and formats it for display on the CRT screen.
Display Buffer
The display buffer on the adapter consists of 64K bytes of dynamic read/write memory configured as four 16K byte video bit planes. Two options are available for expanding the graphics memory. The Graphics Memory Expansion Card plugs into the memory expansion connector on the adapter, and adds one bank of 16K to each of the four bit planes, increasing the graphics memory to 128K bytes. The expansion card also provides DIP sockets for further memory expansion. Populating the DIP sockets with the Graphics Memory 'Module Kit adds two additional 16K banks to each bit plane, bringing the graphics memory to its maximum of 256K bytes.
The address of the display buffer can be changed to remain compatible with other video cards and application software. Four locations are provided. The buffer can be configured at segment address hex AOOOO for a length of 128K bytes, at hex AOOOO for a length of 64K bytes, at hex BOOOO for a length of 32K bytes, or at hex B8000 for a length of 32K bytes.
BIOS
A read-only memory (ROM) Basic Input Output System (BIOS) . module on the adapter is linked to the system BIOS. This ROM BIOS contains character generators and control code and is mapped into the processor address at hex COnGO for a length of 16K bytes.
Support Logic
The logic on the card surrounding the LSI modules supports the modules and creates latch buses for the CRT controller, the
~
4 IBM Enhanced Graphics Adapter
August 2, 1984
processor, and character generator. Two clock sources (14 MHz and 16 MHz) provide the dot rate. The clock is multiplexed under processor I/O control. Four I/O registers also resident on the card are not part of the LSI devices.
~ Modes of Operation
IBM Color Display
The following table describes the modes supported by BIOS on the IBM Color Display:
ALPHA BUFFER BOX MAX. MODE # TYPE COLORS FORMAT START SIZE PAGES RESOLUTION
0
A/N 16
40x25 88000 8x8 8
320x200
1
A/N 16
40x25 88000 8x8 8
320x200
2
A/N 16
80x25 88000 8x8 8
640x200
3
A/N 16
80x25 88000 8x8 8
640x200
4
APA 4
40x25 88000 8x8 1
320x200
5
APA 4
40x25 88000 8x8 1
320x200
6
APA 2
80x25 88000 8x8 1
640x200
0
APA 16
40x25 AOOOO 8x8 2/4/8 320x200
E
APA 16
80x25 AOOOO 8x8 1/2/4 640x200
Modes 0 through 6 emulate the support provided by the IBM Color/Graphics monitor Adapter.
Modes 0,2 and 5 are identical to modes 1,3 and 4 respectively at the adapter's direct drive interface.
The Maximum Pages fields for modes D and E indicate the number of pages supported when 64K, 128K or 256K bytes of graphics memory is installed, respectively.
August 2, 1984
IBM Enhanced Graphics Adapter 5
IBM Monochrome Display
The following table describes the modes supported by BIOS on the IBM Monochrome Display.
ALPHA BUFFER BOX MAX. MODE # TYPE COLORS FORMAT START SIZE PAGES RESOLUTION
7
A/N 4
80x25 BOOOO 9x14 8
720x350
F
APA 4
80x25 AOOOO 8x14 1/2
640x350
Mode 7 emulates the support provided by the IBM Monochrome Display Adapter.
IBM Enhanced Color Display
The Enhanced Graphics Adapter supports attachment of the IBM Enhanced Color Display. The IBM Enhanced Color Display is capable of running at the standard television frequency of 15.75 KHz as well as running 21.85 KHz. The table below summarizes the characteristics of the IBM Enhanced Color Display:
Parameter
Horiz Scan Rate Vertical Scan Rate Video Bandwidth Displayable Colors Character Size Character Box Size Maximum Resolution Alphanumeric Modes Graphics Modes
TV Frequency
15.75 KHz. 60 Hz. 14.318 MHz. 16 Maximum 7 by 7 Pels 8 by 8 Pels 640x200 Pels 0,1,2,3 4,5,6,D,E
High Resolution
21.85 KHz. 60 Hz. 16.257 MHz. 16 or 64 7 by 9 Pels 8 by 14 Pels 640 by 350 Pels 0,1,2,3 10
In the television frequency mode, the IBM Enhanced Color Display displays information identical in color and resolution to the IBM Color Display.
In the high resolution mode, the adapter provides enhanced alphanumeric character support. This enhanced alphanumeric support consists of transforming the 8 by 8 character box into an 8 by 14 character box, and providing 16 colors out of a palette of
6 IBM Enhanced Graphics Adapter
August 2, 1984
64 possible display colors. Display colors are changed by altering the programming of the color palette registers in the Attribute Controller. In alphanumeric modes, any 16 of 64 colors are displayable. the screen resolution is 320x350 for modes 0 and 1, and 640x350 for modes 2 and 3.
The resolution displayed on the IBM Enhanced Color Display is selected by the switch settings on the Enhanced Graphics Adapter.
The Enhanced Color Display is compatible with all modes listed for the IBM Color Display. the following table describes additional modes supported by BIOS for the IBM Enhanced Color Display:
ALPHA BUFFER BOX MAX.
MODE # TYPE COLORS FORMAT START SIZE PAGES RESOLUTION
0*
A/N 16/64 40x25 88000 8x14 8
320x350
1*
A/N 16/64 40x25 88000 8x14 8
320x350
2*
A/N 16/64 80x25 88000 8x14 8
640x350
3*
A/N 16/64 80x25 88000 8x14 8
640x350
10*
APA 4/16 80x25 ADOOO 8x14 1/2 640x350
16/64
* Note that modes 0, 1,2, and 3, are also listed forIBM Color
Display support. BIOS provides enhanced support for these modes when an Enhanced Color Display is attached.
The values in the "COLORS" field indicate 16 colors of a 64 color palette or 4 colors of a sixteen color palette.
In mode 10, The dual values for the "COLORS" field and the "MAX. PAGES" field indicate the support provided when 64K or when greater than 64K of graphics memory is installed, respectively.
August 2, 1984
mM Enhanced Graphics Adapter 7
Basic Operations
Alphanumeric Modes
The data format for alphanumeric modes on the Enhanced Graphics Adapter is the same as the data format on the IBM Color/Graphics Monitor Adapter and the IBM Monochrome Display Adapter. As an added function, bit three of the attribute byte may be redefined 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 memory has been expanded to 128K bytes or more.
When an alphanumeric mode is selected, the BIOS transfers character patterns from the ROM to bit plane 2. The processor stores the character data in bit plane 0, and the attribute data in bit plane 1. The programmer can view bit planes 0 and 1 as a single buffer in alphanumeric modes. The CRTC generates sequential addresses, and fetches one character code byte and one attribute byte at a time. The character code and row scan count address bit plane 2, which contains the character generators. The appropriate dot patterns are then sent to the palette in the attribute chip, where 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 Color/Graphics Monitor Adapter. The display buffer is configured at hex B8000. Bit image data is stored in bit planes 0 and 1.
640xlOO Two Color Graphics (Mode 6)
Addressing, mapping and data format are the same as the 640x200 pel black and white mode of the Color/Graphics
8 IBM Enhanced Graphics Adapter
August 2, 1984
Monitor Adapter. The display buffer is configured at hex B8000. Bit image data is stored in bit plane O.
640x350 Monochrome Graphics (Mode F )
This mode supports graphics on the IBM Monochrome Display with the following attributes: black, video, blinking video, and intensified video. Resolution of 640x350 requires 56K bytes to support four attributes. By chaining maps 0 and 1, then maps 2 and 3 together, two 32K bit planes can be formed. This chaining is done only when necessary (less than 128K of graphics memory). The first map is the video bit plane, and the second map is the intensity bit plane. Both planes reside at hex address AOOOO.
Two bits, one from each bit plane, define one picture element (pel) on the screen. The bit definitions for the pels are given in the following table. The video bit plane is denoted by CO and the Intensity Bit Plane is denoted by C2.
C2 co
0 0
0
1
1 0
1
1
Pixel Color
Black Video Blinking Video Intensified Video
Valid Attributes
0 3 C F
The byte organization in memory is sequential. The first eight pels on the screen are defined by the contents of memory in location AOOO:OH, the second eight pels by location AOOO: IH, and so on. The first pel within anyone byte is defined by bit 7 in the byte. The last pel within the byte is defined by bit 0 in the byte.
Monochrome graphics works in odd/even mode, which means that even CPU addresses go into even bit planes and odd CPU addresses go into odd bit planes. Since both bit planes reside at address AOOOO, the user must select which plane or planes he desires to update. This is accomplished by the map mask register of the sequencer. (See the table above for valid attributes).
August 2, 1984
IBM Enhanced Graphics Adapter 9
16/64 Color Graphics Modes (Mode 10)
These modes support graphics in 16 colors on either a medium or high resolution monitor. The memory in these modes consists of using all four bit planes. Each bit plane represents a color as shown below. The bit planes are denoted as CO,Cl,C2 and C3 respectively.
,r-
co = Blue Pels
C 1 = Green Pels
C2 = Red Pels C3 = Intensified Pels
Four bits (one from each plane) define one pelon the screen. The color combinations are illustrated in the following table:
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 address AOOOO. 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 executed by the Cpu.
Color Mapping
The Enhanced Graphics Adapter supports 640x350 Graphics for both the IBM Monochrome and the IBM Enhanced Color
10 IBM Enhanced Graphics Adapter
August 2, 1984
Displays. Four color capability is supported on the EGA without the Graphics Memory Expansion Card (base 64 KB), and sixteen colors are supported when the Graphics Memory Expansion Card is installed on the adapter (128 KB or above). This section describes the differences in the colors displayed depending upon ~ the graphics memory available. Note that colors OH, lH, 4H, and 7H map directly regardless of the graphics memory available.
Character Attribute
OOH* 01 H* 02H 03H 04H* OSH 06H 07H* OSH 09H OAH OBH OCH ODH OEH OFH
Monochrome Black Video Black Video Blinking Intensified Blinking Intensified Black Video Black Video Blinking Intensified Blinking Intensified
Mode 10H
64KB
Black Blue Black Blue Red White Red White Black Blue Black Blue Red White Red White
Mode 10H
>64KB
Black Blue Green Cyan Red Magenta Brown White Dark Gray Light Blue Light Green Light Cyan Light Red Light Magenta Yellow Intensified White
* Graphics character attributes which map directly regardless of
the graphics memory available.
August 2, 1984
IBM Enhanced Graphics Adapter 11
Registers
External Registers
This section contains descriptions of the registers of the Enhanced
Graphics Adapter that are not contained in an LSI device.
,,-.....,
Name
Miscellaneous Output Register Feature Control Register Input Status Register 0 Input Status Register 1
? = B in Monochrome Modes
Port
Index
3C2
-
3?A
-
3C2
-
3?2
-
? = D in Color Modes
MisceUaneous OUtput Register
This is a write-only register. The processor output port address is hex 3C2. A hardware reset causes all bits to reset to zero.
Miscellaneous Output Register Format Bit 7 6 5 4 3 2 1 0
I/O Address Select Enable Ram Clock Select 0 L...-------l~ Clock Select 1 Disable Internal Video Drivers Page Bit For Odd/Even '---------...... Horizontal Retrace Polarity L...------------l~ Vertical Retrace Polarity
Bit 0
3BX/3DX CRTC I/O Address-This bit maps
the CRTC I/O addresses for IBM Monochrome
or Color/Graphics Monitor Adapter emulation.
A logical 0 sets CRTC addresses to 3BX and
Input Status Register 1 's address to 3BA for
Monochrome emulation. A logical 1 sets CRTC
12 mM Enhanced Graphics Adapter
August 2, 1984
Bit 1
~
Bit 2-Bit 3
Bit 4 Bit 5 Bit 6 Bit 7
addresses to 3DX and Input Status Register l's address to 3DA for Color/Graphics Monitor Adapter emulation.
Enable RAM-A logical 0 disables RAM from the processor; a logical 1 enables RAM to respond at addresses designated by the Control Data Select value programmed into the Graphics Controllers.
Clock Select-These two bits select the clock source according to the following table:
Bits 3 2
o 0o 1-
1 0-
1 1-
Selects 14 MHz clock from the processor I/O channel Selects 16 MHz clock on-board oscillator Selects external clock source from the feature connector. Not used
Disable Internal Video Drivers-A logical 0 activates internal video drivers; a logical 1 disables internal video drivers. When the internal video drivers are disabled, the source of the direct drive color output becomes the feature connector direct drive outputs.
Page Bit For Odd/Even-Selects between two 64K pages of memory when in the Odd/Even modes (0,1,2,3,7). A logical 0 selects the low page of memory; a logical 1 selects the high page of memory.
Horizontal Retrace Polarity-A logical 0 selects positive horizontal retrace; a logical 1 selects negative horizontal retrace.
Vertical Retrace Polarity-A logical 0 selects positive vertical retrace; a logical 1 selects
August 2,1984
IBM Enhanced Graphics Adapter 13
negative vertical retrace. The IBM Monochrome display requires a negative vertical retrace polarity.
Feature Control Register
This is a write-only register. The processor output register is hex 3BA or 3DA.
Feature Control Register Format Bit 7 6 5 4 3 2 1 0
Feature Control Bit 0 Feature Control Bit 1 Reserved Not Used
Bits 0 and 1
Feature Control Bits-These bits are used to ~ convey information to the feature connector. The output of these bits goes to the FEAT 0 (pin 19) and FEAT 1 (pin 17) of the feature connector.
Input Status Register Zero
This is a read-only register. The processor input port address is hex 3C2.
14 IBM Enbanced Graphics Adapter
August 2, 1984
Input Status Register Zero Format
Bit 7 6 5 4 3 2 1 0
I
I I
I I I
:Not Used Switch Sense Reserved
Reserved
CRT Interrupt
Bit 4
Bits 5 and 6 Bit 7
Switch Sense-When set to J, this bit allows the
processor to read the four configuration switches on the board. The setting of the CLKSEL field determines which switch is being read. The switch configuration can be determined by reading byte 40:88H in RAM.
Bit 3: Switch 4 ; Logical 0 = switch closed Bit 2: Switch 3 ; Logical 0 = switch closed Bit 1: Switch 2 ; Logical 0 = switch closed Bit 0: Switch 1 ; Logical 0 = switch closed
Feature Code-These bits are input from the Feat (0) and Feat (1) pins on the feature connector.
CRT Interrupt-A logical 1 indicates video is being displayed on the CRT screen; a logical 0 indicates that vertical retrace is occurring.
Input Status Register One
This is a read-only register. The processor port address is hex 3BA or hex 3DA.
August 2, 1984
IBM Enhanced Graphics Adapter 15
Input Status Register One Format Bit 7 6 5 4 3 2 1 0
Display Enable Light Pen Strobe Light Pen Switch Vertical Retrace Diagnostic 1 Diagnostic 0 Not Used
Bit 0
Bit 1 Bit 2 Bit 3
Bits 4 and 5
Display Enable-Logical 0 indicates the CRT raster is in a horizontal or vertical retrace interval. This bit is the real time status of the display enable signal. Some programs use this status bit to restrict screen updates to inactive display intervals. The Enhanced Graphics Adapter does not require the CPU to update the screen buffer during inactive display intervals to .~ avoid glitches in the display image.
Light Pen Strobe-A logical 0 indicates that the light pen trigger has not been set; a logical 1 indicates that the light pen trigger has been set.
Light Pen Switch-A logical 0 indicates that the light pen switch is closed; a logical 1 indicates that the light pen switch is open.
Vertical Retrace-A logical 0 indicates that video information is being displayed on the CRT screen; a logicall indicates the CRT is in a vertical retrace interval. This bit can be programmed to interrupt the processor on interrupt level 2 at the start of the vertical retrace. This is done through bits 4 and 5 of the ~ Vertical Retrace End Register of the CRTC.
Diagnostic Usage-These bits are selectively connected to two of the six color outputs of the
16 IBM Enhanced Grapbics Adapter
August 2, 1984
Attribute Controller. The Color Plane Enable register controls the multiplexerfor the video wiring. The following table illustrates the combinations available and the color output wiring.
Color Plane Register
Bit5 Bit4
0 0 0 1 1 0 1 1
Input Status Register One
Bit5
Blt4
Red Secondary Blue Secondary Red Not Used
Blue Green Secondary Green Not Used
August 2, 1984
IBM Enhanced Graphics Adapter 17
Sequencer Registers
Name
Address Reset Clocking Mode Map Mask Character Map Select Memory Mode
Port
3C4 3C5 3C5 3C5 3C5 3C5
Index
-
00 01 02 03 04
Sequencer Address Register
The Address Register is a pointer register located at address hex 3C4. This register is loaded with a binary value that points to the sequencer data register where data is to be written. This value is referred to as "Index" in the table above.
Sequencer Address Register Format
Bit 7 6 5 4 3 2 1 0
1'----11_1_1_1_1_I-:: SequencerAddress
L..--I
. ..
- Not Used
Bit O-Bit 3
Sequencer Address Bits-A binary value pointing to the register where data is to be written.
Reset Register
This is a write-only register pointed to when the value in the address register is hex 00. The output port address for this register is hex 3C5.
18 IBM Enhanced Graphics Adapter
AU2USt 2. 1984
Reset Register Format
Bit 7 6 5 4 3 2 1 0
I11I11
~
Asynchronous Reset Synchronous Reset Not Used
Bit 0 Bit 1
Asynchronous Reset-A logical 0 commands the sequencer to asynchronous clear and halt. All outputs are placed in the high impedance state when this bit is a O. A logical 1 commands the sequencer to run unless bit 1 is set to zero. Resetting the sequencer with this bit can cause data loss in the dynamic RAMs.
Synchronous Reset-A logical 0 commands the sequencer to synchronous clear and halt. Bits 1 and 0 must both be ones to allow the sequencer to operate. Reset the sequencer with this bit before changing the Clocking Mode Register, if memory contents are to be preserved.
Clocking Mode Register
This is a write-only register pointed to when the value in the address register is hex 01. The output port address for this register is hex 3C5.
Clocking Mode Register Format Bit 7 6 5 4 3 2 1 0
8/9 Dot Clocks Bandwidth Shift Load Dot Clock Not Used
August 2, 1984
mM Enhanced Graphics Adapter 19
Bit 0 Bit 1
Bit 2 Bit 3
8/9 Dot Clocks-A logical 0 directs the
sequencer to generate character clocks 9 dots
wide; a logical 1 directs the sequencer to generate
character clocks 8 dots wide. Monochrome
alphanumeric mode (07H) is the only mode that
uses character clocks 9 dots wide. All other
~
modes must use 8 dots per character clock.
Bandwidth-A logical 0 makes CRT memory cycles occur on 4 out of 5 available memory cycles; a logical 1 makes CRT memory cycles occur on 2 out of 5 available memory cycles. Medium resolution modes require less data to be fetched from the display buffer during the horizontal scan time. This allows the CPU greater access time to the display buffer. All high resolution modes must provide the CRTC with 4 out of 5 memory cycles in order to refresh the display image.
Shift Load-When set to 0, the video serializers are reloaded every character clock; when set to 1, the video serializers are loaded every other character clock. This mode is useful when 16 bits are fetched per cycle and chained together in the shift registers.
Dot Clock-A logical 0 selects normal dot clocks derived from the sequencer master clock input. When this bit is set to 1, the master clock will be divided by 2 to generate the dot clock. All the other timings will be stretched since they are derived from the dot clock. Dot clock divided by two is used for 320x200 modes (0, 1,4,5) to provide a pixel rate of 7 MHz, (9 MHz for mode
D).
Map Mask Register
This is a write-only register pointed to when the value in the address register is hex 02. The output port address for this register is hex 3C5.
20 mM Enhanced Graphics Adapter
August 2, 1984
Map Mask Register Format
BH 7 6 5 4 3 2 1 a
a 1 Enables Map
1 Enables Map 1 1 Enables Map 2 1 Enables Map 3 Not Used
Bit O-Bit 3
Map Mask-A logical 1 in bits 3 through 0 enables the processor to write to the corresponding maps 3 through O. If this register is programmed with a value of OFH, the CPU can perform a 32-bit write operation with only one memory cycle. This substantially reduces the overhead on the CPU during display update cycles in graphics modes. Data scrolling operations are also enhanced by setting this register to a value of OFH and writing the display buffer address with the data stored in the CPU data latches. This is a read-modify-write operation. When odd/even modes are selected, maps 0 and 1 and maps 2 and 3 should have the same map mask value.
Character Map Select Register
This is a write-only register pointed to when the value in the address register is hex 03. The output port address for this register is 3C5.
August 2, 1984
mM Enhanced Graphics Adapter 21
Character Map Select Register Format
Bit
IIII ~III ~I:.
7 6 5 4 3 2 1 0
Character Map Select B
-
- Character Map Select A
_ L-~~-L _ _ _ _ _ _ _ _ _ _ _~ NotUsed
Bit O-Bit 1
Character Map Select B--Selects the map used to generate alpha characters when attribute bit 3 is a 0, according to the following table:
Bits
1
0
Value
0
0
0
1
1
0
1
1
Map
Selected
0 1 2 3
Table Location
1st 8K of Plane 2 Bank 0
2nd 8K of Plane 2 Bank 1
3rd 8K of Plane 2 Bank 2
4th 8K of Plane 2 Bank 3
Bit 2-Bit 3
Character Map Select A--Selects the map used /""'"". to generate alpha characters when attribute bit 3 is aI, according to the following table:
Bits
3
2
Value
0
0
0
1
1
0
1
1
Map
Selected
0 1 2 3
Table Location
1sl 8K of Plane 2 Bank 0
2nd 8K of Plane 2 Bank 1
3rd 8K of Plane 2 Bank 2
4th 8K of Plane 2 Bank 3
In alphanumeric modes, bit 3 of the attribute byte normally has the function of turning the foreground intensity on or off. This bit however may be redefined as a switch between character sets. This function is enabled when there is a difference between the value in Character Map Select A and the value in Character Map Select B. Whenever these two values are the same, the character select function is disabled. The memory mode register bit 1 must be a 1 (indicates the memory extension card is installed in the unit) to enable this function; otherwise, bank 0 is always selected.
22 mM Enhanced Graphics Adapter
August 2, 1984
128K of graphics memory is required to support two character sets. 256K supports four character sets. Asynchronous reset clears this register to O. This should be done only when the sequencer is reset.
Memory Mode Register
This is a write-only register pointed to when tlte value in the address register is hex 04. The processor output port address for this register is 3C5.
Memory Mode Register Format
Bit 7654321 0
E
Alpha Extended Memory Odd/Even Not Used
Bit 0 Bit 1 Bit 2
Alpha-A logical 0 indicates that a non-alpha mode is active. A logical 1 indicates that alpha mode is active and enables the character generator map select function.
Extended Memory-A logical 0 indicates that the memory expansion card is not installed. A logical 1 indicates that the memory expansion card is installed and enables access to the extended memory through address bits 14 and 15.
Odd/Even-A logical 0 directs even processor addresses to access maps 0 and 2, while odd processor addresses access maps 1 and 3. A logical 1 causes processor addresses to sequentially access data within a bit map. The maps are accessed according to the value in the map mask register.
August 2, 1984
IBM Enhanced Graphics Adapter 23
CRT Controller Registers
Name
Port
Index
Address Register
3?4
-
Horizontal Total
3?5
00
Horizontal Display End
3?5
01
Start Horizontal Blank
3?5
02
End Horizontal Blank
3?5
03
Start Horizontal Retrace 3?5
04
End Horizontal Retrace
3?5
05
Vertical Total
3?5
06
Overflow
3?5
07
Preset Row Scan
3?5
08
Max Scan line
3?5
09
Cursor Start
3?5
OA
Cursor End
3?5
OB
Start Address High
3?5
OC
Start Address Low
3?5
00
Cursor Location High
3?5
OE
Cursor Location Low
3?5
OF
Vertical Retrace Start
3?5
10
light Pen High
3?5
10
Vertical Retrace End
3?5
11
light Pen Low
3?5
11
Vertical Display End
3?5
12
Offset
3?5
13
Underline Location
3?5
14
Start Vertical Blank
3?5
15
End Vertical Blank
3?5
16
Mode Control
3?5
17
line Compare
3?5
18
? = B in Monochrome Modes and 0 in Color Modes
CRT Controller Address Register
The Address register is a pointer register located at hex 3B4 or hex 3D4. If an IBM Monochrome Display is attached to the adapter, address 3B4 is used. If a color display is attached to the adapter, address 3D4 is used. This register is loaded with a binary value that points to the CRT Controller data register where data is to be written. This value is referred to as "Index" in the table above.
24 IBM Enhanced Graphics Adapter
August 2, 1984
CRT Controller Address Register Format
Bit 7 6 5 4 3 2 1 0
-=: 11..-...1.1_1_1_1_I_I CRTCAddress
,----I
-
.
_ Not Used
Bit O-Bit 4
CRT Controller Address Bits-A binary value pointing to the CRT Controller register where data is to be written.
Horizontal Total Register
This is a write-only register pointed to when the value in the CRT Controller address register is hex 00. The processor output port address for this register is hex 3B5 or hex 3D5.
Horizontal Total Register Format
Bit 7 6 5 4 3 2 1 0
~.. 1--1---11----L..1---II---'-I_IL.........L..I----I-I HorizontaI Total
This register defines the total number of characters in the horizontal scan interval including the retrace time. The value directly controls the period of the horizontal retrace output signal. An internal horizontal character counter counts character clock inputs to the CRT Controller, and all horizontal and vertical timings are based upon the horizontal register. Comparators are used to compare register values with horizontal character values to provide horizontal timings.
Bit O-Bit 7
Horizontal Total-The total number of characters less 2.
August 2, 1984
mM Enhanced Graphics Adapter 25
Horizontal Display Enable End Register·
This is a write-only register pointed to when the value in the CRT Controller address register is hex 01. The processor output port address for this register is hex 3B5 or hex 3D5.
Horizontal Display Enable End Register Format
Bit 7 6 5 4 3 2 1 0
1-1---I.I---LI--JI'--.L..I---,-I--LI--III..-"".~ Horizontal Display Enable End
This register defines the length of the horizontal display enable signal. It determines the number of displayed character positions per horizontal line.
Bit O-Bit 7
Horizontal display enable end -A value one less than the total number of displayed characters.
Start Horizontal Blanking Register
This is a write-only register pointed to when the value in the CRT Controller address register is hex 02. The processor output port address for this register is hex 3B5 or hex 3D5.
Start Horizontal Blanking Register Format Bit 7 6 5 4 3 2 1 0
1..1---,-1---1.1--11_1...1---L.I---L--II..-.... Start Vertical Blanking
This register determines when the horizontal blanking output signal becomes active. The row scan address and underline scan line decode outputs are multiplexed on the memory address outputs and cursor outputs respectively during the blanking interval. These outputs are latched external to the CRT Controller with the falling edge of the BLANK output signal. The row scan address and underline signals remain on the output signals for one character count beyond the end of the blanking signal.
r---.....
26 mM Enhanced Graphics Adapter
August 2, 1984
Bit O-Bit 7
Start Horizontal Blanking-The horizontal blanking signal becomes active when the horizontal character counter reaches this value.
,..-..., End Horizontal Blanking Register
This is a write-only register pointed to when the value in the CRT Controller address register is hex 03. The processor output port address for this register is hex 3B5 or hex 3D5.
End Horizontal Blanking Register Format
Bit 7 6 5 4 3 2 1 0
I I I
I' I
End Blanking Display Enable Skew Control Not Used
This register determines when the horizontal blanking output ,..-..., signal becomes inactive. The row scan address and underline scan
line decode outputs are multiplexed on the memory address outputs and the cursor outputs respectively during the blanking interval. These outputs are latched external to the CRT Controller with the falling edge of the BLANK output signal. The row scan address and underline signals remain on the output signals for one character count beyond the end of the blanking signal.
Bit O-Bit 4
End Horizontal Blanking-A value equal to the five least significant bits of the horizontal character counter value at which time the horizontal blanking signal becomes inactive (logical 0). To obtain a blanking signal of width W, the following algorithm is used: Value of
Start Blanking Register + Width of :Alanking
signal in character clock units = 5-bit result to be
programmed into the End Horizontal Blanking Register.
August 2,1984
IBM Enhanced Graphics Adapter 27
Bit S-Bit 6
Display Enable Skew Control-These two bits determine the amount of display enable skew. Display enable skew control is required to provide sufficient time for the CRT Controller to access the display buffer to obtain a character and attribute code, access the character generator font, and then go through the Horizontal Pel Panning Register in the Attribute Controller. Each access requires the display enable signal to be skewed one character clock unit so that the video output is in synchronization with the horizontal and vertical retrace signals. The bit values and amount of skew are shown in the following table:
Bits
6 5
o 0 Zero character clock skew o lOne character clock skew
1 0 Two character clock skew 1 1 Three character clock skew
Start Horizontal Retrace Ptdse Register
This is a write-only register pointed to when the value in the CRT Controller address register is hex 04. The processor output port address for this register is hex 3B5 or hex 3D5.
Start Horizontal Retrace Pulse Register Format
Bit 7 6 5 4 3 2 1 0
I I I I I I I I ~ Start Horizontal Retrace Pulse
This register is used to center the screen horizontally, and to specify the character position at which the Horizontal Retrace Pulse becomes active.
28 IBM Enhanced Graphics Adapter
August 2, 1984
Bit O-Bit 7
Start Horizontal Retrace Pulse-The value programmed is a binary count of the character position number at which the signal becomes active.
~ End Horizontal Retrace Register
This is a write-only register pointed to when the value in the CRT
Controller address register is hex os. The processor output port
address for this register is hex 3BS or hex 3DS.
End Horizontal Retrace Register Format
Bit 7 6 5 4 3 2 1 0
I I I I I I I I :.. . .
End Horizontal Retrace - Horizontal Retrace Delay
'----------~ Start Odd Memory Address
This register specifies the character position at which the .......-.....,
Horizontal Retrace Pulse becomes inactive (logical 0).
Bit O-Bit 4
End Horizontal Retrace-A value equal to the five least significant bits of the horizontal character counter value at which time the horizontal retrace signal becomes inactive (logical 0). To obtain a retrace signal of width W, the
following algorithm is used: Value of Start
Retrace Register + width of horizontal retrace
signal in character clock units = S-bit result to be
programmed into the End Horizontal Retrace Register.
Bit 5-Bit 6
Horizontal Retrace Delay-These bits control the skew of the horizontal retrace signal. Binary 00 equals no Horizontal Retrace Delay. For some modes, it is necessary to provide a horizontal retrace signal that takes up the entire blanking interval. Some internal timings are generated by the falling edge of the horizontal retrace signal. To guarantee the signals are
August 2,1984
mM Enhanced Graphics Adapter 29
Bit 7
latched properly, the retrace signal is started before the end of the display enable signal, and then skewed several character clock times to provide the proper screen centering.
Start Odd/Even Memory Address-This bit controls whether the first CRT memory address output after a horizontal retrace begins with an even or an odd address. A logical 0 selects even addresses; a logicall selects odd addresses. This bit is used for horizontal pel panning applications. Generally, this bit should be set to a logical O.
Vertical Total Register
This is a write-only register pointed to when the value in the CRT Controller address register is hex 06. The processor output port address for this register is hex 3B5 or 3D5.
Vertical Total Register Format
Bit 7 6 5 4 3 2 1 0
I I I III II·
Vertical Total
Bit O-Bit 7
Vertical Total-This is the low-order eight bits of a nine-bit register. The binary value represents the number of horizontal raster scans on the CRT screen, includio,g vertical retrace. The value in this register determines the period of the vertical retrace signal. Bit 8 of this register is contained in the CRT Controller Overflow Register hex 07
bit o.
CRT Controller Overflow Register
This is a write-only register pointed to when the value in the CRT Controller Address Register is hex 07. The processor output port address for this register is hex 3B5 or hex 3D5.
30 mM Enhanced Graphics Adapter
August 2, 1984
CRTC Overflow Register Format B~ 7 6 5 4 3 2 1 0
Vertical Total Bit 8 Vertical Display Enable End Bit 8 Vertical Retrace Start Bit 8 Start Vertical Blank Bit 8 Line Compare Bit 8 Cursor Location Bit 8 Not Used
Bit 0 Bit 1
Bit 2 Bit 3 Bit 4 Bit 5
Vertical Total-Bit 8 of the Vertical Total register (index hex 06).
Vertical Display Enable End-Bit 8 of the Vertical Display Enable End register (index hex 12).
Vertical Retrace Start-Bit 8 of the Vertical Retrace Start register (index hex 10).
Start Vertical Blank-Bit 8 of the Start Vertical Blank register (index hex 15).
Line Compare-Bit 8 of the Line Compare register (index hex 18).
Cursor Location-Bit 8 of the Cursor Location register (index hex OA).
Preset Row Scan Register
This is a write-only register pointed to when the value in the CRT Controller address register is hex 08. The processor output port ~ address for this register is hex 3B5 or hex 3D5.
August 2, 1984
mM Enhanced Graphics Adapter 31
Preset Row Scan Register Format Bit 7 6 5 4 3 2 1 0
111"111:
Starting Row Scan Count after a Vertical Retrace
Not Used
This register is used for pel scrolling.
Bit O-Bit 4
Preset Row Scan (Pel Scrolling)-This register specifies the starting row scan count after a vertical retrace. The row scan counter increments each horizontal retrace time until a maximum row scan occurs. At maximum row scan compare time the row scan is cleared (not preset).
Maximum Scan Line Register
This is a write-only register pointed to when the value in the CRT ~ Controller address register is hex 09. The processor output port address for this register is hex 3B5 or hex 3D5.
Maximum Scan Line Register Format
Bit 7 6 5 4 3 2 1 0
III I I II:
Maximum Scan Line Not Used
Bit O-Bit 4
Maximum Scan Line-This register specifies the number of scan lines per character row. The number to be programmed is the maximum row scan number minus one.
Cursor Start Register
This is a write-only register pointed to when the value in the CRT Controller address register is hex OA. The processor output port
32 IBM Enhanced Graphics Adapter
August 2, 1984
address for this register is hex 3B5 or hex 3D5.
Cursor Start Register Format Bit 7 6 5 4 3 2 1 0
Row Scan Cursor Begins Not Used
Bit O-Bit 4
Cursor Start-This register specifies the row scan of a character line where the cursor is to begin. The number programmed should be one less than the starting cursor row scan.
Cursor End Register
This is a write-only register pointed to when the value in the CRT Controller address register is hex OB. The processor output port address for this register is hex 3B5 or hex 3D5.
Cursor End Register Format Brt 7 6 5 4 3 2 1 0
II I
Row Scan Cursor Ends Cursor Skew Control Not Used
Bit O-Bit 4 Bit S-Bit 6
Cursor End-These bits specify the row scan where the cursor is to end.
Cursor Skew-These bits control the skew of the cursor signal.
August 2, 1984
mM Enhanced Graphics Adapter 33
Bits
6 5
o 0 Zero character clock skew
o lOne character clock skew
1 0 Two character clock skew 1 1 Three character clock skew
Start Address High Register
This is a read/write register pointed to when the value in the CRT Controller address register is hex OC. The processor input/output port address for this register is hex 3B5 or hex 3D5.
Start Address High Register Format
Bit 7 6 5 4 3 2 1 0
III III I~
High Order Start Address
Bit O-Bit 7
Start Address High-These are the high-order eight bits of the start address. The 16-bit value, from the high-order and low-order start address registers, is the first address after the vertical retrace on each screen refresh.
Start Address Low Register
This is a read/write register pointed to when the value in the CRT Controller address register is hex OD. The processor input/output port address for this register is hex 3B5 or hex 3D5.
Start Address Low Register Format
Bit 7 6 5 4 3 2 1 0
I ~
Low Order Start Address
34 IBM Enhanced Graphics Adapter
August 2, 1984
Bit O-Bit 7
Start Address Low-These are the low-order 8 bits of the start address.
Cursor Location High Register
This is a read/write register pointed to when the value in the CRT Controller address register is hex OE. The processor input/output poct address for this register is hex 3B5 or hex 3D5.
Cursor Location High Register Format
Bit 7 6 5 4 3 2 1 0
I I I I I I · High Order Cursor Location
Bit O-Bit 7
Cursor Location High-These are the high-order 8 bits of the cursor location.
~ Cursor Location Low Register
This is a read/write register pointed to when the value in the CRT Controller address register is hex OF. The processor input/output port address for this register is hex 3B5 or Hex 3D5.
Cursor Location Low Register Format
Bit 7 6 5 4 3 2 1 0
I I I I I I I · Low Order Cursor Location
Bit O-Bit 7
Cursor Location Low- These are the low-order 8 bits of the cursor location.
August 2, 1984
IBM Enhanced Graphics Adapter 3S
Vertical Retrace Start Register
This is a write-only register pointed to when the value in the CRT Controller address register is hex 10. The processor output port address for this register is hex 3B5 or hex 3D5.
Vertical Retrace Start Register Format
Bit 7 6 5 4 3 2 1 0
IL...-..LI---II_.L..I.........LI---II_.L..I.........L---I.~. Low Order Vertical Retrace Pulse
Bit O-Bit 7
Vertical Retrace Start-This is the low-order 8 bits of the vertical retrace pulse start position programmed in horizontal scan lines. Bit 8 is in the overflow register location hex 07.
Light Pen High Register
This is a read-only register pointed to when the value in the CRT ~ Controller address register is hex 10. The processor input port address for this register is hex 3B5 or hex 3D5.
Light Pen High Register Format
Bit 7 6 5 4 3 2 1 0
III II I I I
High Order Memory Address Counter
Bit O-Bit 7
Light Pen High-This is the high order 8 bits of the memory address counter at the time the light pen was triggered.
VerticaI Retrace End Register
This is a write-only register pointed to when the value in the CRT Controller address register is hex 11. The processor output port
36 IBM Enhanced Graphics Adapter
August 2, 1984
address for this register is hex 3B5 or hex 3D5.
Vertical Retrace End Register Format
Bit 765 432 1 Q
~ I I I I I
I I I
Vertical Retrace End Q=Clear Vertical Interrupt Q=Enable Vertical Interrupt Not Used
Bit O-Bit 3
Bit 4 Bit 5
Vertical Retrace End-These bits determine the horizontal scan count value when the vertical retrace output signal becomes inactive. The register is programmed in units of horizontal scan lines. To obtain a vertical retrace signal of width W, the following algorithm is used: Value of Start
Vertical Retrace Register + width of vertical
retrace signal in horizontal scan units = 4-bit
result to be programmed into the End Horizontal Retrace Register.
Clear Vertical Interrupt-A logical 0 will clear a vertical interrupt.
Enable Vertical Interrupt-A logical 0 will enable vertical interrupt.
Light Pen Low Register
This is a read-only register pointed to when the value in the CRT Controller address register is hex 11. The processor input port address for this register is hex 3B5 or 3D5.
August 2, 1984
IBM Enhanced Graphics Adapter 37
Light Pen Low Register Format
Bit 7 6 5 4 3 2 1 0
'--..L...-.....I'-.L..I---LI........II'-.L..I---LI_~.. Low Order Memory Address
Counter
Bit O-Bit 7
Light Pen Low-This is is the low-order 8 bits of the memory address counter at the time the light pen was triggered.
Vertical Display Enable End Register
This is a write-only register pointed to when the value in the CRT Controller address register is hex 12. The processor output port address for this register is hex 3B5 or hex 3D5.
Vertical Display Enable End Register Format
Bit 7 6 5 4 3 2 1 0
I IIIIIII
Low Order Vertical Display Enable End
Bit O-Bit 7
Vertical Display Enable End-These are the low-order 8 bits of the vertical display enable end position. This address specifies which scan line ends the active video area of the screen. Bit 8 is in the overflow register location hex 07.
Offset Register
This is a write-only register pointed to when the value in the CRT
Controller address register is hex 13. The processor output port
address for this register is hex 3B5 or hex 3D5.
~
38 IBM Enhanced Graphics Adapter
August 2, 1984
Offset Register Format
Bit 7 6 5 4 3 2 1 0
I · Logical line width of the screen
Bit O-Bit 7
Offset-This register specifies the logical line width of the screen. The starting memory address for the next character row is larger than the current character row by this amount. The Offset Register is programmed with a word address. Depending upon the method of clocking the CRT Controller, this word address is either a word or double word address.
Underline Location Register
This is a write-only register pointed to when the value in the CRT Controller address register is hex 14. The processor output port address for this register is hex 3B5 or hex 3D5.
Underline Location Register Format
Bit 7 6 5 4 3 2 1 0
III I I
:
Horizontal row scan where underline will occur
Not Used
Bit O-Bit 4
Underline Location-This register specifies the horizontal row scan on which underline will occur.. The value programmed is one less than the scan line number desired.
~ Start Vertical Blanking Register
This is a write-only register pointed to when the value in the CRT Controller address register is hex 15. The processor output port
August 2, 1984
IBM Enhanced Graphics Adapter 39
address for this register is hex 3B5 or hex 3D5.
Start Vertical Blanking Register Format
Bit 7 6 5 4 3 2 1 0
IIII II~
Start Vertical Blanking
Bit O-Bit 7
Start Vertical Blank-These are the low 8 bits of the horizontal scan line count, at which the vertical blanking signal becomes active. Bit 8 bit is in the overflow register hex 07.
End Vertical Blanking Register
This is a write-only register pointed to when the value in the CRT Controller address register is hex 16. The processor output port address for this register is hex 3B5 or hex 3D5.
End Vertical Blanking Register Format
Bit 7 6 5 4 3 2 1 0
I I I
I I I I : End Vertical Blanking Not Used
Bit O-Bit 4
End Vertical Blank-This register specifies the horizontal scan count value when the vertical blank output signal becomes inactive. The register is programmed in units of horizontal scan lines. To obtain a vertical blank signal of width W, the following algorithm is used: Value of Start Vertical Blank Register + width of vertical blank signal in horizontal scan units = 5-bit result to be programmed into the End Vertical Blank Register.
40 IBM Enhanced Graphics Adapter
August 2, 1984
Mode Control Register
This is a write-only register pointed to when the value in the CRT Controller address register is hex 17. The processor output port address for this register is hex 3B5 or hex 3D5.
Mode Control Register Format Bit 7 6 5 4 3 2 1 0
CMSO Select Row Scan Counter Horizontal Retrace Select L--_ _ _~~ Count by Two Output Control I....---------i~ Address Wrap ' -_ _ _ _ _ _ _..... Word/Byte Mode 1....-_ _ _ _ _ _ _ _. . . . Hardware Reset
,-.... Bit 0
Compatibility Mode Support- When this bit is a logical 0, the row scan address bit 0 is substituted for memory address bit 13 during active display time. A logical 1 enables memory address bit 13 to appear on the memory address output bit 13 signal of the CRT Controller. The CRT Controller used on the IBM Color/Graphics Monitor Adapter is the 6845. The 6845 has 128 horizontal scan line address capability. To obtain 640 by 200 graphics resolution, the CRTC was programmed for 100 horizontal scan lines with 2 row scan addresses per character row. Row scan address bit 0 became the most significant address bit to the display buffer. Successive scan lines of the display image were displaced in memory by 8K bytes. This bit allows compatibility with the 6845 and Color Graphics APA modes of operation.
August 2, 1984
mM Enhanced Graphics Adapter 41
Bit 1 Bit 2
Bit 3 Bit 4 Bit 5
Select Row Scan Counter-A logical 0 selects row scan counter bit 1 on MA 14 output pin. A logical 1 selects MA 14 counter bit on MA 14 output pin.
Horizontal Retrace Select-This bit selects Horizontal Retrace or Horizontal Retrace divided ~ by 2 as the clock that controls the vertical timing counter. This bit can be used to effectively double the vertical resolution capability of the CRT Controller. The vertical counter has a maximum resolution of 512 scan lines due to the 9-bit wide Vertical Total Register. If the vertical counter is clocked with the horizontal retrace divided by 2 clock, then the vertical resolution is doubled to 1024 horizontal scan lines. A logical
oselects HRTC and a logical 1 selects HRTC
divided by 2.
Count By Two- When this bit is set to 0, the memory address counter is clocked with the character clock input. A logical 1 clocks the memory address counter with the character clock ~ input divided by 2. This bit is used to create either a byte or word refresh address for the display buffer.
Output Control-A logical 0 enables the module output drivers. A logical 1 forces all outputs into high impedance state.
Address Wrap-This bit selects Memory Address
counter bit MA 13 or bit MA 15, and it appears
on the MA 0 output pin in the word address
mode. If you are not in the word address mode,
MA 0 counter output appears on the MA 0
output pin. A logical 1 selects MA 15. In
odd/even mode, bit MA 13 should be selected
when the 64K memory is installed on the board. Bit MA 15 should be selected when greater then
.....-.....
64K memory is installed. This function is used to
implement Color Graphics Monitor Adapter
compatibility.
42 IBM Enhanced Graphics Adapter
August 2, 1984
Bit 6
Word Mode or Byte Mode-When this bit is a
logical 0, the Word Mode shifts all memory
address counter bits down one bit, and the most
significant bit of the counter appears on the least
significant bit of the memory address outputs.
See table below for address output details. A
logical 1 selects the Byte Address mode.
CRTC Out Pin
MA O/RFA 0 MA 1/RFA 1 MA 2/RFA 2 MA 3/RFA 3
* * * MA 14/RS 3 MA 15/RS 4
Internal Memory Address Counter Wiring to the Output Multiplexer
Byte Address Mode
Word Address
Mode
MAO MA1 MA2 MA3
* * * MA14 MA15
MA 15 or MA 13
MAO
MA1
MA2
*
*
*
MA13
MA14
~ Bit7
° Hardware Reset-A logical forces horizontal
and vertical retrace to clear. A logical 1 forces horizontal and vertical retrace to be enabled.
Line Compare Register
This is a write-only register pointed to when the value in the CRT Controller address register is hex 18. The processor output port address for this register is hex 3B5 or hex 3D5.
Line Compare Register Format
Bit 765 432 1 0
I
Line Compare Target
Bit O-Bit 7
Line Compare-This register is the low-order 8 bits of the compare target. When the vertical
August 2, 1984
IBM Enhanced Graphics Adapter 43
counter reaches this value, the internal start of the line counter is cleared. This allows an area of the screen to be immune to scrolling. Bit 8 of this register is in the overflow register hex 07.
44 mM Enhanced Graphics Adapter
August 2, 1984
Graphics Controller Registers
Name
Graphics 1 Position Graphics 2 Position Graphics 1 & 2 Address Set/Reset Enable Set/Reset Color Compare Data Rotate Read Map Select Mode Register Miscellaneous Color Don't Care Bit Mask
Port
3CC 3CA 3CE 3CF 3CF 3CF 3CF 3CF 3CF 3CF 3CF 3CF
Index
-
-
00 01 02 03 04 05 06 07 08
Graphics 1 Position Register
This is a write-only register. The processor output port address for this register is hex 3CC.
Graphics I Position Register Format
Bit 7 6 5 4 3 2 1 0
I I I I I I ~
Position 0 Position 1 Not Used
Bit O-Bit 1
Position-These 2 bits are binary encoded hierarchy bits for the graphics chips. The position register controls which 2 bits of the processor data bus each chip responds to. Graphics 1 must be programmed with a position register value of 0 for this card.
August 2, 1984
mM Enhanced Graphics Adapter 45
Graphics 2 Position Register
This is a write-only register. The processor output port address for this register is hex 3CA.
Graphics II Position Register Format
Bit 7 6 5 4 3 2 1 0
IIIIII~ Position 0 Position 1 Not Used
Bit O-Bit 1
Position-These 2 bits are binary encoded hierarchy bits for the graphics chips. The position register controls which 2 bits of the processor data bus to which each chip responds. Graphics 2 must be programmed with a position register value of 1 for this card.
Graphics 1 and 2 Address Register
This is a write-only register and the processor output port address for this register is hex 3CE.
Graphics 1 and 2 Address Register Formats
Bit 7 6 5 4 3 2 1 0
I I I I
: Graphics Address Not Used
Bit O-Bit 3 Graphics 1 and 2 Address Bits-This output loads
the address register in both graphics chips
simultaneously. This register points to the data
~
register of the graphics chips.
46 mM Enhanced Graphics Adapter
August 2, 1984
Set/Reset Register
This is a write-only register pointed to by the value in the Graphics 1 and 2 address register. This value must be hex 00 before writing can take place. The processor output port address ~ for this register is hex 3CF.
Set/Reset Register Format Bit 7 6 5 4 3 2 1 0
Set/Reset Bit 0 Set/Reset Bit 1 Set/Reset Bit 2 Set/Reset Bit 3 Not Used
Bit O-Bit 3
Set/Reset-These bits represent the value written to the respective memory planes when the processor does a memory write with write mode 0 selected and set/reset mode is enabled. Set/Reset can be enabled on a plane by plane basis with separate OUT commands to the Set/Reset register.
Enable Set/Reset Register
This is a write-only register and is pointed to by the value in the Graphics 1 and 2 address register. This value must be hex 01 before writing can take place. The processor output port for this register is hex 3CF.
August 2, 1984
IBM Enhanced Graphics Adapter 47
Color Compare Register Format Bit 7 6 5 4 3 2 1 0
Color Compare 0 Color Compare 1 Color Compare 2 Color Compare 3 Not Used
Bit O-Bit 3
Enable Set/Reset-These bits enable the set/reset function. The respective memory plane is written with the value of the Set/Reset register provided the write mode is O. When write mode is 0 and Set/Reset is not enabled on a plane, that plane is written with the value of the processor data.
Color Compare Register
This is a write-only register pointed to by the value in the Graphics 1 and 2 address register. This value must be hex 02 before writing can take place. The processor output port address for this register is hex 3CF.
Enable Set/Reset Register Format B~ 7 6 5 4 3 2 1 0
Enable Set/Reset Bit 0 Enable Set/Reset Bit 1 Enable Set/Reset Bit 2 Enable Set/Reset Bit 3 Not Used
Bit O-Bit 3
Color Compare-These bits represent a 4 bit color value to be compared. If the processor sets
48 IBM Enhanced Graphics Adapter
August 2, 1984
read mode 1 on the graphics chips, and does a memory read, the data returned from the memory cycle will be a 1 in each bit position where the 4 bit planes equal the color compare register.
Data Rotate Register
This is a write-only register pointed to by the value in the Graphics 1 and 2 address register. This value must be hex 03 before writing can take place. The processor output port address for this register is hex 3CF.
Data Rotate Register Format SH 7 6 5 4 3 2 1 0
Rotate Count Rotate Count 1 Rotate Count 2 Function Select Not Used
Bit O-Bit 2 Bit 3-Bit 4
Rotate Count-These bits represent a binary encoded value of the number of positions to rotate the processor data bus during processor memory writes. This operation is done when the
write mode is o. To write unrotated data the
processor must select a count of O.
Function Select-Data written to memory can operate logically with data already in the processor latches. The bit functions are defined in the following table.
August 2, 1984
mM Enhanced Graphics Adapter 49
Bits 4 3
o 0 Data unmodified. o 1 Data AND'ed with latched data.
1 0 Data OR'ed with latched data. 1 1 Data XOR'ed with latched data.
Data may be any of the choices selected by the Write Mode Register except processor latches. If rotated data is selected, the rotate applies before the logical function.
Read Map Select Register
This is a write-only register pointed to by the value in the Graphics 1 and 2 address register. This value must be hex 04 before writing can take place. The processor output port address for this register is hex 3CF.
Read Map Select Register Format Bit 7 6 5 4 3 2 1 0
Map Select 0 Map Select 1 Map Select 2 Not Used
Bit O-Bit 2
Map Select-These bits represent a binary encoded value of the memory plane number from which the processor reads data. This register has no effect on the color compare read mode described elsewhere in this section.
Mode Register
This is a write-only register pointed to by the value in the Graphics 1 and 2 address register. This value must be hex 05
50 IBM Enhanced Graphics Adapter
August 2, 1984
before writing can take place. The processor output port address for this register is 3CF.
~
Mode Register Format
Bit 7 6 5 4 3 2 1 0
I I : 11
W,;t, Mod,
Test Condition
Read Mode
'-------~ Odd/Even
' - - - - - - - -.... Shift Register Mode
..................- - - - - - -...... Not Used
Bit O-Bit 1 Bit 2
Write Mode
Bits 1 0
o 0 Each memory plane is written with the
processor data rotated by the number of counts in the rotate register, unless Set/Reset is enabled for the plane. Planes for which Set/Reset is enabled are written with 8 bits of the value contained in the Set/Reset register for that plane.
o 1 Each memory plane is written with the
contents of the processor latches. These latches are loaded by a processor read operation. 1 0 Memory plane n (0 through 3) is filled with 8 bits of the value of data bit n. 1 1 Not Valid
The logic function specified by the function select register also applies.
Test Condition-A logical 1 directs graphics controller outputs to be placed in high impedance state for testing.
August 2, 1984
IBM Enhanced Grapbics Adapter S1
Bit 3 Bit 4 Bit 5
Read Mode-When this bit is a logical 0, the processor reads data from the memory plane selected by the read map select register. When this bit is a logical 1, the processor reads the results of the comparison of the 4 memory planes and the color compare register.
Odd/Even-A logical 1 selects the odd/even addressing mode, which is useful for emulation of the Color Graphics Monitor Adapter compatible modes. Normally the value here follows the value of the Memory Mode Register bit 3 of the Sequencer.
Shift Register-A logical 1 directs the shift registers on each graphics chip to format the serial data stream with even numbered bits on the even numbered maps and odd numbered bits on the odd maps.
Miscellaneous Register
This is a write-only register pointed to by the value in the Graphics 1 and 2 address register. This value must be hex 06 before writing can take place. The processor output port for this register is hex 3CF.
Miscellaneous Register Format Bit 7 6 5 4 3 2 1 0
Graphics Mode Chain Odd Maps to Even Memory MapO Memory Map 1 Not Used
52 IBM Enhanced Graphics Adapter
August 2, 1984
Bit 0
Graphics Mode-This bit controls alpha-mode addressing. A logical 1 selects graphics mode. When set to graphics mode, the character generator address latches are disabled.
~ Bit 1
Chain Odd Maps To Even Maps-When set to 1, this bit directs the processor address bit 0 to be replaced by a higher order bit and odd/even maps to be selected with odd/even values of the processor AO bit, respectively.
Bit 2-Bit 3
Memory Map-These bits control the mapping of the regenerative buffer into the processor address space.
Bits 3 2
o 0 Hex AOOO for 128K bytes. o 1 Hex AOOO for 64K bytes.
1 0 Hex BOOO for 32K bytes 1 1 Hex B800 for 32K bytes.
If the display adapter is mapped at address hex AOOO for 128K bytes, no other adapter can be installed in the system.
Color Don't Care Register
This is a write-only register and is pointed to by the value in the Graphics 1 and 2 address register. This value must be hex 07 before writing can take place. The processor output port for this register is hex 3CF.
August 2, 1984
mM Enhanced Graphics Adapter 53
Color Don't Care Register Format Bit 7 6 5 4 3 2 1 0
Color Plane O=Don't Care Color Plane 1=Don't Care Color Plane 2=Don't Care Color Plane 3=Don't Care Not Used
Bit 0 Bit 1 Bit 2 Bit 3
Color Don't Care-Color plane O=don't care when reading color compare when this bit is set to
1.
Color Don't Care-Color plane 1=don't care when reading color compare when this bit is set to
1.
Color Don't Care-Color plane 2=don't care
when reading color compare when this bit is set to
1.
r"'\
Color Don't Care-Color plane 3=don't care when reading color compare when this bit is set to
1.
Bit Mask Register
This is a write-only register and is pointed to by the value in the Graphics 1 and 2 address register. This value must be hex 08 before writing can take place. The processor output port for this register is hex 3CF.
Bit Mask Register Format
Bit 7 6 5 4 3 2 1 0
I I I I II I I·
O-Immune to change 1-Unimpeded Writes
54 IBM Enhanced Graphics Adapter
August 2, 1984
Bit O-Bit 7
Bit Mask-Any bit programmed to n causes the corresponding bit nin each bit plane to be immune to change provided that the location being written was the last location read by the processor. Bits programmed to a 1 allow unimpeded writes to the corresponding bits in the bit planes.
The bit mask applies to any data written by the processor (rotate, AND'ed, OR'ed, XOR'ed, DX, and SiR). To preserve bits using the bit mask, data must be latched internally by reading the location. When data is written to preserve the bits. the most current data in latches is written in those positions. The bit mask applies to all bit planes simultaneously.
August 2, 1984
IBM Enhanced Graphics Adapter SS
Attribute Controller Registers
Name
Address Register Palette Registers Mode Control Register Overscan Color Register Color Plane Enable Register Horizontal Pel Panning Register
Port
3CO 3CO 3CO 3CO 3CO 3CO
Index
-
OO-OF 10 11 12 13
Attribute Address Register
This is a write-only register. The processor output port is hex 3CO.
Palette Registers Hex 00 through Hex OF Format
Bit 7 6 5 4 3 2 1 0
Blue Video Green Video Red Video Secondary Blue/Mono Video Secondary Green/Intensity Secondary Red Video Not Used
Bit O-Bit 4
Attribute Address Bits-The Address Register is a pointer register located at hex 3CO. This register is loaded with a binary value that points to the attribute data register where data is to be written. The Attribute Controller does not have an address bit input to control selection of the address and data registers. An internal address flip-flop controls selection of either the address or data registers. To initialize the flip-flop, an lOR instruction is issued to the Attribute Controller at address 3BA or 3DA. This clears the flip-flop, and selects the Address Register. After the Address Register has been loaded, the
56 mM Enhanced Graphics Adapter
August 2, 1984
Bit 5
next OUT instruction loads the data register. The flip-flop toggles each time an OUT is issued to the Attribute Controller.
Palette Address Source-When loading the color palette registers, bit 5 must be cleared to O. To enable the memory data to access the color palette, bit 5 must be set to 1.
Palette Register Hex 00 through Hex OF
This is a write-only register. The processor output port is hex 3CO.
Attribute Address Register Format
Bit 7 6 5 4 3 2 1 0
1,--I_I_'I_I~.: AttributeAddress
11 ~
- Palette Address Source
'--..L..-_ _ _ _ _ _ _~ Not Used
Bit O-Bit 5 ·
Palette-These 6-bit registers allow a dynamic mapping between the text attribute or graphic color input value and the display color in the CRT screen. A logical 1 selects the appropriate color. A logical 0 de-selects. The color palette register should be modified only during the vertical retrace interval to avoid glitches in the displayed image. Note that some color monitors do not have an intensity input and only a maximum of eight colors are be available. Monitors with four color inputs display sixteen colors, and monitors with six color inputs display 64 colors.
August 2, 1984
IBM Enhanced Graphics Adapter 57
Mode Control Register
This is a write-only register pointed to by the value in the
Attribute address register. This value must be hex 10 before
writing can take place. The processor output port address for this
register is hex 3CO.
1""'""'.
Mode Control Register Format Bit 7 6 5 4 3 2 1 0
Graphics/Alphanumeric Mode
Display Type
Enable Line Graphics Character Codes Select Background Intensity Or Enable Blink
Not Used
Bit 0 Bit 1 Bit 2
Graphics/Alphanumeric Mode-A logical 0 selects selects alphanumeric mode. A logical 1 selects graphics mode.
Monochrome Display/Color Display-A logical
oselects color display attributes. A logical 1
selects IBM Monochrome Display attributes.
Enable Line Graphics Character Codes-When · this bit is set to 0, the ninth dot will be the same as the background. A logical 1 enables the special line graphics character codes for the IBM Monochrome Display adapter. This bit when enabled forces the ninth dot of a line graphic character to be identical to the eighth dot of the character. The line graphics character codes for the Monochrome Display Adapter are Hex CO through Hex DF.
For character fonts that do not utilize the line graphics character codes in the range of Hex CO
58 IBM Enhanced Graphics Adapter
August 2, 1984
Bit 3
through Hex DF, bit 2 of this register should be a logical O. Otherwise unwanted video information will be displayed on the CRT screen.
Enable Blink/Select Background Intensity-A logical 0 selects the background intensity of the attribute input. This mode was available on the Monochrome and Color Graphics adapters. A logical 1 enables the blink attribute in alphanumeric modes. This bit must also be set to 1 for blinking graphics modes.
Overscan Color Register
This is a write-only register pointed to by the value in the Attribute address register. This value must be hex 11 before writing can take place. The processor output port address for this register is hex 3CO.
~
Overscan Color Register Format
Bit 7 6 5 4 3 2 1 0
I I I
: Se'ec" B'"e Boede, Co'oe
Selects Green Border Color
Selects Red Border Color
Selects Secondary Blue Border Color
Selects Intensified or Secondary Green
Selects Secondary Red Border Color
Not Used
Bit O-Bit S
~
Overscan Color-This 6-bit register determines the overscan (border) color displayed on the CRT screen. For monochrome display this register should be set to a value of O. A logical 1 selects the appropriate color.
August 2, 1984
IBM Enhanced Graphics Adapter S9
Color Plane Enable Register
This is a write-only register pointed to by the value in the Attribute address register. This value must be hex 12 before writing can take place. The processor output port address for this register is 3CO.
Color Plane Enable Register Format Bit 7 6 5 4 3 2 1 0
Enable Color Plane Video Status MUX Not Used
Bit O-Bit 3 Bit 4-Bit 5
Enable Color Plane-Writing a logical 1 in any of bits 0 through 3 enables the respective display memory color plane.
Video Status MUX-Selects two of the six color ~ outputs to be available on the status port. The following table illustrates the combinations available and the color output wiring.
COLOR PLANE ENABLE REGISTER
Bit 5
Bit4
0
0
0
1
1
0
1
1
INPUT STATUS
REGISTER ONE
Bit 5
Bit 4
Red Secondary Blue Secondary Red Not Used
Blue
Green
Secondary Green
Not Used
Horizontal Pel Panning Register
This is a write-only register pointed to by the value in the
Attribute address register. This value must be hex 12 before ~ writing can take place. The processor output port address for this
register is hex 3CO.
60 IBM Enhanced Graphics Adapter
August 2, 1984
Horizontal Pel Panning Register Format
Bit 7 6 5 4 3 2 1 0
I I I I
I I
: Horizontal Pel Panning Not Used
Bit O-Bit 3
Horizontal Pel Panning-This 4 bit register selects the number of picture elements (pels) to shift the video data horizontally to the left. Pel panning is available in both A/N and APA modes. In Monochrome A/N mode, the image can be shifted a maximum of 9 pels. In all other A/N and APA modes, the image can be shifted a maximum of 8 pels. The sequence for shifting the image is given below:
9 pels/character: 8,0,1,2,3,4,5,6,7 (Monochrome A/N mode only)
8 pels/character: 0, 1,2,3,4,5,6, 7 (All other Modes)
August 2, 1984
IBM Enhanced Graphics Adapter 61
Programming Considerations
Progr~mming the Registers
Each of the LSI devices has an address register and a number of data registers. The address register serves as a pointer to the other registers on the LSI device. It is a write-only register that is loaded by the processor by executing an 'OUT' instruction to its
1/0 address with the index of the selected data register.
The data registers on each LSI device are accessed through a common I/O address. They are distinguished by the pointer (index) in the address register. To write to a data register, the address register is loaded with the index of the appropriate data register, then the selected data register is loaded by executing an 'OUT' instruction to the common I/O address.
The external registers that are not part of an LSI device and the Graphics I and II registers are not accessed through an address register; they are written to directly.
~
The following tables define the values that are loaded into the registers by BIOS to support the different modes of operation supported by this adapter.
62 IBM Enhanced Graphics Adapter
August 2, 1984
RI,lsllr
Mdl I' O,lrlllu
MImi Miscellaneous Feature Cntrl
hrl Idll
3C2 3?A -
Input Stat 0 3C2 -
Input Stat 1 312 -
= ? B in monochrome modes
0 1 2 3 4 5 6 7 0 E F 10 ~ 10; 0" I" 2" 3" 23 23 23 23 23 23 23 A6 23 23 A2 A7 A2 A7 A7 A7 A7 A7 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
-- --- --- - - - -- - - ---- --- - -- - - - -- - - - --
= ? D in color modes
'Values for these modes when the IBM Enhanced Color Display is attached
:Values for these modes when greater than 64K Graphics Memory is installed
External Registers
Rellllir
Midi I' 0plrllil.
Hlml Seq Address
hrl In.1I 0 1 2 3 4 5 6 7 0 E F 10 ~ 10: 0" I' 2' 3'
3C4 - - - - - - - - - - - - - - - - - - -
Reset
3C5 00 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03
Clock Mode 3C5 01 DB DB 01 01 DB DB 01 00 DB 01 05 05 01 01 OB OB 01 01
Map Mask 3C5 02 03 03 03 03 03 03 01 03 OF OF OF OF OF OF 03 03 03 03
Char Gen Sel 3C5 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Memory Mode 3C5 04 03 03 03 03 02 02 06 03 06 06 00 00 06 06 03 03 03 03
'Values for these modes when the IBM Enhanced Color Display is attached
:Values for these modes when greater than 64K Graphics Memory is installed
Sequencer Registers
August 2, 1984
IBM Enhanced Graphics Adapter 63
RIIII'er
Mlde It OPIIIIIII
Mimi Address Reg
Perl ··~u 0 I 2 3 4 5 6 7 0 E F 10 Ft 10: 0- I- 2- 3
3?4 - - - - - - - - - - - - - - - - - - -
Horiz Total
3?5 00 37 37 70 70 37 37 70 60 37 70 60 5B 60 5B 20 20 5B 58
Hrz Oisp End 3?5 01 27 27 4F 4F 27 27 4F 4F 27 4F 4F 4F 4F 4F 27 27 4F 4F
Strt Hrz Blk 3?5 02 20 20 5C 5C 20 20 59 56 20 56 56 53 56 53 2B 28 53 53
End Hrz Blk 3?5 03 37 37 2F 2F 37 37 20 3A 37 20 lA 17 3A 37 20 20 37 37
Strt Hrz Retr 3?5 04 31 31 5F SF 30 30 5E 51 30 5E 50 50 50 52 28 28 51 51
End Hrz Retr 3?5 05 15 15 07 07 14 14 06 60 14 06 EO 8A 6C 00 60 60 58 58
Vert Total
3?5 06 04 04 04 04 04 04 04 70 04 04 70 6C 70 6C 6C 6C 6C 6C
Overflow
3?5 07 11 11 11 11 11 11 11 IF 11 11 IF IF IF IF IF IF IF IF
Preset Row SC 3?5 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Max Scan Line 3?5 09 07 07 07 07 01 01 01 00 00 00 00 00 00 00 00 00 00 00
Cursor Start 3?5 OA 06 06 06 06 00 00 00 08 00 00 00 00 00 00 08 08 08 OB
Cursor End
3?5 OB
Strt Addr Hi 3?5 OC
Slrt Addr Lo 3?5 00
? = B in monochrome modes
07 07 07 07 00 00 00 DC 00 00 00 00 00 00 OC DC OC DC
- - - - - - - - - -- - - -- - - - - - - - - - - - - - - - -- - -
? = 0 in color modes
·Values tor these modes when the IBM Enhanced Color Display is attached
:Values tor these modes when greater than 64 K Graphics Memory is ins'alled
CRT Controller Registers (1 of 2)
~,
64 mM Enhanced Graphics Adapter
August 2, 1984
RI,labr
.I~I af Operltiln
NIIiI
I'Irt 11~1l 0 1 2 3 4 5 6 7 0 E F 10 F: 10: O' l' 2' 3'
Cursor LC Hi 3?5 OE - - - - - - - - - - - - - - - - - -
- Cursor LC Low 3?5 OF -
-- - - - - - - - - - - -- --
Vrt Retr Strt Light Pen Hi
3?5 10 El El El El El El EO 5E El EO 5E 5E 5E 5E 5E 5E 5E 5E
3?5 10 - - - - - - - - - - - - - - - - - ~
Vert Retr End 3?5 11 24 24 24 24 24 24 23 2E 24 23 2E 28 2E 28 28 28 28 28
Light Pen Low 3?5 11 - - - - - - - - - - - - - - - - - -
Vrt Oisp End 3?5 12 C7 C7 C7 C7 C7 C7 C7 50 C7 C7 50 50 50 50 50 50 50 50
Offset
3?5 13 14 14 28 28 14 14 28 28 14 28 14 14 28 28 14 14 28 28
Underline Loc 3?5 14 08 08 08 08 00 00 00 00 00 00 00 OF 00 OF OF OF OF OF
Strt Vert 81k 3?5 15 EO EO EO EO EO EO OF 5E EO OF 5E 5F 5E 5F 5E 5E 5E 5E
End Vert Blk 3?5 16 FO FO FO FO FO FO EF 6E FO EF 6E OA 6E OA OA OA OA OA
Mode Control 3?5 17 A3 A3 A3 A3 A2 A2 C2 A3 E3 E3 8B 88 E3 E3 A3 A3 A3 A3
Line Compare 3?5 18 FF FF FF FF FF FF FF FF FF H FF FF FF FF FF FF FF FF
= = ? B in monochrome modes ? 0 in color modes
'Values for these modes when the IBM Enhanced Color Display is attached
:Values for these modes when greater than 64K Graphics Memory is installed
CRT Controller Registers (2 of 2)
August 2,1984
mM Enhanced Graphics Adapter 65
RIglsler
Mldel' O,elllit.
Nlme Grphx I Pas Grphx II Pas Grphx I II AD
Pari Iidel 0 I 2 3 4 5 6 7 0 E F 10 P 10: 0 1 2 3
3CC - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 3CA - 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
- 3CE - - - - - - - - - - - - - - - - - -
Set Reset
3CF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Enable SIR 3CF 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Color Compare 3CF 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Data Rotate 3CF 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Read Map Sel 3CF 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Mode Register 3CF 05 10 10 10 10 30 30 00 10 00 00 10 10 00 00 10 10 10 10
Miscellaneous 3CF 06 OE OE OE OE OF OF 00 OA 05 05 07 07 05 05 OE OE OE OE
Color No Care 3CF 07 00 00 00 00 00 00 00 00 OF OF OF OF OF OF 00 00 00 00
Bit Mask
3CF 08 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
'Values for these modes when the IBM Enhanced Color Display IS attached
:Values for these modes when greater than 64 K Graphics Memory is installed
Graphics 81 Registers
66 IBM Enhanced Graphics Adapter
August 2, 1984
RI.llllr
.Idl I' O,lralll.
NIIII
flrt Ildll 0 1 2 3 4 5 6 7 0 E . F 10 F: m O' 1* 2* 3*
Address
3?A - - - - - - - - - - - - - - - - - - -
Palette
3CO 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Palette
3CO 01 01 01 01 01 13 13 17 08 01 01 08 01 08 01 01 01 01 01
Palette
3CO 02 02 02 02 02 15 15 17 08 02 02 00 00 00 02 02 02 02 02
Palette
3CO 03 03 03 03 03 17 17 17 08 03 03 00 00 00 03 03 03 03 03
Palette
3CO 04 04 04 04 04 02 02 17 08 04 04 18 04 18 04 04 04 04 04
Palette
3CO 05 05 05 05 05 04 04 17 08 05 05 18 07 18 05 05 05 05 05
Palette
3CO 06 06 06 06 06 06 06 17 08 06 06 00 00 00 06 14 14 14 14
Palette
3CO 07 07 07 07 07 07 07 17 08 07 07 00 00 00 07 07 07 07 07
Palette
3CO 08 10 10 10 10 10 10 17 10 10 10 00 00 00 38 38 38 38 38
Palette
3CO 09 11 11 11 11 11 11 17 18 11 11 08 01 08 39 39 39 39 39
Palette
3CO OA 12 12 12 12 12 12 17 18 12 12 00 00 00 3A 3A 3A 3A 3A
Palette
3CO DB 13 13 13 13 13 13 17 18 13 13 00 00 00 3B 3B 3B 3B 3B
= = ? B in monochrome modes ? 0 in color modes
'Values for these modes when the IBM Enhanced Color Display is attached
:Values for these modes when greater than 64K Graphics Memory is installed
Attribute Registers (1 of 2)
August 2, 1984
IBM Enhanced Graphics Adapter 67
Relisllr
M,dl " O,eralill
Nalle
Port 11'11 0 1 2 3 4 5 6 7 0 E F 10 F: 10: O· I' 2' 3'
Palette
3CO OC 14 14 14 14 14 14 17 18 14 14 00 04 00 3C 3C 3C 3C 3C
Palette
3CO OD 15 15 15 15 15 15 17 18 15 15 18 07 18 3D 3D 3D 3D 3D
Palette
3CO DE 16 16 16 16 16 16 17 18 16 16 00 00 00 3E 3E 3E 3E 3E
Palette
3eO OF 17 17 17 17 17 17 18 17 17 00 00 00 3F 3F 3F 3F 3F 3F
Mode Control 3CO 10 08 08 08 08 01 01 01 DE 01 01 OB OB DB 01 08 08 08 08
Overscan
3CO 11 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Color Plane
3CO 12 OF OF OF OF 03 03 01 OF OF OF 05 05 05 OF OF OF OF OF
Hrz Panning 3CO 13 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
·Values for these modes when the IBM Enhanced Color Display is attached
:Values for these modes when greater than 64K Graphics Memory is installed
Attribute Registers (2 of 2)
68 IBM Enhanced Graphics Adapter
August 2, 1984
RAM Loadable Character Generator
The character generator on the adapter is RAM loadable and can support characters up to 32 scan lines high. Two character generators are stored within the BIOS and one is automatically ~ loaded into the RAM by the BIOS when an alphanumeric mode is selected. The Character Map Select Register can be programmed to define the function of bit 3 of the attribute byte to be a character generator switch. This allows the user to select between any two character sets residing in bit plane 2. This effectively gives the user access to 512 characters instead of 256. character tables may be loaded off line.The adapter must have 128K bytes of storage to support this function. Up to four tables can be loaded can be loaded with 256K of graphics memory installed.
The structure of the character tables is described in the following figure. The character generator is in bit plane 2 and must be protected using the map mask function.
~
+OK +8K
+16K
Bit Plane 2
Character Generator 0
Character Generator 1
+32K
Character Generator 2
+48K
Character Generator 3
+64K
~
The following figure illustrates the structure of each character pattern. If the CRT controller is programmed to generate n row
August 2, 1984
mM Enhanced Graphics Adapter 69
scans, then n bytes must be filled in for each character in the character generator. The example assumes eight row scans per character.
Address
CC * 32 + 0
2 3 4 5 6 7
Byte Image
Data 18H 3EH 66H 66H 7EH 66H 66H 66H
CC = Value of the character code. For example, 41H in the case of an ASCII "A".
Creating· a 512 Character Set
This section describes how to create a 512 character set on the IBM Color Display. Note that only 256 characters can be printed on the printer. This is a special application which the Enhanced Graphics Adapter will support. The 9 by 14 characters will be displayed when attribute bit 3 is a logical 0, and the IBM Color/Graphics Monitor Adapter 8 by 8 characters will be displayed when the attribute bit 3 is a logical 1. This example is for demonstrative purposes only. The assembly language routine for creating 512 characters is given below. Debug 2.0 was used for this example. The starting assembly address is 100 and the ~ character string is stored in location 200. This function requires 128K or more of graphics memory.
70 IBM Enhanced Graphics Adapter
August 2, 1984
al00 movax,1102 mov bl,02 intl0
~ movax,1103 mov bl,08 intl0
movax,1000 mov bx,0712 intl0
movax,1301 mov bx,OOOF mov cx,003A mov dx,1600 mov bp,0200 push cs pop es intl0
~ mov ax ,1301 mov bx,0007 mov cx,003A mov dx,1700 mov bp,0200 push cs pop es intl0 int3
a200 db
;load 8x8 character font in character ;generator number 2
;select 512 character operation ;if attribute bit 3= 1 use 8x8 font ;if attribute bit 3=0 use 9x14 font ;set color plane enable to 7H to disable ;attribute bit 3 in the color palette ;lookup table
;write char. string with attribute bit 3=1 ;cx = character string length ;write character on line 22 of display ;pointer to character string location
;write char. string with attribute bit 3=0 ;cx = character string length ;write character on line 23 of display ;pointer to character string location
"This character string is used to show 512 characters"
Creating an 80 by 43 Alphanumeric Mode
The following examples show how to create 80 column by 43 row, both alphanumeric and graphics, images on the IBM Monochrome Display. The BIOS Interface supports an 80 column by n row display by using the character generator load routine call. The print screen routine must be revectored to
August 2, 1984
IBM Enhanced Graphics Adapter 71 .
handle the additional character rows on the screen. The assembly language required for both an alphanumeric and a graphics screen is shown below.
moval,7
intlO
movax,1112 mov bl,O
intlO
movax,1200 move bl,20
intlO int3
movax,f
intlO
movax,1123 mov bl,O mov di,2B
intlO
movax,1200 mov bl,20
intlO int3
;Monochrome alphanumeric mode ;video interrupt call ;character generator BIOS routine ;load 8 by 8 double dot character font ;video interrupt call ;alternate screen routine ;select alternate print screen routine ;video interrupt call
;Monochrome graphic mode ;video interrupt call ;character generator BIOS routine ;load 8 by 8 double dot character font ;43 character rows ;video interrupt call ;alternate screen routine ;alternate print screen routine ;video interrupt call
Vertical Interrupt Feature
The Enhanced Graphics Adapter can be programmed to create an
interrupt each time the vertical display refresh time has ended.
An interrupt handler routine must be written by the application to
take advantage of this feature. The CRT Vertical interrupt is on
IRQ2. The CPU can poll the Enhanced Graphics Adapter Input
Status Register 0 (bit 7) to determine whether the CRTC caused
the interrupt to occur.
The Vertical Retrace End Register (11H) in the CRT controller
contains two bits which are used to control the interrupt circuitry. ~ The remaining bits must be output as per the value in the mode
table.
72 IBM Enhance,d Graphics Adapter
August 2, 1984
Bit 5
Enable Vertical Interrupt-A logical 0 will enable vertical interrupt.
Bit 4
Clear Vertical Interrupt-A logical 0 will clear a vertical interrupt.
The sequence of events which occur in an interrupt handler are outlined below.
1. Clear IRQ latch and enable driver 2. Enable IRQ latch 3. Wait for vertical interrupt 4. Poll Interrupt Status Register 0 to determine if CRTC has
caused the interrupt 5. If CRTC interrupt, then clear IRQ latch; if not, then branch
to next interrupt handler. 6. Enable IRQ latch 7. Update Enhanced Graphics Adapter during vertical blanking
interval 8. Wait for next vertical interrupt
Creating a Split Screen
The Enhanced Graphics Adapter hardware supports an alphanumeric mode dual screen display. The top portion of the screen is designated as screen A, and the bottom portion of the screen is designated as screen B as per the following figure.
Screen A
Screen B
Dual Screen Definition
The following figure shows the screen mapping for a system containing a 32K byte alphanumeric storage buffer. Note that the Enhanced Graphics Adapter has a 32K byte storage buffer in alphanumeric mode. Information displayed on screen A is
August 2, 1984
mM Enhanced Graphics Adapter 73
defined by the start address high and low registers (OCH and ODH) of the CRTC. Information displayed on screen B always begins at address OOOOH.
OOOOH r - - - - - - - ,
Screen B Buffer Storage Area OFFFH 1 - - - - - - - - - 1 1000H
Screen A Buffer Storage Area 7FFFH L -_ _ _ _ _- '
Screen Mapping Within the Display Buffer Address Space
The Line Compare Register (18H) of the CRT Controller is
utilized to perform the split screen function. The CRTC has an
internal horizontal scan counter, and logic which compares the
horizontal scan counter value to the Line Compare Register value
and clears the memory address generator when a compare occurs.
The linear address generator then sequentially addresses the
display buffer starting at location zero, and each subsequent row
address is is determined by the 16 bit addition of the start of line
latch and the offset register.
~
Screen B can be smoothly scrolled onto the CRT screen by updating the Line compare in synchronization with the vertical retrace signal. The information on screen B is immune from scrolling operations which utilize the Start Address High and Low registers to scroll through the Screen A address map.
Compatibility Issues
The CRT Controller on the IBM Enhanced Graphics Adapter is a custom design, and is different than the 6845 controller used on the IBM Monochrome Monitor Adapter and the IBM Color/ Graphics Monitor Adapter. It should be noted that several CRTC register addresses differ between the adapters. The following figure illustrates the registers which do not map directly across the two controllers.
74 mM Enhanced Graphics Adapter
August 2, 1984
Register 02H 03H 04H OSH 06H 07H 08H
6485 Function Start Horiz. Retrace End Horiz. Retrace Vertical Total Vertical Total Adjust Vertical Displayed Vertical Sync Position Interlace Mode and Skew
EGA CRTC Function Start Horiz. Blanking End Horiz. Blanking Start Horiz. Retrace End Horiz. Retrace Vertical Total Overflow Preset Row Scan
Existing applications which utilize the BIOS interface will generally be compatible with the Enhanced Graphics Adapter.
Horizontal screen centering was required on the IDM Color/Graphics Monitor Adapter in order to center the screen when generating composite video. This was done through the Horizontal Sync Position Register. Since the Enhanced Graphics Adapter does not support a composite video monitor, programs which do screen centering may cause loss of the screen image if centering is attempted.
The Enhanced Graphics Adapter offers a wider variety of displayable monochrome character attributes than the IBM Monochrome Display Adapter. Some attribute values may display differently between the two Adapters. The values listed in the table below, in any combinations with the blink and intensity attributes, will display identically.
Background R G B
0 0 0 0 0 0 0 0 0 1 1 1
Foreground RG B
0 0 0 00 1 1 1 1 00 0
Function
Non·Display Underline White Character/Black Background Reverse Video
~ Software which explicitly addresses 3D8 (Mode Select Register) or 3D9 (Color Select Register) on the Color Graphics Monitor Adapter may produce different results on the Enhanced Graphics Adapter. For example, blinking which is disabled by writing to 3D8 on the Color Graphics Adapter will not be disabled on the Enhanced Graphics Adapter.
August 2, 1984
mM Enhanced Grapbics Adapter 75
Interface
Feature Connector
The following is a description of the Enhanced Graphics Adapter feature connector. Note that signals coming from the Enhanced Graphics Adapter are labeled "inputs" and the signals coming to the Enhanced Graphics Adapter through the feature connector are labeled "outputs".
Signal
Description
J2
This pin is connected to auxiliary jack 2 on the rear
panel of the adapter.
R'OUT Secondary red output
ATRS/L Attribute shift load. This signal controls the
serialization of the video information. The shift
~
register parallel loads at the dot clock leading edge
when this signal is low.
GOUT Primary green output
R'
Secondary red input
R
Primary red input
FC1
This signal is input from bit 1 (Feature Control Bit
1) of the Feature Control Register.
FCO
This signal is input from bit 0 (Feature Control Bit
0) of the Feature control Register.
FEAT 0
This signal is output to bit 5 (Feature Code 0) of Input Status Register O.
B'/V
Secondary blue input/Monochrome video
VIN
Vertical retrace input
76 mM Enhanced Graphics Adapter
August 2, 1984
Internal
This signal is output to bit 4 (Disable Internal Video Drivers) of the Miscellaneous Output Register.
V OUT Vertical retrace output
~ Jl
This pin is connected to auxiliary jack 1 on the rear panel of the adapter.
G'OUT Secondary green output
B'OUT Secondary blue output
BOUT Blue output
G
Green input
B
Blue input
ROUT Red output
BLANK
~
FEAT 1
This is a composite horizontal and vertical blanking signal from the CRTC.
This signal is output to bit 6 (Feature Code 1) of Input Status Register O.
G'/I
Secondary green/Intensity input
HIN
Horizontal retrace input from the CRTC
14MHZ 14 MHz signal from the system board
EXTOSC External dot clock output
HOUT Horizontal retrace output
August 2, 1984
mM Enhanced Graphics Adapter 77
The following figure shows the layout and pin numbering of the feature connector.
Signal Name Gnd
+12V
Signal Name
1
2 ......... .....
-12V
J1
J2
G'OUT
R'OUT
B'OUT
ATRS/L
BOUT
GOUT
G
R'
B
R
ROUT
FEAT 1
BLANK
FEAT 0
FC1
FCO
G'/I
B'/V
HIN
VIN
14MHz
Internal
EXTOSC
VOUT
HOUT
GND
31 32
+5V
'" '"
Feature Connector Diagram
78 IBM Enhanced Graphics Adapter
August 2, 1984
Specifications
~ System Board Switches
The following figure shows the proper system board DIP switch settings for the IBM Enhanced Graphics Adapter when used with the Personal Computer and the Personal Computer XT. The switch block locations are illustrated in the Technical Reference Manual "System Board Component Diagram". The Personal Computer has two DIP switch blocks; the switch settings shown pertain to DIP Switch Block 1. The Personal Computer XT has one DIP switch block.
1 234 5 6 7 8
~DDDD~~DD
Switch Block (1 )
Note: The DIP switches must be set as shown whenever the IBM Enhanced Graphics Adapter is installed, regardless of display type. This is true even when a second display adapter is installed in the system.
August 2, 1984
mM Enhanced Graphics Adapter 79
Configuration Switches
The following diagram shows the location and orientation of the configuration switches on the Enhanced Graphics Adapter.
Optional Graphics Memory Expansion Card
Off On
80 mM Enhanced Graphics Adapter
August 2, 1984
Configuration Switch Settings
The configuration switches on the Enhanced Graphics Adapter determine the type of display support the adapter provides, as follows:
Swllch SellinIS for Enhanced Graphics Adapler II Primary Dlsplav Adapler
COlflgurall..
SWI SW2 SW3 SW4
Enhlced Adapler
M'Rlc~rome
Adapler
On Off Off On Color Display
40x25
Secondary
Off Off Off On Color Display
80x25
Secondary
On On On Off Enhanced Display Emulation Mode
Secondary
Off On On Off Enhanced Display Hi Res Mode
Secondary
On Off On Off Monochrome
-
Off Off On Off Monochrome
-
Color/Graphics Adapler
-
-
-
-
Secondary
40x25
Secondary
80x25
August 2, 1984
mM Enhanced Graphics Adapter 81
S.ltc' S,IIIIII fir E.hllCd Gr.phlcs Ad'pt,r .. S,cIRd.ry Dllpl.y Ad'pt,r
SWI SW2 SW3 SW4
E.h··ced Ad'pt,r
e,.flIUnU··
M··,ch,..,
Ad'pter
On On On On Color Display 40x25
Primary
Off On On On Color Display 80x25
Primary
On Off On On Enhanced Display Emulation Mode
Primary
Off Off On On Enhanced Display Hi Res Mode
Primary
On On Off On Monochrome
-
Off On Off On Monochrome
-
e,l,r/Gnphlcs Ad'pter
-
-
-
-
Primary 40x25 Primary 80x25
82 mM Enhanced Graphics Adapter
August 2, 1984
Direct Drive Connector
9- Pin Direct Drive Signal
Direct Drive Display
Signal Name· Description Ground Secondary Red Primary Red Primary Green
Primary Blue
Secondary Green/Intensity Secondary Blue/Mono Video Horizontal Retrace Vertical Retrace
Pin 1 2 3 Enhanced Graphics Adapter 4 5 6 7 8 9
August 2, 1984
mM Enhanced Grapbics Adapter 83
Light Pen Interface
P-2 Connector
Light Pen Attachment
P-2 Connector +Light Pen Input Not used +Light Pen Switch Ground +5 Volts 12 Volts
Pin
1 2 Enhanced
Graphics Adapter 3 4 5
6
84 IBM Enhanced Graphics Adapter
August 2, 1984
Jumper Descriptions
Located on the adapter are two jumpers designated PI and P3. Jumper PI changes the function of pin 2 on the direct drive interface. When placed on pins 2 and 3, jumper PI selects ground as the function of direct drive interface, pin 2. This selection is for displays that support five color outputs, such as the mM Color Display. When PI is placed on pins 1 and 2, red prime output is placed on pin 2 of the direct drive interface connector. This supports the mM Enhanced Color Display, which utilizes six color outputs on the direct drive interface.
Jumper P3 changes the I/O address port of the Enhanced Graphics Adapter within the system. In its normal position, (pins 1 and 2), all Enhanced Graphics Adapter addresses are in the range 3XX. Moving jumper P3 to pins 2 and 3 changes the addresses to 2XX. Operation of the adapter in the 2XX mode is not supported in BIOS.
The following figure shows the location of the jumpers and numbering of the connectors.
August 2, 1984
mM Enhanced Graphics Adapter 85
86 mM Enhanced Graphics Adapter
August 2, 1984
Logic Diagrams
ENHANCED GRAPHICS ADAPTER
1111111111111111
~--i
~--~
~--~ ~i;1~2~i~i
; a---4 ~
I!!~d~
~
~III
I
-.. c:I
t..:
.
"~.r",
........J:
II)
.C..I.
."'1:1
c:(
:..'Cs"....I.
..c:J
"'1:1
.c.:.
.cJ::
W
"5 S
~=:;:H:;~
. · II
~
~"II.
W i
~
~
· ;si
: ·
Ct::-
Li'~
4,
,
August 2, 1984
IBM Enhanced Graphics Adapter 87
ENHANCED GRAPHICS ADAPTER
~~~~
~~:;""j~~
~ ~~ ~a
. " c
.;
~
~ ~ ~
'~" ~
II
I~
u
. .. . ~{ , ,- , ~
~ ,
-
. ~ H' 3
~
%~ .-(
I~~I~ ~: ::::'::::~~
:;N :; g~ t:'iA
Jr
~e ~
BJ:
,
..
Q u
lC ~
. ~ ~i U-..
~d~~
! :r/<'
.Q QC- 'C" 'C"
;~I~~
fa ~ I~
~
-- -
~~
:i.:.:
.
......
';
N
~i..
i~
."'CI
<C
'"
:iii
Do
l!!
CI
..1
c:: .c c:: W
:t ~I . . ~ ; ~ ~ := ~ ~ ·pt.~
- . .1"
!I I;
II
.a~
~
d
~~~I~li
·80· ·~ I...i.
~
~~m
~-~
88 mM Enhanced Graphics Adapter
August 2, 1984
)
t >
. ~
..
\C
::
g~ ;
3:
ttrl
~
ctD .
~
i ~
>tfI}
i
~
SHT2 SHT 2
_HUX
t1UX
SHT 2 SHT 2 5,.T& SHT"i SHT I SHT4 ~. SHT4 SHIT I
SHT I
CRT/CPU
-Ccu<
GRAPHICS
SREFAOR RESET
rI!TiOR
~ (RllOW
:g~
BDZ 801 BOO BD~ BOb B07
"HTO LPSTB
)
q SID 10 UO;
=HAD
HA1
~:~
~A7
f===<!~i:HA'I2~~~~~
HAil
A
)
~
~
m
C
C')
:=:ct
:z:
1 5HT'I.&.11
n
~
JI!'
C
~
SHT 4.6.11
.).:.0..
'1AI4
SHT 2
:ma
HAl')
SHT 2
g_v
10 I.
. BAD
ttAI MA2
, ZD 17 3D
2Q 3Q
~
BAI BA2
40!fQ
A,
~M:A~If
I;g;g ~ "i0U22 C;Q
'" b
MA7
An At::. q
1
~-- BAI
11'E--1lAO -- BAl
--BA>
===:~:
8A7
SHT 4,C),7,11
RSO
I I
~ HMAAI'O.
m 1,7 ' "10
~ ' . ')Q
I2t>
M::i 14 ~Uq ~~
MAl;
1 ~n ~n b
ISHT;
SHT,)
Enhanced Graphics Adapter Sheet 3 of 11
ENHANCED GRAPHICS ADAPTER
_ _ !C~ .....
.I.ill, 1.1.~
~
I~:i~
ii~i----
mii
90 mM Enhanced Graphics Adapter
I~ 1~~li~
i i ~i
August 2, 1984
ENHANCED GRAPHICS ADAPTER
,
,
~~~~
~
~~~~~:!:
I~
II
~
111111
I ~~~~~2~~
~ e'R.3~fiij!~:=~d~
.--1-
~
g
~~ III ·
= g
~r-; I I I .
August 2, 1984
~ gg~g
z: E:z:::t:
4444
a~~* ~
i!2 IEi~
I~
~N
,~
%%
%
~~
.. a
"
% ~
mM Enhanced Graphics Adapter 91
'C
~
;;
SHT I SOD
:.::
f
SOl
I SOl BD'
S"" SO,
BOb 5HTI BD7
n
~
SHT 2 eN LATCH
CI.
CRT LATCH
fe:
n
[IJ
1
SHT2
DOTClK
S/L WE
T (,RAf't-lICSIOW VHEMR(Z) AD
>
5HT4 AT
t .
U'"
, 00
4 01 , DZ
b 0'
, '"7 ""
q Db 07
CO 22
(1 21 GPO 12 GPI II
10 GNO
,I GN 40 VOO
SHT, AAD
AAI
f~..
I AAZ A.,
AA4
AA'
AAb SHT 1 AA7
SHTZ RASO
t =!lAST
SHTZ WE
~ QO
01:1.
)
r
1l"lSlf41b
IHStt41b
Enhanced Graphics Adapter Sheet 6 of 11
)
CO
SHT 8
co
SH18
GRAPHICS SHI 1,t;
m Z
::c
CHAIN 5HT4
:to
MODO MODI H002 MOD1 1"1004 MOD') HOOf>
SHl,>,11
) I
Z
n m
C
CO)
:tI
1"1001 SHT'i,11
:to
:"':CcI
nen
:cto :to
"'CI
-t m
:tI
M I DO MIDI HI02
H 101 NI04 MI DC; HI Db HI07
SHT 8.11 5HT 8.11
SHT 8.11
SHT 2.8.11 5HT8,II 5HT8,II 5HT8,II 5HT8,11
)
ENHANCED GRAPHICS ADAPTER
1011).73 ............. 1 %::J: X::J: VIlli VI VI
.. .
,;--,;
IIIIII
IIIIII
4
,......--------.li
:o ;
4
-- ,......--------,1 ~ 4 0
!1~i~mrJJ !j,... ,.; ~ Tit
~ N,.. ggSg!i;(~~~~~~ I=I~BM.!)
'''-l.
:c
Do
I!
c.::I
1.c..
.wcc
~g~~~gg~
----
a--~
~~3
:'I Vw gi58;::'~ ~~a
II~lillll'l
~-~
IIIIII
August 2, 1984
mM Enhanced Graphics Adapter 93
ENHANCED GRAPHICS ADAPTER
__. . ~
~
~
~
",,' ala: ~ ~
J J
~ ~,., ~
I~ ~Q~:;~~ 5·~~ ~E~~ 121g
~!!~::::~~:::~ =!?:!:':N"'II".o
94 IBM Enhanced Graphics Adapter
August 2, 1984
)
)
>
t..~ ..
.
...
\C
QO
sa
3:
I
fe:
fA
f
\C UIi
~:.u: '"1" >our G'OOT ,'O.UUTT
'OUT SHT 10 HOUT
SHY · SH' ,
""""N"t
...,,' SHY'
SHY , 'S'N(
· HY ·
·,(j'1I
I j
· '''v
W
.SHYB
... SHY ,
I .0.0,'
'" SHY ,
SHY , HIO.".
I ....... SHY ,
..",
..'".."."...
---
~
1
1
,.".....,..
I o;LSO't t>
"TO ....Y
. ~) US
7ltLS8b
~r-;; 1
"..."
~~ Ilt;~2:A~1
zn"
u:~ 1
If tAl UI 18
,'D.O,
elP;~ .' It 10
1
II ::: ::~ le Al ,.... q t=--
,0.0,2
12 2D lQ't.
,. , ~ :: Ullq (
~1~IJn~ IQZ
802
710 lOS
\-:::fi==::i! '~"D
~!g0;0
:~~2 lOt>
'+1.1
II
IIQ 1'1
'----I'f
1> I, I' I'1I' I' I' J'
.,.2
...,,
",~
..--
,
.,,
, ,
r~
q PIN [)-TYP£ (C»IN£(TOII
, , , '0+<; RPI t> PIN SIP
rl'l
LSltt7
2~
5HT 10 SHT 10
SHY , SHY ,
SHY ,
"'Y. ff~1
CATJNT STATUS I
UVT
. I"''''
~.~10 I 12
;~ ~
1r 7 8Dt. itT II eOl
" "" ~~ 11 eOI
.. II'>
1 I
"
SHT "
~ATRICA ==============================================================-______J
Enhanced Graphics Adapter Sheet 9 of 11
)
Ii IN SHT 10 YIN SHT 10
m z
:::c
lz>
n m
CI
G)
:::a l->a
n=en=
l>
CI
l>
~
m
:::a
FeO SHT 10
Fe t SHT 10
MONO J<lNITOR
SHT ..
RAM EKABLE
SHT "
elK SEL 0 SHT.2
elK SEL I SHT.2
INTatNAL
SHT 10
PGsEL SHT ..
Ii POL
SHT II
Y POL SHT <)
' :g~ SMT j 90b
R07 SHT I
LPUI STS SHY 1
\C
~
;;
~
sf.
~
1:
Il
f
SHT q
FCO
SHT q
FCI
ii .··R. em
SHY ·
BYV
SHT I SHr q
SHT ·
''II1HZ
"IN
YIN
SHT ~ BLAN.
SHT 2 AlRsii:
+~Y
SHT q INTERNAL
+12Y
-12V
.G1H1D>
-
-
[. J2
EXT VIDEO
21
,.
20
17
I
2.
12
I.
"I~
22
2~
-.n 24
J4
*,,-
'·0
2~
2'
·I.
~2
27
~
2
~I
FEATURE CONNECTOR
i~ ..
NOTE:
...\C
QO
I GRDUNOS- ONE AT EACH END OF CONNECTOR.
Enhanced Graphics Adapter Sheet 10 of 11
)
)
,
JI VIDEO JACK
m
:Z:z:
lz>
n m
FEAT 0 SHT q
C
FEAT I SHT q
EXT OSC SHT 2
R our SHT ·
~
::u
GOUT
BOUT R'OUT G'our B'our HOUT
II
l>
c:"':1z::1;1:
en
YOUT SHT ·
lc>
l>
~
m
::u
)
ENHANCED GRAPHICS ADAPTER
I~
-o
.t>
...e.nc
.
:=l.
-=c:(
.!'"!
..=c. ~
.~
-.=..
.C..
..c c
W
August 2, 1984
----------"'____ N
IBM Enhanced Graphics Adapter 97
-~
Or>
3=:
f
f') (l)
Q.
~
~ e:
f') fI.I
f..
{
~
...~
Or>
SHT. "ODD
I "DOl "002 "DOl "ODO "DDS
"Ollb SHT. "007 SHT ~ "100
I "101 "ID2 "101 "IDO "IO~ "lOb SHT ~ "107 SHT 6 "200
I "201 "202 "201
"20" "20~ "206 SHT 6 PIl07 SHT 7 "100
I "101 "102 "101
"10.
"10~
"106 SHT 7 "107
+~V
-+
f···+
(1-(16 ·Olf7.. F
IO(l1lF:++ IOCIJI.F~++ 10(.1.,:++
.2 OJ <0 1.
17 16
11
27
PI
2H2
·
2 21
20
10 18 I 16
'1"1
II 10 t.'t
P.!
61 b2
~q
0 7 o;e
~~
· 8
7 6
· S
1
··~I·
~
.·.~e,·1 ~ "'
~2
+yV
f;:~21AIA I lA
IV
n2V
'V
6A
U ·
_
'''LSO''
Graphics Memory Expansion Card Sheet 1 of 5
)
)
rn
Z
z»%
nrn
CI
c;,
AAO
SHT ",-;
AAI AA2 AAl AA<
AA~
I
»::rJ
-a
%
nen
AA6
AA7
SHT "t,e;
»
BAD
SHT 6,1
BAI
BA2 BAl BA.
BA~
I
»-CaI
-rnt
::rJ
BAb
".1) BA7
SHT b.1
ACAS I ACAS2
SHT SHT
".1:)
ACASl SHT It,e;
B CAS I SHT6,7
B CAS 2 5HT 6,7
B CAS 1 SHT 6,7
RAS 0 SHT If
RAS I SHT ~
RAS2 SHT b
RAS 1 SHT 1
ill WET tin lin
SHT If SHT ~ SHT 6
SHT 7
)
ENHANCED GRAPHICS ADAPTER
J _r" N
· ~
;~
F'
~1..j~I*I"=m ."
JJu .-r"
·+
~~
"
~1ll"= ~ 0
J -r" N
· +
;o~:
!! "
=m." ~1"i~1~1"1"
-r' JJbr
· ~
3~
"
~lj1lr= ."
J l' N
l' ",I~I
· ~
;m~;
· ~
" ~
.~ ;~
!!
." ~1"i~1~r-1"=
~1TI"= ."
August 2, 1984
mM Enhanced Graphics Adapter 99
ENHANCED GRAPHICS ADAPTER
O_N .... .T .... -Dr
0- -0 -0-0-0-0-0-0
J l'
t N~<I~r
· ,
"~ ,;
. · S~
·
"
"
-1-1'1<1* .~
- ~1'I~r .g
J l'
. · "-N~,,
"
-1~I'I"I'1~ = .... ""~
1" N4L
, ·
~~
:;!
·
"
~1'mr .0
l J
~ ·
o~
£t;
"
-1+1<19~- ..... "":::
l N<I~I
, ·
N,
",
·
"
-Itnr- .g
-II)
CI
M
i;
.'c"
CI)
......
ro
(.)
.CI .
';n
r-....
ro
1:1.
)(
ILl
r:
CI
E
:'E"
:'u="
1:1. ro
c!i
~~~
~~~:i~~:;(~~~~~;(
100 IBM Enhanced Graphics Adapter
August 2, 1984
ENHANCED GRAPHICS ADAPTER
J X'" ~
~
+ ·
~f
~
·n'I'I"I':G.... ..09
.. ~ . -r" ,.<Iel .
. ,~
11'111~=
J -1'" ~.
... + ·
sj
'11'149~= ·9
_I" ~.JJ
~
+ ·
!!::R
.
,~
J1'1]l .... "'2
J _I" N.
~. ~::!
.
'i
"
·11'149' : "''''2
--1'" ~. el
~+ ·
~::!!
..
,~
J1'lrl~- ."
. ~-"~'~''i''~''~...:. c~;;t';frc
~~auli~-~
August 2, 1984
mM Enhanced Graphics Adapter 101
ENHANCED GRAPHICS ADAPTER
J J-1> N~
~
+ ·
5J
·
~n'l~r-I~=z og
. -r' N~ d
~
+ ·
S;$
:rnzlr ' g
J -r' N~
~J
·
IY z 'l'1'I'FI~" 02
_~. N~~br
~
+ ·
e , J~
~
:fI'I]l= ,,
J J-I' N
IY ~,J~
·
'11'1'1~1' = 02
. -r' N~ el
+ ·
~:
'l~rIJI~= 0
102 IBM Enhanced Graphics Adapter ..
August 2, 1984
BIOS Listing
~ Vectors with Special Meanings
Interrupt Hex 42 - Reserved
When an IBM Enhanced Graphics Adapter is installed, the BIOS routines use interrupt 42 to revector the video pointer.
Interrupt Hex 43 - IBM Enhanced Graphics Video Parameters
When an IBM Enhanced Graphics Adapter is installed, the BIOS routines use this vector to point to a data region containing the parameters required for the initializing of the IBM Enhanced Graphics Adapter. Note that the format of the table must adhere to the BIOS conventions established in the listing. The power-on ~ routines initialize this vector to point to the parameters contained in the IBM Enhanced Graphics Adapter ROM.
Interrupt Hex 44 - Graphics Character Table
When an IBM Enhanced Graphics Adapter is installed the BIOS routines use this vector to point to a table of dot patterns that will be used when graphics characters are to be displayed. This table will be used for the first 128 code points in video modes 4,5, and 6. This table will be used for 256 characters in all additional graphics modes. See the appropriate BIOS interface for additional information on setting and using the graphics character table pointer.
August 2,1984
mM Enhanced Grapbics Adapter 103
1
PAGE,12O
2
TITLE ENHANCED GRAPHICS ADAPTER 810S
3 4
EXTRN CGHN:NEAR, CGDDOT:NEAR, INT_1F_l:NEAR. CGHN_FDG:NEAR EXTRN EHD_ADDRESS: NEAR
5
·7
·9
THE B I as ROUT I NES ARE MEANT TO BE ACCESSED THROUGH SOFTWARE rNT£RRUPTS ONLY. ANY ADDRESSES PRESENT IN
THE LISTiNGS ARE INCLUDED ONLY FOR COMPLETENESS,
10
NOT FOR REFERENCE. APPLICATIONS WHICH REFERENCE
11
ABSOLUTE ADDRESSES WITH I Pi THE CODE SEGMENT
,.
12
13 14
"
17
18 19 20
-------V--IO-L-A-T-E---TH-E---S-TR-U-C--TU-R-E---AN-D---D-E-S-IG-N---O-F--B-IO--S-. ----------------
.LIST
c c c c c
I NGLUDE
VFRONT. I Ne
5UBTTL VFRONT. I Ne
PAGE
a_a. __________ ·____ _ I NT 10 - -- --- - ---------- - -- _____________________
21
c
VIDEO_IO
22 23
2.24
25
c c c c c
27
c
TH(SE ROUTINES PROVIDE THE CRT INTERfACE
THE FOLLOWING fUNCTIONS ARE PROVIDED:
(AH)"=O SET MODE (AL) CONTAINS MODE VALUE
AL AD TYPE
RES
NOTES OF-DIM DISPLAY
..... PGS
26
c
29
c
30
c
31
c
32
c
33
c
34
c
335.
c c
* 0 B8 * 1 86
2 B8 3 86
4 8. 5 8. 6 66 · 7 80
ALPHA ALPHA ALpHA ALPHA GRPHX
GRPHX GRPHX ALPHA
640X200 640X200 640X200 640X200 320X200 320X200 640X200 720X350
40X25 40X25 80X25 80X25 40X25 40X25 80X25 80)(25
COLOR - BW
COLOR
COLOR - BW
COLOR
COLOR COLOR - BW COLOR - BW MONOCHROME
37
c
36 39 40
c c c
RESERVED
RESERVED
RESERVED
RESERVED -
I NTERNAL USE
441.
c c
RESERVED - I NTERAAL USE
43
c
44
c
445.
c c
47
c
OM
E AD f AO 10 AI)
GRPHX GRPHX GRPHX GRPHX
320X200 640)(200
640X350 640X350
40X25 80X25 80X25 80X25
COLOR COLOR MONOCHROME HI RES
4'54016'
c c c c
NOTE: HIGH BIT AL SET PREVENTS REGEN BUFFER CLEAR ON MODES RUNNING ON THE COMBO VIDEO ADAPTER
52 53
54
c c c
*** NOTE Bioi MODES OPERATE SAME AS COLOR MODES, BUT COLOR BURST 15 NOT ENABLED SET CURSOR TYPE
555.
c c
.,,957
56
.0
6..342
C C C C C C C
C
(AH)=2 (AHI=3
(CH) = BITS 4-0 '" START LINE FOR CURSOR
** HARDWARE WILL ALWAYS CAUSE BLINK ** SETTING BIT 5 OR 6 WILL CAUSE ERRATIC
= (CL)
BLINKING OR NO CURSOR AT ALL 81TS 4-0 = END LINE FOR CURSOR
SET CURSOR POSITION
(DH,DL) == ROW,COLUMN (0,0) IS UPPER LEFT
I BH) = PAGE NUMBER
READ CURSOR POSITION
(BH) == PAGE NUMBER
...6765.
C
C C
C
(AH)=4
ON EXIT (DH,DL) == ROW,COLUMN OF CURRENT CURSOR (CH,CL) == CURSOR MODE CURRENTLY SET
READ LIGHT PEN POSITION
ON EXIT:
69
C
(AH) = 0 -- LIGHT PEN SWITCH NOT DOWN/NOT TRIGGERED
70
C
{AH} = 1 -- VAll 0 LIGHT PEN VALUE I N REG I sTERS
71
C
(DH,DL) '" ROW,COLUMN OF CHARACTER LP POSN
72
C
(CHI = RASTER LINE (0-199)
73
C
(CX) == RASTER LINE (O-NNN) NEW GRAPHICS MODES
7.74
75
C C C
(BX) == PIXEL COLUMN (0-319,639) (AHI=5 SELECT ACTIVE DISPLAY PAGE
(ALI = NEW PAGE VALUE, SEE AH=O FOR PAGE INFO
77
C
('\H)=6 SCROLL ACT IVE PAGE UP
76
C
(AL) = NUMBER OF LINES, INPUT LINES BLANKED AT BOTTOM
"60
C C
61
C
62
C
OF WINDOW
AL'" 0 MEANS BLANK ENTIRE WINDOW
(CH,CL) '" ROW,COLUMN OF UPPER LEFT CORNER OF SCROLL
or (DH,OLJ '" ROW,COLUMN OF LOWER RIGHT CORNER
SCROLL
.643
C C
(BH) '" ATTRIBUTE TO BE USED ON BLANK LINE (AH)=7 SCROLL ACT I VE PAGE DOWN
65
C
(AL) '" NUMBER OF LINES, INPUT LINES BLANKED AT TOP
6.
C
OF WINDOW
667.
C C
AL ::: 0 MEANS BLANK ENT I RE WINDOW (CH,CL) = ROW,COLUMN OF UPPER LEFT CORNER OF SCROLL
69
C
(DH,DLI ::: ROW,COLUMN Of LOWER RIGHT CORNER OF SCROLL
90
C
(8H) = ATTRIBUTE TO BE USED ON BLANK LINE
91
C
92
C
CHARACTER HANOU NG ROUT I NES
93
C
9.94
95
C C C
(AH) '" 8 READ ATTRIBUTE/CHARACTER AT CURRENT CURSOR POSITION (BH) = DISPLAY PAGE ON EXIT:
97
C
( AL I = CHAR READ
96
C
(AH) '" ATTRIBUTE OF CHARACTER READ (ALPHA MODES ONLY)
99
C
(AH) = 9 WRITE ATTRIBUTE/CHARACTER AT CURRENT CURSOR POSITION
100
C
(8H) '" DISPLAY PAGE
101
C
102
C
(CXI ::: COUNT OF CHARACTERS TO WRITE
(AL) = CHAR TO WRITE
103
C
(BL) '" ATTRIBUTE OF CHARACTER (ALPHA)/COLOR Of CHAR
104
C
(GRAPHICS)
105
C
SEE NOTE ON WRITE DOT FOR BIT 1 OF BL '" 1.
10.
C
107
C
(AH) '" A WRITE CHARACTER ONLY AT CORRENT CURSOR POSITION
(BH) = DISPLAY PAGE
108
C
(CX) = COUNT OF CHARACTERS TO WRITE
109
C
(AL) := CHAR TO WRITE
110
C
FOR READ/WRITE CHARACTER INTERFACE WHILE IN GRAPHICS MODE, THE
111
C
CHARACTERS ARE fORMEO FROM A CHARACTER GENERATOR IMAGE
112
C
MAINTAINED IN THE SYSTEM ROM. ONLY THE 1ST 128 CHARS
113
C
ARE CONTAINED THERE. TO READ/WRITE THE SECOND 128
:
1'14
C
CHARS, THE USER MUST INITIALIZE THE POINTER AT
:
115
C
INTERRUPT 1FH (LOCATION 0007CH) TO POINT TO THE lK BYTE :
11.
C
TABLE CONTAINING THE CODE POINTS FOR THE SECONO
:
117
C
128 CHARS (128~255).
116
C
119
C
FOR THE NEW GRAPHICS MODES 256 GRAPHICS CHARS ARE
120
C
$UPPLI ED I N THE SYSTEM ROM.
121
C
122
C
FOR WRITE CHARACTER INTERFACE IN GRAPHICS MODE, THE REPLICATION;
123
C
FACTOR CONTAINED IN (CX) ON ENTRY WILL PRODUCE VALID
:
124
C
RESULTS ONLY fOR CHARACTERS CONTAINED ON THE SAME ROW. :
"5
C
12.
C
CONTINUATION TO SUCCEEDING LINES WILL NOT PRODUCE CORRECTLY.
104 mM Enhanced Graphics Adapter
August 2, 1984
127 128
129
130 131
132 133
134 135 136 137
138 139 140 141 142 143 144
145 146 147 148 149
150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189
190 191 192 193 194 195 196 197 198 199
200 201
202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221
222 223
224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241
242 243 244 245 246 247 248 249 250 251 252
c
c c
GRAPHICS INTERFACE
I AH) '" B SET COLOR PALETTE
c
FOR USE IN COMPATI al LI TV MODES
c
(BH) '" PALETTE COLOR I 0 BE I NG SET 10-127)
c
(BL) = COLOR VALUE TO BE USED WITH THAT COLOR 10
c
NOTE: FOR THE CURRENT COLOR CARD, THIS ENTRY POINT
c
HAS MEANING ONLY FOR 320><200 GRAPHICS.
c
COLOR 10'" 0 SELECTS THE BACKGROUND COLOR (0-15)
c
COLOR 10 '" 1 SELECTS THE PALETTE TO BE USED:
c
0'" GREEN(1)fRED{2)/BROWN(3)
c
, = CYAN(1)!MAGENTA(21/WHITE(3)
c
IN 40><25 OR 80><25 ALPHA MODES, THE VALUE SET
c
FOR PALETTE COLOR 0 INDICATES THE
c
BORDER COLOR TO BE USED (VALUES 0-31.
c
WHERE 16-31 SELECT THE HIGH INTENSITY
c
BACKGROUND SET).
c
(AH) '" C WRITE DOT
c c
IBH) = PAGE
{OX 1 = ROW NUMBER
c
(ex) = COLUMN NUMBER
c
(ALl = COLOR VALUE
c
IF BIT 7 OF AL = 1, THEN THE COLOR VALUE IS
c
EXCLUSIVE OR'D WITH THE CURRENT CONTENTS OF
c
THE DOT
c
(AH) '" 0 READ DOT
c
(BH) '" PAGE
c
(OX) '" ROW NUMBER
c
(CX) '" COLUMN NUMBER
c
(AL) RETURNS THE DOT READ
c
c
ASCII TELETYPE ROUTINE FOR OUTPUT
c
c
(AH) '" E WRITE TELETYPE TO ACTIVE PAGE
c
(AL) = CHAR TO WRITE
c
(BL) '" FOREGROUND COLOR IN GRAPHICS MODE
c
NOTE -- SCREEN WIDTH IS CONTROLLED BY PREVIOUS MODE SET
c
c
(AH) = F CURRENT VIDEO STATE
c
RETURNS THE CURRENT VIDEO STATE
c
(AL) '" MODE CURRENTLY SET (SEE AH",O FOR EXPLANATION)
c
(AH) = NUMBER OF CHARACTER COLUMNS ON SCREEN
c
(BH) = CURRENT ACTIVE DISPLAY PAGE
c
c
(AH) = 10 SET PALETTE REGISTERS
c
c
(AL) = 0
SET INDIVIDUAL PALETTE REGISTER
c
BL = PALETTE REG I STER TO BE SET
c
BH = VALUE TO SET
c
c
AL '" 1
SET OVERSCAN REG I STER
c
BH = VALUE TO SET
c
c
AL '" 2
SET ALL PALETTE REG I STERS AND OVERSCAN
c
ES:DX POINTS TO A 17 BYTE TABLE
c c
BYTES 0 - 15 ARE THE PALETTE VALUES, RESPECTIVELY BYTE 16 IS THE OVERSCAN VALUE
c
c
AL'" 3
TOGGLE INTENSIFY/BLINKING BIT
c
BL - 0 ENABLE I NTENS I FY
c
BL - 1 ENABLE BLINKING
c
c
(AH) = 11 CHARACTER GENERATOR ROUTINE
c c
NOTE: THIS CALL WILL INITIATE A MODE SET, COMPLETELY : RESETTING THE VIDEO ENVIRONMENT BUT MAINTAINING:
.C
THE REGEN BUFFER.
:
c
c c c c c c c c c c
AL '" 00 USER ALPHA LOAD
ES;BP - POINTER TO USER TABLE
CX
- COUNT TO STORE
OX
- CHARACTER OFFSET I NTO TABLE
BL
- BLOCK TO LOAD
BH
- NUMBER OF BYTES PER CHARACTER
AL = 01 ROM MONOCHROME SET
BL
- BLOCK TO LOAD
AL = 02 ROM 8X8 DOUBLE DOT
BL
- BLOCK TO LOAD
c
AL = 03 SET BLOCK SPEC I F I ER
c c c
BL
- CHAR GEN BLOCK SPECI F I ER
03-02 ATTR BIT 3 ONE, CHAR GEN 0-3
01-00 ATTR BIT 3 ZERO, CHAR GEN 0-3
c
NOTE: WHEN USING AL = 03 A FUNCTION CALL
c c c c c c
AX = 1000H BX = 0712H I S RECOMMENDED TO SET THE COLOR PLANES RESULTING IN 512 CHARACTERS AND EIGHT CONS I STENT COLORS.
c c c c c c c c c c c c c c c c c
NOTE
THE FOLLOWING INTERFACE (AL=1X) IS SIMILAR IN FUNCTION
TO (AL=OX) EXCE PT THAT :
- PAGE ZERO MUST BE ACTIVE
- PO I NTS (BYTES/CHAR) WI LL BE RECALCULATED
- ROWS WILL BE CALCULATED FROM THE FOLLOWING:
INT[(200 OR 350) / POINTS) - 1
- CRT_LEN WI LL BE CALCULATED FROM:
(ROWS + 1) * CRT_COLS * 2
- THE CRTC WI LL BE REPROGRAMMED AS FOLLOWS:
R09H = POINTS - 1
MAX SCAN LINE
R09H DONE ONLY I N MODE 7
ROAH = POINTS - 2
CURSOR START
ROBH = 0
CURSOR END
* R12H = [(ROWS + 1)
VERT DISP END POINTS) - 1
R14H = POINTS
UNDERLINE LOC
c c c c
THE ABOVE REGISTER CALCULATIONS MUST BE CLOSE TO THE ORIGINAL TABLE VALUES OR UNDETERMINED RESULTS WILL OCCUR.
c c c c c
NOTE: THE FOLLOWING INTERFACE IS DESIGNED TO BE CALLED ONLY IMMEDIATELY AFTER A MODE SET HAS BEEN ISSUED. FAILURE TO ADHERE TO THIS PRACTICE MAY CAUSE UNDETERMINED RESULTS.
c c c
AL = 10 USER ALPHA LOAD
ES: BP - PO I NTER TO USER TABLE
CX
- COUNT TO STORE
c
OX
- CHARACTER OFFSET I NTO TABLE
c
BL
- BLOCK TO LOAD
c
BH
- NUMBER OF BYTES PER CHARACTER
c
AL = 1 1 ROM MONOCHROME SET
c c c c c
BL
- BLOCK TO LOAD
AL = 12 ROM 8X8 DOUBLE DOT
BL
- BLOCK TO LOAD
August 2, 1984
IBM Enhanced Graphics Adapter lOS
0000 0014 0014 0040 0040 007C 007C
0108 0108
aloe
Oloe
0410 0410 0410 1777
0449 0449 044A D44e 044E
04~O
7? 1117 1171
1711 08 (
1111
0460 1111 0462 ??
2>,
C
NOTE: THE FOLLOWING INTERFACE IS DESIGNED TO BE
2>.
C
2~~
C
2>6
C
2>7
C
CALLED ONLY IMMEDIATELY AFTER A MODE SET HAS BEEN ISSUED. FAILURE TO AOHERE TO THIS PRACTICE MAY CAUSE UNDETERM I NED RESULTS.
2>8
C
2,.
C
260
C
AL ;; 20 USER GRAPHICS CHARS INT elFH (8X8)
ES:BP ~ POINTER TO USER TABLE AL;; 21 USER GRAPHICS CHARS
26'
C
262
C
ES:BP - POINTER TO USER TABLE
ex
- POINTS (BYTES PER CHARACTER)
26'
C
26'
C
265
C
266
C
BL
- ROW SPECIFIER
BL -= 0 USER
DL - ROWS
261
C
268
e
26.
e
270
e
271
e
272
e
273
e
27.
e
275
e
276
e
277
e
278
e
27.
e
280
e
28' 282
e e
28' 28' 285
e e e
286
e
281
e
288
e
Bl'" 1 14 IOfH) BL"" 2 25 (19H) BL ;; 3 43 (28H)
AL ;; 22 ROM 8 X 14 SET
= BL
-ROWSP[CIFIER
AL 23 ROM 8 X 8 DOUBLE DOT
BL
- ROW SPEC I F I ER
AL ·
30
ex - I NFORHAT ION
POINTS
DL
- ROWS
BH
-0
RETURN CURRENT I NT 1 FH PTR
ES:BP - PTR TO TABLE
BH
~ 1
RETURN CURRENT I NT 44H PTR
ES: BP - PTR TO TABLE
BH
-2
RETURN ROM B X 14 PTR
ES:BP - PTR TO TABLE
BH
-3
RETURN ROM DOUBLE DOT PTR
ES:BP - PTR TO TABLE
BH
-4
RETURN ROM DOUBLE DOT PTR (TOP)
28'
C
2.0
C
2" 2'2 2"
e e e
2"
C
2.5
C
ES:BP - PTR TO TABLE
BH
-5
RETURN ROM ALPHA ALTERNATE 9X14
ES: BP - PTR TO TABLE
(AH) '" 12 ALTERNATE SELECT
BL", 10 RETURN EGA INfORMATION
2.6
C
BH '" 0 ~ COLOR MOOE I N EffECT <3><0><)(>
2.1
C
1 - MONOC MODE I N EffECT <3><8><)(>
2'8
C
2"
C
'00
C
,0'
C
o BL '" MEMORY VALUE
0 ~ 064K 1 0 - 192K
CH '" FEATURE BITS
0 1 ~ 128K 1 1 ~ 256K
'02
C
CL '" SWITCH SETTING
'0'
C
'0'
C
'05
C
'06
C
'01
C
BL = 20 SELECT ALTERNATE PRINT SCREEN ROUTINE
(AH) '" 13 WRITE STRING ES:BP - POINTER TO STRING TO BE WRITTEN
'08
C
'3010'
C
e
31' 312
e e
,,,31'
31.
e e e
316
e
317
e
318
e
31. 320
e e
321
e
322
e
' "32' ' "326
327
e e e e e
328
e
,,,32.
330
e e e
= AL 0
AL'" 1
= AL 2
AL'" 3
CoXx
-- CHARACTER ONLY COUNT POSITION TO BEGIN STRING, IN CURSOR
TERMS
BH
- PAGE NUMBER
.. BL
~ AlTR I BUH
STR I NG - (CHAR, CHAR, CHAR,
)
CURSOR NOT MOVED
... BL
~ ATTRIBUTE
STRING - (CHAR, CHAR, CHAR,
)
CURSOR IS MOVED
STRING - (CHAR, ATTR, CHAR, ATTR, ··· J CURSOR NOT MOVED
STRING - CCHAR, ATTR, CHAR, ATTR, CURSOR I S MOVED
NOTE: CHAR RET, LINE FEED, BACKSPACE, AND BELL ARE TREATED AS COMMANDS RATHER THAN PRINTABLE CHARACTERS.
332
C
33'
e
33.
C SRlOAD MACRO SEGREG, VALUE
335
e
I FNB <VALUE>
336
C
IFIDN <VALUE>,<O>
331
C
SUB
DX,oX
338
,.,33.
340
C
e
C
C
,..,,4.23
C C
C
345
e
ELSE MOV ENOl F ENOl F MOV ENoM
ox, VALUE SEGREG, ox
346
C ; ---- LOW MEMORY SEGMENT
341
C
'48
C ABSO
SEGMENT AT
'4,
C
ORG
005H*4
, PR I NT SCREEN VECTOR
350
C INTS_PTR
LABEL OWORD
35'
C
ORG
010H*4
35' 353
35. 355
C VIDEO
e
ORG
e EXT_PTR
e
LABEL DWORD
01 fH*4 LABEL DWORD
356
e
ORG
042H*4
357
e PLANAR_VIDEO
LABEL DWORD
358
e
35.
e
ORG
043H*4
360
e GRX_SET
LABEL DWORO
36' '62 '63 36. 365
e
e
ORG
e EQUI P_LOW
ee EQUI P_fLAG
0410H
LowABEL
BYTE ?
366 '67 368
...... e
e
;----- REUSE RAM fROM PLANAR BIOS
e
36. 370
e e
371
e
372
e
373
e
DowB ow ow ow
? ?
? ? 8 DUP(?)
314 '15 316
e e c
; V IDEO I/O VECTOR ; GRAPH IC CHARS 128-255
REVECTOREo 10H*4 GRAPH I C CHARS 0-255
311
C CURSOR_MODE
OW
318
C ACTIVE_PAGE
DB
106 IBM Enhanced Graphics Adapter
August 2, 1984
0463 1111 0465 11 0466 11
0472 0472
0484 0484
0485
1111
11 1111
0487 11
0488 11
04A8 04A8
0500 0500 11 0501
= 0061 '" 0040
'" 00C4 '" 00C5 :: 0004 = 00B4 :: 0005
:: Dace
::: OOCA = OOCE :: OOCF '" 00C2 = 00C2 = OOBA
=- OODA
:: OODA :: OOCO
379 380
38' 382
383 384 385 386 387 388 389 390
39' 392 393
394 395 396 397 398 399 400
40' 402 403 404 405 406 407 408 409 410 411
4'2 413
4'4 4'5 4'6 417
4'8 4'9 420
42' 422 423 424
425 426 427 428 429
430 431 432
433 434 435 436 437 438 439 440
44' 442 443 444 445 446 447 448 449 450
45' 452 453
454 455 456 457 458 459 460
46' 462
463 464 465 466 467 468 469
470 471 472
473 474 475 476 477 478 479 480
48' 482 483 484 485 486 487 488 489 490
49' 492 493 494 495 496 497 498
499 500
50' 502 503
504
ADDR_6845
ow
g~~=~~~~i'~~T
OB OB
ORG
RESETJLAG
ORG
ow ROWS
DB
POINTS
0472H
ow
0484H ?
ROWS ON THE SCREEN BYTES PER CHARACTER
INFO
DB
INFO
... 07 - HIGH BIT OF MODE SET, CLEAR/NOT CLEAR REGEN
06 - MEMORY 06 05 = 0 0 - 064K
0 1 - 128K
05·- MEMORY
1 0 - 192K
1 1 - 256K
04 - RESERVED
03 - EGA ACTIVE MONITOR (0), EGA NOT ACTIVE (1)
02'" WAIT FOR DISPLAY ENABLE (1)
01 - EGA HAS A MONOCHROME ATTACHED (1)
DO - SET C_TYPE EMULATE ACTIVE {OJ
INFO_3 DB
INFO 3 - 07-04 03-00
FEATURE BITS SWITCHES
04A8H LABEL
DWORD
SAVE_PTR
SAVE_PTR IS A POINTER TO A TABLE AS DESCRIBED AS FOLLOWS:
DWORD_1 DWORD_2 DWORD 3
awORD=:4
g:~g=~
DWORD_7
V IDEO PARAMETER TABLE PO INTER DYNAMIC SAVE AREA POINTER ALPHA MODE AUXILIARY CHAR GEN POINTER GRAPHICS MODE AUXILIARY CHAR GEN POINTER RESERVED RESERVED RESERVED
awORD_1
PARAMETER TABLE POINTER INITIALIZED TO BIOS EGA PARAMETER TABLE. THIS VALUE MUST EXIST.
PARAMETER SAVE AREA PO INTER
INITIALIZED TO 0000:0000, THIS VALUE IS OPTIONAL.
WHEN NON-ZERO, THIS POINTER WILL BE USED AS POINTER
TO A RAM AREA WHERE CERTAIN DYNAMIC VALUES ARE TO
BE SAVED. WHEN IN EGA OPERATION THIS RAM AREA WILL
HOLD THE 16 EGA PALETTE REGISTER VALUES PLUS
THE OVERSCAN VALUE IN BYTES 0-160 RESPECTIVELY.
AT LEAST 256 BYTES MUST BE ALLOCATED FOR TH I S AREA.
ALPHA MODE AUXILIARY POINTER
INITIALIZED TO 0000:0000, THIS VALUE IS OPTIONAL.
WHEN NON-ZERO, THIS POINTER IS USED AS A POINTER
TO A TABLES DESCRIBED AS FOLLOWS:
BYTE BYTE WORD WORD awORD BYTE
BYTE
BYTES/CHARACTER BLOCK TO LOAD, SHOULD BE ZERO FOR NORMAL
OPERATION COUNT TO STORE, SHOULD BE 2560 FOR NORMAL OPERATION CHARACTER OFFSET, SHOULD BE ZERO FOR NORMAL OPERATION POINTER TO A FONT TABLE 0 I SPLAYABLE ROWS IF 'FF' THE MAXIMUM CALCULATED VALUE WILL BE USED, ELSE THIS VALUE WILL BE USED CONSECUTIVE BYTES OF MODE VALUES FOR WHICH THIS FONT DESCRIPTION IS TO BE USED. THE END OF THIS STREAM IS INDICATED BY A BYTE CODE OF · FF'
NOTE: USE OF THIS POINTER MAY CAUSE UNEXPECTED CURSOR TYPE OPERATION. FOR AN EXPLANATION OF CURSOR TYPE SEE AH = 01 I N THE INTERrACE SECTION.
GRAPHICS MODE AUXILIARY POINTER
INITIALIZED TO 0000:0000, THIS VALUE IS OPTIONAL.
WHEN NON-ZERO, THIS POINTER IS USED AS A POINTER
TO A TABLES DESCR I BED AS FOLLOWS :
BYTE WORD awORD BYTE
DISPLAYABLE ROWS
BYTES PER CHARACTER
POINTER TO A FONT TABLE
CONSECUTIVE BYTES OF MODE VALUES FOR WHICH
THIS FONT DESCRI PTION IS TO BE USED.
THE END OF THIS STREAM IS INDICATED BY A
BYTE CODE OF 'FF'
DWORD_5 THRU OWORD_7 RESERVED AND SET TO 0000: 0000.
ORG
STATUS_BYTE
ABSO
ENDS
PORT B TIMER
0500H DB
EOU EOU
640'""
;----- EQUATES FOR CARD PORT ADDRESSES
OC4H OC5H OD4H OB4H OD5H OCCH OCAH OCEH OCFH OC2H OC2H OBAH ODAH ODAH OCOH
;----- EQUATES FOR ADDRESS REGISTER VALUES
8255 PORT B ADDR OR OB5H
August 2, 1984
mM Enhanced Graphics Adapter 107
0000 0001 0002 0003 0004
:: 0000
:: 0001
:: 0002
= 0003
'" 0004
'" 0005
'" 0006
'" 0007
'" 0008
'" 0009
'="
OOOA 0008
=: OOOC
'" 0000
'" OOOE
'" OOOF
'" 0010 = 0010
'" 0011
'" 0011
'" 0012
'" 0013
'" 0014
'" 0015
'" 0016
'="
0017 0018
= = =
0000 0001
0002
'" 0003
'="
0004 0005
'="
0006 0007
'" 0006
= 0010 '" 0011 '" 0012 = 0013
0000
0000 0000 » 0001 M 0002 20
0003 0003 0005 0009
0026
EB 26 32 34 30 30
36 32 37 37 33 35 36 20 28 43 29 43
4F 50 59 52 49 47 48 54 20 49 42 40 20 31 39 38 34 39 2F 31 33 2F 36 34
0020 0020 002F 0031
0032 0034
0035
0037
0039
86 03
82 OA
EC
82 8A
EC
sBo2
CO 00
EE
003A 28 02 003C BE DA
505 506 507
508 509 >10 511 >12
>13
>1' >15 >16 517 518 519 520 521 522
52' 52. 525 526 527 528 529 530 531 532
533
53' 535 536 537
538 53. 540
541 542 543
54' 545 546 547 548 549 »0 5>1 »2
553 ».
»5 »6
5>7 »8 »9 560 561 562 563 56.
565 566 567
568 56. 570 571 572 573
57' 575 576 577
578 57. 580 581 582
583
58. 585 586 587
588 589 590 591 592
59' 59' 595 596 597 598 599 600 601 602
603
60' 605
606 607 608 609 610 611 612
613 61. 615 616 617
618 61. 620 621 622 623
62' 625 626 627 628 629
6'0
C
S_RESET
EQU
OOH
C
S_CLOCK
EQU
01H
C C
~:~;N
EQU
02H
EQU
03H
C
S_MEM
EQU
04H
C
C
C HRZ TOT
EQU
OOH
C
C:HRZ:OSP
EQU
01H
C
C STRT HRZ 8LK EQU
02H
C
C:ENOj:lRZ_BLK EQU
O'H
C
C STRT HRZ SYN EQU
04H
C
C:ENO_HRZ_SYN EQU
O'H
C
C_VRT_TOT
EQU
06H
C
C_OVERFLOW
EQU
07H
C
C_PRE_ROW
EQU
08H
C
C_MAX_SCAN_LN EQU
09H
C
C_CRSR_START
EQU
OAH
C
C_CRSR_END
EQU
08H
C C
g=~i:i=~~
EQU
OCH
EQU
OOH
C
C_CRSR_LOC_HGH EQU
OEH
C
C_CRSR_LOC_LOW EQU
0,"
C C C
g=~~~~;~~~;~g~ EQU
10H
EQU
10H
EQU
11H
C
C LGHT PEN LOW EQU
11H
C
C:VRT_OSP_lNO EQU
12H
C
C_OFFSET
EQU
13H
C C
C
C_UNDERLN_LOC EQU
"H
g:~~~~V~~~B~~K
EQU EQU
15H 16H
C
C_MODE_CNTL
EQU
17H
C
C_LN_COMP
EQU
18H
C
C
G_SET_RESET
EQU
OOH
C
G_ENBL_SET
EQU
01H
C
G CLR COMP
EQU
02H
C
G::::DATA_ROT
EQU
0,"
C C
g:=~~~_MAP
EQU
O'H
EQU
OSH
C
G_MI SC
EQU
06H
C
G_COLOR
EQU
07H
C
G_BI T_MASK
EQU
08H
C
C
P_MOOE
EQU
10H
C
P_OVERSC
EQU
11H
C
P_CPLANE
EQU
12H
C
P_HPEL
EQU
13H
C
C
SUBTTL
; WRITE ONLY ; READ ONLY ; WRITE ONLY ; READ ONLY
; ----- CODE SEGMENT
CODE
SEGMENT PUBLIC
C
INCLUDE
VPOST. INC
C
SUBTTL VPOST. INC
C
PAGE
C
C ; ----- POST
C
C
ASSUME CS: CODE, DS:ABSO
C
ORG
OH
C
DB
055H
SIGNATURE
C
OB
OMH
BYTES
C
DB
020H
LENGTH INDICATOR
C
C ; ----- NOTE DO NOT USE THE SIGNATURE BYTES AS A PRESENCE TEST
C
C
PLANAR V IDEO SWI TCH SETT I NGS
C C
o 0 - UNUSED
C
01-40X25COLOR
C
10-60X25COLOR
C
1 1 - 60 X 25 MONOCHROME
C
NOTE : 0 0 MUST BE SET WHEN TH I 5 ADAPTER I S INSTALLED.
C
C
V IDEO ADAPTER SW ITCH SETT I NGS
C C
a 0 0 0 - MONoe PRIMARY, EGA COLOR. 40X25
C C C C C
o o 0o o
0a
0 1 1
0 1 1
a 0
1 0 1 0 1
-
MONOC MONOC MONOC COLOR COLOR
PRIMARY, EGA COLOR. 80X25 PRIMARY, EGA HI RES EMULATE (SAME PRIMARY, EGA H I RES ENHANCED
40 PRIMARY, EGA MONOCHROME
60 PRIMARY, EGA MONOCHROME
AS
0001)
C C C
o 1 1 0 - HONOC SECONDARY, EGA COLOR, 40X25 o 1 1 1 - MONOC SECONDARY, EGA COLOR. 80X25
C
1 0 0 0 - MONOC SECONDARY. EGA H I RES EMULATE (SAME AS 0111)
C
1 0 0 1 - MONOC SECONDARY. EGA H I RES ENHANCED
C
1 0 1 0 - COLOR 40 SECONDARY, EGA MONOCHROME
C
1 0 1 1 - COLOR 80 SECONDARY. EGA MONOCHROME
C
C C
a 1 1 0 0 - RESERVED
1 1 1 - RESERVED
C
1 1 1 0 - RESERVED
C
11 1 1 - RESERVED
C
C ;----- SETUP ROUTINE FOR THIS MODULE
C
C VIDEO_SETUP
PROC
FAR
C
JM'
SHORT L1
C
OB
'2400'
C
DB
'6277356 (C)COPVRIGHT IBM 1984'
C
C
C
C
C
DB
'9/13/64'
C
C
C ;----- SET UP VIDEO VECTORS
C
C L1:
C
MOV
DH,3
C
MOV
CL, INPUT_STATUS
C
AL,DX
C
H"OV
OL, INPUT_STATUS_B
C
AL,OX
C
M"OV
DL,ATTR_WRITE
C
HOV
AL,O
C
OUT
OX,AL
C
C
SRLOAO OS,O
C>
SUB
OX, OX
C>
MOV
OS,OX
108 mM Enhanced Graphics Adapter
August 2, 1984
~
~
~
003E 003F 0045 0049 004F
0055 005B 005F 0065
0069 006F 0073
FA C7 06 0040 R OCD7 R 8C DE 0042 R C7 06 0108 R F065 C7 06 OlOA R FOOO C7 06 04A8 R OlOC R BC OE 04AA R C7 06 001C R 0000 E 8C DE 001E R
C7 06 OlOC R 0000 E 8C DE alOE R F8
0074 001. 00lC
0080 0083 0081 008B 008E 0091 0091 0092
C6 06 0487 R 04 E8 009B R 88 lE 0488 R E8 OOCE R 08 06 0488 R 8A lE 0488 R E8 00F3 R E9 0244 R
08
0092 0092
0093 0094
0095 0096 0098 009A 009B
EE
50 58 EC 24 10 DO E8 C3
009B
009B 0090
009F OOAl
B6 03 B2 C2 BO 01
EE
00A2 00A4 00A7 00A9 OOAB OOAO
BO 00 E8 0092 R DO E8 DO E8 DO E8 8A 08
OOAF OOBl 00B4 00B6 00B6
BO 09 E8 0092 R DO E6 00 E8 0'\ 08
008A
ooae
OOBF OOCl
80 05
E8 0092 R 00 E8 OA 08
DOC3 BO 01 00C5 E8 0092 R OOC8 OA 08
OOCA 80 E3 Of
OOCO C3 OOCE
OOCE OOCE 0000 0002 0004 0005 0007 0008 OODA OOOB DODD
OOOF OOEl 00E3
00E5 00E6 00E8
00E9 OOEB OOEC
~OH
OOFO OOF2 OOF3
B6 03 82 8A BO 01 EE 82 OA
EE B2 C2 EO 24 60 DO E8
8A 08 B2 BA BO 02
EE 82 OA
EE 82 C2 EC
24 60 DO EO OA C3 e3
00f3
Don
00F5 00F8 OOFA OOFB OOFO DOFF 0100 0103 0105 0101
2A fF 80 E3 Of 01 E3
52 86 03 8A E6
5A 80 E4 01 FE C4 F6 D4 2E: FF A7 0128 R
OlOC 010C
alOE 0110 0112 0114 0116 0118
0717 R
COOO 0000 0000 0000 0000 0000
631 632
633 63. 635 636 637 638
63' 6'0
6" 6'2 6·· 644
6'5 646 641 648 649 650 651 652 653 654 655 656 651 658 659 660
66' 662 66. 664 665
666 667
668 66. 610 671 612
613 61. 615 616 611 618 61. 680 681 682
68.
68' 685 686 681 688
68' 6'0 691 692
6'3 694
695 696
691 698 699 100 101 702 703 104 105 706 701 108
109 710 111 712
113 71. 715 716 111 718 71. 120 121 122 123 124 125 126 121 128 12,
130 131
132 733 734 735 736 731 738 139 140
14' 142 743 144 745 746 741 148 749 750
75' 152
153
15' 155 156
C
CLI
C
HOV
WORD PTR VIDEO, OFFSET COMBO_VIDEO
C
HOV
WORD PTR V I DEO+2. CS
0
HOV
WORD PTR PLANAR_VIDEO,Of065H
0
HOV
WORD PTR PLANAR_VIDEO+2,OFOOOH
0
HOV
WORD PTR SAVE_PTR, OFFSET SAVE_TBl
0
HOV
WORD PTR SAVE_PTR+2, CS
0
HOV
WORD PTR EXT_PTR, OFFSET INT_1F_l
0
HOV
WORD PTR EXT PTR+2, CS
0
HOV
WORD PTR GRX:=SET, OFFSET CGDDOT
0
HOV
WORD PTR GRX_SET+2, CS
0
STI
0
0 ;----- POST FOR COMBO VIDEO CARD
0
0
MOV
INFO,OOOOO100B
C
CALL
RD_SWS
C
HOV
INFO_3,Bl
C
CALL
F_BTS
C
OR
INFO_3,Al
C
HOV
Bl,INFO_3
C e
CALL JMP
~~S~NV
e SKI P:
e
RET
C V IDEO_SETUP
ENDP
C
e
C POR_l PROC
NEAR
C
OUT
DX,Al
e
PUSH
AX
C
POP
AX
e
IN
Al,OX
e
AND
AL,010H
C
SHR
AL,l
C
RET
C POR_l ENDP
C
0 ;----- READ THE SWITCH SETTINGS ON THE CARD
0
0 RO_SWS PROC
NEAR
0
ASSUME DS:ABSO
0
HOV
oH,3
0
HOV
Dl, Mt SC_OUTPUT
0
HOV
Al, ,
0
OUT
DX,Al
0
0 ;----- COULD BE 0,4,6,C
0
0
HOV
Al,ODH
0
CAll
POR_'
0
SHR
Al,l
C
SHR
Al,1
0
SHR
Al,l
C
HOV
Bl,Al
C
0
HOV
Al,9
0
CAll
POR_'
C
SHR
Al,l
e
SHR
Al,l
e
OR
Bl,Al
e
e
HOV
Al,5
e
CAll
POR_l
e
SHR
Al,l
e
OR
Bl,AL
e
e
HOV
Al,l
e
CAll
POR_l
e
OR
Bl,Al
e
e
AND
Bl,OFH
e
RET
e RD_SWS ENOP
C
C ;----- OBTAIN THE FEATURE BITS FROM DAUGHTER CARD
C
C F_8TS PROC
NEAR
e
HOV
OH,3
e
HOV
DL,OBAH
0
HOV
AL,'
0
OUT
OX,Al
0
HOV
Ol,OOAH
0
OUT
DX,Al
0
HOV
Ol, I N_STAT_O
0
IN
AL,OX
READ FEATURE BITS
0
AND
AL,060H
0
SHR
AL,l
0
HOV
BL,AL
0
HOV
OL,OBAH
0
HOV
Al,2
0
OUT
OX,AL
0
HOV
OL,OOAH
0
OUT
DX,Al
0
HOV
OL, I N_STAT_O
0
IN
AL,OX
; READ FEATURE 8 I TS
0
AND
Al,060H
0
SHL
AL,l
0
OR
Al,Bl
0
RET
0 F_BTS ENOP
0
e ;----- ESTABLISH THE VIDEO ENVIRONMENT. KEYED Off OF THE SWITCHES
e
e MK_ENV PROC
NEAR
C
ASSUME OS:ABSO
e
SU8
BH,BH
e
AND
Bl,OFH
e
SAL
BX,l
C
PUSH
OX
e
MOV
OH,3
C
HOV
AH,DH
C
POP
OX
C
AND
AH,l
C
INC
AH
C
NOT
AH
C
JHP
WORD PTR CS:IBX + OffSET 15)
C
e SAVE_TBL
e
ow
LABEL awaRD OFFSET VIDEO_MRNS
PARMS
e e
C C C C
OW
ow
OW
OowW
ow
OCOOOH
° ° ° ° °
; PARMS ; PAL SAVE AREA ; PAL SAVE AREA ; ALPHA TABLES ; ALPHA TABLES ; GRAPHICS TABLES
August 2, 1984
IBM Enhanced Graphics Adapter 109
011A
onc
011E 0120 0122 0124 0126
0000
0000 0000 0000 0000 0000 0000
0128 0128 012A 012C 012E 0130
0132 0134 0136
0113 R 017E R 017E R 0189 R
0194 R alAS R OlBe R 01e7 R
0138 013A
013C 013E 0140
0142 0144 0146
01C7 R 0102 R
0100 R 01fl R 0204 R 0204 R 0204 R 0204 R
0148 0148 0140
0152 0155 0157 0158
80 26 Otll0 R CF
80 OE Otll0 R 1O 68 0001 CD 10
C3
0158 0158 0150 0162 0165 0167
0168
80 26 0410 R CF 80 DE 0410 R 20 B8 0003
CD 10 C3
0168
0168 0160 0110 0112 0113
80 OE 0410 R 30 B8 0007 CD 10
C3
0113 0173 0177 017A 0170 017E 017E 017E 0182 0185 0188 0189 0189 0180 0190 0193 0194 0194 0196 0198 019A 0196
019D 01Al 01A4 01A7 01AB 01AB 01M OlAC
alAE OlAF 01Bl
01B5 01B8 01BB 01BC 01BC 01CO 01C3 01C6 01C7
01C7 01e7 01e8 01eE OlDl 01D2 0102 0106 01D9 01DC 0100 0100 010F 01 El 01 E3 0·lE4 01£6 OlEA OlEO OHO OlFl OlFl OlF3 01f5 01F7 OH8 QlFA OHE 0201 0204 0204 0205
20 26 0487 R E8 0148 R E8 0168 R e3
20 26 0487 R E8 0158 R E8 0168 R e,
20 26 0487 R E8 0158 R [8 0168 R C3
66 03 62 C2 60 00 EE F6 04 08 26 0487 R E8 0168 R E8 0148 R C'
B6 03 B2 e2 BO 00 EE f6 D4 08 26 0487 R E8 0168 R E8 0158 R C3
20 26 0487 R E8 0168 R E8 0148 R C3
20 26 0487 R E8 0168 R E8 0158 R e,
20 26 0487 R £8 0168 R E8 0158 R C'
66 03 B2 C2 BO 00 EE F6 04 08 26 0487 R E8 0148 R [8 0168 R C3
B6 03 82 C2 80 00 EE '6 04 08 26 0487 R E8 0158 R E8 0168 R
C3
757 756
759 760
761 762 763
764 765 766 767
766 769 770 771
772 773 774
775 776 777 776 779 760 781 782 763 784 785 786 787 788 789
790 791 792 793
794 795 796 797 796 799 600 601
602 603 604 605 606 607 606 609 610
6" 612
6" 614
6" 616 617 616 619 620 621 822 823 824 825 826 827 828 829
830
6" 632
6" 634 835 636 637
636 639 640 641
642 643 844 845 646 847 848 649 850
851 652 653 654 855 856 657
858 859 660 861 662 663 864 865 666
867 866 869 870 871
872 873 874 875 676 877 878 879 860
861 .62
e
OW
e
e
OW
e
OW
C
OW
C
OW
C
OW
C
OW
C
C T5
LABEL
C
OW
C
OW
C
OW
C
OW
C
OW
e
ow
e
ow
e
ow
e
e
ow
C
OW
C
OW
C
ow
e
ow
C
ow
C
ow
C
ow
C
C ENV_X PROC
C
ANO
C
OR
C
HOV
C
I NT
C
RET
C ENV_X ENDP
C
C ENV_O PROC
C
ANO
C
OR
e
HOV
e
INT
e
RET
C ENV_O ENDP
e
C ENV_3 PROC
C
OR
C
HOV
C
INT
C
RET
C ENV_3 ENoP
C
C
C PST_O:
C
ANO
C
CALL
C
CALL
C
RET
e PST_':
e PST_2:
e
AND
e
CALL
e
CALL
e
RET
e PST_3:
C
AND
C
CALL
C
CALL
C
RET
C PST_4:
C
HOV
C
HOV
C
HOV
C
OUT
e
NOT
C
OR
C
CALL
e
CALL
e
RET
C PST_5:
e
HOV
e
HOV
e
HOV
e
OUT
e
NOT
C
OR
C
CALL
C
CALL
C
RET
C PST_6:
C
AND
C
CALL
C
CALL
C
RET
C PST 7:
e PST:8:
e
AND
e
CALL
e
CALL
c
RET
e PST_9:
e
AND
e
CALL
e
CALL
e
RET
C PST_A:
C
HOV
C
HOV
C
HOV
C
OUT
c
NOT
e
OR
C
CALL
C
CALL
C
RET
e PST_B:
e
HOV
C
HOV
e
HOV
C
OUT
C
NOT
C
OR
C
CALL
C
CALL
e PST_OUT:
C
RET
c MK_ENV E!'lOP
WORD
g~~~g ~~~:~
OFFSET OFFSET
OFFSET OFFSET OFFSET
OFFSET
PST_2 PST_3
PST_4 PST 5 PST-6
PST:7
OffSET OFFSET
OFFSET OFFSET OFFSET OFFSET OFFSET OFfSET
PST_B PST_9
PST_A PST_B PST_OUT PST OUT PSCOUT PST_OUT
NEAR EQUJP_LOW,OCFH EQUIP_LOW,010H
AX,lH 10N
NEAR
EQUIP_LOW,OCFH EQUIP_LOW,020H
AX.03H 10N
NEAR
EQUIP_LOW,030H AX,07H 10N
INFO,AH ENV X ENV:3
INFO,AH ENV_O ENV_3
INFO,AH ENV_O ENV_3
DH,3 DL,MISC_OUTPUT AL,O DX,AL AN JNFO,AH ENV_3 ENV_X
OH,3 OL. MI SC_OUTPUT AL,O DX,AL AN INFO,AH ENV_3 ENV_O
INFO,AH ENV_3 ENV_X
INFO,AH ENV_3 ENV_O
I NFO,AH
~~~:6
OH,3 DL,MISC_OUTPUT AL,O OX,AL AN INfO,AH ENV_X ENV_3
OH.3 OL,MISC_OUTPUT AL,O OX,AL AN INfO,AH ENV_O ENV_3
110 mM Enhanced Graphics Adapter
GRAPHICS TABLES SET 40X25 COLOR ALPHA ; SET 80X25 COLOR ALPHA SET MONOCHROME ALPHA
August 2, 1984
0205 0205 0206 0209 020B 020C 020F 0211
0212 0213 0216 0217 0218 021B 0210 021E 0220 0223
0223 0225 0226 0227 0227 022A 022B 022C
53 BB 007F 88 FB 50 £8 022C R 88 FO 58 50 E8 0236 R 58 50 E8 022C R 38 C7 58 7503 E8 05 90
33 CO 5B C3
B8 0001 58 C3
022C 022C 0220 022F 0231 0232 0233
52 68 DO BO OE EE 42 EC
0234 5A 0235 C3 0236
0236
0236 0237 0238 023A 023C 023E
50 52 88 DO B1I DE BO 7F E8 0015 R
0241 5A 0242 58 0243 C3 0244
0244
0244
0247 024C 024E
0251 0254 0257 0259 025C 025C 025E 0260 0260 0263 0266 0269 026B 026E 026E 0270 0270 0271 0274
0277 027A 027C 027F 0281 0283 0285 0287 0289 0289
E6 OCFE R F6 06 0487 R 02 75 12 B8 03B4 E8 0205 R 3D 0001 74 03 E9 0317 R
B4 30 E8 10
68 0304 E8 0205 R 3D 0001 74 03 E9 0317 R
B4 20
50 BB BOOO BA 03B8 B9 1000 BO 01 80 FC 30 74 08 B7 sa B2 08 85 40 FE C8
EE
028A 8B 2E 0472 R
028E 81 FD 1234
0292 IE C3
883 884 885 880 887
888 889 890
891 892 893
894 895
890 897
898 899 900
901 902 903 904 905 906 907 908 909 910 911 912
913 914
915 91. 917 918
919 920 921 922 923 924
925 92. 927 928
929 930 931 932
933 934 935 936 937
938 939 940 941 942 943 944 945
94. 947 948 949 950 951 952 953 954 955 956 957 958 959 900 901 902 903 904 905 900 907 968 909 970
971 972 973 974 975 970 977 978 979
980 981 982 983 984
985 980 987 988
989 990 991 992 993 994 995 990 997 998 999 1000
1001
1002
1003
1004
1005 1006
1007
1008
c
c c
~ -THis-ROUTINE-1ESls-THE-cRT-C~RO-i NTERN;L-D~T;-B~S-;NO-jN-~-li;'i 1ED----~
c ; WAY TESTS THE CRTC VIDEO CHIP BY WRITING/READING FROM CURSOR REGISTER:
e ; CARRY I S SET I F AN ERROR I S FOUND
:
i e
e
REGISTERS BX,SI,ES,DS ARE PRESERVED,
e ; REGISTERS AX,CX,DX ARE MOOIFYED,
C
e
bD=;~EsE~e~;T;T-:~OC----NE;~--------------::::-::------------------------
e
e
MOV
BX,07FH
INITIAL WORD PATTERN ByTE
e
MOV
Dl,ex
c
PUSH
AX
SAVE PORT ADDRESS
c
CALL
RD CURSOR
e e
MOV POP
SI~AX AX
SAVE ORIGINAL VALUE RECOVER PORT ADDRESS
e
PUSH
AX
SAVE PORT AODRESS
e
CALL
WR_CURSOR
WR I TE CURSOR
e
POP
AX
RECOVER PORT ADDRESS
e e e
PUSH CALL CMP
AX RD.CURSOR AX,DI
e
POP
AX
SAVE PORT ADDRESS READ IT BACK SAME?
e
JNZ
NOT PRESENT
EXIT I F NOT EQUAL
e e
NOT_PRES~~~:
TSCEX
e
XOR
AX,AX
SET NOT PRESENT
e e e
POP
RET TST_EX:
BX
e
MOV
AX,1
SET PRESENT ON EX I T
e e
POP
OX
RET
RESTORE BX
e CD_PRESENCE_TST ENDP
c
C
c
;-MODU~E-N;.ME--~D-~~~;O~-- ------ -- ------------ ------- --------- --- --
e
READ CURSOR POSITION [ADDRESS) (FROM CRTC) TO AX
e
e
REGISTER AX IS MODIFIED.
ee ~D=~~RS~~-------P~;;C-~E;~------------------------------------------------
e c
PUSH MOV
OX OX,AX
; SAVE REGS USED
e
MOV
AL, C_CRSR_LOC_HGH
e e
OUT INC
DX,Al OX
e
IN
AL,DX
c
RETURN WITH CURSOR POS I N AX
e
RESTORE REGS USED
e e
OX
e
ENOP
e
ee ; -MODuLE-NAAE--w~-~~Rs;;;-------------------------------------------------
e
WRITE CURSOR POSITION [ADDRESS] (TO CRTC) WITH CONTENTS OF AX
e
e
ALL REGISTERS PRESERVED
e e
~R=C;;RS;;R-------PROC-HE;;;- ----------- ------------ ------ -------- ------:
e
; SAVE REGS USED
e
PUSH
AX
e e
PUSH
MOV
OX OX, AX
c c
MOV
AH, C_CRSR_lOC_HGH
MOV
AL,07FH
; CURSOR LOCATION HIGH INDEX ; TEST VALUE
e c
CALL OUT_DX
RETURN WITH CURSOR POS I N AX
e
e e
POP
OX
POP
AX
e
RET
RESTORE REGS USED
c WR_CURSOR
ENDP
e
e e C
;P-O-S-T-: -------------------------------------------------- INITIALIZE AND START CRT CONTROLLER (6645)
c e 1
~~S~o~~~EgR:~~~;eR~~~ ~~~~~~~ME CARDS
e
DESCR I PT I ON
e e c
; ;
RESET THE VIDEO ENABLE SIGNAL. SELECT ALPHANUMERIC MODE, 40 .. 25, 8 8t W. READ/WRITE DATA PATTERNS TO STG. CHECK STG
e
ADDRESSAS I LI TY.
e c
ASSUME OS: ASSO, ES:ABSO
e
CALL
DOS
e
TEST
INFO,2
e
JHZ
COLOR PRESENCE TST
e
MOV
AX,03B4H
-
C
CALL
CD_PRESENCE_TST
e
eMP
AX,1
e c
JE JMP
CONTl POD14
ee CONTl : HOV
AH,30H
e
JMP
SHORT OVER
e COLOR_ PR ESENCE_TST:
e
MOV
AX,0304H
e
CALL
CO PRESENCE TST
e
CMP
AX~l
-
e e
e e
CONT2:
JE JMP
MOV
CONT2 POD14
AH,20H
e OVER:
c
PUSH
AX
MONOCHROME CARD I NSTALLED
; COLOR GRAPHICS CARD INSTALLED RESAVE VALUE
C
e
MOV MOV
BX,oeOOOH DX,3B8H
BEG VIDEO RAM AoDR B/W CO MODE CONTROL B/W
e C e e e c
MOV
MOV eMP JE MOV MOV
CX,4096 AL,l AH,30H E9 BH,088H
DL,OD8H
e
MOV
CH,40H
RAM BYTE CNT FOR B/W CD SET MODE FOR BW CARD BjW VIDEO CARD ATTACHED? YES - GO TEST VIDEO STG BEG VIDEO RAM ADDR COLOR CD
MODE CONTROL COLOR RAM eYTE CNT FOR COLOR CD
C
DEC
AL
SET MODE TO 0 FOR COLOR CD
C E9:
e c e e e e
OUT
MeV
eMP MOV
DX,AL
BP, OS: RESET_FLAG
BP,1234H ES,BX
6~~!BnD~~D~bG~OR COLOR CD
POD INITIALIZED BY KBD RESET
POD I NIT lAUD BY KBD RESET? POINT ES TO VIDEO RAM STC
August 2, 1984
IBM Enhanced Graphics Adapter 111
0294 74 07 0296 8E DB
0296 E8 02DF R 029B 15 2E
0290 0290 029E 029f 02A2
02A4 02A7
58 50 88 7020 28 FF
89 0028 f3/ AS
02A9 02AA 02A6 02AE 02Bl 02B3 02B5
02B5 02B7 02B7 02B9 02B9 02BA 02BC
02BE 02CO 02e2 02C2 02ClI 02ClI 02C5
02C7 02C9 02CB 02ce
02eE 0201
0203 0203 0205 0207 0209 0209 02DA
58 50 80 FC 30 BA 03BA 74 02 B2 DA
Bil 08
2B C9
EC 22 e4 75 04 E2 F9 EB 09
2B C9
EC 22 e4 14 OA E2 F9
BA 0102 E8 06C8 R EB 06
B1 03 02 EC 75 DE
58 EB 38
02DC 02DC 02DF 02DF
02EO 02E2 02E5 02E8
02EA 02Ee 02EC 02EO 02EE 02EE 02FO
02F2 02F2
02f3 02F5 02F7 02F9 02FA
89 4000
FC 88 09 88 AMA BA FF55 28 FF F3/ AA
4F FO
86 F7 86 e6
AC 32 C4 75 lE 8A C2 AA E2 F6
02Fe 02FE 0300 0302 03011
0306 0308 030A 030C 030C 0300 030E 0310 0311 0313 0313 0315 0315 0316
0317
22 E4 74 13 8A EO 86 F2 22 E4 75 04 8A 04 EB EO
FC 47 74 DE 4F EB 09
BO 00
FC C3
1009 1010
1011 1012 1013 1014 1015 1016 1017 1018
1019 1020 1021 1022 1023
1024
1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046
1047 1048 1049 1050 1051 1052 1053
1054 1055 1056 1057 1058
1059 1060
1061 1062 1063 1064 1065 1066 1067 1068
1069 1070 1071
1072 1073 1074 1075 1076 1077 1078
1079 1080 1081 1082
1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097
1098 1099 1100 1101
1102 1103
1104 1105
1106 1107 1106
1109 1110 1111
1112 1113 1114 1115 1116
1117 1118 11 19 1120 1121 1122 1123 1124 1125 1126 1127
',26 1129 1130 1131 1132 1133 1134
C
JE
El0
YES .. SKI P VIDEO RAM TEST
C
MOV
OS,BX
POINT OS TO VIDEO RAM STG
C
ASSUME OS: NOTH I HG, ES: NOTH I NG
C
CALL
STGTST_CNT
; GO TEST V IDEO R/W STG
C
JNE
E17
R/W STG FAI LURE - BEEP SPK
C C
~ -------SE~~;- ~;DE~-D~~;-~N-S~~EE~ -;~R-V~DE~-L~NE -TES;:: --. -.. --_..;
C ; DESCR I PT lON
:
C ;
ENABLE VIDEO SIGNAL AND SET MODE.
C ;
DISPLAY A HORIZONTAL BAR ON SCREEN.
:
C
~;o;------------------------------------------------------------C
C
POP
PJl.
, GET VIDEO SENSE SWS (AH)
C
PUSH
PJl.
; SAVE IT
C
HOV
AX,7020H
; WRT BLANKS IN REVERSE VIDEO
C
SUB
01,01
; SETUP STARTING LOC
C
MOV
CX,40
; NO. Of BLANKS TO DISPLAY
C
REP
STOSW
; WRITE VIDEO STORAGE
C
C
;-----~-~RT-iNTE~F~~E-liNE;-;:E;~------ -- ----------------;
C
DESCRIPTION
C
SENSE ON/OFF TRANS I TrON Of THE VIDEO ENABLE
C
AND HORIZONTAL SYNC LINES.
; .. ..------.. C
C
-------;~;---- ~~--------
--------~Ej-viDE~-;ENSE SW INFO
C
PUSH
PJl.
SAVE IT
C
CMP
AH,30H
BN CARD ATTACHED?
C
MOV
DX,03BAH
SETUP ADDR OF BW STATUS PORT
C
JE
Ell
YES - GO TEST LI NES
C
MOV
DL,ODAH
COLOR CARD IS ATTACHED
C Ell:
; LlNE_TST:
C
HOV
AH,6
C E12:
C
SUB
CX,CX
C E13:
C
IN
AL,DX
READ CRT STATUS PORT
C
AN~
AL,AH
CHECK VIDEO/HaRZ LINE
C
JNZ
El'
C
LOOP El3
I TS ON - CHECK I F IT GOES OFF LOOP TILL ON OR TIMEOUT
C
JHP
SHORT E17
GO PR I NT ERROR MSG
C E14:
C
SUB
cX,ex
C E15:
C
IN
AL,DX
READ CRT STATUS PORT
C
AND
AL,AH
C
JZ
ElO
CHECK V I DEO/HORZ LINE
I is ON - CHECK NEXT LINE
C C E17:
LOOP
'15
LOOP I F Off TILL IT GOES ON CRT_ERR
C
HOV
DX,102H
C C
CALL JHP
~~~R~Eg8
GO BEEP SPEAkER
C E16:
NXT LINE
C
MOV
eL,3
GET-NEXT BIT TO CHECK
C
SMR
AH,CL
C
JHZ
E12
GO CHECK HORIZONTAL LINE
C E18:
C
POP
AX
G~+S~~~OC~~~~: SWS (AH)
C
JHP
SHORT POD14
C
C
C
THIS SUBROUTINE PERFORMS A READ/WRITE STORAGE TEST ON
C
A 16K BLOCK OF STORAGE.
C
ENTRY REQUIREMENTS:
C
ES '" ADDRESS OF STORAGE SEGMENT BE I NG TESTED
C
OS = ADDRESS Of STORAGE SEGMENT BE I NG TESTED
C
~~~NB~~~E~6~~/T STGTST_CNT. CX MUST BE LOADED WITH
C
C
EXIT PARAMETERS:
C
ZERO FLAG = 0 IF STORAGE ERROR (DATA COMPARE OR PARITY CHECK.
C
AL = 0 DENOTES A PAR ITY CHECK. ELSE AL=XOR' ED BIT
C
PATTERN OF THE EXPECTED DATA PATTERN VS THE
C
ACTUAL DATA REAO.
C C
-------P-J-l.-, -a-X-,e--X-,D--X-,-D-I-, --AN-D---S-I --AR-E--A--L-L--D-E-S-TR-O--Y-E-O-. ------------------------
C STGTST PRoe
NEAR
C
MOY
CX,4000H
; SETUP CNT TO TEST A 16K BLK
C STGTST CNT:
C
- CLD
SET DIR FLAG TO INCREMENT
C
HOV
BX,CX
SAVE CMT (4K FOR VIDEO OR 16K)
C
HOV
AX,OAAAAH
GET DATA PATTERN TO WRlTE
C
HOV
DX,OFF55H
SETUP OTHER DATA PATTERNS TO USE
C
SUB
01,01
C
REP
STOSB
01 = OFFSET 0 RELATIVE TO ES REG WRITE STORAGE LOCATIONS
C C3: C
DEC
OJ
STG01 POINT TO LAST BYTE JUST WRITTEN
C
STD
SET DIR FLAG TO GO BACKWARDS
C C4:
C
HDV
SI,OI
C
MOV
cX,ex
SETUP BYTE CNT
C C5:
I "NER TEST LOOP
C
LODSB
READ OLD TEST BYTE (SI]+
C
XOR
AL,AH
DATA READ AS EXPECTED ?
C
JHE
C7
C C C
C, MOV
STOSB LOOP
AL,DL
NO - GO TO ERROR ROUT I NE GET NEXT DATA PATTERN TO WRI TE
WRITE INTO LOCATION JUST READ
DECREMENT COUNT AND LOOP CX
C
C
AHD
AH,AH
a ENDING PATTERN WRITTEN TO STG?
C
JZ
COX
YES - RETURN TO CALLER WITH AL=O
C
HOV
AH,AL
SETUP NEW VALUE FOR COMPARE
C
XCHG
DH,DL
MOVE NEXT DATA PATTERN TO DL
C
AHD
AH,AH
READING ZERO PATTERN THIS PASS?
C
JHZ
CO
C
HOY
DL,AH
a CONT I NUE TEST SEQUENCE TI LL 0 ELSE SET FOR END READ PATTERN
C
JHP
C3
AND MAKE fl NAL BACKWARDS PASS
C C6:
C C C
CLD INC
JZ
C01,
SET DIR FLAG TO GO FORWARD SET POINTER TO BEG LOCATION READ/WRITE FORWARD IN SiG
C
DEC
01
ADJUST POINTER
C
JHP
C3
REAO/WR I TE BACKWARD IN STG
C C6X:
C
HOV
AL,OOOH
; AL=O OATA COMPARE OK
C C7:
C
CLD
C
RET
; SET DIRECTION FLAG BACK TO INC
C STGTST ENDP
C
C
;
---------------------------- --- .. -- _.. -..---------- -------
C
EGA CRT ATTACHMENT TEST
C
C
1. I NIT CRT TO 40X25 - BW ****SET TO MODE*.**
C
2. CHECK FOR VERTICAL AND VIDEO ENABLES, AND CHECK
C
TIMING Of SAME
C
3. CHECK VERTICAL INTERRUPT
C
4. CHECK RED, SLUE, GREEN, AND INTENSIFY DOTS
112 IBM Enhanced Graphics Adapter
August 2, 1984
~
~
~
'" AOAC
'" C460
=,. 00C8 8D99
= 8862
" 015E '" 015E
= 0043 '" 0040
0317 0317 83 EC OA 031A 8B EC
031C E8 OCFE R 031f 80 30
0321 0323 0325 0321 032C 032E 0331
0336 033B 0340 0342 0344 0346 0349 034B 0340 0340
0350 0353 0355 0357 0359 035B 035E 0363
p366
E6 43 BO 00 E6 40 F6 06 0481 R 02 74 1f E8 0168 R C1 46 02 015E C1 46 04 8099 C7 46 06 8862 82 B4 B4 01 BO 27 E6 0015 R B2 BA EB 2A
E8 014B R E8 OE9A R 73 11 B2 04 B4 01 BO 14 E8 0015 R C7 46 02 015E EB 06 90
0366 036B 036s 0370 0375
C7 46 02 OOCS
C7 46 04 AOAC C7 46 06 C460 82 DA
0377
0377 OHA 037C
B8 0500 CD 10 28 C9
037E 037£ 037F 0381
0383
0385 0387
EC A8 08 7S 01 E2 F9 83 00 E9 0448 R
038A 038A BO 00 038C £6 40
038E 2B DB
0390
0392 0392 0393 0395 0397 0399 039B
33 C9
EC AS 08 74 07 E2 F9 B3 01 £9 0448 R
039E
039E 03AO 03AO 03A1 03A3
03A5 03A7 03M 03A8
03AD 0380 03BO 03B2 0385 03B5
03B7
28 C9
EC A8 01 14 15 A8 OB 75 23 E2 f5 B3 02 E9 0448 R
83 03 E9 0448 R
B3 04 E9 0448 R
03BA
03BA A8 08 03BC 75 f2
03SE OlSE 03BF 03C1 03C3
EC A8 01 E1 'B £3 FO
1135 1136 1137 1138
1139 1140 1141 1142 1143
1144 1145 1146
1147
1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161
1162
" .1163
1164
1165
1167 1168 1169 1170 1171 1172 1173 1174
1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1166 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197
1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208
1209 1210 1211 1212 121.3 1214 1215 1216 1217 121B
1219 1220 1221 1222
1223 1224 1225 1226 1227
1228 1229 1230 1231 1232
1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243
1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 '260
C C
;--5-. --I -N-IT---TO---4-0-X-2-5--- --C-O-L-O-R-/M-O-N-O---."-.-S--E-T---TO---M-O--D-E-·-·-··-----
C
C ;----- NOMINAL TIME IS 8286H FOR 60 HZ.
C ;----- NOMINAL TIME IS A2F'EH fOR 50 HZ.
C
C MA'CV£RT.COLOR EOU C
OAOACH
MAX TIME FOR VERT/VERT (NOMINAL + lOS)
C HIN.V£RT.COLOR EOU
OC460H
MIN T I ME FOR VERT/VERT
C
(NOMINAL - lOS)
C CENA8.PER.FRAME EQU
200
NUM OF ENABLES PER FRAME
C MAX.VERT.MONO EOU C
08D99H
MAX TIME FOR VERT/VERT (NOMINAL + lOS)
C HIN.VERT.MONO EOU
OB862H
MIN TIME FOR VERT/VERT
C
(NOMINAL - lOS)
C EENAB.PERJRAME EQU
350
ENHANCED ENABLES PER FRAME
C HENAB.PER.FRAME EQU
350
NUM OF ENABLES PER FRAME
C
C TIM CTl
EOU
043H
; 8253 T I MER CONTROL PORT
C TIMERO
EOU
040H
; 8253 TIMER/CNTER 0 PORT
C
C POD14 PROC
NEAR
C
SUB
SP,OAH
RESERVE 5 WORDS ON STACK
C
MOY
BP,SP
I NIT SCRATCH PAD PO INTER
C
C
ASSUME OS:ABSO, ES:ABSO
C
CALL
DDS
C
MOY
Al,00110000B
SET T tHER 0 TO MODE 0
C
C C
OUT MOY
!~~Og~l,AL
C
OUT
TIMERO,AL
SEND FIRST BYTE TO TIMER
C
TEST
INFO,2
C
JZ
COLOR. EGA.V
C C
CALL MOY
~~D3 PTR{ BPI [2 J, MENAB.PERJRAME
SET UP I N MONOCHROME NUM.OF FRAMES fOR MONO
C
MOY
WORD PTR{BP](4J,MA)CVERT.MONO
MAX T I ME FOR VERT/VERT
C
HOY
WORD PTR{BPJ[6J,MIN.VERT.MONO
MIN TIME fOR VERT/VERT
C
MOY
DL, CRTC.ADDR.B
MONO CRTC REG
C
MOY
AH, C.HRZ.DSP
HDRtZ. TOTAL 01 PLAY
C
HOY
AL,21H
TO 40 COL
C
CALL
OUT.OX
C
. MaY
OL,INPUT.STATUS_B
3BA
C
JMP
SHORT COMMON
C COLOR EGA V:
C
· CALL
ENV X
SET UP IN 40X25 COLOR
C
CALL
BRST DET
ENHANCED MODE
C
JNC
COLoiCv
NO,40X25
C
MOV
DL, CRTC_ADOR
BRST MODE ONLY!
C
HOY
AH,l
HRZ DSP END
C
HOY
AL,20
; MODI FY FOR TEST ONLY
C C
CALL MOY
eg~DD~TR[BPJ(2],EENA8.PER_FRAME ; HUM.OF fRAMES FOR COLOR
C
JMP
BRST.COLOR.V
C COLOR.V:
C
C
HOY
WORD PTR[ BPJl2 J, CENA8]ERJRAME ; NUM.OF fRAMES FOR COLOR
C BRST_COLOR.V:
C C
MOV HOY
~~g ~~~i:~I!~I:~=~~~~=gg~g=
; MAX TIME FOR VERT/VERT ; MIN TIME FOR VERT/VERT
C
HOY
DL, INPUT_STATUS
; SET ADDRESSING TO VIDEO
C
; AHR STATUS
C COMMON:
c
MOY
AX,0500H
; SET TO VIDEO PAGE 0
C
INT
'ON
C
SUB
CX,CX
C
C ; ---- LOOK FOR VERT ICAL
C
C POO14.1:
C
IN
AL,OX
GET STATUS
C
TEST
AL,OOOO1000B
VERT I CAL THERE YET?
C
JHE
POO14.2
CONTINUE IF IT IS
C
LOOP
POO14.1
KEEP LOOK I NG T ILL COUNT
C
HOY
BL,OO
EXttAUSTEO
C
JMP
POO14.ERR
NO VERT I CAL
C
C ;----- GOT VERTICAL - START TIMER
C
C POD14_2:
C
MOY
AL,O
C
OUT
TlMERO,AL
SEND 2ND BYTE TO TIMER TO
C
START IT
C
SUB
BX,BX.
HUT. ENABLE COUNTER
C ; -~--- WAIT FOR VERT ICAL TO GO AWAY
C
XOR
cX,CX
C P0014_25:
C
IN
AL,OX
GET STATUS
C
TEST
AL, 00001 0008
VERTICAL STILL THERE
C
JZ
POD14 3
CONTINUE If IT'S GONE
C
LOOP
POD14::::25
KEEP LOOKING TILL COUNT
C
MOY
BL,01H
; EXHAUSTED
C
JMP
POO14.ERR
; VERT I CAL STUCK ON
C
C ;----- NOW START lOOKING fOR ENABLE TRANSITIONS
C
C POO14.3:
C
SUB
CX,CX
C POD14.4:
C
IN
AL,OX
; GET STATUS
C
TEST
AL,DOOOOO01B
ENABLE ON YET?
C
JE
POD14.5
; GO ON IF IT IS
C
TEST
AL,000010008
; VERTICAL ON AGAIN?
C C
JNE LOOP
:gg~~:l5
CONTINUE I F IT IS KEEP LOOKING If NOT
C
HOY
BL,02H
C
JHP
POD14.ERR
; ENABLE STUCK OFF
C POO14.4A:
C
MOY
BL,03H
C
JMP
POD14.ERR
; VERTICAL STUCK ON
C POD14_4B:
C
MOY
BL,04H
C
JHP
POO14.ERR
; ENABLE STUCK ON
C
C ;----- MAKE SURE VERTICAL WENT OFf WITH ENABLE GOING ON
C
C PD014.5:
C
TEST
AL,OOOO1000B
; VERT I CAL OFF?
C
JHZ
POD14_4A
; GO ON I F IT IS
C ;~---- NOW WAIT fOR ENABLE TO GO OFF
; (ERROR I F NOT»
C POO14.6:
C
IN
AL,DX
; GET STATUS
C
TEST
AL,000000018
; ENABLE OFF YET?
E~~~E HA~0~6~~~0. FO~E~E~~ C
LOOPE
C
C ; ----
POD14.6
KEEP LOOK I NG I F NOT
BUMP COUNTER AND TEST;
VERT I CAL
August 2, 1984
IBM Enhanced Graphics Adapter 113
03CS 03C5 43 0306 74 04
03C8 A8 08
03CA 74 02
03CC 03CC 03eE 0300
BO 00
E6 43 3B 5E 02
0303
0305 0307
0309
0309 030B 0300 030E 03EO 03E2 03£3 03E4
03E7
03E9 03EB 03EO 03EO 03FO 03F2 03f4
74 04 B3 05 EB 6F
E4 40 8A EO 90 E4 40 86 EO 90 90 3B 46 04 70 04 B3 06 EB 5B
3B 46 06 7E 04 83 07 EB 52
03F6
03F6 B8 090B 03F9 BB OOOF
03FC 03FF 0401 0402
0403 0405 0407
0409 040C
040F 0410 0410
0411 0412 0414 0416 0419 041A 0418
89 0050 CO 10 Ee 52 82 CO 84 OF BO 3F E8 0015 R 88 OOOF
5A
50 52 82 CO 84 32 E8 0015 R 5A 56 28 C9
0410
0410 041E 0420 0422 0424 0426
0428
Ee A8 30 75 09 E2 f9 B3 10 OA DC
EB 1E 90
0428 0426 0420
0420 042E 0430 0432
28 C9
Ee A8 30 74 08 E2 F9
0434 83 20 0436 OA DC 0438 EB DE
043A 043A 043C 043F 0441 0444 0446
0446
0448 044B 044E 0451
04,.
0456 0456 045A 045C
0450 045E 0460 0463
FE C4 80 FC 30 74 25 60 CC OF 8A C4 EB C8
B9 0006 BA 0103 E8 06C6 R 63 c4 OA BO 36 E6 43
2' co E6 40 90 90 E6 40 BD 0001 £9 0091 R
0466 0466 0469 046C 046E 0470 0472 0474 0476 0471 0478 047A 0470 0480
£8 OCFE R B8 0500 CD 10
BO 36 E6 43 2A CO E6 40
90
90 E6 40 83 C4 OA BD 0000
0480 04&0 lE
1261 1262 1263 1264
1265 1266 1267
1268 1269
1270 1271 1272 1273 1274
1275 1276
1277 1278
1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302
1303 1304 1305 1306
1307
1308 1309 1310 1311 1312 1313 1314 1315
1316 1317 1318 1319 1320 1321 1322 1323
1324 , 325
1326 1327 1328
1329 1330 1331 1332 1333 1334
1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349
1350 1351 1352 1353
1354 1355 1356 1357
1356 1359 1360 1361 1362
1363 1364 1365 1366 1367 1368 1369 1370 1371
un
1373 1374
1375 1376 1371 1378 1379 1380 1381
1382 1383 1384
1,,&3865
C P0014_7:
C
INC
ax
BUMP ENABLE COUNTER
C
JZ
P0014_75
I F COUNTER WRAPS,
C
SOMETHING IS WRONG
e
TEST
Al,OOOO1000B
0'0 ENABLE GO LOW
e
BECAUSE OF VERT I CAL
e
JZ
POD14_3
I F NOT, LOOK FOR ANOTHER
e
ENABLE TOGGLE
e ;----- HAVE HAD COMPLETE VERTICAL-VERTICAL CYCLE: NOW TEST RESULTS
e POO14_75:
e
MOV
e
OUT
e
eMP
C
e
JE
e
MOV
e
JMP
e P0014_8;
AL,OO TIM_CTL,Al BX,WORD PTRIBPJ[2j
POO14_8 Bl,05H SHORT P0014_ERR
LATCH T I MERO
; NUMBER Of ENABLES BETWEEN ; VERTICALS O. K.?
e
IH
AL, TIMERO
e
MOV
AH,AL
e
HOP
e
IH
AL, TIMERO
e
XCHG
AH,AL
e
HOP
; GET T I MER VALUE LOW ; SAVE IT
; GET TIMER HIGH
e
NOP
e
eMP
e
JOE
e
MOV
e
JMP
e P0014_9:
C
eMP
C
JLE
AX,WORD PTRIBPj{4] POD14 9 Bl,06H SHORT POD14_ERR
AX,WORO PTRIBP1I6) POD14_10
; MAXIMUM VERTICAL TIMING ; MINIMUM VERTICAL TIMING
e
MOV
BL,07H
e
JMP
SHORT POD14_ERR
e
e ;----- SEE IF RED, GREEN, BLUE AND INTENSIFY DOTS WORK
e
e ;----- FIRST, SET A LINE OF REVERSE VIDEO, I NTENSI fl ED BLANKS INTO BUFFER
e POO14_10:
e
MOV
AX,090BH
; WRITE CHARS, BLANKS
C
MOV
BX,OOOFH
PAGE 0, REVERSE VIDEO,
C
e
NOV
cX,ao
e
INT
10H
e
IN
AL,OX
e
PUSH
OX
e
MOV
Dl,ATTR_WR I TE
e
MOV
AH,OFH
e
MOV
AL,03FH
C C
CALL MOV
~;o~~
: HIGH INTENSITY ; 80 CHARACTERS
SAVE I NPUT STATUS ; ATTR I BUTE ADDRESSS ; PALETTE REG 1Ft ; TEST VALUE ; VIDEO STATUS MUX ; START WITH BLUE OaTS
e
POP
e P0014_13:
e
PUSH
e
PUSH
e
NOV
e
MOV
e
CAll
C
POP
C
POP
OX
AX OX Dl,ATTR_WRITE AH,32H OUT_OX OX AX
; SAVE
SAVE INPUT STATUS
; ATTR 18UTE ADORESSS · COLOR PLANE ENABLE
; VIDEO STATUS MUX ; RECOVER I NPUT STATUS
e
SUB
eX,ex
e ;----- SEE IF DOT COMES ON
e POD'4_14~
e
I H
Al,DX
e
TEST
Al, 00 11 OOOOB
e e
JNZ LOOP
~gg~~:~~
e
MOV
Bl,10H
e
OR
Bl,AH
e
JMP
POO14_ERR
C ;----- SEE IF DOT GOES Off
e POO14_15:
e
SUB
cx,cx
e P0014_16:
e
IH
AL,DX
e
TEST
AL,00110000B
C
JE
POD14_17
C
LOOP
P0014_16
e
e
MOV
BL,20H
e
OR
Sl,AH
e
JMP
SHORT POD14_ERR
; GET STATUS ; DOT THERE? ; LOOK fOR DOT TO TURN Off ; CaNT I NUE TEST FOR ~OT ON
; OR IN ~OT 8EING TESTED ; DOT NOT COM' HG ON
GET STATUS I SOOT STI lL ON? GO ON IF DOT OFF ELSE, KEEP WAITING fOR DOT TO GO OFF
OR I N DOT BE I NG TESTED
e e ;_M __ M ADJUST TO POINT TO NEXT DOT e
e POO14_17:
e
IHC
e
eNP
e
JE
e
OR
e
NOV
e
JMP
C pOO14_ERR:
AN AH,030H 1'0014_18 AH,OFH AL,AH P0014_13
· ALL 3 DOTS DONE? ; GO END
MAKE OF,lF,2F
GO LOOK FOR ANOTHER DOT
e
MOV
CX,6
e e
MOV CAll
~:R~~~~~
e
AOO
SP,OAH
e
MOV
Al,OOllOl10B
e
OUT
TI M_CTl,AL
C
SUB
AL,Al
e
OUT
TIMERO,Al
ONE LONG AND THREE SHORT
BALANCE STACK RE-INIT TIMER 0
e
HOP
e
HOP
e
OUT
TIMERO,AL
C
MOV
BP,1
C
JMP
SKIP
C
ASSUME DS:ABSO
e P0014_'8:
e
CALL
005
e
MOV
AX,0500H
e
I HT
10H
e
MOV
AL,OOl10110B
C
OUT
TIM_CTL,AL
e
SUB
Al,AL
e
OUT
TIMERO,AL
e
HOP
SET TO VIDEO PAGE 0 RE~INIT TIMER 0
e
HOP
C
OUT
e
ADO
e
NOV
e POOl4
TIMERO,AL SP,OAH
SP,O ["lOP
REMOVE SCRATCH PAD MAKE SP NON ZERO
e
e ; ----- TEST STORAGE
e
e HEM_TEST:
e
PUSH
OS
114 IBM Enhanced Graphics Adapter
August 2, 1984
0461 E8 OCFE R
~
~
~
0464 0489 0488 0490 0493 0498 0498
0490 0490 04A2 04A7 04M 04M 04AC
04Ar 04B1
04B4 04B6 04B6 0480 04C2 04C4 04C6 04C9 OIiCC 04CE 0401 0404
0405 0407 0408 040A 0400 04EO 04E3 04E6 04E6 04EB 04EB 04EE 04fl 04F3 04F6 04F6 04F1 04F9 04FC 04FF 0501 0504
0501 0508 050A 050B 0500 0510 0513
0516 051B 051E
0520 0523 0523 0526 0529
052B OS2E 052E o52F 0531 0534 0531
0538 053A 0530 0540 0542 0543 0545
0548 OS4B 0550 0553 0556 0556 0558 0558
OS5E 0561 0563 0566 0566 0561 0569
056C 056F 0571 0574 0511 0518 057A
0578 0570 0580 0583 05sa 0588 056E 0590
0593 0596 0598 0599 059C 059C 0590
059E
F6 06 0467 R 02 74 12 60 DE 0410 R 30 86 OOOF 60 DE 0467 R 60 B6 OOOF EB 00
80 26 0410 R Cf 60 OE 0410 R 20 B8 DaDE
CO 10 63 EC 06 6B EC B6 MOO
8E 06 6E CO C7 46 02 0000 C7 46 04 0000 86 03 92 C4 86 0201 E6 0015 R 82 CE 86 0400 E8 0015 R >2 82 DA Ee B2 CO B8 3200 E6 0015 R E8 068f R 80 FC 00 74 03 E9 05CO R
E8 0509 R 60 FC 00 74 03 E9 05CD R
5' 82 C4 B8 02'02 E8 0015 R B2 CE B8 0401 E8 0015 R 52 B2 oA Ee B2 CO B6 3200 E6 0015 R C1 46 04 0000 E8 066F R 80 FC 00 14 03 E9 OSCO R
E6 0509 R 80 FC 00 14 03 E9 OSCO R
5' B2 C4 B6 0204 E8 0015 R 52 82 CE B8 0402 E8 0015 R B2 DA Ee B2 co 88 3200 E8 0015 R C7 46 04 0000 E8 068F R 80 Fe 00 14 03 EB 73 90
E8 0509 R 60 FC 00 14 03 EB 66 90
5' 82 C4 B8 0208 f8 0015 R B2 CE 88 0403 E6 0015 R 52 82 oA Ee 82 CO 86 3200 E8 0015 R C1 46 04 0000 E6 066F R 80 FC 00 15 3D E8 0509 R 60 Fe 00 75 35 55 BD 0000
5E
5E6' OCFE R
05Al 05A5
05A7 05A9
05AA
36: 68 5C 02 B1 06
D3 fB
4B Bl 05
1387 1388 1389 1390 1391 1392
1393 1394 1395 1396 1397 1396 1399 1400 1401 1402 1403 1404 1405 1406 1407 1406 1409 1410 1411 1412 1413 1414 1415 1416 1417 1416 1419 1420 1421 1422
1423 1424 1425 1426 1421 1428 1429 1430 1431 1432 1433 1434 1435 1436 1431 1438 1439 1440 1441 1442 1443
1444 1445 1446 1447 1448 1449
1450 1451 1452
1453 1454
1455 1456 1451
14506 1459 1460 1461 1462 1463 1464 1465
1466 1461 1468
1469 1410 1411 1412 1413 1474 1415 1476 1417 1418 1419 1460 1481 1462 1483 1484 1485 1486 1481 1488 1489
1490 1491 1492
1493 1494
1495 1496 1491 1498 1499 1500 1501
1502 1503 1504 1505 1506 1501 1508 1509 1510 1511 1512
CALL
DDS
ASSUME OS: ABSO
TEST
INfO,2
JZ
O_COLOR_M
OR
EQU I P_LOW,OlOH
MOV
AX,OFH
OR
IHfO,060H
MOV
AX,OFH
JMP
SHORT O_OUT_M
D_COLOR_M;
AND
EQUIP_LOW,OCFH
OR
EQU I P_LOW, 020H
MOV
AX,OEH
D_OUT_M:
INT
10M
SUB
SP,6
MOV
BP, SP
MOV
AX,OAOOOH
ASSUME DS:NOTH lNG, ES:NOTH I NG
MOV
DS,AX
MOV
ES,AX
MOV
WORD PTR[BPJ[21 , 0
MOV
WORD PTR( 8P J( 4], 0
MOV
OH,3
MOV
DL, SEQ_ADDR
MOV
AX,0201H
CALL OUT OX
MOV
OL,GRAPH_AOOR
MOV
AX,0400H
CALL PUSH
OUT _ox
ox
MOV
OL, AlTR_REAO
AL,OX
M"OV
OL,ATTR_WRITE
MOV
AX,3200H
CALL
OUT_DX
CALL
HOW BIG
eMP
AH,O
JZ
AAl
JMP
EGA_MEM_ERROR
AAl :
CALL MEMORY_OK
· CMP
AH,O
JZ
AA2
JMP
EGA_MEM_ERROR
AA2,
pop
OX
MOV
DL, SEQ_AooR
MOV
AX.0202H
CALL OUT_OX
MOV
OL, GRAPH_ADOR
MOV
AX,0401H
CALL
OUT_OX
PUSH
OX
MOV
Ol.ATlR_REAO
IN
AL,OX
MOV
OL,ATTR_WR I TE
MOV
AX, 3200H
e
CALL
OUT OX
e
MOV
WORD PTR (BPJ[41,O
e
CALL HOl-CBIG
e
eHP
AH,O
e
JZ
AA3
e
JHP
EGA_MEM_ERROR
e AA3:
e
CALL MEMORY_OK
e
eMP
AH,O
e
JZ
AA4
e
JMP
EGA_HEM_ERROR
e AA4:
e
POP
OX
e
HOV
Ol, SEQ AoDR
e
MOV
AX,0204H
e
CALL
OUT_OX
e
PUSH
OX
e
MOV
Dl, GRAPH_AoDR
e
MOV
AX, 0402H
e
CALL OUT_OX
e
MOV
OL,ATTR_REAO
e
IN
AL,DX
e
MOV
DL, ATTR_WR I TE
e
MOV
AX,3200H
e
CALL
OUT_OX
e
MOV
WORD PTR(8P][4),O
e
CALL HOW_BIG
e
eHP
AH,O
e
JZ
M5
e
JMP
EGA_HEM_ERROR
e M5:
e
CALL MEMORY_OK
e
eMP
AH,O
e
JZ
AA6
e
JMP
EGA_HEM_ERROR
e AA6:
e
POP
OX
e
MOV
DL,SE~ADDR
C
MOV
AX,0206H
e
CALL
OUT_DX
e e
MOV MOV
~;g:~;~_ADDR
e
CALL
OUT_OX
e
PUSH
OX
C
MOV
DL,ATTR_REAO
e
IN
AL,oX
e
MOV
DL,ATTR_WRITE
e
MOV
AX,3200H
e e
CALL MOV
~~DD~TR( 8P)(4),O
e
CALL
HOW BIG
e
eHP
AH,O
e
c
JNZ CALL
EGA_HEM_ERROR MEMORY_OK
e
eMP
AH.O
e
JNZ
EGA_MEM_ERROR
e
PUSH
BP
C
HOV
BP,O
e EGA_MEM_EX IT:
e
POP
51
e
POP
OX
e
CALL
DDS
e
ASSUME OS:ABSO
e
MOV
BX,WORO PTR SS:ISI1(2)
e
MOV
CL,06H
e
SHR
BX,CL
e
DEC
BX
c
HOV
CL,05H
I NTERHAL COLOR MODE T(ST I N COLOR RESERVE 3 WORDS ON STACK SET BP PUT BUFfER ADDRESS IN AX SET UP SEG REGS TO POINT
TO BUffER AREA INITIALIZE INITIALIZE
ADDRESS READ MAP SELECT
SET UP ATTR I 8un ; ATTRI8UTE WRITE ADDRESS ; GO fiNO AMOUNT OF MEMORY
GO TEST IT
ADDRESS OF READ MAP
SET UP ATTRIBUTE ATTRIBUTE WRITE ADDRESS INI TlALIZE GO F I NO AMOUNT OF MEMORY
GO TEST IT
ADDRESS OF READ MAP SET UP ATTRIBUTE ; ATTRIBUTE WRITE ADDRESS INITIALIZE ; GO FINO AMOUNT Of MEMORY
; GO TEST IT
; ADDRESS Of READ MAP
; SET UP ATTR 18UTE ; ATTRIBUTE WRITE ADDRESS
INITIAUZE GO F I NO AMOUNT OF MEMORY GO TEST IT SAVE SCRATCH PAD POINTER RESET BP fOP: XT RESTORE SET DATA SEGMENT GET EGA MEMORY SIZE DIVIDE BY 64 TO GET
NUMBER OF 64KB BLOCKS
August 2, 1984
IBM Enhanced Graphics Adapter 115
05AC 03 E3 05AE 80 E3 60
0581 80 26 0487 R 9F 0586 08 1E 0487 R
05BA 05Br
05C3 0'06 05C9 OSCA 05CD 05CO 0500 0503
0'04 0507
80 DE 0487 R 04 8A 1E 0488 R E8 OOF3 R 83 C4 06 1F E9 0091 R
BA 0103
,>E8 06C8 R
BD 0001 EB C3
0509
0509 05DC 05DE 05EO 05£3 05E5 05E7 05E9
05EC 05EF 05Fl 05F1
05F4 05F7 05FA
05FA 05F8
BS AOOD 8E DB 8E C3 88 46 04 8A E8 2A C9
" 01
E8 05FB R 80 FC 00 75 09
8B 46 04 01 46 02 88 0000
C3
05FB 05F8 05FC
05FO
>5 FC 2B FF
05FF
0601
0604 0608 060C 060E 0610
26 CO
.,E8 OCFE R
8B 1E 0472 R FB 1234
8C C2 6E DA 74 62
0612 0616 0618 0618 061A
061C
061E 0620 0622
0624
61 FB 4321 74 5C
86 05 614. 05 32 C4 75 40 FE C4 8A C4 75 F2
0626 0628
062. ..20 0630
8B E9 88 AA55 88 08 BA 55M F3/ AS
0632 0633 0634
063> 0637 0639 0639 063A 063C 063E
0640 0641 0643 0645 0646 0647 0648 064A 064A
0648 0640 064F
4F
4' '0 88 f7 68 CD
AD 33 C3 75 22 88 C2 A. E2 F6 88 CD Fe 4. 4. 6B FE
AD 33 C2 75 11 A8
0650 E2 F8
0652 Fa 0653 4E
0654
0655 0657 0657
0658 065A
065C
065E 0660 0660 0662 0664
4E 8B CD
AD OB CO 75 04 E2 F9 E8 11
8B C8 32 E4 OA ED
1513 1514
1515 1516 1517 1518
1519 1520 1521
1522 1523 1524
1525 1526 1527 1528 1529 1530 1531
1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547
1548 1549 1550 1551 1552 1553 1554
1555 1556 1557 1556 1559 1560 1561
1562 1563 1564
1565 1566 1567 1568 1569 1570 1571
1572 1573 1574 1575
1576 1577 1578 1579 1560 1581
1582 1583 1584 1565 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597
1598 1599 1600 1601 1602 1603 1604 1605
1606 1607 1608
1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623
1624 1625 1626 1627 1626 1629 1630 1631 1632 1633 1634
1635 1636 1637 1638
e
SHL
BX,CL
e
AND
8L, 0 11 000008
C
ISOLATE 8ITS 5 AND 6
C
AND
INFO,100111118
C
C
OR
INfO,8L
e
e
OR
INFO,OOOO0100B
e
HOV
BL,INFO_3
04H SET 3XX ACT I VE
C
CALL
MK_ENV
e
ADD
SP,6
RESTORE STACK
C
POP
OS
C
JHP
SKI P
; GO TO END
e EGA_MEM_ERROR:
e
MOV
DX,OlO3H
ONE LONG AND THREE SHORT
C
CALL
ERR_BEEP
C
PUSH
.P
SAVE SCRATCH PAD PO I NT ER
e
MOV
BP,l
INDICATE ERROR FOR XT
C
JHP
EGA_HEM_EXIT
C
e :'"'---- THIS ROUTINE FINDS AMOUNT OF MEMORY GOOD
e
e MEMORY_OK
PROC
NEAR
e
MOV
BX,OAOOOH
; SET PTR. TO 8UffER SEC
C
HOV
DS,BX
; SET SEG. REG.
C
HOV
ES,BX
e
HOV
AX,WORO PTR[BP]{I.i]
SET COUNT FOR 32K WORDS
e
MOV
CH,Al
SET AMOUNT OF BUffER
e
SUB
CL, CL
TO BE TESTEO
e
SHL
CX,1
MULTIPLY BY TWO
e
CALL
PODSTG
C
CHP
AH,O
TEST FOR ERROR
e
JNZ
C MEMOR'COK_EX:
C
MOV
MEMDRY_OK_ERR
AX, WORD PTR{ BP , [1+ 1
I F ERROR GO PR I NT IT AMOUNT Of MEMORY fOUND
e
ADD
WORD PTR[8Pl[2],AX
AMOUNT OF MEMORY GOOD
e
MOV
AX,O
e MEMORY OK ERR:
C
- RET
C MEMORY_OK
ENDP
C C
---------------------------------------------------------------
e ; THIS ROUTINE PERFORMS A READ/WRITE TEST ON A BLOCK OF STORAGE:
e ; (MAX. SIZE = 32KW). IF "WARM START", FILL 8LOCK WITH 0000 AND:
e ; RETURN.
C ; ON ENTRY:
C
ES = ADDRESS OF STORAGE TO BE TESTED
C
OS = ADDRESS OF STORAGE TO BE TESTED
C C
= ex = WORD COUNT at STORAGE BLOCK TO BE TESTED
(MAX. 8000H (32K WORDS))
e
ON EXIT:
e
ZERO FLAG = OFF I F STORAGE ERROR
e C
, ;
--A-X-,B--X-,-C-X-,-D-X-,-O-I-,S--I--A-R-E--A-L-L--D-E-S-T-RO--Y-E-D-. -
-----
---
--
-------
--------
e POOSTG PROC
NEAR
C
PUSH
.P
e
CLO
SET D I R TO INCREMENT
e
SUB
01,01
SET 01=0000 REL TO START
e
OF SEGMENT
e
SUB
AX,AX
INITIAL DATA PATTERN FOR
C
OO-FF TEST
e
CALL
DDS
C
ASSUME DS:ABSO
C
HOV
ex, os: RESET_FLAG
e
eHP
ax, 1234H
WARM START?
C
MOV
ox, ES
e
MOV
OS,ox
; RESTORE OS
e
JE
PODSTG_5
; GO DO FILL WITH 0000
C
I F WARM START
C
CHP
BX,4321H
DCP WARM START?
C
JE
PODSTG_5
DO FILL IF so
e PODSTG_, :
e
MOV
[OJ J,AL
; WRITE TEST DATA
C
MOV
AL, [011
; GET I T BACK
e
XOR
AL,AH
; COMPARE TO EXPECTED
C
JNZ
PODSTG_ERRO
ERROR EXI T IF MI SCOMPARE
C
INC
AH
FORM NEW DATA PATTERN
C
HOV
AL.AH
e
JNZ
POOSTG_'
LOOP TILL ALL 256 DATA
e
PATTERNS DONE
e
MOV
8P,CX
SAVE WORD COUNT
e
MOV
AX,OAA55H
C
HOV
OX,AX
LOAD DATA PATTERN
C
MOV
DX.055MH
LOAD OTHER DATA PATTERN
C
REP
STOSW
FILL WORDS FROM LOW TO
C'
e
DEC
DI
c
DEC
DI
HIGH WITH AAAA PO I NT TO LAST WORD
WRI TTEN
e
STD
SET 0 I R FLAG TO GO OOWN
e
HOV
SI,OI
SET I MOEX REGS. EQUAL
C
HOV
CX,8P
RECOVER WORD COUNT
C PODSTG_2:
GO FROM HIGH TO LOW
C
LODSW
GET WORD FROM MEMORY
e
XOR
AX,8X
EQUAL WHAT S/8 THERE?
e
JNZ
POOSTG_ERRO
GO ERROR EX I T I F NOT
C
MOV
AX,OX
GET 55 DATA PATTERN AND
C
STOSW
STORE I N LaC JUST READ
C
LOOP
PODSTG_2
LOOP TILL ALL BYTES DONE
C
HOY
CX,8P
RECOVER WORD COUNT
C
CLD
BACK TO INCREMENT
C
INC
SI
ADJUST PTRS
e
INC
51
e
MOV
DI,SI
e POOSTG_3 :
LOW TO HIGH DO I NG WORDS
C
LOOSW
e
XOR
AX,OX
GET A WORD SHOULD COMPARE TO ox
C
JNZ
PODSTG_ERRO
, GO ERROR I F NOT
e
STOSW
; WRITE 0000 BACK TO lOC
e
JUST READ
C
LOOP
POOSTG_3
LOOP TILL DONE
e
e
STD
; BACK TO DECREMENT
C
DEC
SI
; ADJUST PO I MTER DOWN TO
C
; LAST WORD WRITTEN
C
DEC
51
e
MOV
eX,BP
; GET WORD COUNT
e POOSTG_4:
e
LOOSW
e
OR
AX,AX
GET WORD ; = TO 0000
e
JNZ
POOSTG_ERRO
C
LOOP
PODSTG_4
ERROR I F NOT LOOP TILL DONE
C
JHP
SHORT PODSTG_ERR2
C PODSTG_ERRO:
e
MOV
CX,AX
SAVE BITS I N ERROR
e
XOR
AH,AH
e
OR
CH,CH
HIGH BYTE ERROR?
r"'\
r'"\
r"'\
116 mM Enhanced Graphics Adapter
August 2, 1984
~
0666 0668 066A 066A 066c 066E 0611 0611 0672 0673 0674
0674 0675 0616 0678 067A 0670 0680 0681 0682 0684
74 02 .. 01
OA C9 1403 80 C4 02
50 fC e,
'>02
B6 03 82 C4 B8 020F E8 0015 R ,A ,a F3/ AB E8 OCFE R
0687
068B
0680 068F
89 IE 0472 R 8E DA EB E2
068F 068F 0691
0693 0693 0695 0697 069A 069c 069F 06A1 06A4 06A6 06A8 06AB 06AO 06B1
06B4 06B7 06B9 06BC 06BC 06BF 06Cl O6e1
06C4 06C1 06C7 06C8
8C OA 2B DB
8E C2 28 FF B8 AA55 88 C8 26: 89 05 so OF 26: 88 05 33 Cl 75 14 B9 2000 F3/ AB 81 C2 0400 83 C3 10 80 FE BO 7' DA EB 01 90
8OFEAO 74 06
01 5E 04 B8 0000
e,
~
06C8 06C8 06C9 06CA 06CB
9C fA
1E E6 OCFE R
06CE 0600 0602 0602
0604 0607 0607 0609 06DB 0600 0600 06DF 06E2 06E2 06E4 06E6 06E8 06E8 06EA 06EA 06EC
06£0 06[[ 06EF
OA F6 14 DB
83 06 E8 0020 R
E2 FE FE CE 75 f5
B3 01 E8 0020 R
E2 FE FE CA 75 F5
E2FE
E2 FE
'01F
e,
~
06Ef
06EF OEB3 R 06F1 lOEF R
06f3 1151 R 06F5 1186 R 06F1 119D R 06F9 12A4 R 06FB 150£ R
06FD 1580 R 06fF 1102 R
0701 1899 R 0703 1800 R 0105 1A15 R 0701 lBCB R 0109 lC9F R 070B 1001 R 0100 1065 R 010F 10C5 R
0711 lF98 R
0713 20BF R 0715 2118 R
"" 0028
1639 1640 1641 1642 1643 1644
1645 1646 1647 1648
1649 1650 1651 1652 1653 1654 1655 1656 1651 1658 1659 1660 1661
1662 1663 1664 1665 1666 1661 1668 1669 1610 1671 1672 1673 1614 1615 1676 1677 1678 1679 1660 1681 1662 1683 1684 1685 1666 1687 1688 1689
1690 1691 1692 1693 1694
1695 1696 1697 1698 1699 1100 1101
1102 1703
1104 1705 1706 1707 1708
1709 1110
17" 1712
1713 1714
1715 1716 1717
1716 1719 1720 1721 1722 1723 1724 1725 1726 1721
1728 1729 1730 1731
1732 1733 1734
1735 1736 1737
1738 1739
1740 1141 1742 1743 1744 1145 1746 1747 1748 1149 1750 1751 1752 1753 1754 1755 1756 1151 1758 1759 1160 1761 1762 1763 1764
C
JZ
PODSTC_ERR1
C
HOV
AH,1
SET HIGH BYTE ERROR
e PODSTG_ERRl :
C
OR
CL,CL
LOW BYTE ERROR?
C
JZ
POoSTG_ERR2
C
AOO
AH,2
C PODSTG_ERR2 :
C
pop
.P
C
CLD
SET OIR FLAG BACK TO IHC
C
RET
RETURN TO CALLER
C POOSTG_5:
SIMPLE FILL WITH 0000 ON
C
WARM~START
C
PUSH
AX
SAVE
C
PUSH
OX
SAVE VALUE
C
HDV
OH,3
e
HDV
OL, SE~AOOR
SElLAOOR REGISTER
e
HDV
AX,020FH
e
CALL
OUT_OX
00 IT
C
POP
OX
RESTORE
e
POP
AX
RESTORE
e
REP
STOSW
e
CALL
DDS
e
ASSUME OS;A8SQ
e
HOY
OS: RESET_FLAG, BX
e
HOY
OS,OX
; RESTORE OS
e
JHP
PODSTG_ERR2
; AND EXIT
e POOSTC ENOP
e
e ;----- O'ETERMINE SIZE OF BUFFER
e
e HOW_BIG
PROC NEAR
e
HOV
OX,OS
; SET PNTR TO BUFFER LOC
C
SUB
ax,ex
; BAS I C COuNT OF OOK
e FILL LOOP:
C
- MoY
ES,I;jX
SET SEG. REG
e
SUB
01,01
e
HOY
AX,OAA55H
TEST PATTERN
e
HOV
ex,AX
e
HOV
ES:(Oll,AX
SEND TO MEMORY
e
HOV
AL,OFH
PUT SOMETH I NG IN AL
e
HOV
AX,ES: (011
GET PATTERN FROM MEMORY
e
XOR
AX,CX
COMPARE PATTERNS
e
JHZ
HOW_B I G_ENl'>
GO END 1r NO COMPARE
e
HOV
CX,2000H
SET COUNT FOR 6K WORDS
e REP c
STOSW ADD
OX,0400H
FILL 8K WORDS POINT TO NEXT 16K BLOCK
C
ADD
BX,16
BUMP COUNT BY 16KB
e
CHP
OH,OBOH
C
JHZ
FILL LOOP
AREA VET 11 80000H)
e
JHP
HOW_81 G_END
e HOW_BIG_EHD;
e
eHP
OH,OAOH
1ST 16KB OK
C
JZ
c RESUME;
HB_ERROR_EX I T
e
ADD
WORD PTR(BPj[41.BX
SAVE BUFFER FOUND
e
HOV
AX,O
e HB_ERROR_EXIT:
e
RET
e HOW_BIG
ENoP
--------- --------- e
c
e
C
; ;
--S--U-8R--O---U---T-I -N- -ES---FO-R---P-OW---E--R---ON---0-I -AG--N-O-S-T--I -C--S-----,-------------------------
C ;THIS PROCEDURE WILL ISSUE ONE LONG TONE (3 SEC) AND OHE OR
e ; MORE SHORT TONES (1 SEC) TO I NO I CATE A FA I LURE ON THE PLANAR
e ;BOARD ,A BAD RAM MODULE,OR A PROBLEM WITH THE CRT.
C :: ENTRY REQU I REMENTS:
e
OH=NUMBER OF LONG TONES TO BEEP
e e
; ;
------
O--L=-N-U-M-B-E-R---O-f--S-H-O-R-T--T-O-N-E-S--T-O--BE-E-P-. ----------
--
---------
-
e ERR_BEEP PRoe
NEAR
e
PUSHF
SAVE FLAGS
C
eLi
C
PUSH
os
: DISABLE SYSTEM INTS
C
CALL
ODS
e
ASSUME OS:ABSO
e
OR
OH,DH
; ANY LONG TONES TO BEEP
e
JZ
0'
e Gl:
; NO, DO THE SHORT ONES ; LONG BEEP
e
MOV
BL,6
; COUNTER FOR BEEPS
e
CALL
eEEP
; DO THE BEEP
C G2:
C
LOOP
G2
; DELAY BETWEEN BEEPS
e
DEC
OH
; ANY MORE TO DO
C
JHZ
01
; DO IT
e G3:
C
HOV
BL,l
; COUNTER FOR A SHORT BEEP
e C 04,
CALL
BEEP
; 00 IT
e
LDCP
G.
DELAY BETWEEN BEEPS
e
DEC
OL
DOHE WITH SHORT BEEPS
e
JHZ
G3
DO MORE
e G5:
e
C 06,
LOOP 05
DELAY BEFORE RETURN
e
LOOP G6
e
POP
OS
RESTORE CONTENTS OF OS
e
POPF
RESTORE FLAGS
e
RET
e ERR_BEEP
ENOP
e
e
SUBTTL
T2
LABEL WORD
OW
OFFSET AHO
OW
OFFSET AH1
ow
OFfSET AH2
ow
OFFSET AH3
ow
OfFSET AH.
ow ow
OFFSET AH5 OFFSET AH.
ow
OFfSET AH7
ow
OFFSET AHa
OW
OFFSET AH'
OowW
OFFSET AHA OFFSET AHa
OW
OffSET AHe
ow
OfFSET AHO
OowW ow ow
OFfSET OfFSET OFFSET OFfSET
AHE AHF AH10 AHl1
ooww
OFFSET AH12 OFFSET AH13
T2L
EOU
$-T2
MODE SET SET CURSOR TYPE SET CURSOR POSITION READ CURSOR POS IT I ON READ LIGHT PEN POSITION ACT I VE 0 I SPLAY PAGE SCROLL DOWN SCROLL UP READ CHAR/ATTR I BUTE WRITE CHAR/ATTRIBUTE WRITE CHARACTER ONLY SET COLOR PALETTE WRITE DOT READ DOT WRITE TTY CURRENT VIDEO STATE SET PALETTE REGI STERS CHAR GENERATOR ROUT 1NE ALTERNATE SELECT WRiTE STRING
August 2, 1984
IBM Enhanced Graphics Adapter 117
0717
'" 0000 0717
0717 28 18 08 07111, 0800
'" 0005
one
071C 08 03 00 03 "" 0004
0720 23
0721 0721 37 27 20 37 31 15 0727 04 11 00 07 06 07 0720 00 00 00 00 El 24 0733 C7 14 08 EO Fa 11,3 0739 FF "" 0019
'" 0023
07311, 07311, 00 01 02 03 all 05 07110 06 01 10 11 12 13 07116 14 15 16 17 08 00 0711C Of 00 '" 0014
'" 0037 074E 074E 00 00 00 00 00 10 0754 DE 00 FF = 0009
= 00110
0757 28 18 08 075A 0800
075C OB 03 00 01
0760 23
0761
0767 0760 0773 0779
37 27 20 37 31 15 04 11 00 07 06 07 00 00 00 00 £1 24 C7 14 08 EO FO 11,3
fF
07711,
0780 0786 078C
00 01 02 03 04 05 06 07 10 11 12 13 14 15 16 17 08 00 OF 00
078E 00 00 00 00 00 10 0794 OE 00 Ff
0797 50 18 08 079A 1000
079C 01 03 00 03
0711,0 23
07Al
07A7 07AO 07Bl 0789
70 IIf 5C 2F 5F 07 04 11 00 07 06 07 00 00 00 00 £1 24 C7 28 08 EO FO A3 fF
07BA 07CO 07C6
07CC
00 01 02 03 04 05 06071011 12 13 111 15 16 17 08 00
OF 00
07CE 00 00 00 00 00 10 01D4 DE 00 fF'
0707 50 18 08 07DA 1000
070e 01 03 00 01
07E0 23
07El 07E7 07EO 07F3
07F9
70 4F 5C 2F 5F 07 04 11 00 07 06 07 00 00 00 00 El 24 C7 28 08 EO Fa 11,3 fF
OHA 0800
0606 080C
00 01 02 03. 04 05 06 07 10 11 12 13 14 15 16 17 08 00
Of 00
080E 00 00 00 00 00 10 0614 DE 00 Ff
0817 28 18 08
1765 1766 1767 1768 1769 1770 1771
1772 1773
1774 1775 1776
1777
1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 1789 1790 1791 1792 1793 1794 1795 1796 1797
1798 1799 1800 1801 1802 1803 1804 1805 1806
1801 1808 1809 1810 1811 1812 1813 18111 1815 1816 1817 1818 1819 1820 1821 1822 1823 18211 1825 1826 1827
1828
1829 1830 1831 1832 1833 1834 1835 1836 1831 1838 1839 1840 1841 1842
18~3 18114 18115 1846 1847 1848
1849 1850
1851 1852 1853
1854 1855 1856 1857 1858
1859 1860 1861 1862 1863 1864 1865 1866 1867 1868
1869 1870 1871 1872
1873 18711 1875 1876 1877 1878 1879 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890
C
INCLUDE
YPARMS. IMC
C
SUBTTL VPARMS. INC
C
PACE
C VIOEO_PARMS
LABEL BYTE
C
C
STRUCTURE OF THIS TABLE
C
C
COLUMNS, ROWS, PELS PER CHARACTER
C
PACiE LENGTH ,
C
SEQUENCER PARAMETERS
C
MISCELLANEOUS REGISTER
C
CRTC PARAMETERS
C
ATTRIBUTE PARAMETERS
C
GRAPH les PARAMETERS
C
C BASE 1 EOU
$ - Vi OED_PARKS
C BASC1_L
LABEL BYTE
C
C ;----- DEFAULT MODES
C
C ; --0-
C
DB
400,240,080
C
OW
00800H
C
C TFS_LEN EQU
$ - BASE 1 L
C
C SEQ_PARMS
LABEL BYTE
C C Ml
DB
OOBH, 003H,OOOH, 003H
EOU
$ - SEQ..PARMS
C
C
DB
023H
C
C CRT_PARMS
LABEL BYTE
C
DB
037H, 027H, 02DH, 03 7H, 031 H, 0 15H
C
DB
004H, 011H,000H, 007H, 006H, 001H
C
DB
OOOH, OOOH,OOOH, OOOH,OE 1H, 024H
C
DB
OC7H, 014H, 008H, OEOH,OFOH, OA3H
C
DB
OFFH
C M" C
EOU
$-CRT_PARMS
C lICIl
EOU
$ - BASE_l_L
C
C ATTR_PARMS
LABEL BYTE
C
DB
OOOH, 001H, 002H, 003H, 004H, 005H
C
DB
006H, 001H, 01 OH, 011 H, 012H, 01 3H
C
DB
014H, 0 15H, 016H,01 7H, 008H,DODH
C C .5
DB
OOfH,OOOH
EOU
$-ATTR_PARMS
C
C LN_2
EOU
C GRAPH_PARMS
$ - BASE_l_L LABEL BYTE
C
DB
DOOH, OOOH, OOOH, OOOH, OOOH, 01 OH
C
DB
OOEH,OOOH,OFFH
C M6 C
EOU
$-GRAPH PARMS
C "'_TBL_LEN
EOU
$ - BASE_'_L
C
C ;--1-
c
DB
400,2110,080
C
OW
00800H
c
C
DB
008H, 003H, OOOH, 003H
C
c
DB
023H
C
c
DB
037H, 027H, 020H, 037H, 031 H, 0 15H
C
DB
004H,011 H, OOOH, 007H, 006H, 007H
c
DB
OOOH, OOOH, OOOH, OOOH, DEl H, 024H
C
DB
OC7H, 014H, 008H, OEOH, OfOH, OA3H
C
DB
OFfH
C
c
DB
OOOH, 001 H, 002H, OOlH, 004H, 005H
C
DB
006H, 007H, 01 OH, 011H, 012H, 013H
c
DB
014H, 015H, 0 16H, 017H, 008H, OOOH
C
DB
OOFH, OOOH
C
C
DB
OOOH, OOOH, OOOH,OOOH, OOOH, 010H
C
DB
c
c ;--2-
c
DB
C
ow
OOEH, OOOH, OFFH
800,240,080 01000H
C
C
DB
001 H, p03H, OOOH, 003H
C
C
DB
023H
C
C
DB
070H, 04fH, 05CH, 02FH, 05FH, 007H
C
DB
004H, 01 1H,OODH, 007H, 006H,007H
C
DB
OOOH, OOOH, OOOH, OOOH, OE1H, 024H
C
DB
OC7H, 028H, 008H, OEOH, OF'OH, OA1H
C
DB
OFfH
C
c
DB
OOOH, DOl H,002H, 003H, 004H, 005H
C
DB
006H, 007H, 010H, 01 1H, 012H, 013H
C
DB
01 4H, 01 5H,016H, 017H, 008H, DDOH
C
DB
OOFH,OOOH
C
C
DB
OOOH, OOOH, OOOH, OOOH, OOOH, 01 OH
C
DB
OOEH,OOOH,OFfH
C
C ; --3-
C
DB
800,240,080
c
ow
01000H
C
C
DB
001H,003H, OOOH, 003H
C
C
DB
023H
C
C
DB
070H, 0IlFH,05CH, 02FH, 05FH, 007H
C
DB
004H,.Jl1H, OOOH. 007H, 006H, 007H
C
DB
OOOH, OOOH, OOOH, OOOH, 0 E1H, 024H
C
DB
OC7H, 028H, 008H, OEOH, OfOH, OA3H
C
DB
OFFH
C
C
DB
OOOH, 001H, 002H, 003H, 004H, 005H
C
DB
006H, 007H,010H, 01 1H, 012H, 013H
c
DB
01 4H, 015H,O 16H, 017H, 006H,ODOH
C
DB
OOFH,OOOH
C
C
DB
OOOH, OOOH, OOOH, OOOH, OOOH, 01 OH
C
DB
OOEH,OOOH,OFfH
C
c ;--4-
c
DB
400,240,080
118 IBM Enhanced Graphics Adapter
August 2, 1984
~ ~ ~
081A 4000
081C DB 03 00 02
0820 23
0821
0827 0820 0833 0839
37 27 20 37 30 14 04 11 00 01 00 00 00 00 00 00 El 24 C7 14 00 EO FO A2
ff
083A
0840 0846 084C
00 13 15 17 02 04
06071011 12 13 14 15 16 17 01 00
03 00
084E 00 00 00 00 00 30 0854 OF 00 FF
0857 28 18 08 085A 4000
085C 08 03 00 02
0860 23
0861
0867 0860
0873
0879
31 27 20 31 30 14 04 11 00 01 00 00 00 00 00 00 El 24 C7 14 00 EO FO A2
ff
087A
0880 0886 088C
00 13 15 11 02 04 06 07 10 11 12 13 14 15 16 17 01 00
03 00
088E 00 00 00 00 00 30 0894 OF 00 FF
0891 50 18 08 089A 4000
089C 01 01 00 06
OBAD 23
08Al
08A7
08AD 0883 08B9
70 4F 59 20 5E 06 04 11 00 01 00 00 00 00 00 00 EO 23
~~ 28 00 IIf EF C2
088A
D8CO 08C6 08ee
00 17 17 17 17 17 171717171717 17 17 17 17 01 00 01 00
08CE 00 00 00 00 00 00 0804 00 00 ff
0807 50 18 DE 080A 1000
08De 00 03 00 03
A. 08EO
08El 08E7 08EO 08F3 08F9
60 4F 56 3A 51 60 70 1f 00 00 DB OC 00 00 00 00 5E 2E 50 28 00 5E 6E A3
ff
08FA
0900 0906 090C
00 08 08 08 08 08 08 08 10 18 18 18 18 18 18 18 OE 00 OF 08
090E 00 00 00 00 00 10 0914 OA 00 FF
0917 28 18 08 091A 4000
091C 00 00 00 03
0920 23
0921 0927 0920
0933 0939
37 27 20 37 31 15 041100070607 00 00 00 00 El 24 C7 14 08 EO fO A3
ff
093A
0940 0946 094C
00 01 02 03 04 05 06071011 12 13
14 15 16 17 08 00
OF 00
094E 00 00 00 00 00 10 0954 OE 00 ff
0957 28 18 08 095A 4000
095C 00 00 00 03
0960 23
0961
0967
0960 0973
0979
37 27 20 37 31 15 041100070607 00 00 00 00 El 24 C7 14 08 EO fa A3
FF
097A 00 01 02 03 04 05 0980 06071011 12 13 0986 14 15 16 17 08 00 Og8e OF 00
1891 1892 1893 1894 1895
1896 1897 1898 1899 1900 1901 1902
1903
1904 1905 1906 1907 1908 1909 1910 1911 1912 1913 1914 1915 1916
1917 1918
1919 1920 1921 1922 1923 1924 1925 1926 1927 1928
1929 1930 1931 1932 1933 1934 1935 1936 1937 1938 1939 1940 1941
1942 1943 1944 1945 1946 1947 1948
1949 1950 1951 1952 1953
1954 1955 1956 1957 1958 1959 1960 1961 1962 1963 1964
1965 1966
1967 1968 1969 1970 1971
1972 1973 1974 1975 1976 1977 1978
1979 1980 1981 1982 1983
1984 1985 1986 1987 1988 1989 1990 1991
1992
1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2Q09 2010 2011 2012 2013
201" 2015 2016
OW
DB
DB
DB DB DB DB DB
DB DB DB DB
DB DB
; --5- DB ow
DB
DB
DB DB DB DB DB
DB DB DB DB
DB DB
; --6- DB
ow
DB
DB
DB DB DB DB DB
DB DB DB DB
DB DB
; --1- 08
ow
DB
DB
DB DB DB DB DB
DB 08 DB DB
DB DB
;--8- DB
ow
DB
DB
DB DB DB DB DB
DB DB DB DB
DB DB
;--9- DB ow
DB
DB
DB DB DB DB DB
DB DB DB DB
04000H
OOBH, 003H, OOOH, 002H
023H
037H, 027H, 020H, 037H, 030H, 014H 004H, 01 1H, OOOH, DOl H, OOOH, OOOH OOOH, OOOH, OOOH, OOOH, OEl H, 024H OC7H, 014H, OOOH, OEOH,OFOH, OA2H OFFH
OOOH, 013H, 015H, a 17H, 002H, 004H 006H, 007H, 010H, 01 1H, 012H, 013H 014H, 015H, 016H,017H, 001 H, OOOH 003H,000H
OOOH, OOOH, OOOH,OOOH, OOOH, 030H OOFH, OOOH, OFFH
400,240, 080 04000H
006H, 003H, OOOH, 002H
023H
037H, 027H, 020H,031H, 030H, 014H 004H, 011 H, OOOH, 001 H, OOOH, OOOH OOOH, OOOH. OOOH, OOOH. 0 E1 H, 024H OC7H, 0 14H, OOOH,OEOH,OFOH, OA2H OFFH
OOOH, 013H, 015H, a 17H, 002H, 004H 006H, 001H, 01 OH, a 11 H, 012H,013H 014H, 015H, 0 16H, 017H,001 H, OOOH 003H,000H
OOOH, OOOH, OOOH, OOOH, OOOH, 030H OOFH,OOOH,OFFH
800,240,080 04000H
001H, 001 H, OOOH, 006H
023H
010H, 04FH, 059H, 020H, 05EH, 006H 004H, a 11 H. OOOH, 001H, OOOH, OOOH OOOH, OOOH, OOOH, OOOH, OEOH, 02 3H OC1H, 028H, OOOH, OOFH, OErH, OC2H OFfH
OOOH, 017H,017H, 017H, 017H,017H 017H, 017H, 017H, 017H, 017H, 017H 017H, 017H, 017H, 017H, 001 H,OOOH 001H,000H
OOOH, OOOH, OOOH, OOOH, OOOH, OOOH OOOH,OOOH,OfFH
800,240,140 01000H
OOOH, 003H,OOOH,003H
0.0"
060H,04fH. 056H, 03AH, 051H,060H 070H,01 FH, OOOH, OODH, 008H, ooeH OOOH, OOOH, OOOH, OOOH, 05EH, 02EH 050H, 028H, OOoH, 05EH, 06EH,OA3H OfFH
OOOH, 008H, 008H. 008H, 008H, 008H 008H, 008H,010H, 018H, 018H, 01SH 018 H, 0 18H, 018H, 01 8H, OOEH, OOOH 00FH,008H
OOOH,OOOH ,OOOH, OOOH, OOOH, 010H OOAH, OOOH, OFFH
400,240,080 04000H
OOOH, OOOH,OOOH, 003H
023H
037H, 027H ,020H,037H, 031H, 015H 004H, all H, OOOH, 007H, 006H, 007H OOOH,OOOH, OOOH, OOOH, DEl H, 024H OC7H,014H, 008H, OEOH, OFOH, OA3H OFfH
OOOH, 001 H, 002H, 003H, 004H, 005H 006H, 007H,010H,011H, 012H, 013H 014H, 015H,016H, 017H, 008H, OOOH OOFH,OOOH
OOOH, OOOH,OOOH, OOOH, OOOH, 010H OOEH,OOOH,OfFH
400,240,080 04000H
OOOH, OOOH, OOOH, 003H
023H
037H, 027H,020H,037H, 031 H, 015H 004H, 011H,OOOH,007H, 006H, 007H OOOH, OOOH, OOOH,OOOH, OEl H, 024H OC7H, 0 14H, 008H. OEOH, 0 FOH, OA3H OfFH
OOOH, 001 H, 002H,003H,004H, 005H 006H, 007H, 01 OH, 011 H, 012H,013H 014H, 015H, 016H, a 17H, 008H,OOOH
OOfH,OOO~
August 2, 1984
IBM Enhanced Graphics Adapter 119
098E 00 00 00 00 00 10 0994 DE 00 Ff
0997 28 18 08 099A liOOO
099C 00 00 00 03
09AO 23
09Al
09A7 09AO 09B3 09B9
37 27 20 37 31 15 04 11 00 07 06 07
00 00 00 00 El 24
C7 14 08 EO FO A3 FF
09SA
09CO 09C6 09CC
00 01 02 03 04 05
0607 10 11 12 13 14 15 16 17 08 00 OF 00
09CE 00 00 00 00 00 10 0904 DE 00 Ff
0907 50 18 08 090A 1000
090C 01 04 00 07
09EO 23
09El 09E7 09EO 09f3 09F9
70 4F 5C 2F 5F 07
04 11 00 07 06 07 00 00 00 00 El 24 C7 2B 08 EO FO A3 FF
09FA
OACO OA06 OAOC
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 OF 00
OAOE 00 00 00 00 00 00 OA14 04 00 Ff
OA17 50 18 DE OA1A 1000
DAle 00 04 00 07
OA20 .0
0A21 OA27
OA2D OA33
OA39
60 4F 56 3A 51 60 70 1F 00 00 OB DC
00 00 00 DOSE 2E 50 2B DOSE 6E A3 FF
OA3A OA40
OA46 OA4C
00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 DE 00 Of 08
OA4E 00 00 00 00 00 00 OA54 04 00 FF
OA57 28 13 08 DASA 2000
OA5C DB OF 00 06
OA60 23
0.0' OA67 OA6D OA13
0A79
37 27 20 37 30 14 04 11 00 00 00 00
00 00 00 00 El 24 C7 14 00 EO FO E3 FF
OA7A OA80
OA86 OA8C
00 01 02 03 04 05 06071011 12 13
14 15 16 17 01 00 OF 00
OA8E 00 00 00 00 00 00 OA94 05 or H
OA97 50 18 08 OA9A 4000
OA9C 01 OF 00 06
DAAD 23
OAA,
DAA7 DAAD OAB3 OAB9
70 4f 59 20 5E 06 04 11 00 00 00 00
00 00 00 00 EO 23
C7 28 DO OF EF E3 FF
OABA DACO
DAC6 OACC
00 01 02 03 04 05 06 07 10 11 12 13 14 15 16 17 01 00 OF 00
DACE 00 00 00 00 00 00 OAD4 05 OF FF
OAD7 50 18 DE DADA 8000
DADC 05 OF 00 00
OAEO A2
OAEl OAE7 OAED OAF3 OAF9
60 4F 56 lA 50 EO 70 1F 00 00 00 00 00 00 00 00 5E 2E 50 14 00 SE 6E 8B FF
OAF... 00 oa 00 00 18 18 OBOO 00 00 00 08 00 00
2017 2018 2019 2020 2021 2022
2023
2024 2025 2026 2027 2028 2029
2030 2031 2032 2033 2034 2035
2036 2037 2038 2039 2040 2041 2042 2043 2044 2045 2046 2047 2048
2049
2050 2051 2052 2053 2054 2055 20S6 2057 2058 2059 2060 2061 2062 2063 2064 2065 2066 2067 2068 2069 2070 2071 2072 2073 2074 2075 2076 2017 2078 2079
2080 2081 2082 2083 2084 2085
2036 2087 2088 2089 2090 2091 2092 2093 2094
2095 2096 2097 2098 2099 2100 2101 2102 2103 2104 2105 2106
2107 2108 2109 2110
2111 2112 2113 2114 2115 2116 2117 2118 2119 2120 2121 2122 2123 2124 2125 2126 2127 2128 2129
2130 2131 2132 2133 2134 2135 2136 2137 2138 2139 2140 2141 2142
C
C
DB
C
DB
C
C ; ·-A··
C
DB
C
OW
C
C
DB
C
c
DB
C
C
DB
C
DB
C
DB
C
DB
C
DB
C
C
OB
C
OB
C
OB
C
DB
C
C
OB
C
OB
C
C ;--B-
C
DB
C
OW
C
C
OB
C
C
DB
C
C
DB
C
DB
C
DB
C
DB
C
DB
C
C
DB
C
DB
C
DB
C
DB
C
C
DB
C
DB
C ;--C-
c C
DB OW
C
C
DB
C
C
OB
C
C
DB
C
DB
C
DB
C c
DB DB
C
C
DB
C
DB
C
DB
C
DB
C
C
DB
C
DB
C ; --0-
C
DB
C
OW
C
c
DB
C
C
DB
C
C
DB
C
DB
C
DB
C
DB
C
DB
C
C
D8
C
DB
C
DB
C
DB
C
C
DB
C
08
C ; --E-
C
DB
C
OW
C
c
DB
C
C
DB
C
C
DB
C
DB
C
DB
c
DB
C
DB
C
C
DB
C
DB
C
DB
C
DB
C
C
DB
C
DB
C ;--F-
C
DB
C
DW
c
C
DB
C
C
DB
C
C
D8
C
DB
C
DB
C
DB
C
DB
C
C
D.
C
DB
OOOH, OOOH, OOOH,OOOH,OOOH, 01DH DOEH,DOOH,OFFH
400,240,OBO OliOOOH
OOOH, OOOH,OOOH,003H
023H
037H,027H,020H, 037H, 031H, 015H 004H, 01 1H,OOOH, 007H, 006H,007H OOOH, OOOH, OOOH,OOOH, DEl H, 024H OC7H, 0 14H .OOBH, OEOH, OFOH, OA3H OFFH
0001'1,0011'1, 002H,003H, 004H,005H 006H, 0071'1, 010H, 011H, 012H, 013H 014H,015H, 0161'1, 017H, DOBH, OOOH OOFH,OOOH
OOOH,OOOH, 0001'1, OOOH, OOOH, 0 10H OOEH, OOOH, OFfH
BOO,240,08D 01000H
001H, 004H, OOOH, 007H
023H
070H, 04 FH, 05CH, 02FH, 05FH, 007H 004H, 01 1H,OOOH, 007H, 006H, 007H OOOH, OOOH,OOOH, OOOH, DEl H, 024H OC7H, 028H,008H,OEOH, OroH, OA3H OFFH
OOOH, OOOH, OOOH, OOOH, OOOH, OOOH OOOH, OOOH, OOOH,OOOH, OOOH, ODOH OOOH, OOOH, OOOH, OOOH, OOOH,OOOH OOFH,OOOH
OOOH,OOOH,OOOH, OOOH, OOOH, OOOH 004H,000H,OFfH
800,240,140 01000H
OOOH, 004H, OOOH, 007H
OA6H
060H,04FH, 056H, 03AH, 051 H, 060H 070H, 01 FH, OOOH, OOOH, OOBH, OOCH OOOH, OOOH. OOOH, OOOH, 05EH, 02EH 050H, 028H. 000H,05EH, 06[H, OA3H OFfH
OOOH, OOOH,OOOH, OOOH, OOOH, OOOH OOOH, OOOH, OOOH, OOOH, OOOH, OOOH OOOH, OOOH, OOOH, OOOH, OOEH, OOOH 00FH,008H
OOOH,OOOH, OOOH, OOOH, OOOH, OOOH 004H, OOOH, OFFH
400, 240, OBO 02000H
OOBH,OOFH, OOOH, 006H
023H
037H, 027H, 020H, 037H, 030H, 014H 004H, 011 H, OOOH,OOOH, OOOH, OOOH OOOH, OOOH, OOOH, OOOH, DEl H,024H OC7H, 014H, OOOH,OEOH, OFOH,OE3H OFFH
OOOH, 001H, 002H, 003H, 004H, 005H 006H,007H, 010H, 011H, 012H, 01 31'1 014H, 015H,016H,017H, 001 H, OOOH OOFH,OOOH
OOOH, OOOH, OOOH, OOOH, OOOH, OOOH 005H, OOFH, OFFH
800,240,080 04000H
001H, OOFH, OOOH, 006H
023H
070H, 04FH, 059H, 02DH, 05EH, 006H 004H, 01 lH, OOOH, OOOH, OOOH, OOOH OOOH, OOOH,DDOH, OOOH, OEOH, 023H OC7H, 028H, OOOH, OOfH, OEfH, OE3H OFFH
OOOH, 001H, 002H, 003H, 004H, 005H 006H, 007H, 010H, 011H, 012H, 013H 014H, 015H, 016H,017H, 001H,000H OOFH,OOOH
OOOH, OOOH, OOOH, OOOH, OOOH, OOOH 005H,OOfH,OFFH
BOD, 240, 14D oaOOOH
005H, OOFH, OOOH, OOOH
OA2H
060H, 04FH, 056H, OlAH, 050H, OEOH 070H,Ol FH, OOOH, OOOH, OOOH, OOOH OOOH, OOOH, OOOH, OOOH, 05EH,02EH OSoH, 014H, OOOH, 05£H, 06EH, 08BH OFFH
OOOH, 006H, OOOH,OOOH, 016H, 018H OOOH, OOOH, OOOH, 008H, OOOH, OOOH
~\
120 IBM Enhanced Graphics Adapter
August 2, 1984
~
oaoo 00 18 00 00 08 00 OBoe 05 00
OaoE 00 00 00 00 00 10 0814 07 OF FF
0617 50 18 DE DB1A 8000
DB1C 05 OF 00 00
0620 A7
OB21
0627 OB20
OB33 0839
58 4F 53 17 50 SA
6C 1F 00 00 00 00 00 00 00 00 5E 28 50 14 Of 5F OA 8B
ff
OB3A DO 01 00 00 04 07
OB40 00 00 00 01 00 00 0846 04 07 00 00 01 00 OB4C 05 00
084E 00 00 00 00 00 10 0654 07 OF FF
'" 0440
~
0657 50 18 DE OB5A 8000
OB5C 01 OF 00 06
DB"
OB61 OB67 OB60 OB73 0879
A2
60 4F 56 3A 50 60 70 1F 00 00 00 00 00 00 00 00 5E 2E 50 28 00 5E 6E E3 FF
OB7A
OB80 OB66 OB6C
00 08 00 00 16 16 00 00 00 08 00 00 00 18 00 00 DB 00 05 00
OB6E 00 00 00 00 00 00 OB94 05 OF FF
0897 50 18 DE OB9A 8000
OB9C 01 OF 00 06
.7 0811,0
OBAl OBA7
OBAD OBB3 08B9
5B 4F 53 37 52 00 6C1FOOOOOOOO
00 00 00 00 5E 28 50 28 OF SF Oil, E3 Ff
OBBA OBCO
08C6 OSCC
00 01 02 03 04 05 14 07 38 39 311, 3B 3C 3D 3 E 3F 01 00 OF 00
OBCE 00 00 00 00 00 00 OB04 05 OF FF
'" 04CO
~
OB07 28 16 DE OBOA 0800
OBoe OB 03 00 03
OBED A7
OB£l
OBE7 OB£O OBF3 OBF9
20 27 2B 20 28 60 6C 1 F 00 00 06 07 00 00 00 00 5E 2B 50 14 OF 5E Oil, 11,3 Fe
DBFA OCOO
DCOO OCOO
00 01 02 03 04 05
14 07 38 39 311, 3B 3C 3D 3E 3 F 08 00 OF 00
OCO£ 00 00 00 00 00 10 OC14 DE 00 FF
OC17 28 16 O£ OC1A 0800
OC1C DB 03 00 03
OC20 A7
OC2l OC27 OC2D
OCB DC3,
20 27 2B 20 26 60 6c 1F 00 00 06 07 00 00 00 00 5E 28 50 14 OF 5£ OA A3
ff
OC· · OC40 OC46
OC4C
00 01 02 03 04 05 14 07 38 39 3A 3B 3C 3D 3E 3F 08 00
OF 00
OC4E 00 00 00 00 00 10 OC54 DE 00 FF
OC57 50 18 DE
2143 2144
21452146 2147 2148 2149 2150 2151 2152 2153 2154 2155 2156 2157 2158 2159 2160 2161 2162 2163 2164 2165 2166 2167 2168 2169 2170 2171 2172 2173 2174 2175 2176 2117 2178 2179 2160 2181 2182 2163 2184 2185 2186 2187 2166 2169 2190 2191 2192 2193 2194 2195 2196
2197 2198
2199 2200 2201 2202 2203 2204 2205
2206 2207 2208 2209 2210 2211
2212 2213 2214 2215 2216
2217 2216 2219 2220 2221 2222 2223 2224 2225 2226 2221
2228 2229 2230 2231
2232 2233 2234 2235 2236
2237 2238 2239 2240 2241 2242 2243 2244 2245 2246
22!!7 2248 2249 2250 2251 2252 22S3 2254 2255 2256 2257 2256 2259 2260 2261 2262 2263 2264 2265 2266 2267 2268
0
DB
OOOH, 0 18H, OOOH, OOOH, OOBH, OOOH
0
DB
005H,000H
0
0
DB
OOOH, OOOH, OOOH, OOOH, OOOH, 0 1OH
0
DB
C ; -10-
D07H,DOFH,OFfH
C
c
DB
800,240,140
ow
08000H
C
C
DB
005H, OOfH, OOOH. OOOH
C
C
DB
OA7H
C
C
DB
05BH,04FH, 053H, 017H, 050H, DBAH
C
DB
06CH, 01 FH,OOOH, OOOH, OOOH, OOOH
C
DB
OOOH, OOOH, OOOH. OOOH, 05EH, 02BH
0
DB
050H, 014H, OOFH, 05FH. DOAH, 06BH
0
DB
OFFH
0
C
DB
OOOH, 001 H, OOOH, OOOH,004H,001H
C
DB
OOOH. OOOH, OOOH, DOl H. OOOH, OOOH
C
DB
004H, 007H, OOOH, OOOH, 001 H, OOOH
0
DB
005H,OOOH
0
C
DB
OOOH, OOOH, OOOH, OOOH, OOOH, 0 1OH
C
DB
007H.00FH,OHH
C
C 6ASE_2 EOU
S - VIOEO_PARMS
C
C
> 16K MODE VALUES
C
C ; --F-
C
DB
600.240,140
C
OW
08000H
C
0
DB
001H. OOFH,OOOH, 006H
0
C
DB
OA2H
C
C
DB
060H. 04FH. 056H. 03AH, 050H, 060H
C
DB
070H,01 FH,OOOH,OOOH, OOOH,OOOH
C
DB
OOOH, OOOH, OOOH, OOOH. 05EH, 02EH
0
c
· DB
050H, 028H, OODH. 05EH, 06EH, OE3H
DB
OFFH
C
C
DB
000H,008H, OOOH, OOOH, 018H, 016H
C
DB
OOOH, OOOH, OOOH, 008H, OOOH, OOOH
C
DB
OOOH, 016H, OOOH, OOOH, OOBH, OOOH
C
DB
005H,OOOH
C
C
DB
OOOH,OOOH. OOOH, OOOH, OOOH,OOOH
C
DB
005H,OOFH,OFFH
C
C ; -10-
C
OB
800,240,140
C
OW
06000H
C
0
DB
001 H, OOFH,OOOH, 006H
0
0
DB
OA7H
0
C
DB
05BH, 04 FH, 053H, 037H, 052H, OOOH
C
DB
06CH ,01 FH, OOOH,OOOH, OOOH,OOOH
0
c
DB
OOOH, OOOH, OOOH, OOOH, 05EH, 02BH
DB
050H, 028H, OOFH, 05FH, OOAH, OE3H
C
DB
OFFH
C
c
OB
OOOH,OOl H. 002H, 003H, 004H, 005H
C
OB
014H,007H, 036H, 039H, 03AH, 038H
C
DB
03CH,03DH, 03EH, 03 FH, 001 H, OOOH
C
DB
OOFH,OOOH
C
C
DB
OOOH,OOOH, OOOH, OOOH, OOOH, OOOH
C
DB
005H,OOFH,OFFH
C
C
C BASE_3 EOU
S - V I OEO_PARMS
C
0 ;----- HI RES ALTERNATE VALUES
C
C ; --0-
0
DB
400,240,140
0
OW
00800H
0
C
DB
OOBH, 003H, OOOH, 003H
C
C
DB
OA7H
C
C
DB
020H, 027H, 02BH,020H, 028H, 060H
C
DB
06CH, 01 FH, OOOH,OOOH, 006H, 007H
C
DB
OOOH,OOOH, OOOH, OOOH, 05EH, 02BH
C
DB
050H.014H, OOFH, 05EH, OOAH, OA3H
C
DB
OFFH
C
C
DB
OOOH, 00 1H, 002H, 003H, 004H, 005H
0
DB
o 14H, 007H, 038H, 039H, 03AH, 03BH
C
DB
03CH, 030H, 03 EH, 03 FH, 008H, OOOH
0
DB
OOFH,OOOH
0
0
DB
OOOH, OOOH, OOOH, OOOH, OOOH, 0 1OH
0
DB
OOEH, OOOH, OFFH
0
0 ; --1-
0
DB
400,240,140
C
OW
00800H
C
C
DB
OOBH, 003H, OOOH, 003H
C
C
DB
OA7H
C
C
DB
02DH, 027H, 02BH, 020H, 028H, 060H
C
DB
06CH, 01 FH, OOOH, OOOH, 006H, 007H
C
DB
OOOH, OOOH, OOOH, OOOH, 05EH, 02BH
C
OB
050H, 014H, OOFH, 05EH. OOAH, OA3H
C
OB
OFFH
C
0
DB
OOOH, 001 H, 002H, 003H, 004H. 005 H
C
DB
014H, 007H, 038H, 039H, 03AH, 03BH
C
DB
03CH, 03DH, 03EH, 03FH, 006H, OOOH
C
DB
OOFH,OOOH
C
C
DB
OOOH, OOOH, OOOH, OOOH, OOOH. 0 1OH
0
DB
OO£H,OOOH,OFFH
0 C ;--2-
C
DB
600,240,140
August 2, 1984
IBM Enhanced Graphics Adapter 121
OC5A 1000
OC5C 01 03 00 03
OC60 A7
OC61
OC67 OC60 OC73 OC79
58 4f 53 37 51 58 6C 1f 00 00 06 07
00 00 00 00 5E 28 50 28 OF 5E OA A3 FF
DC7A aC80 OC86
OC8e
00 01 02 03 04 05 14 07 38 39 3A 3B 3C 3D 3E 3F 08 00 OF 00
OC8E 00 00 00 00 00 10 DC94 DE 00 FF
OC97 50 18 DE OC9A 1000
OC9C 01 03 00 03
OCAO A7
OCAl DCA7 OGAO OCB3 OC89
58 4F 53 37 51 58 6C 1f 00 00 06 07 00 00 00 00 5E 28 50 28 OF 5E OA A3
FF
OCBA OCCO OCC6 OCCC
00 01 02 03 04 05 14 07 38 39 3A 38 3C 30 3E 3f 08 00
Of 00
OecE 00 00 00 00 00 10 OC04 DE 00 f f
OC07
OCD7 FB
ocoa FC
" OCD9
OCDA 06
OCDB 1E OCDC 52
OCOO 51 OCOE 53 OCOF 56 OCEO 57
OCEl aCE2 OCE4 OC£6
OCES OCEA OCED OCEr OCFO OCF2 OCFS
50 8A C4 32 E4 01 EO
88 FO 3D 0028 72 06
58 CO 42 E9 219E R
OCF5 E8 OCFE R OCF8 58 OCF9 2E: fF A4 06EF R
OCFE OCFf OCFF 0001 0003 0004 0005
50 2B CO 8E 08 58 C3
0005
0005
0006 0009 0000 0010 0013 0014 0015
1E E8 OCfE R
8B 16 0"'63 R 80 E2 FO 80 CA OA 1F e3
0015 0015 0017 0018
0019 001B 001C 0010 00lE
B6 C4
"42
86 C4
"4A
C3
DOlE
" OOlE
OOlF e3
0020
0020 0020 OD21 0024 0026 0029 OD2C 0020 0030 0032
0035
52 8A 0043 BO B6
E8 DOlE R 88 0533 4A E8 DOlE R 8A C4 E8 ODlE R BA 0061
2269 2270 2271 2272 2273 2274
2275 2276 2211
2278 2279 2280 2281
2282 2283 2284
2285 2286
2287
2288 2289 2290 2291 2292
2293 2294 2295 2296 2297 2298 2299 2300
2301 2302 2303 2304 2305 2306 2307 2308 2309 2310 2311 2312
2313 2314 2315 2316 2317 2318
2319 2320 2321 2322 2323 2324 2325 2326 2327 2328 2329 2330 2331
2332 2333 2334 2335 2336 2337 2338 2339 2340 2341
2342 2343
2344
23"'5
23"'6 23"'7 23"'8 2349
2350 2351 2352 2353
235'" 2355 2356
2357 2358 2359 2360 2361 2362
2363 2364 2365 2366 2367 2368 2369 2370 2371 2372 2373 2314
2375 2376 2377 2378 2379 2380 2381
2382 2383 2384 2385 2386 2387
2388 2389 2390 2391 2392 2393 2394
c C c C C C
e
C C C
c
C
c
e e e e e e C C ; --3-
C C C C
C e C e C e e C C
c
C C C
e e C e e C
OW
01000H
DB
001H, 003H, 000H,003H
DB
OA7H
DB
058H, 04FH, 053H,037H, 051 H, 058H
DB
06CH, 01 FH,OOOH,OOOH, 006H, 007H
08
OOOH, OOOH,OOOH, OOOH, 05EH, 028H
DB
050H, 028H, OOFH, 05EH, DOAH, OA3H
DB
OFFH
DB
OOOH, 001H, 002H, D03H, 004H, 005H
DB
014H, 007H, 038H,039H, 03AH, 038H
08
03CH, 030H, 0 3EH, 03 rH, 008H, OOOH
DB
OOFH,OOOH
DB
OOOH, OOOH, OOOH, OOOH, OOOH, 010H
DB
OOEH, OOOH, OFFH
DB
800,240,140
OW
01000H
DB
001 H, 003H, OOOH, 003H
DB
047H
DB
05BH, 04FH, 053H, 037H, 051H, 058H
DB
06CH, 01 FH, OOOH, OOOH, 006H, 007H
DB
OOOH, OOOH, OOOH,OOOH, 05EH, 02BH
DB
050H, 026H, OOfH, 05EH, OOAH, OAlH
DB
OfFH
DB
OOOH, 001H, 002H, 003H, 004H, 005H
08
014H, 007H, 038H, 039H, 03AH,03BH
08
03CH, 03DH, 03EH, 03 fH, 008H,OOOH
DB
OOfH,OOOH
DB
OOOH, OOOH, OOOH, OOOH, OOOH, 01 OH
08
OOEH,OOOH,OffH
SUBTTL
; ----- VECTOR INTO <AH> SPEC I f I ED FUNCT I ON
COMBO_VIDEO STI
CLO PUSH PUSH PUSH PUSH PUSH PUSH PUSH PUSH
PROC
8P ES OS OX
ex ax
SI 01
NEAR
PUSH HOV
AX AL,AH
XOR
AH,AH
SAL
AX,l
HOY
SI,AX
CHP
IJJ<., T2L
JB
H2
POP
AX
INT
42.
JHP
V_RET
M2:
ASSUME OS:ABSO
CALL
ODS
POP JHP
AX WORD PTR CS:[SI + OFFSET T2]
; ----- UTI LI TV ROUTI NES
;----- SET OS TO THE DATA SEGMENT
ODS
PROC
NEAR
PUSH
AX
SUB
AX,AX
HOY
OS,AX
POP
AX
RET
ODS
ENOP
WHAT_BASE ASSUME PUSH CALL HOY
AND
OR POP
RET WHAT_BASE
PROC
NEAR
OS:ABSO
OS
ODS
OX,ADDR_6845
OL,orOH
OL,OAH
OS
ENDP
OUT_OX OUT_OX
PRoe XCHG OUT
INC XCHG OUT
DEC
RET ENDP
NEAR AL,AH
OX,AL OX AL,AH OX,AL
OX
; ----- ROUT I NE TO SOUND BEEPER
8P_' BP_l
PROC OUT RET ENDP
NEAR OX,AL
BEEP
PROC PUSH
MOY HOY
CALL HOY
DEC CALL HOY
CALL MOV
NEAR OX OX, TIMER+3 AL,10110110B
BP_' AX,S33H OX
BP_l AL,AH BP 1
OX-:-PORT_B
INTERRUPTS ON SET DIRECTION fORWARD SAVE THE REG I STER SET
SAVE AX VALUE GET I NTO LOW BYTE
*ZERO TO HIGH BYTE 2 FOR TABLE LOOKUP PUT INTO SI FOR BRANCH TEST FOR WITH I N RANGE BRANCH AROUND BRANCH RECOVER REG I STER PASS UNRECOGN IZED CALL RETURN TO CALLER
RECOVER JMP TO AH=O THRU AH=XX
SAVE REGISTER
RESTORE REGISTER
SAVE OATA SEGMENT GET LOW MEMORY SEGMENT GET CRTC ADDRESS STR I P OFF LOW NIBBLE SET TO STATUS REGISTER
AH= INDEX. AL"'OATA, OX'" PORT GET I NDEX VALUE SET I NOEX REG SET OX TO DATA REG GET DATA VALUE SET DATA REG SET OX BACK TO INDEX
; SEL TIM 2, LSB,MS8,BlNARY ; WRITE THE TIMER MODE REG ; DIVISOR FOR 1000 HZ ; WRITE TIMER 2 CNT - LSB ; WRITE TIMER 2 CNT - MS8
...-..,
122 IBM Enhanced Graphics Adapter
August 2, 1984
0038 0039 0038 0030 0040 0042 0042
0044 0046 0048 OD4A OD4D ODIIE
ODIIF
,e 8A EO OC 03 E8 DOlE R 2B C9
E2 FE FE CB 75 FA 8A C4 E8 DOlE R 5A e3
~
OQ4F
004F 0052 0056 0059 005A
E8 ocn R C4 1E 04A8 R 26: C4 1 F e3
005A
005A 0058 005C OD5F
0063 0068
51 52 E8 OD4F R 8A 26 0449 R F6 06 0487 R 60 74 18
OD6A 0060 006F 0073 0076
0076 0079 0078 DOH 0082 0082 0085
80 FC OF 75 07 81 C3 0440 EB 33 90
80 Fe 10 75 07 81 Cl 0480 EB 27 90
80 FC Ol 77 14
0087 008A 008e
008' 0090 0092 OD94
AD 0488 R 24 OF 3C Ol 74 07 lC 09 74 Ol
EB 05 90
~
0097 0097 009B 0098 009F OOAl
81 C3 04CO
8A OE 0449 R 2A ED E3 05
00A3 00A3 00A6 ODAS 00A8 OOAB 00A9 OOM OoAB
83 C3 40 £2 FB
5A 5' e3
00A8
~
00A8
OOAE OOBl OOBl
0065
00.. ODB9 OOBC OOBF OOCl 00C4 00C4 00C6 00C7
OooOeCoA
0000
E8 005A R 83 Cl 05 B6 03 B2 e4 88 0001 FA E8 0015 R 26: 8A 07 F£ C4 E8 0015 R
FE C4 43 26: 8A 07 E8 0015 R 80 FC 05 72 F2
0002 0005
0006 0008 0009 OODB OOOE OOEl
26: 8A 07 43 82 C2
"82 C4
B8 0003
E8 0015 R FB
00E2 00E6
ODE8
ODEll ODEB
OOEE DOH
OOFt
8B 16 0463 R 2A E4
26: 8A 07 E8 0015 R 43
FEC4
80 Fe 19
2395 2396 2397 2398 2399 2400 2401 2402 2403
2404 2405 21106 2407
2408 2409 2410 2411 2412 2413 2414 2415 24.16 2417 2418 2419 2420 2421 2422 2423 2424 2425 2426 2427
2428 2429
2430 2431 2432 2433 2434
2435 2436
2437 2438 2439 2440 2441 2442 2443 2444 2445 2446 2447
2448 2449 2450 2451 2452 2453 2454 2455 2456 2457
2458 2459 2460 2461 2462 2463 2464 2465 2466 2467 2468 2469 2470 2471 2472 2473 2474 2475 2416
2471 2418 2479 2480
248' 2482 248l 2484 2485 2486 2487
2488 2489 2490 2491 2492 2493 2494 2495 2496 2497 2498 2499 2500 2501
2502 250l 2504 2505 2506 2507
2508 2509 2510
25'1 2512 2513 2514 2515 2516 2517 2518 2519 2520
G7: BEEP
IH MOV OR CALL SUB
LOOP D,e JHZ MOV CALL POP RET [NDP
AL,OX AH,AL AL,03 BP 1 CX~CX
G7 BL G7 AL,AH BP_l OX
GET SETT I NG OF PORT SAVE THAT SETTING TURN SPEAI4:ER ON
SET CNT TO WAIT 500 MS
DELAY BEFORE TURN I NG OFF OELAY CNT EXPIRED? NO-CONTINUE BEEPING SPK RECOVER VALUE Of PORT
RETURN TO CALLER
;---- fiND THE PARAMETER TABLE VECTOR IN THE SAVE TABLE
SET_BASE ASSUME CALL
L'S L'S
RET
SET_BASE
PRDC
NEAR
OS:ABSO
DDS
BX, SAVE_PTR
BX,OWORD PTR ES: [ax}
EHOP
GET PTR TP PTR TABLE GET PARAMETER PTR
;----- ESTABLISH ADDRESSING TO THE CORRECT MODE TABLE ENTRY
MAKE_BASE ASSUME PUSH PUSH CALL MDV T[ST
JZ
PRDC NEAR OS:ABSO ex
ox
SET_BASE
AH,CRT MODE
INFO,060H
B_M_l
; GET PARM TBL PTR
; TEST fOR BASE CARD ; MIN MEMORY
;----- WE HAVE A MEMORY EXPANSION OPTION HERE
B_M_2: B_M_l :
eMP JH' ADD JM.
eM' JH' ADD JMP
eMP JA
AH,OFH B_"_2 BX, BASE_2 - BASE_' B_M_OUT
AH,OtOH B_M_1 ex, BASE_2 + M_TBL_LEN - BASE_, B_M_OUT
AH,OlH B_M_l
SK I P ENHANCED PORT ION
:----- CHECK THE SWITCH SETTING FOR ENHANCEMENT
MOV AND eMP
J' eMP
J' JMP
AL,INFO_l AL,OFH AL,03H BRS AL,09H BRS 8_M_3
SECONDARY EMULATE SETT I NG PRIMARY EMULATE SETTING
:----- WE WILL PERFORM ENHANCEMENT
8RS: B_M_l:
ADO
MOV SUB Jexz
BX, 8ASE_l - BASE_'
CL,CRT_MODE CH,CH B_M_4
; VECTOR TO ENHANCEMENT TBL
; .---~ TH I S LOOP WI LL MOVE THE PTR TO THE INDIVIDUAL MODE ENTRY
B_M_5: ADO
LOOP
8_"'_4: B_M_OUT:
POP POP
RET
MAt<E_BASE
BX, M_TBL_LEN B_"'_5
ox
ex
ENDP
; LENGTH OF ONE MODE ENTRY
;----- PROCRAM THE EGA REGISTERS FROM THE PARAMETER TABLE
SET_REGS
PROC
NEAR
ASSUME OS:A8S0, ES: NOTH I HG
;---~- PROGRAM THE SEQUENCER
CALL
MAKE_BASE
ADO
BX, TFS_LEN
MOV
OH,l
MOV
oL, SE~AODR
MDV
AX,OOOlH
eLi
CALL
OUT ox
MOV
AL,ES:[BX)
INC
AM
CALL
OUT_OX
01 :
INC
AM
INC
BX
MOV
AL, ES: [BX}
CALL
OUT OX
eMP
AH,Ml+1
JB
01
; GET TABLE PTR ; MODE TO sEQUENCER PARMS
; RESET SEQUENCER ; 0 I SABLE INTERRUPTS
; GET SEQUENCER VALUE ; NEXT INDEX ; SET IT
; NEXT INDEX REGISTER ; NEXT TABLE ENTRY
MOV INc MOV OUT MOV MOV
CALL S1I
AL, ES: (BXI BX DL, MI SC_OUTPUT aX,AL DL, SEQ_AODR AX,OOOlH
OUT_OX
START SEQUENCER ENABLE INTERRUPTS
; ---- PROGRAM THE CRT CONTROLLER
MOV
OX,AODR_6845
SUB
AH,AH
Xl:
MOV
AL, ES: [BX]
CALL
OUT_OX
INC
BX
INC
AN
eMP
AH,M4
; CRTC INDEX REGISTER ; COUNTER
; GET VALUE FROM TABLE : SET CRTC REG I STER j NEXT TABLE ENTRY ; NEXT I NOE)( VALUE ; TEST REGISTER COUNT
August 2, 1984
IBM Enhanced Graphics Adapter 123
OOf4 OOF6 OOFA
OOFC
72 f2 26: 88 47 Fl
86 EO A3 0460 R
OOFF OEOl OE04 OE05 OE07 OE09 OE09
OEOC OEOE OEOF
DEll OE12
OE13 OE15 OE18
88 f3 E8 0005 R EC B2 CO 2A E4
26: 8A 07 86 EO EE 86 EO EE 43 FE C4 80 FC 14 72 EF
OElA SO 00 DElC EE
0[10 DElE OE1F OE23 OE27 OE29 OE28
IE O. C4 JE 04A8 R 26: C4 70 04 8C CO 08 C7 74 09
OE20 OE2E OE2F
OE32 OE34 OE35 OE36 OE36 OE37
IF 1E B9 0010 F3/ A4 4. A4
07 IF
OEJ8 OE3A OE3C OEJD OEJF OE41 OE42 OE44 OE46 OE46 OE49 OE4C OE4o
OE4F 0£52 OE54
OE55
B2 CC BO 00 EE B2 CA BO 01 EE 82 CE 2A E4
26: 8A 07 E8 0015 R
'3 FE C4 BO FC 09 72 f2 C3
OE55
OE55 OE58 OE5A OE5C OE5F OE62
OE64 OE66 OE69 OE6B OE60
DE70 0£70 OE73
0E75 OE77 0E79
o0En7D8
AO 0487 R . . BO 75 39 BA B800 AO 0449 R 3C 06 76 OA BA BODO 3C 07 74 03 BA ADOO
BB 0720 3C 04 72 06 3C 07 74 02 28 08
0E70 OE7F OE83 OE85
OE88 OE88 OE80 OE8F
OE8F OE91 OE93 OE95 OE95 OE96
8E C2 8B DE 044C R E3 10 89 8000 80 FE AO 74 02 85 40
8B C3 2B FF F3/ AB
C3
OE96 OE96 OE99 OE9A
E8 10B7 R C3
OE9A
OE9A
OE98 OE9C OE9F OEA2 OEA3
OEA5 OEA7 OEA9 OEAB
50 1E E8 OCFE R AD 0488 R
If
24 OF 3C 03 74 07 3C 09 74 03
2521 2522 2523 2524 2525
2526 2527
2528 2529 2530 2531 2532 2533 2534
2535 2536 2537
2538 2539 2540
2541 2542 2543 2544 2545 2546 2547 2548 2549 2550 2551 2552 2553 2554 2555
2556 2557 2558 2559 2560 2561 2562 2563 2564 2565 2566 2567 2568 2569 2570 2571 2572 2573 2574 2575 2576 2577 2578 2579 2580 2581 2582 2583
2584 2585 2586 2587 2588
2589 2590 2591 2592 2593 2594
2595 2596 2597 2598
2599 2600 2601 2602 2603 2604 2605 2606 2607 2608 2609 2610 2611 2612 2613 2614 2615 2616
2617 2618 2619 2620 2621
2622 2623 2624 2625 2626 2627 2628 2629 2630 2631 2632 2633 2634
2635 2636 2637
2638 2639 2640 2641
2642 2643 2644 2645 2646
JB HOV
XCHG HOV
Xl
AX, ES: (8X) (-OFH) AH,AL CURSOR_MOOE,AX
; DO THE REST ; GET CURSOR MODE
; SET LOW RAM VALUE
;----- PROGRAM THE ATTRI8UTE CHIP
HOV
SI,BX
CALL
WHAT_BASE
IN
AL,DX
HOV
DL,ATTR_WRITE
SUB
AH,AH
03:
HOV
AL,ES:IBX)
XCHG
AH,AL
OUT
OX,AL
XCHG
AH,AL
OUT
OX,AL
INC
BX
INC
AN
CMP
AH,M5
JB
03
: I NOEX COUNTER
; GET DATA VALUE
NEXT DATA VALUE NEXT I NDEX VALUE TEST REG I STER COUNT 00 THE REST
HOV
AL,O
OUT
OX,AL
;----- CHECK I F PALETTE REG I STER VALUES ARE TO BE SAVED
PUSH PUSH LES LES MOV OR JZ
OS ES 01, SAVE_PTR ol,oWORO PTR E5:1011l4] AX,ES
AX,D' SAVE_OUT
GET TABLE PTR GET PALETTE PTR
I F ZERO, NO SAVE OCCURS
;----- STORE AWAY THE PALETTE VALUES IN RAM SAVE AREA
POP
OS
PUSH
OS
HOV
CX,160
REP
MOVSB
INC
SI
MOVSB
SAVE_OUT:
POP
ES
POP
OS
---- ;
PROGRAM THE GRAPH I CS CH I PS
HOV HOV OUT HOV MOV OUT MOV
SUB 04:
MOV CALL INC INC
CMP JB RET SET _REGS
OL,GRAPH_l_POS AL,O DX,AL DL,GRAPH_2_POS AL,l OX,AL oL, GRAPH_AOOR AH,AH
AL, ES: (BX1 OUT_OX BX AN
D'AH,M6
ENDP
SAVE THE PALETTE REGS SAVE THE OVERSCAN REG
PARAMETER BVTE SET IT NEXT BYTE NEXT REGISTER ; CONT I NUE
; ----- MODE SET REGEN CLEAR ROUT I NE
BLANK
CGO: WWl:
N_BA: OUT_l: BLANK
PROC ASSUME MOV TEST
JNZ MOV MOV CHP JBE MOV CMP JE MOV
NEAR OS: A8S0, ES: NOTH I NG AL, INFO AL,080H OUT 1 OX,OB800H AL,CRT_MOoE
AL,6 CCO oX,08000H AL,7 CGO OX,OADOOH
MOV CMP JB CMP
JE SUB
8x,0720H
AL.4 WIll AL,7 WIll 8X,8X
SRLOAO
MOV MOV JCXZ MOV
CMP JE MOV
ES ES,OX CX,CRT_LEN OUT_l CX,08000H OH,OAOH N BA CH,040H
MOV
AX,BX
SUB
01.01
REP
STOSW
RET ENOP
; F ILL REGEN WITH 8LANKS SEE I F BLANK I S TO OCCUR
; MODE SET HIGH BIT ; SK I P BLANK fOR REGEN ; COLOR MODE REGEN ADDRESS ; CURRENT MODE SET
: 0-6 ARE COLOR MODES
; MONOCHROME REGEN ADDRESS ; MONOCHROME MODE ; REMAINING MODES ; ALPHA BLANK VALUE ; ALPHAMOOES 0- 3 ; ALPHA MOOE ; GRAPH I CS BLANK VALUE ;, SET THE REGEN SEGMENT
BLANK VALUE CLEAR POINTER CLEAR THE PAGE RETURN TO CALLER
PH_5 PH_5
PROC CALL RET ENOP
NEAR PAL_ON
; ----- SEE 1F WE ARE TO SUPPORT 640 X 350 ON A 640 X 200 MODE
BRST _DET
ASSUME PUSH
PUSH CALL MOV POP
ANO CMP
JE CMP JE
PROC
NEAR
OS:A8S0
AX
OS
OOS
AL,INFO_3
OS
AL,OfH
AL,03H
8_YES
AL,09H
B_YES
EMULATE MODE EMULATE MODE
'"
124 IBM Enhanced Graphics Adapter
August 2, 1984
OEAD 5. OEAE F. OEAF e3 OEBO OEBO 58 OEBl F9 OEB2 e3 OEB3
~
OEB3
OEB3 OEB4
OEeA OEBE OEBF
FA C7 06 010C R 0000 E
8C OE OlOE R FB 80 26 0487 R F3
OEC4 OEC5 OECA OECC OECF OEDl OED3
50 F6 06 0487 R 02 74 2C Al 0410 R 24 30 3C 30 74 48
OED5 OEOA
OHO OEEl
OEE6 OH8 OEEA OEEC OEEE OH3 OEF3 OH5
C6 06 0484 R 18 C7 06 0485 R 0008 58 80 OE 0487 R 08 3C 01 76 09 3C 04 73 05 80 OE 0487 R 04
CD 42 E9 219E R
OH8 OH8 OEFB OHD OEFF
Al 0410 R 24 30 3C 30 75 40
OFOl OF06 OFOC OFOD OFOF OF15 OF1A
C6 06 0464 R 16 C7 06 0485 ROODE
5. CO 42 C7· 06 0460 R OBOC 60 DE 0487 R 08 E9 219E R
~
OF1D
OFlO OF1E
OF1F OF21 OF23 OF26 OF2C
OF2D OF2F OF31
OF33
0F35 OF35 0F38 OF3A OF3E
5. 50 B6 03 24 60 80 26 0467 R 7F 08 06 0487 R 58 24 7F 3C OF 74 02 so 01
A2 0449 R B2 .. 89 16 0463 R EB 1C 90
OF41 OF41 OF42 OF43 OF45 OF47 OF4C OF50 OF51 OF53 OF56 OF58 OF5C OF5C OF62
58 50 B6 03 24 80 60 26 0467 R 7F 08 06 0467 R 5. 24 7F A2 0449 R B2 04 69 16 0463 R
C7 06 044E R 0000 C6 06 0462 R 00
OF67 OF6A OF6D OF6E OF6F 0F71
B9 0006 BF 0450 R
1E 01 2B CO F3/ AB
0F73 E6 OD5A R
0F76 26: 6A 07 0F79 2A E4 OF7B A3 044A R
OF7E 26: 6A 47 01 OF62 A2 0484 R
OF65 26: 6A 47 02
".-..., OF69 2A E4 OF8B A3 0465 R
OF6E 26: 6B 47 03 OF92 A3 044C R
OF95 OF97 OF99 OF9D
OFAD
2B DB BO 01 SA 26 0449 R 60 FC 07 74 OC
2647 2648 2649 2650 2651 2652
2653 2654 2655
2656 2657 2658
2659 2660 2661
2662 2663 2664 2665 2666 2667 2668 2669 2670 2671 2672 2673 2674 2675 2676 2677 2678 2679 2680 2681 2682 2683 2684 2685 2686 2687 2688
2689 2690 2691 2692 2693 2694
2695 2696
2697 2698 2699 2700 2701 2702 2703 2704 2705 2706 2707 2708 2709
2710 2711 2712
2713 2714 2715 2716 2717 2716 2719 2720 2721
2722 2723 2724 2725 2726 2727 2728 2729 2730 2731 2732 2733 2734 2735 2736 2737 2736 2739 2740 2741 2742 2743 2744 2745 2746 2747 2748 2749 2750 2751 2752 2753 2754 2755 2756 2757 2756 2759 2760 2761 2762 2763 2764 2765 2766 2767 2768 2769 2770 2771 2772
POP eLe RET B_YES: POP
STe RET BRST_DET
A)( A)( ENDP
; ---- MODE SET
AHO:
ASSUME eLi MOV MOV STI ANO
PUSH TEST JZ MOV AND eMP JE
DS:ABSO
WORD PTR GRX_SET, OFFSET CGODOT WORD PTR GRX_SET+2, CS
INFO, 11110011B
AX INFO,2 ST_1 AX, EQU t PJLAG AL,030H AL,030H ST_2
TURN OFF RETRACE BI T EGA ACTIVE BIT
SAVE
THERE I S NO MONOCHROME THERE t S A MONOCHROME ; CHECK THE EQU I PMENT FLAG
: FOR MONOCHROME CALL
IT I S A MONOCHROME CALL
FALL THROUGH => REGULAR COLOR CARD SETUP
ST_7:
MOV MOV POP OR eMP JBE eMP JAE OR
INT JMP
ROWS, 0240 POINTS,8 AX INFO,00001000B AL,l ST_7 AL,4 ST 1 INfo, 00000 1OOB
.2H V_RET
RECOVER EGA NOT ACT I VE
; WAI T FOR RETRACE ON ; MODES 2,3 ONLY
; DO RETRACE
; OTHER ADAPTER MODE CALL
: BACK TO CALLER
;----- AT THIS POINT THERE IS NO MONOCHROME ATTACHED TO THE ADAPTER
ST_1 :
MOV AND eMP JNE
AX, EQU I P_FLAG AL,030H AL,030H ST_3
TEST THE EQU I PMENT FLAG ; TO SEE IF THIS IS A
; MONOCHROME SETUP CALL ; MUST BE COLOR TO CARD
;----- FALL THROUGH => REGULAR MONOCHROME CARD SETUP
MOV MOV POP INT MOV OR JMP
ROWS, 0240 POINTS,014D AX
'2H CURSOR_MODE,OBOCH INFO,6 V_RET
RECOVER OTHER ADAPTER MODE CALL F I X PLANAR VALUE THE EGA I S NOT ACT I VE BACK TO CALLER
; ---- MONOCHROME SETUP TO THE ADAPTER
ST_2: ST_2A:
POP PUSH MOV AND AND OR POP AND eMP JE MOV
MOV MOV MOV JMP
AX AX DH,3 AL,060H INFO,07FH tNFO,AL AX AL,07FH AL,OFH ST_2A AL,7
CRT_MODE,AL DL, CRTC_AODR_B ADDR_6845, OX 001
RECOVER SAVE
f>ICK OFF THE CLEAR BIT MASK OFF THE OTHER BITS SAVE REGEN CLEAR B J T RECOVER TRUE CALL VALUE ALREADY DEALT WITH 07 A MONOCHROME MODE DO THIS MODE REGULAR MONOCHROME
SAVE MODE VALUE IT IS 3-B-X ; SAVE CRTC ADDRESS ; CaNT I NUE THE MODE SET
; ---- COLOR SETUP TO THE ADAPTER
ST_3: QQ1:
POP PUSH MOV AND AND OR POP AND MOV MOV MOV
AX AX
OH,3 AL,060H INFO,07FH INFO,AL
AX AL,07FH CRT_MODE,AL DL, CRTC_ADDR ADDR_6645, OX
MOV MOV ASSUME MOV MOV PUSH POP SUB REP
CRT _START, 0 ACT I VE_PAGE, 0
ES:NOTHING CX,6 01, OFFSET CURSOR_POSN OS ES
AX,AX STOSW
RECOVER PARAMETER VALUE SAVE IT
I SaLAH REGEN CLEAR BI T PREPARE I NFO BYTE SET IT, OR NOT RECOVER TRUE MODE CALL DONE WITH 07 SAVE TH I S MODE 3-D-X SAVE CRTC ADDRESS
SAVE START ADDRESS RESET PAGE VALUE TO ZERO
8 PAGES OF CURSOR VALUES OFFSET ESTABLISH
ADDRESS I NG o THOSE CURSOR LOCA T IONS CLEAR OUT SAVED VALUES
CALL
MAKE_BASE
MOV SUB MOV
MOV MOV
MOV SUB MOV
MOV MOV
AL, ES: (BX) AH,AH CRT_COLs,AX
AL, ES: (BXlll) ROWS,AL
AL,ES:(BXII2) AH,AH POINTS,AX
AX,ES:)BXII3) CRT_LEN,AX
; GET COLUMN COUNT ; ZERO HIGH BYTE
: STORE COLUMN VALUE
; GET ROW VALUE
: STORE ROW VALUE
; GET THE BYTES/CHAR ; ZERO HIGH BYTE
: STORE BYTES/CHAR
; GET PAGE SIZE ; STORE PAGE LENGTH
SUB HOV HOV eMP JE
BX,BX AL,l AH, CRT_MODE AH,7 ENTRY_2
; ZERO ; MONOCHROME ALPHA CHAR GEN ; GET CURRENT MODE
I SIT MONOCHROME ; 9X14 FONT
August 2, 1984
IBM Enhanced Graphics Adapter 125
OFA2 80 FC 03 OFA5 77 35
OFA7 E8 OE9A R OFAA 72 02
OFAC
OFAE OFAE
OFBl OFB4 OFB8
OFBB OFBD
Orco OFCO OFC3
OFC6 OFC6 OFC7 OFC8 OFCC OFCE OFOO OF03 OF04 Of07 OroA OfOC
OfOC OFOF
OFE2
BO 02
E8 lEAE R E8 OCFE R 811, 26 0449 R 80 FC 01 74 03 E8 10 90
BO 0000 E BB OEOO
O07E
26: 8B 56 00 DB 02 74 DC B9 0001 45 E8 1 EF6 R 83 C5 DE EB EA
E8 OOAB R E8 OE55 R E8 OE96 R
OFE5 OFE8 OFED OFEF OFF5 OFF5 OFFA OFFC OFFE 1003 1005 1005 1009 100C 100F lOll 1013 1015 1018 1018 101B
1010 lOlF
1023
1025 1026 1028 1028
1029
102C 102E 1031
1035 1038 103C 103F 1043 1046 1047 1047
1049 1049 1040
1050 1053 1055 1057 1059 105C 105C 105F 1061 1063 1067
1069 106,0, 106C 106C 106F 1073 1077 107B 107F
1083 1084
1086 1089 108B 108C 1090 1092 1094 1096
E8 OCfE I( 80 3£ 0~49 R Of 72 06 C7 06 010C R 0000 E
80 3E 0449 R 01 77 09 74 4B 80 3E 0449 R 03 76 44
C4 lE 04A8 R 83 C3 OC 26: C4 1F 8C CO DB C3 74 32 BE 0007
26: SA 00 3C FF 74 7,0, 3,0, 06 0449 R 74 03 46 EB FO
fA 26: 8A 07 FE C8 A2 0484 R 26: 8B 47 01 A3 0485 R 26: 8B 47 03 ,0,3 OlOC R 26: 8B 47 05 ,0,3 OlOE R fB
E8 50
C4 1E 04A8 R 83 C3 08 26: C4 l r Be CO OB C3 74 40 BE OOOB
26: 8,0, 00 3C FF 74 36 3,0, 06 0449 R 74 03 46 E8 FO
26: 8,0, 27 26: SA 41 01 26: 8B 4f 02 26: 8B 57 04 26: 8B "iF 06 26: 8E 47 08 53 8B 08 B8 1110 CD 10 5B 26: 8A 47 OA 3C FF 74 05 FE C8 A2 0484 R
1099 1099 109C 10,0,1 10A3 1011.6 10,0,9 10AB 1011,0 lOBO 10B3 10B5 10BA 10BC lOBE lOBE
E8 OCFE R 80 3E 0449 R 07 77 1E 88 10C8 R AO 0449 R 2,0, E4 03 08 2E: 8,0, 07 ,0,2 0465 R BO 30 80 3E 0449 R 06 75 02 BO 3f
,0,2 0466 R
2773 2774
2775 2776 2177 2778 2779 2180
2181 2182 2183
2184 2785 2786
'2787 2788 2789
2790 2791 2792 2793 2794 2795 2796 2797 2798 2799 2800 2801 2802
2803 2804 2805 2806 2807
2808 2809 2810 2811 2812 2813 2814 2815 2816 2617 2816 2619 2620 2821 2822 2823 2824 2825 2826 2827 2828
2829 2830 2831
2832 2833 2834
2835
2836 2837 2838 2839 2840 2841
2842 2843 2844 2845 2846
2847 2848
2849 2850 2851 2852 2853 2854 2855 2856 2851 2858 2859 2860 2861
2862 2863 2864
2865 2866 2867 2868 2869 2870 2871
2872 2873 2874
2875 2876 2877 2878 2879 2880 2881
2882 2883 2884 2885 2886 2887 2888 2889 2890 2891 2892 2893
2894 2895 2896 2897 2898
CM' JA
AH,03H ENTRY_,
CALL JC
BRST DEl ENTRY_2
MOV ENTRY_2:
CALL
CALL MOV
CM' JE
JM' FOG_ IT:
MOV
FOG:
MOV
PUSH
M'0OV'
OR
JZ MOV
INC CALL
AOO
JM' ENTRY_ 1:
CALL CALL
CALL
AL,2
CH GEN DOS AH, CRT_MODE AH,7 FOG IT ENTRY_l
BP, OFFSET CGMN_FoG BX,OEOOH
CS ES OX,ES:[BP] OX,OX ENTRV_l CX,l B' 00_MAP2 BP,0140 FOG
SET_REGS BLANK PH_5
; COLOR ALPHA CHAR GEN
; LOAD ALPHA CHAR GEN
; GET CURRENT MODE I S IT MONOCHROME
; 9X14 FONT
TABLE POINTER 14 BYTES PER CHAR
GET THE ROM SEGMENT INTO ES
GET THE CHAR HEX CODE ZERO'" NO MORE CHARS NO MORE 00 ONE CHAR AT A TIME MOVE TO fiRST CODE POI NT STORE THE CODE POINT ADJUST BP TO NExT CODE DO ANOTHER
CLEAR OUT THE BUFFER
ASSUME CALL
CM' JB
MOV
HS_' :
CM' JA
JE
CM' JBE SAVE_GRPH:
LES
AOO LES
MOV OR
JZ
MOV SG_l:
MOV
CM' JE
CM' JE
INC
JM' SG_2:
Cli
MOV
OEC
MOV
MOV
MOV
MOV MOV
MOV
J4J:
MOV STI
JM' SAVE_ALPH:
LES ADO
LES
MOV
OR
JZ MOV
SA_' :
MOV
eM' JE
CM' JE
INC
JM' SA_2:
MOV
MOV MOV
MOV MOV
MOV PUSH
MOV
MOV
INT
'0'
MOV
CM' JE
OEC
MOV
OS:ABSO 005 CRT_MOOE,OFH MS 1 WORD PTR GRX_SET ,
OFFSET CGMN
CRT_MODE,7 SAVE GRPH
SAVCALPH
CRT_MOOE,3
SAVE_ALPH
8X, SAVE_PTR
8X,OCH
8X,OWORO PTR ES:(BX)
AX,ES
AX,BX
J4J SI,07H
AL,ES:[BXJ[SII
AL,OFFH
AHO_DONE
AL,CRT_MODE
SG_2
51
SG_l
AL,BYTE PTR ES:IBX]
Al
ROWS,AL
AX,WORD PTR ES:IBX]ll]
POINTS,AX
AX,WORO PTR ES:[BXlI3]
WORD PTR GRX_SET, AX
AX,WORD PTR ES:IBXlI5]
WORD PTR GRX_SET + 2, AX
SHORT AHO_DONE
BX, SAVE_PTR
eX,08H
BX,DWORD PTR ES:(BX]
AX, ES
AX,BX
AHO DONE
SI,OSH
AL,ES:(BXIISI]
Al,OHH
AHO_OONE
AL, CRT_MODE
SA_2
51
SA_l
AH,ES:[BX]
AL,ES:[BX][']
CX,ES:IBX][2]
ox, ES: [BX] [4]
BP,ES:IBXJ[6)
ES,ES:(BX][8]
BX
BX,AX
AX,1110H
10H
BX
AL,ES:(BX][OAtf] AL,OFfH AHO_DONE Al ROWS,AL
JMP AHO_DONE
;----- SET THE lOW RAM VALUES fOR COMPATIBILITY (308 AND 309 SAVE BYTES)
AHO_OONE: CALL
CM' JA MOV MOV SUB AOO MOV MOV MOV
CM' JNE MOV DO_PAL: MOV
005 CRT_MODE,7 DNDes BX,OFFSET COMPAT_MODE AL, CRT _MODE AH,AH BX,AX AL,CS: (BX] CRT_MODE_SET, AL AL,030H CRT_MODE,6 DO_PAL AL,03FH
CRT_PALETTE,AL
r--...
~
126 IBM Enhanced Graphics Adapter
August 2, 1984
10Cl 10Cl tB OE 0460 R 10C5 EB 28 90
10C8 10C8 2C 28 20 29 2A 2E lOCE lE 29
1000
1000 1003 1005 1007 1009 1009 10DB 10DF 10El 10E3 10E3 10[4 10E6 10E9 10EA 10EC 10EE 10££ 10H
80 FO 00 75 04 FE Cl EB OA
FE Cl 3A OE 0465 R 72 02 2A C9
51 2A CD 80 F9 10 59 75 02 FE Cl
C3
'" 0004 10H
10EF
10Fl lOF5 10FA
64 OA
89 O£ 0460 R F6 06 0487 R 08 75 33
10FC lOfE 1100 1102 1104 1107
8A C5 24 60 3C 20 75 05 B9 lEOO EB 26
1109 1109
110E 1110 11T5 1117 l11A ll1C
ll1F 1121 1124 1124 1127
"29 '12C 1l2C 112F 112F 1132
F6 06 0487 R 01 75 lF 80 3E 0449 R 03 77 15 E8 0£9A R 73 10 80 FO 04 7603 80 C5 05
80 F9 04 7603 60 Cl 05
E8 1000 R
E8 1135 R E9 219E R
1135 1135 1139 1136 T13E 1140 1142 1145
88 16 0463 R 8A C5 £80015 R FE C4 8A Cl E8 0015 R e3
1146 1146 1147 1149 1146 114F 1151 1153 1155 1156 1157
53 8606 8A e4 F6 26 044A R 32 FF 03 e3 01 EO 58 e3
1157 1157 £6 1150 R
2899 2900 2901 2902
2903 2904
2905 2906 2907 2908
2909 2910 2911 2912
2913 2914 2915 2916 2917
2918 2919 2920 2921 2922 2923 2924 2925 2926 2927 2928 2929
2930 2931 2932
2933
2934 2935 2936 2937 2938 2939 2940 2941 2942 2943
2944 2945 2946 2947 2948 2949 2950 2951 2952 2953 2954 2955 2956 2957 2958 2959 2960 2961
2962
2963 2964 2965 2966 2967 2968
2969 2970 2971
2972 2973 2974 2975 2976 2977 2978 2979 2980 2981 2982 2983 2984 2985 2986 2987 2988 2989 2990 2991
2992 2993 2994 2995 2996 2997 2998 2999 3000 3001 3002
3003 3004 3005 3006 3007 3008 3009 3010 3011 3012 3013 3014 3015 3016 3017 3016 3019 3020 3021 3022 3023
3024
DNDCS:
MOV JMP
ex, CURSOR MODE
AH1
COM PAT MODE - OB OB
LABEL BYTE 02CH, 028H, 02DH, 029H, 02AH. 02EH
01EH,029H
INCLUDE Vl-5.INC SUBTTL Vl-5.INC PAGE
CALC CURSOR - ASSUME
eMP
JNE
IMe JMP
PROC
NEAR
DS:ABSO
CH,O
CC_' eL
SHORT CALC_OUT
CHECK FOR fULL HE I GHT NORMAL CHECK ADJUST END VALUE
INC eMP JB SUB CALC_OUT:
PUSH SUB
eMP
POP JME IMe
eL CL,BYTE PTR POINTS CALC OUT CL,C[
ex
CL,CH CL,010H
ex
COMP_4
eL
ADJUST fOR EGA REGISTERS
WILL IT WRAP
NO, ITS 01(
EGA METHOD fOR CURSOR END
SAVE CURSOR TYPE VALUE
END - START
LOW NIBBLE EQUAL
RESTORE
ADD 1 FOR CORRECT CURSOR
ENoP
; BACK TO CALLER
i-SET=~T~ PE-----sET- ~u~so~- T~PE--------- -------- ------ ----------
;
THIS ROUTINE SETS THE CURSOR VALUE
; INPUT
;
(CX) HAS CURSOR VALUE CH-START LINE, CL-STOP LINE
; OUTPUT
;; ------ -NcUOTNE=Off--- ------[QU-----;;------- -------- ------- -____ R ___ _
AHl :
ASSUME MOV MOV TEST
JMZ
DS:A8S0 AH, C_CRSR_START CURSOR MODE,CX INFO,8-
DO_SET
CRTC REG FOR CURSOR SET SAVE IN DATA AREA EGA ACTIVE BIT
O=EGA, 1"'OLD CARDS
;----- THIS SECTION WILL EMULATE CURSOR Off ON THE EGA
MOV
AMO eMP JME MOV JMP
AL,CH
AL,060H AL,020H AHl A CX,OlEOOH SHORT DO_SET
GET START VALUE
TURN OF r CURSOR ?
TEST THE BITS
SK I P CURSOR OF F EMULATE CURSOR Off
;----- THIS SECTION ADJUST THE CURSOR AND TEST FOR ENHANCED OPERATION
TEST
JNl CMP JA CALL JNC CMP
JBE ADD
INFO,'
DO SET CRT_MODE,3 AHl S BRST_DEl AH1_S CH,CUT_OFF
AHl B CH,5
CURSOR EMULATE BIT
O=.EMULATE, ''''VALUE AS-IS POSSIBLE EMULATION NO, SET THE CURSOR TYPE SEE I F EMULATE MODE NOT EMULAT I NG TEST START SKI P ADJUST
ADJUST
eMP JBE AOO
CL,CUT_OFF AHl S CL,5
TEST END SKIP ADJUST
CALL
CALC_CURSOR
ADJUST ENO REGISTER
OUTPUT CX REG RETURN TO CALLER
;----- THIS ROUTINE OUTPUTS THE CX REGISTER TO THE CRTC REGS NAMED IN AH
M16:
MOV
MOV CALL INC
MOV CALL RET
OX, ADOR_6845
AL,CH OUT OX AH -
AL,CL OUT_OX
AOORESS REGI STER DATA OUTPUT THE VALUE NEXT REGISTER SECOND DATA VALUE OUTPUT THE VALUE
ALL DONE
POSITION THIS SERVICE ROUTINE CALCULATES THE REGEN BUFFER
; I NPUT ADDRESS OF A CHARACTER I N THE ALPHA MODE
;
AX =. ROW, COLUMN POSITION
; OUTPUT
;
AX == OFFSET OF CHAR POSITION IN REGEN BUFFER
:
~o;iT7o~--------PRO~----NEAR-------------------------------------
PUSH MOV MOV MUL XOR ADD SAL POP RET POSITION
BX
BX,AX
AL,AH
BYTE PTR CRT COLS
BH, BH
-
AX, BX
AX, 1
BX
ENDP
; SAVE REGISTER
ROWS TO AL OETERM I NE BYTES TO ROW ZERO OUT
*ADD IN COLUMN VALUE 2 FOR ATTA I BUTE BYTES RESTORE REG I STER
SET_CP~~ I S Roui~~EC~~~~RT~~S6~~~~NT CURSOR POS IT I ON TO THE
NEW X-Y VALUES PASSED
: INPUT OX _ ROW,COLUMN OF NEW CURSOR
;
BH - 0 I SPLAY PAGE OF CURSOR
; OUTPUT
;
CURSOR IS SET AT CRTC IF DISPLAY PAGE IS CURRENT
;
01 SPLAY
i~;7------------------"------------------"'-----------------------
August 2, 1984
IBM Enhanced Graphics Adapter 127
115A E9 219E R
1150
1150 115F 1161 1163
1165 1169 116D 116F 1171 1174
1174
8A Cf 32 ED 01 £1 86 F1 89 94 0450 R 38 3E 0462 R 75 05 8B C2 E8 1175 R
C3
1175
1175 1178
117A
E8 1146 R 88 C8
03 OE 044E R
117E
1180 1182 1185 1186
D1 F9
640E £81135 R C3
1186 1186 1188 118A 118C 1190 1194 1195 1196 1197 1198
1199 119A 119B 119C
8A OF 32 FF D1 £3 8B 97 0450 R 8B O£ 0460 R 5F 5£ 56 58 58
lF 07 50 CF
1190 1190 11AO l1A2
AO 0449 R 3C 07 77 37
11A4 F6 06 0487 R 02 llA9 7407
11AB 3C 07 llAD 742C 11AF E6 05 90
11B2
11B2 11B4 11B6 l1B6 l1B8 11B9 11BA 11BO 11BE 11 BF 11CO
3C 06 76 25
CD42 5f 5E 83 C4 06 lF 07 50 CF
11C1 11Cl 11C7 11CO 1103 1109
060607070505 04 05 00 00 00 00 00050604 04 04 04 06 06 04 07 04 07 04
110B
11 DB 11DF 11£2 11£3 11£5
11£7 11E9
8B 16 0463 R 83 C2 06 EC A8 04 B400 74 03 E9 1291 R
l1[C l1EC A8 02
3025 3026 3027
3028 3029
3030 3031
3032
3033 3034 3035 3036 3037
3038 3039 3040 3041
3042 3043 3044 3045 3046 3047
3048 3049 3050 3051 3052 3053 3054 3055 3056 3057
3058 3059 3060 3061
3062 3063 3064 3065 3066 3067 3068 3069 3070 3071
3072 3073 3074
3075 3076 3077 3078 3079 30ao 3081
3082 3083 3084 3085 3086 3087
3086 3089 3090 3091 3092 3093
3094 3095 3096 3097 3098 3099 3100 3101 3102 3103 3104 3105 3106 3107 3108 3109 3110 3111 3112
3113 3114 3115 3116 3117 3118 3119 3120 3121 3122
3123 3124
3125 3126 3127 3128 3129 3130 3131 3132 3133
3134 3135 3136 3137 3138
3139 ]140 3141 3142 3143 3144 3145 ]146
3147 3148 3149 3150
e e
JMP
e SET_CPOS:
e e e e e e
MOV
CL,BH
XOR
CH,CH
SAL
CX,l
MOV
SI,CX
MOV
[S I+OFfSET CURSOR_POSH J, OX
eMP
ACT I VE_PAGE, BH
ESTABLISH LOOP COUNT WORD OFFSET USE INDEX REGISTER SAVE THE POI NTER
e e e ee M17: e
JHZ MOV CALL
RET
M17 AX,OX
M18
SET CPOS RETURN GET-ROW/COLUMN TO AX
CURSOR SET SET_CPOS_RETURN
e e
; ----- SET CURSOR POS IT ION, AX HAS ROW/COLUMN FOR CURSOR
e M18 e e e e e
PROC CALL MOV ADD
SAR
HEAR POSITION CX,AX CX,CRT_START
CX,l
; OETERM I NE LOC I N REGEN
; ADD IN THE START ADDR FOR TH I S PAGE
/ 2 FOR CHAR ONLY COUNT
e
MOV
AH,C_CRSR_LOC_HGH
e e
CALL
M16
RET
REG I STER NUMBER FOR CURSO~ SET VALUE TO CRTC
C M18
EHDP
e
e
e
READ CURSOR
e
- TH I S ROUT I NE READS THE CURRENT CURSOR VALUE FROM
e
MEMORY AND SENDS I T BACK TO THE CALLER
e
INPUT
e
BH - PAGE OF CURSOR
e
OUTPUT
e
OX - ROW, COLUMN OF THE CURRENT CURSOR POSITION
e
CX - CURRENT CURSOR MODE
e e
iH3~-----------·-------------------------------------------------
e
MDV
BL,6H
PAGE VALUE
e
XDR
BH,BH
ZERO UPPER BYTE
e
SAL
BX,l
WORD OFFSET
e
MDV
DX.IBX + OFFSET CURSOR_POSNI
GET CURSOR FOR TH I S PAGE
e
MOY
CX, CURSOR_MODE
GET THE CURSOR MODE
e
POP
01
e
POP
51
e
POP
OX
e
POP
AX
DISCARD CX
e
POP
AX
DISCARD OX
e
POP
OS
e
POP
ES
e
POP
BP
e
I RET
e
e ;----- READ LIGHT PEN POSITION
e
e AH4:
e
MOV
AL, CRT _MODE
e
eMP
AL,07H
e
JA
READ_LPEN
e
e
TEST
I NFO,2
e
JZ
EGA_I S_COLOR
e
e ;----- MONOCHROME HERE (MONOC BIT 1)
e
e
eMP
AL.07H
e e
JE
REAO_LPEN
JMP
OLD_LP
e
e ;----- EGA IS COLOR HERE (MONOC BIT 0)
e
ee EGA_IS_cg~~R:
e
JBE
e
AL,06H REAO_LPEN
e e
lNT
42"
POP
01
CALL EXISTING CODE
e
POP
51
e
ADO
SP,6
e e
POP
OS
POP
ES
DISCARD SAVEO eX,CX,DX
e
POP
BP
e
IRET
e
e
c
LIGHT PEN
c
THIS ROUTINE TESTS THE LIGHT PEN SWITCH AND THE LIGHT
e
PEN TRIGGER. IF BOTH ARE SET, THE LOCATION OF THE LIGHT
e
PEN IS DETERMINED. OTHERWISE, A RETURN WITH NO
e
INFORMATION IS MADE.
c
ON [XI T
e
(AH) __ 0 If NO LIGHT PEN INfORMATION IS AVAILABLE
e
BX, CX. OX ARE OESTROVED
e
(AH) == 1 IF LIGHT PEN IS AVAILABLE
e
(DH,DL) '" ROW,COLUMN OF CURRENT LIGHT PEN
e
POSITION
e
(CH) '" RASTER POSITION (OLD MODES)
e
(CX) '" RASTER POSITION (NEW MODES)
·
- e
e e
· ;
--------------
---(B--X-) --'"
-B-E-S--T--G-U-E-S-S--A-T--P-I-X-E-L-H--O-R-IZ-O--N-T-A-L--P-O-S. -IT
I-O-N- :
ASSUME CS: CODE, OS: ABSO
e ;----- SUBTRACT_TABLE
c Vl
LABEL BYTE
e
DB
006H,006H,007H, 007H. 005H, 005H
0-5
e
DB
004H,005H, OOOH, OOOH, OOOH, OOOH
6-B
e
DB
000H,005H, 006H, 004H. 004H, 004H
C-11
c
DB
004H,006H, 006H, 004H, 007H, 004H
12-17
e
OB
007H,004H
18-19
e
e
PROC
NEAR
e
ee ;~---- WAIT FOR LIGHT PEN TO BE DEPRESSED
e
MOV
OX,AOOR_6845
GET BASE ADDRESS OF 6845
c
ADO
DX,6
POINT TO STATUS REGISTER
e
IN
AL,DX
GET STATUS REGISTER
e e
TEST MOV
AL,4 AH,O
TEST LIGHT PEN SWITCH SET NO LI GHT PEN RETURN
e
JZ
V9
CODE
e e
JMP
V6
NOT SET, RETURN
e ;----- NOW TEST FOR LIGHT PEN TRIGGER
e
cC v9:
TEST
AL,2
TEST LIGHT PEN TRIGGER
128 IBM Enhanced Graphics Adapter
August 2, 1984
~
11EE 75 03 11f0 E9 129B R
11f3 11F3 B4 10
11f5
11f9 11fB 11fC 11fD 11fE 11fF 1201 1202 1203 1205 1207 1208
1209 120A
8B 16 0463 R 8A C4 EE 42 50 EC 8A E8
5B 4A FE C4 8A C4 EE
42 EC 8A E5
120C 1210 1212 1217 1219 1210 121f 1221 1223
8A 1E 0449 R 2A FF 2E: 8A 9f 11C1 R 2B C3 8B 1 E 044E R
01 EB 2B C3 79 02 2B CO
1225 1225 1227 122C 122E 1233
B1 03 80 3E 0449 R 04 72 40
80 3E 0449 R 07 74 46
1235 123A
123C 123E
80 3E 0449 R 06 77 28 75 02 01 EB
1240 1240 B2 28 1242 f6 f2
~
1244
1246 1248 124A 124C 1251 1253 1255 1257 1257
8A E8 02 EO 8A DC 2A FF 80 3E 0449 R 06 75 04 B1 04 DO E4
03 E3
1259 125B 1250 125f 1261 1264
SA 04 8A FO DO EE
00 EE EB 2C 90
1264 99 1265 F7 36 044A R 1269 8B DA
126B 03 E3
1260 8B C8
126F 52 1270 99 1271 F7 36 0485 R
" 1275 5A 1276 8A FO
1278 EB 15 90
~
127B 127B 127f 1281 1283 1285 1287 1289 1280 128F 128F 1291 1291
f6 36 044A R SA FO 8A 04 8A DC 32 FF 03 E3 F6 26 0485 R 8B C8
B4 01
52
1292 8B 16 0463 R 1296 83 C2 07 1299 EE
129A 129B 129B 129C 1290 12AO 12A1 12A2 12A3 12M
5A
5F 5E 83 C4 06 1F 07 50 CF
3151 3152 3153 3154 3155 3156 3157
315B 3159 3160 3161
3162 3163 3164 3165 3166 3167 3168
3169 3170 3171 3172 3173 3174
3175 3176 3177 3178 3179 3180 3181 3182 3183 3184 3185 3186 3187 3188 3189 3190 3191 3192 3193 3194 3195 3196 3197 3198
3199 3200 3201 3202 3203
3204
3205
3206 3207 3208 3209 3210 3211 3212 3213
3214 3215 3216 3217 3218
3219 3220 3221 3222 3223 3224 3225 3226 3227 3228 3229 3230 3231 3232
3233 3234
3235 3236 3237 3238 3239 3240 3241 3242 3243 3244
3245 3246
3247 3248 3249 3250
3251 3252 3253 3254 3255 3256 3257 3258 3259 3260 3261 3262 3263 3264 3265 3266 3267
3268 3269 3270 3271
3272 3273 3274 3275 3276
JNZ JMP
V7A V7
RETURN WITHOUT RESETT I NG
TRIGGER EXIT LIGHT PEN ROUTINE
; ----- TR I GGER HAS BEEN SET, READ THE VALUE IN
V7A:
MOV
AH,16
; LIGHT PEN REG I STERS
INPUT REGS POINTED TO BY AH, AND CONVERT TO ROW COLUMN IN ox
MOV MOV OUT
INC PUSH IN MOV POP OEC INC MOV OUT INC IN MOV
DX,ADDR_6845 AL,AH DX,AL OX AX AL,DX CH,AL
AX OX AH
AL,AH DX,AL
OX AL,DX AH,CH
ADDRESS REG I STER REGISTER TO READ SET IT UP DATA REGISTER
GET THE VALUE SAVE IN CX
ADDRESS REG I STER
SECOND DATA REGISTER
POINT TO DATA REGISTER GET THE 2ND DATA VALUE AX HAS INPUT VALUE
; ----- AX HAS THE VALUE READ I N FROM THE 6845
MOV
SUB MOV SUB MOV
SH' SUB JNS SUB
8L,CRT_MODE 8H,BH BL,CS:V1[BX] AX,BX BX,CRT_START BX,1 AX,BX
V2 AX,AX
MODE VALUE TO BX AMOUNT TO SUBTRACT TAKE I T AWAY SCREEN ADDRESS DIVIDE BY 2 ADJUST TO ZERO START If POSITIVE, GET MODE <0 PLAYS AS 0
;----- DETERMINE MODE OF OPERATION
V2:
MOV
CL,3
CMP
CRT_MODE,4
JB
V4
CMP
CRT_MODE,7
JE
V4
DETERMINE_MODE SET 01-8 SH I fT COUNT GRAPHICS OR ALPHA ALPHA_PEN
ALPHA_PEN
CMP JA JNE
SH'
CRT_MODE,06H
VB
VBX
AX,1
;----- OLD GRAPHICS MODES
V8X:
MOV OIV
DL,40 OL
;----- DETERMINE GRAPHIC ROW POSITION
DIVISOR fOR GRAPHICS
ROW(AL) AND COLUMN(AH)
AL RANGE 0-99, AH RANGE 0-39
MOV
CH,AL
AOO
CH,CH
MOV SUB
BL,AH BH,BH
CMP
CRT_MODE,6
JNE MOV SAL
V3
CL,4 AH,1
V3:
SHL
BX,CL
SAVE ROW VALUE INCH
01-2 fOR EVEN/ODD FIELD
COLUMN VALUE TO BX 01-8 fOR MED I UM RES
MEDIUM OR HIGH RES
NOT HIGH RES SHIFT VALUE FOR HIGH RES COLUMN VALUE *2 fOR HIGH RES NOT_HIGH_RES *16 FOR HIGH RES
;----- DETERMINE ALPHA CHAR POSITION
V8:
MOV MOV
SH' SH' JMP
DL,AH DH,AL DH,1 DH,1
V5
; COLUMN VALUE FOR RETURN ; ROW VALUE
DIVIDE BY 4 fOR VALUE IN 0-24 RANGE
LIGHT_PEN_RETURN_SET
;----- NEW GRAPHICS MODES
CWO OIV MOV SAL MOV PUSH CWO OIV POP MOV JMP
CRT_COLS BX,DX BX,CL CX,AX OX
POINTS OX DH,AL V5
PREPARE TO DIVIDE
AX " ROW, OX '" COLUMN SAVE REMAINDER PEL COLUMN PEL ROW
SAVE FROM DIVIDE PREPARE TO DIVIDE
oI V I DE BY BYTES/CHAR
RECOVER CHARACTER ROW
;----- ALPHA MODE ON LIGHT PEN
V4: OIV MOV MOV MOV
XO' SAL MUL MOV V5: MOV V6: PUSH
"OV AOO OUT
POP V7:
POP POP AOO POP POP POP IRET REAO_LPEN
BYTE PTR CRT_COLS DH,AL DL,AH BL,AH BH,BH BX,CL BYTE PTR PO I NTS CX,AX
AH,1
DX,ADDR_6845 DX,7 DX,AL
OX
01 SI SP,6 OS ES BP
ENOP
; ALPHA_PEN ROW,COLUMN VALUE
; ROWS TO DH ; COLS TO DL ; COLUMN VALUE ; TO BX
L I GHT_PEN_RETURN_SET INDICATE EVERTHING SET LIGHT_PEN_RETURN SAVE RETURN VALUE
(IN CASE) GET BASE ADDRESS PO I NT TO RESET PARM ADDRESS, NOT DATA,
IS !MPORTANT RECOVER VALUE RETURN_NO_RESET
DISCARD SAVED BX, ex, OX
August 2, 1984
IBM Enhanced Graphics Adapter 129
12A4
12M A2 0462 R 12A7 88 DE 044C R
12AB 9B 12AC 50 12AD F7 E1
12M A3 044E R
12B2
12B4 12B6 12BB
12BO 12BO 12BF 12BF 12Cl 12C4
12C5 12C7 12CB 12CE
8B C8 8A 1E 0449 R 80 FB 07 77 02
01 f9
B4 DC E8 1135 R 5B 01 E3 88 87 0450 R E8 1175 R E9 219E R
1201 1201
1202 1204
1206 1208 120A 120B
1200 120F 120F 12EO
50 8A E6 2A E5 FE C4 3A EO 5B 75 02 2A CO
e3
12EO 12EO 53
12El 12E2
12E5 12E9 12EA 12EA
12EB 12EO 12EF 12FO 12Fl 12F3 12F4
12F5 12F7
12F9 12FA
12FC 12FD 12FE
1E E8 OCfE R 8B 1E 044A R 1F
51 6A CA 2A ED 56 57 F3/ A4 51 5E 03 F3 03 FB
"E2 EE
5B e3
12FE 12FE 53
12FF
1300 1303 1307 1308 1308 1309 130B 1300 130E 130F 1311
1312
1313 1315 1317 1318 131A 131B 131C
1E E8 OCFE R B8 1E 044A R 11
51 8A CA 2A [0
5. 57 F3/ A4 5f 5E 2B F3 2B FB 59 E2 EE 5B e3
131C 131C 1310 131F 1321 1324 1327 1328 132A 132C 132E 132f 1331 1332' 1334
1335 1337 1339 133B 133E
133f 1341 1343 1344
52 B6 03 B2 C4 8B 020F E8 0015 R 5A 28 CO 8A CA 2A ED
57 F3/ AA 5f 8A C6
52 B6 03 82 e4 B4 02 E8 0015 R
5A 80 fF 8A CA 57 F3/ AA
3211 3278
3279 3280 3281 3282 3283 3284
3285 3286 3287 3288
3269 3290 3291
3292 3293 3294 3295 3296
3297 3298
3299
3300 3301 3302 3303 3304 3305 3306 3307 3308 3309 3110 3111 3112 3313 3314 3315 3316 3317 3118
3319 3320 3321 3322 3323 3324
3325 3326 3327 3328 3329 3330 3331 3332 3333 3334
3335 3336 3337 3338
3339 3340 3341 3342 3343 3344 3345 3346 3347 3348 3349
3350 3351 3352 3353 3354 3355 3356 3357 335B
3359 3360 3361 3362 3363 3364 3365 3366 3367 3368
3369 3370 3371
3372 3373 3374
3375 3376 3377 3376
3379 3380 3381 3382
3383 3384 3365 3366 3387 3388
3389 3390 3391 ]]9<:' ]]93
3394 3395 3396 3397
3398 3399 3400 3401
3402
; ._---------_.-------------------------------------------------
; ACT_DISP_PAGE
SELECT ACTIVE DISPLAY PAGE
;
THIS ROUTINE SETS THE ACTIVE DISPLAY PAGE, ALLOWING
;
fOR MULTIPLE PAGES Of DISPLAYED VIDEO.
; INPUT
AL HAS THE NEW ACTIVE DISPLAY PAGE
; OUTPUT
----------._----- ;
--------T-H-E-
C-R-T-C---IS---R-ES-E-T--T-O-
---- - DISPLAY
---
-T-H-A-T--
PAGE
--
--
AH5:
MOV
ACTIVE_PAGE,AL
SAVE ACTIVE PAGE VALUE
MOV
CX,CRT_LEN
GET SAVED LENGTH Of
REGEN BUFFER
caw
CONVERT AL TO WORD
PUSH
AX
SAVE PAGE VALUE
MUL
ex
DISPLAY PAGE TIMES
REGEN LENGTH
HOV
CRT_START,AX
SAVE START ADDRESS FOR
LATER REQU I REMENTS
MOV
CX,AX
START ADDRESS TO ex
MOV
BL, CRT_MODE
eMP
BL,7
00 NOT DIVIDE BY TWO
JA
AOP_1
ADP . 2 :
CX,1
I 2 FOR CRTC HANDLI NG
ADP_' :
MOV
AH, C_STRT_HGH
REG fOR START ADDRESS
CALL
Ml.
POP
BX
RECOVER PAGE VALUE
SAL
eX,1
*2 FOR WORD OFFSET
MOV
AX, r BX + OFFSET CURSOR.POSN I
GET CURSOR FOR TH I S PAGE
CAU
M1B
SET THE CURSOR POS 1T I ON
JMP
V.RET
SUBTTL
INCLUDE VSCROLl. INC SUBTTl VSCROLL. I NC PAGE
FLTA
LTA: FLTA
PROC PUSH MOV SUB lNe eMP POP JHE SUB
RET ENOP
NEAR AX AH,OH AH,CH
AM AH,AL
AX
LTA AL,AL
CHECK FOR SCROLL COUNT
LOWER ROW UPPER ROW NUMBER TO SCROLL SAME AS REQUESTED
YES, SET TO 0 FOR BLANK
CRANK PROC
NEAR
PUSH
BX
ASSUME DS:ABSO
PUSH
OS
CALL
005
MOV
BX,CRT_COLS
POP
OS
CRANK_A:
PUSH
ex
C
MOV
CL,DL
e
SUB
CH,CH
e
PUSH
51
e
PUSH
01
C
REP
MOVSB
e
POP
01
e
POP
51
C
AOO
SI,8X
e
AOO
DI,BX
e
POP
ex
e
LOOP
CRANK.A
e
POP
BX
c
RET
e CRANK ENOP
e
e CRANK_4 PROC
NEAR
e
PUSH
BX
e
ASSUME OS: ASSO
e
PUSH
OS
e
CALL
005
c
MOV
BX, CRT_COLS
e
POP
OS
e CRANK~B;
C
PUSH
ex
C
MOV
CL,OL
e
SUB
CH.CH
e
PUSH
51
e
PUSH
01
e
REP
MOVSB
C
POP
01
e
POP
51
C
SUB
SI,BX
e
SUB
OI,BX
e
POP
ex
e
LOOP
CRANK.B
e
POP
BX
c
RET
e CRANK_4 ENDP
C
C PART_l PROC
NEAR
C
PUSH
ox
e
MOV
OH,3
e
MOV
OL, SE~AOOR
e
MOV
AX,020FH
e
CALL
OUT_OX
e
POP
ox
C
SUB
AX,AX
C
MOV
CL,oL
e
SUB
CH,CH
C
PUSH
01
c
REP
STOSB
e
POP
01
c
MOV
AL,DH
e
PUSH
ox
e
MOV
OH,3
e
MOV
DL.SEQ_ADDR
e
MOV
AH,02H
e
CALL
OUT.OX
C
POP
ox
C
MOV
AL,OFFH
C
MOV
CL,OL
e
PUSH
01
c
REP
STOSB
MOVE ROWS OF PELS UP
SAVE DATA SEGMENT SET DATA SEGMENT
SAvE MOVE COUtH COLUMN COUNT , CLEAR HIGH BYTE ; SAVE PO INTERS
; MOVE THAT ROW ; RECOVER PO INTERS
NEXT ROW NEXT ROW RECOVER ROW COUNT DO MORE
RETURN TO CALLER
; MOVE ROWS Of PELS DOWN
SAVE DATA SEGMENT SET OATA SEGMENT
SAVE MOVE COUNT , COLUMN COUNT ; CLEAR HIGH BYTE ; SAVE PO INTERS
; MOVE THAT ROW ; RECOVER PO INTERS
NEXT ROW NEXT ROW RECOVER ROW COUNT DO MORE
RETURN TO CALLER
fiLL ROW AFTER SCROLL
; SEQUENCER ; MAP MASK ; ALL MAPS ON
; ZERO ; COLUMN COUNT
SAVE PO I NT£R CLEAR ONE ROW OF PELS RECOVER PO INTER GET COLOR VALUE
SEQUENCER ; MAP MASK ; SET THE COLOR
; ALL BITS ON ; COLUMN COUNT
I. SAVE PO INTER
; TURN ON THOSE 81 TS
130 IBM Enhanced Graphics Adapter
August 2, 1984
1346 5F 1347 C3 1348
1348 1348 134A 134C 134F 1352 1353
86 03 B2 C4 B8 020F E8 0015 R C3
1353 1353 1 E
1354
1357 1359 135B
135C 1350 135F 1363 1365 1366
E8 OCFE R
8A F7 2A FF 50
52 8B C3 F7 26 0485 R 8B 08 5A 58
1367 1F
1368 1368 E8 131C R
136B 136c 136F 1373
1374 1375 1377
137A 137B
1E E8 ocrE R 03 3[ 044A R 1F
4B 75 Fl E8 1348 R
C3
1378 1378 1E
137C
137r 1381 1383 1384 1385 1387 138B 1380 138E
[8 OCFE R
SA F7 2A FF 50 52 8B C3 F7 26 0485 R 8B 08 5A 58
138F 1 F
1390 1390 E8 131C R
1393 1394
1397 139B
139C 1390 139F 13A2 13A3
lE E8 OCFE R
2B 3E 044A R 1F
4B 75 Fl E8 1348 R C3
13A3 13A3 13A5 13A8 13AB 13AD 13BO 13B2 13B5 1385 13B6 13B8 13BB 1380 138F 13Cl
13C3 13C3
13C6 13C8 13CA
13CC 13CE 13CE 13CF 1301 1301 1304 1306 1308 13DA 1300\ 1300 13E2 13EII 13E7 13EA 13E8 13E8
8A 08 E8 16EB R 80 FC 04 72 08 80 fC 07 74 03 E9 1474 R
53 8B Cl E8 13F2 R 74 31 03 FO 8A E6 2A E3
E8 1432 R 03 F5 03 FO FE CC 75 F5
58 BO 20
E8 143B R 03 fD FE CB 75 F7
E8 OCFE R 80 3E 0449 R 07 74 07 AD 0465 R BA 0308 EE
E9 219E R
3403 31104 3405 3406 3407 3408 3409 3410 3411 3412 3413
3414 3415 3416
3417 3418 3419 3420 3421 3422
3423 3424
3425 3426 3427 3428 3429 3430 3431 3432 3433 3434 3435 3436 3437 3438
3439 34110 3441 3442 3443 3444 3445 3446 3447 3448 3449 3450 3451 3452 3453 3454 3455 3456 3457 3458 3459 3460 3461 3462
3463 3464 3465 3466 3467 3466 3469 3470 3471
3472
3473 3474 3475 3476 3477 3478 3479 3460 3461
3482 3483 3484 3485 3486 3487 3488 3489 3490 3491 3492 3493 3494 3495 3496 3497 3498 3499 3500 3501 3502
3503 3504 3505 3506 3507 3506 3509 3510
3511 3512 3513 3514 3515 3516 3517 3518 3519 3520 3521 3522 3523 3524
3525 3526 3527 3528
c
ENABLED PLANES
c
POP
01
RECOVER PO I NT ER
c
RET
RETURN TO CALLER
c c
ENOP
c c
PROC MOV
NEAR OH,3
c
MOV
OL, SEQ_AoOR
; SEQUENCER
c c c
MOV CALL
RET
AX,020FH OUT_OX
I MAP MASK, ALL MAPS : ENABLE THE HAPS ; RETURN TO CALLER
cc PART~2 ENDP
c c
PROC PUSH
NEAR OS
; BLANK FOR SCROLL UP ; SAVE DATA SEGMENT
c
ASSUME DS:ABSO
c
CALL
ODS
GET LOW MEMORY SEGMENT
c
MOV
DH,BH
ATTRIBUTE FOR BLANK LINE
c
SUB
BH,BH
CLEAR HIGH BYTE
c
PUSH
AX
SAVE
c
PUSH
OX
SAVE BECAUSE OF MULTI PLY
c
MOV
AX,BX
ROW COUNT
c
MUL
PO I NTS
CHARACTER HE I GHT
c
MOV
BX,AX
NET VALUE TO BX
c
POP
OX
RECOVER
c
POP
AX
c
c
POP
OS
c
ASSUME DS:NOTHING
c S13:
c
CALL
PART_ 1
BLANK OUT ROW I.' I TH COLOR
c
ASSUME DS:ABSO
c
PUSH
OS
SAVE SEGMENT
c
CALL
ODS
LOW MEMORY SEGMENT
c
ADO
01, CRT_COLS
NEXT ROW
c
POP
OS
RECOVER
c c c
DEC JNZ CALL
BX 513
PART_2
NEXT DO MORE
c c
RET ENoP
RETURN TO CALLER
c
c 8LN K~ 4 ,PROC
c
PUSH
NEAR OS
BLANK FOR SCROLL DOWN SAVE DATA SEGMENT
c
ASSUME OS:ABSO
c
CALL
ODS
GET LOW MEMORY SEGMENT
c
MOV
OH, BH
ATTRIBUTE FOR BLANK liNE
c
SUB
BH, BH
CLEAR HIGH BYTE
c
PUSH
AX
SAVE
c
PUSH
OX
SAVE BECAUSE Of MULT I PLY
c
MOV
AX,BX
ROW COUNT
c
MUL
PO I NTS
CHARACTER HE I GHT
c
MOV
BX,AX
NET VALUE TO BX
c
POP
OX
RECOVER
c
POP
AX
c
c
POP
OS
c
ASSUME OS: NOTH I NG
c
c c
CALL ASSUME
~~~!B~O
BLANK OUT ROW WI TH COLOR
c
PUSH
OS
SAVE SEGMENT
c
CALL
ODS
LOW MEMORY SEGMENT
c c
SUB POP
g~,CRT_COLS
NEXT ROW RECOVER
c
DEC
BX
NEXT
c c
JNZ CALL
SP1A3RT"_2
DO MORE
c
RET
RETURN TO CALLER
c
ENDP
c
c
c
SCROLL UP
c
THIS ROUTINE MOVES A BLOCK OF CHARACTERS UP
c
ON THE SCREEN
c
INPUT
c
(AH) '" CURRENT CRT MODE
c
(AL) '" NUMBER OF ROWS TO SCROLL
c
(CX) '" ROW/COLUMN OF UPPER LEfT CORNER
C
(OX) '" ROW/COLUMN Of LOWER RIGHT CORNER
C
(BH) '" ATTRI8UTE TO BE USED ON BLANKED LINE
C
(OS) '" DATA SEGMENT
C ,
(ESI '" REGEN BUffER SEGMENT
C ; OUTPUT
- C ;
C ;
--- --N-O-NE------TH-E-R-E-G-E-N--B-U--FF-E-R---IS---H-O-D-I-F-IE--D------------
C
ASSUME CS: COOE, DS:ABSO, ES: NOTH I NG
C SCROLL_UP
PROC
NEAR
C
MOV
BL,AL
; SAVE LI NE COUNT IN BL
C
CALL
MK_ES
C
CMP
AH,4
TEST FOR GRAPH ICS MOOE
C C
JB CMP
"AH,7
C C
J'
JMP
"GRAPH I CS_UP
HANDLE SEPERATELY TEST FOR BW CARD
C Hl: C
PUSH
BX
~v~O~TL~U!TTR IN BH
C
MOV
AX,CX
UPPER LEFT POSITION
C
CALL
~~ROLL_POS I T ION
DO SETUP FOR SCROLL
C
JZ
C
ADO
SI,AX
~~~=KA~6~~~s
C
MOV
AH,DH
# ROWS I N BLOCK
C
SUB
AH,8L
# ROWS TO BE MOVED
C HZ:
ROW.LOOP
C
CALL
N10
MOVE ONE ROW
C
ADO
SI,8P
C
ADO
DI,BP
NEXT II NE I N BLOCK
C
DEC
AN
COUNT Of LINES TO MOVE
C
JNZ
N2
ROW LOOP
C N3:
CLEAR. ENTRY
C
POP
AX
RECOVER ATTRIBUTE IN AH
C
MeV
AL, ·
FILL WI TH BLANKS
C N4:
CLEAR LOOP
C C
CALL ADO
'"ol,BP
CLEAR-THE ROW POINT TO NEXT LINE
C C C N5:
DEC JNZ
NBL'
II NES TO SCROLL CLEAR LOOP SCROLL_END
C
CALL
ODS
C
CMP
~~T_MODE, 7
C
JE
· IS THIS THE B/W CARD ; SK I P THE MODE RESET
C
MOV
AL,CRT.MODE_SET
; GET THE MODE SET
C
MOV
OX,030BH
; ALWAYS SET COLOR CARD
C
OUT
DX,AL
C N6:
; VIDEO_RET_HERE
C
JHP
V.RET
August 2, 1984
IBM Enhanced Graphics Adapter 131
13EE 13EE 13FO 13F2
8A DE E8 DC
13F2 13F2 F6 06 0487 R 04 13F7 74 12
13F9 13FA 13FC
13FE 13FF 13fF
1400 1402 1404 1406 lu08 1409 140A 1406 140B
140E 1412 1414 1416 1418 141A 141C 141E 1422 1424
1426 142A 142C 1420
142E 1431 1432
52 86 03 82 DA 50
EC AS 08 14 FB BO 25 B2 08 [[ 58 5A
E8 1146 R 03 06 044E R 86 f8 86 fO 2601 fE C6 FE C2 32 ED 8B 2E 044A R 03 ED 8A C3 F6 26 044A R 03 CO 06 lF 60 FB 00 C3
1432 1432 1434 1435
1436 1438 1439 143A 1438
8A CA 56 57
f3/ A5 5F 5E C3
1438 143B 1430
143E 1440 1441 1442
6A CA 57
f3/ A6 5f C3
1442 1442 1443 1445
1448 1449 1446
144E 1450 1452
1454 1456 1456 1459 145B 1450 145F 1461 1461 1462 1464 1464 1467
1469 1466 1460
1470 1470 1472
1474
FD 8A 08 E8 16E6 R 53 8B C2 E8 13F2 R 74 20 26 FO 8A E6 2A E3
E8 1432 R 28 F5 2B fD FE CC 75 F5
58 80 20
E8 1438 R 26 FO FE C6 75 F7 E9 13DA R
8A DE E6 ED
3529 3530 3531
3532 3533 3534 3535
3536 3537 3538 3539 3540 3541 3542 3543 3544
3545 3546
3547 3548
3549 3550 3551
3552 3553 3554 3555 3556 3557 3558 3559 3560 3561 3562 3563 3564 3565 3566 3567 3568 3569 3570 3571
3572 3573 3574 3575 3576 3577 3578 3579 3580 3581 3582 3583 3584 3585 3586 3587 3588 3589 3590 3591
3592
3593 3594
3595 3596 3597
3596 3599 3600 3601
3602 3603
3604 3605 3606 3607 3608 3609 3610 3611 3612 3613 3614
3615 3616 3617 3618 3619 3620 3621
3622 3623 3624 3625 3626 3627 3628 3629
3630 3631
3632 3633 3634
3635 3636 3637 3638 3639
3640 3641 3642
3643 3644 3645 3646 3647 3648 3649 3650 3651
3652 3653 3654
C N7: C C C
BL,OH N3 ENOP
BLANK FI ELO
GET ROW COUNT GO CLEAR THAT AREA
C
C ; ----- HANDLE COMMON SCROLL SET UP HERE
C
C SCROLL pas I T I ON PROC
NEAR
C
- TEST
INFO,4
C
JZ
N9
C
C ; ----- 80X25 COLOR CARD SCROLL
C
C
PUSH
OX
C
MOV
DH,3
C
MOV
DL,OOAH
; COLOR CARD HERE
C
PUSH
AX
C N8:
; WAIT_OISP_ENABLE
C
IN
AL,DX
C C
TEST JZ
N.AL,8
WAI T FOR VERT RETRACE WA I T_D I SP_ENABLE
C
MOV
AL,25H
C
MOV
DL, 008H
DX=308
C
OUT
DX,AL
TURN OFF VIDEO
C
POP
AX
OUR I NG VERT I CAL RETRACE
C
POP
OX
C N9:
C
CALL
POSITION
CONVERT TO REGEN PO INTER
C
AOO
AX,CRT_START
OfFSET OF ACTIVE PAGE
C
MOV
DI,AX
TO ADDRESS FOR SCROLL
C
MOV
SI,AX
FROM ADDRESS FOR SCROLL
C
SUR
DX,CX
OX = DROWS, HCOLS
C
INC
OH
C
INC
Ol
INCREMENT fOR 0 ORIGIN
C
XOR
CH,CH
ZERO HIGH 6YTE OF COUNT
C
MOV
BP, CRT _COLS
NUM OF COLS IN 0 I SPLAY
C
AOO
8P,BP
C
MOV
AL,BL
TIMES 2 FOR ATTR BYTE GET LINE COUNT
C
MUl
BYTE PTR CRT_COLS
OFFSET TO FROM ADDRESS
C
AOO
AX,AX
*2 fOR ATTRIBUTE BYTE
C
PUSH
ES
[STABL I SH ADDRESS I NG
C
POP
OS
C
CMP
BL,O
C
RET
fOR BOTH PO INTERS
a MEANS BLANK FIELD
RETURN WITH fLAGS S£T
C SCROLL_POSITION ENOP
C
C
C
C N10
PROC
NEAR
C
MOV
CL,DL
GET , Of COLS TO MOVE
C
PUSH
51
C
PUSH
01
SAVE START ADDRESS
C
REP
MOVSW
MOVE THAT LINE ON SCREEN
C
POP
01
C
POP
51
C
RET
; RECOVER ADDRESSES
C Nl0
ENDP
C
C
C
C N11 C
PROC MOV
NEAR CL,OL
GET 1/ COLUMNS TO CLEAR
C
PUSH
01
C
REP
STOSW
STORE THE FILL CHARACTER
C
POP
01
C
RET
C
ENOP
C
C
C
SCROLL DOWN
C
THIS ROUTINE MOVES THE CHARACTERS WITHIN A
C
DEFINED BLOCK DOWN ON THE SCREEN, FILLING THE
C
TOP LINES WITH A DEFINED CHARACTER
C
INPUT
C
{AH} = CURRENT CRT MODE
C C
I~~l ~ ~~~~~R L~~T L~~~~E~OO~=~~fON
C
(OX) ::::: LOWER RIGHT CORNER OF REGION
C
(BH ) FILL CHARACTER
C
(DS) ::::: DATA SEGMENT
C
(ES) '" REGEN SEGMENT
C
OUTPUT
--- C
C
-- -----N-O-N-E-- -----SCRE-E-N---I-S--S-CR-O--LL-E-D----------- -------- ----
C SCROLL DOWN
C
- STD
PROC
NEAR
SCROLL DOWN
C
MOV
BL,AL
LINE COUNT TO BL
C
CALL
MK ES
C
PUSH
RX
SAVE ATTRIBUTE IN BH
C
MOV
AX,DX
C
CALL
SCROLL pas I T I ON
C
Jl
N16
LOWER RIGHT CORNER GET REGEN LOCAT I ON
C
SUR
SI,AX
C
MOV
AH, DH
C
SUR
AH,BL
SI IS FROM ADDRESS GET TOTAL 1/ ROWS COUNT TO MOVE I N SCROLL
C N13: C
CAll
.,0
; MOVE ONE ROW
C
SUR
SI, BP
C
SUR
DI, BP
C C
OEC JNZ
A.,H3
c N14:
C
POP
AX
C
MOV
AL, ·
; RECOVER ATTRIBUTE IN AH
C N15: C
CALL Nl1
CLEAR ONE ROW
C
SUR
DI,BP
GO TO NEXT ROW
C
DEC
Rl
C
JNZ
N15
C
JMP
N5
C N16: C C
MOV JMP
.,.BL,DH
C SCROLL_DOWN
[NOP
C
C
C
SCROLL UP
C
THIS ROUTINE SCROLLS UP THE INFORMATION ON THE CRT
C
ENTRY
C
CH,CL ::::: UPPER LEFT CORNER OF REGION TO SCROLL
C
DH,DL", LOWER RIGHT CORNER OF REGION TO SCROLL
C C
= BOTH OF THE ABOVE ARE IN CHARACTER POSITIONS
BH FILL VALUE FOR BLANKED II NES
C
AL :: , LINES TO SCROLL (AL='O MEANS BLANK THE ENT I RE
C
FI ELO)
C
OS = DATA SEGMENT
132 IBM Enhanced Graphics Adapter
August 2, 1984
1474 1474 8A 08 1476 88 Cl
1478 E8 16A7 R 147B 8B F8
~ 1470 147F 1483
2B 01 81 C2 0101 DO E6
1485 DO [6
1487 80 3E 0449 R 06 148C 73 04
148E DO [2 1490 01 E1
1492 1492 1493 1494 1496 1498 149A 149C 149E 14AO 14A2 14A4 14A6 14A8
06 1F 2A ED DO E3 DO E3 74 20 8A C3 B4 50 F6 E4 8B F7 03 FO 8A E6 2A E3
14M 14AA 14AD 14B1 1485
14B7
E8 14CO R 81 EE 1 FBO 81 EF 1 FaD FE CC
75 Fl
14B9
14B9 14BB
~ ~~~i
14C4 14C6
14C9 14C9
8A C7
;1 ~!E~F:O
75 F5 E9 219E R
8A DE
14CB E8 EC 14CO
t4CO t4CO
14CF 1400 1401 1403 1404 1405 1409 1400 140E 140F 14El 14E3 14E4 14E5 14E6
8A CA
56 57 F3/ A4 SF 5E 81 C6 2000 81 C7 2000 56 57 8A CA F3/ A4 SF 5E C3
14E6 14E6 14E8
14E9 14EB 14EC 14FO 14F1 14F3 14F5 14F6 14f7
8A CA
57 F3/ AA SF 81 C7 2000 57 8A CA F3/ AA SF C3
14F7
14F7
~~t~~ 1500 1503
1504 1505 1507 1508 1509 1509 150A
50
i! ~~F~4:7 R
80 E4 60 1F 58 74 02 F9 C3
F8 C3
3655 3656 3657 3658
3659 3660 3661
3662
3663 3664
3665 3666 3667 3668 3669 3670 3671 3672 3673 3674 3675 3676 3677 3678 3679
3680 3681 3682
3683 3684
3685 3686 3687 3688 3689 3690 3691 3692
3693 3694 3695 3696 3697 3698 3699 3700 3701 3702
3703 3704 3705
3706 3707
3708 3709 3710 3711 3712 3713 3714 3715 3716 3717
3718 3719 3720 3721 3722 3723 3724 3725 3726 3727 3728 3729 3730 3731
3732 3733 3734 3735 3736 3737 3738 3739 3740 314t
3742 3743 3744 3745 3146 3747 3748 3749 3750 3751 3752 3753 3754
3155 3756 3757 3758 3759 3760 3761
3762 3763 3764 3765 3766 3767 3768 3769 3770 3771 3772 3773 3774 3775 3776
3777 3778 3779 3180
e
ES = REGEN SEGMENT
e
e ; EXIT NOTHING, THE SCREEN IS SCROLLED
ee bAAP~~~S-U;-----;R;;C----~EAR-------------------------------------
e
MOV
BL, AL
· SAVE LINE COUNT IN BL
e
MOV
AX, CX
; GET UPPER LEFT pas iliON
e
; INTO AX REG
e
e ;----- USE CHARACTER SUBROUTINE FOR POSITIONING
e ; ---- ADDRESS RETURNED IS MULTI PL I ED BY 2 FROM CORRECT VALUE
e
e
CALL
e
MOY
SAVE RESULT AS
e
DESTINATION ADDRESS
e
e ;----- DETERMINE SIZE OF WIN~OW
e
e
SUB
Ox, ex
e
AOO
OX,101H
ADJUST YALUES
e
SAL
OH,l
MULTIPLY # ROWS BY 4
e
SINCE 8 VERT DOTS/CHAR
e
SAL
DH,1
AND EVEN/ODD ROWS
c
c ;----- DETERMINE CRT MODE
c
c
eMP
TEST FOR MEDIUM RES
c
JNe
F I NO_SOURCE
c
e ;----- MEDIUM RES UP
c
c
SAL
OL,l
· 2
c
SAL
01,1
SINCE 2 BYTES/CHAR
c
c ;----- DETERMINE THE SOURCE ADDRESS IN THE BUFFER
c
C R7:
, f I NO_SOURCE
e
PUSH
ES
; GET SEGMENTS BOTH
e
POP
OS
· POINTING TO REGEN
e
SUB
CH,CH
; 0 TO HIGH OF COUNT REG
e
SAL
BL,l
; NUMBER OF LI NES *4
e
SAL
BL,l
e e e
JZ MOY
MOY
Rll AL, BL AH,80
IF 0, BLANK ENTIRE FIELD NUMBER OF LINES IN AL 80 BYTES/ROW
e
MUl
AH
OFFSET TO SOURCE
e
MOY
SI,OI
SET UP SOURCE
e
AOO
SI,AX
ADO I N OFFSET TO IT
e
MOY
AH,OH
NUMBER OF ROWS IN FIELD
e e
SUB
AH,BL
DETERMINE NUMBER TO MOVE
ee ;----- LOOP THROUGH, MOVING ONE ROW AT A TIME, BOTH EVEN AND ODD FIELDS
C R8:
e
CALL
R17
e e e c
SUB
S I, 2000H-80
SUB
OI,2000H-80
OEC
AH
JNZ
R8
c
c ;----- fiLL IN THE VACATED UNE(S)
e
NUMBER OF ROWS TO MOVE CONTINUE TILL ALL MOVED
C R9:
CLEAR_ENTRY
RlO:
MOY
AL,BH
; ATTRIBUTE TO FILL WITH
CALL
R18
; CLEAR THAT ROW
SUB
0 I ,2000H-80
POINT TO NEXT LINE
DEC
BL
NUMBER OF LINES TO FILL
JNZ
Rl0
CLEAR_LOOP
JHP
V_RET
Rll:
BLANK FIELD
MOV
BL,OH
SET BLANK COUNT TO
; EVERYTHING IN FIELD
JMP GRAPH ICS_UP
R9 ENOP
; CLEAR THE F I ELO
;----- ROUTINE TO MOVE ONE ROW OF INFORMATION
R17
PROC
NEAR
MOV
CL,OL
PUSH
SI
PUSH
0 I
REP
MOYSB
POP
01
POP
SI
ADD
S I, 2000H
ADD
0 I ,2000H
PUSH
S I
PUSH
0 I
MOV
CL,OL
REP
MOYSB
POP
01
POP
51
RET
R17
ENDP
; NUM OF BYTES I N THE ROW
; SAVE POINTERS ; MOVE THE EVEN F I ELO
; POINT TO THE ODD FIELD
; SAVE THE PO INTERS ; COUNT BACK ; MOVE THE ODD FIELD
, POINTERS BACK ; RETURN TO CALLER
; ---- CLEAR A SINGLE ROW
R,8
PROC
NEAR
MOV
CL,OL
PUSH
0 I
REP
STOSB
POP
01
ADD
0 I ,2000H
PUSH
01
HOV
CL,DL
REP
STOSB
POP
01
RET
R18
ENDP
NUMBER OF BYTES IN FIELD SAVE PO I NTfR STORE THE NEW YALUE PO INTER BACK POINT TO 000 FIELD
FILL THE ODD FIELD
RETURN TO CALLER
MEM_DET PROC
ASSUME PUSH
PUSH
CALL
MOY ANO POP
POP JZ
51e RET
MIN:
ele
RET
NEAR OS:ABSO
AX
OS DDS AH, INFO AH,060H
OS
AX MI.
August 2, 1984
IBM Enhanced Graphics Adapter 133
150B
1508 1508 E9 13A3 R
150E
150E 1511 1515 1518 151A 1510 151F
E8 1201 R 8A 26 0449 R 80 FC 07 76 F1 80 FC 00 13 11 E9 219E R
1522 1522 1525 1528 1528 1520 1530 1532 1535 1535 1536
SA AOOO BD 0511 80 FC OF 12 06 E8 14f1 R 13 03 BD 0501
C3
1536
1536 52 1537 E8 1522 R
153A
153C 1530
153F 1541 1542 1546 1549 154A 154C 154E
1552 1554 1556 1557 1558 155F 1561
6E C2
5A 8A 08
8B Cl 53 8A 3E 0462 R E8 16C6 R
5B 8B F8 28 01 81 C2 0101 2A E4 SA C3
52 F7 26 0485 R F7 26 044A R 88 F7 03 FO
1563 1564
1565 1566 1568
15M 156C 156E
06 1f
5A OA DB 74 3F 8A CE 2A CB 2A ED
1570 1571 1574 1575 1576 1578 157C 157E 157F
1580
1E E8 OCFE R
50
52 88 C1 F7 26 0485 R
88 C8 5A
"
1f
1581 1582
1584 1586 1588 158B 158D 1590 1593 1594
52 8B C5 B6 03 B2 CE E8 OD15 R B2 C4 B8 020F E8 OD15 R
5' [8 12EO R
1597 1598 1599 1598 1590 159F 15A2
15A3
'5A3 15A6 15A9 15A9 15AB 15AD
52 40 88 C5 86 03 82 CE E8 0015 R 5A
E8 1353 R E9 219E R
6A DE EB F6
1SAO 15AD [9 1442 R
15BO
15BO 15B3 15B7 15BA
15BC 15BF
E8 1201 R 8A 26 0449 R 80 FC 03 76 Fl 80 FC 07
74 EC
15Cl 15C4 15C6 15C9 15CB 15CD 15CF 15CF
80 FC 00 13 OC 80 FC 06 77 04 84 07 CO 42
E9 219E R
1502 1502 FO
3781 3782 3783 3784
3785 3786 3787 3788 3789
3790 3191 3192 3193
3794 3795 3796
3797 3196
3199 3600 3801 3602 3603 3604 3605 3806 3807 3808 3809 3810 3611 3612 3613
3614 3815 3616 3811 3818 3819 3820 3821 3822 3823 3824 3825 3626 3627 3628 3829 3630 3831 3832 3833 3834
3835 3836 3837
3838 3839 3840 3841 3842
3843
3844 3845 3846 3847
3848 3849 3650 3851 3652 3653
3854 3855 3656 3657 3858 3859 3860 3861
3862 3863 3864 3865 3866 3667 3868 3869 3870 3871 3872 3873
3874 3875 3876 3877 3878 3879 3880 3881
3882 3883 3884 3885 3666 3887 3888 3889 3890 3891 3892 3893 3694
3895 3896 3697 3898 3899 3900 3901 3902 3903 3904 3905 3906
C MEM_DEl ENDP
C
C ;----- SCROll ACTIVE PAGE UP
C
C SC_2:
C
JMP
SCROl~UP
C
C AH6:
C
ASSUME OS:ABSO
C
CAll
FlTA
C
MOV
AH,CRT_MODE
C
CMP
AH,01H
C
JBE
SC 2
C
CMP
AH--;-OOH
C
JAE
GRAPHICS_UP_2
C
JMP
V_R£T
C
C GR_ST_1 PROC
NEAR
C
MOV
OX,OAOOOH
C
MOV
BP,0511H
C
CMP
AH,OFH
C
JB
VVl
C
CAll
MEM_OET
e
JNC
Wl
C
MOV
BP,0501H
C VVl :
C
RET
C GR_ST_l ENOP
C
C GRAPHICS UP 2 PROC
NEAR
e
ASSUME DS:ABSO
C
PUSH
OX
C
CAll
GR_ST_l
C
SRlOAO ES
C_
MOV
ES,DX
C
POP
OX
e
MOV
8l,Al
C
MOV
AX,CX
e
PUSH
BX
e
MOV
BH,ACTIVE_PAGE
C
CALL
GRX_PSN
C
POP
BX
C
MOV
DI,AX
e
SUB
DX,CX
C
ADD
OX,0101H
C
SUB
AH,AH
C
MOV
AL,BL
C
PUSH
OX
C
MUL
PO I NTS
C
MUL
CRT COLS
C
MOV
51,01
C
ADD
SI,AX
C
ASSUME OS:NOTHING
e
PUSH
ES
e
POP
OS
C
POP
OX
C
OR
BL, BL
C
JZ
AR9
C
MOV
Cl,OH
C
SUB
CL, BL
C
SUB
CH,CH
C
e
ASSUME DS:ABSO
e
PUSH
OS
C
CALL
ODS
C
PUSH
AX
C
PUSH
OX
C
MOV
AX,CX
e
MUL
POINTS
e
MOV
CX,AX
e
POP
OX
C
POP
AX
e
ASSUME OS:NOTHING
C
POP
OS
e
e
PUSH
OX
C
MOV
AX,BP
C
MOV
OH,3
e
MOV
DL,GRAPH_ADDR
C
CALL
OUT_DX
C
MOV
OL,SEQ_ADOR
C
MOV
AX,020FH
C
CALL
OUT _DX
e
POP
OX
e
CALL
CRANK
C
C
PUSH
OX
C
DEC
BP
C
MOV
AX,BP
C
MOV
DH,3
C
MOV
DL, GRAPH_ADOR
C
CALL
OUT_DX
C
POP
OX
C ARlO:
e
CALL
8LNK_3
C
JMP
V_RET
e AR9:
C
MOV
BL,DH
e
JMP
C GRAPH I CS_UP_2
ARlO [NDP
e
e ;~--.- SCROLL ACTIVE DISPLAY PAGE DOWN
e
e SC_3:
e
J"P
SCROLL_DOWN
C
e AH7:
C
ASSUME OS:ABSO
C
CALL
FLTA
c
MOV
AH,CRT_MODE
C
eMP
AH,03H
e
JBE
SC_3
C
eMP
AH,07H
C
JE
SC_3
e
C
CMP
AH,OOH
e
JAE
GRAPH I CS_ON_2
C
eMP
AH,06H
C
JA
M_O
e e e M_O:
MOV 'NT
AH,07H 4,"
e
JMP
V_RET
e
sro- C GRAPH I CS DN 2
e
PROC
NEAR
; GET CURRENT MODE ; ANY OF THE OLD MODES ; NEW GRAPH ICS MODES ; NOT A RECOGNIZED MODE
; REGEN BUFFER ; GRAPH I CS WR I TE MODE
; GRAPHICS WRITE MODE
,.-......
SET SEGMENT, WR I TE MODE SET REGEN
NUMBER OF LINES UPPER LEFT CORNER
; ACTIVE PAGE FOR SCROLL ; ADDRESS I N REGEN
; SET PO INTER ; DETERMINE WINDOW ; ADJUST ; ZERO HIGH BYTE ; LINE COUNT
; BYTES PER CHARACTER ; COLUMNS ; SET UP SOURCE INDEX ; ADJUST
L I HE COUNT
; lOW MEMORY SEGMENT
; BYTES PER CHAR ; SET THE COUNT
GRAPH ICS SEQUENCER ENABLE ALL MAPS
SCROLL THE SCREEN
8LANK ENTIRE WINDOW
; OLD COLOR ALPHA MONOCHROME ALPHA NEW GRAPH ICS MODES OLD GRAPH I CS MODES
DIRECTION TO DECREMENT
134 IBM Enhanced Graphics Adapter
August 2, 1984
1503 8A 08 1505 52 1506 £8 1522 R
1509 1506 150C 150[
15EO 15E1 15E5 15E6 15E9
15EO 15Ef 15Fl 15F5 15F7 15F9 15FA 15FE 1602 1604
8E C2 5A
88 C2
FE C4
53 8A 3£ 0462 R £8 16c6 R
5B 28 06 044A R BS Fe 28 01
81 C2 0101 2A E4 SA C3
52
F7 26 0485 R F7 26 044A R 88 F7
2S fO
1606 1607 1608 1609 160B 1600 160F 1611
06 1 F 5A OA DB 74 40 8A C£ 2A CD 2A ED
1613 1614 1617 1618 1619 1618 161F 1621 1622
1 E
£8 OCFE R
50 52
88 Cl f7 26 0485 R 8B C8
5A
58
1623 1 F
1624 1625 1627 1629
162B 162E
1630 1633 1636 1637
52 8B C5 B6 03 82 CE
E8 0015 R B2 C4
B8 020f E8 0015 R 5A E8 12FE R
163A. 163B 163C
163E 1640 1642
1645 1646 1646 1649 16ilA, 1640 1640 16qF 1651
52 40 8B C5 86 03 B2 CE E8 0015 R 5A
E8 137B R FC E9 219E R
BA DE EB F5
1651 1651
1653 1655 1657 1659 1650 165F 1661 1661 1665 1667 1667 166A. 166C 1660
SA CF 32 ED 88 f1 01 E6 8B 84 0450 R 33 DB E3 06
03 lE Oq4C R E2 FA
E8 1146 R 03 DB C3
1660
1660 1670 1672 1673 1676 1676 1678 167A
80 £3 03 8A C3
51 89 0003
DO EO
DO OA
oEOs
167C 167E 1680 1681 1682
E2 F8 8A fa 59 C3
3907 3908 3909 3910
3911 3912 3913 3914 3915 3916 3917 3916
3919 3920 3921 3922 3923 3924 3925 3926 3927 3928 3929 3930 3931 3932 3933 393q
3935 3936 3937 3938
3939 3940 3941 3942 3943 3944
3945 3946 3947 3948 3949 3950 3951 3952
3953 3954 3955 3956
3957 3956 3959 3960 3961
3962 3963 3964 3965 3966
3967 3968 3969
3970 3971 3972 3973 3974 3975 3976 3977 3978 3979 3980 3961 3962 3963 3964
3985 3966 3987 3988 3989 3990 3991 3992 3993 3994
3995 3996 3997 3996 3999 4000 4001 4002 4003 4004 4005 4006 4007 4008 4009 4010 4011 4012
4013 4014
4015 4016 4017 4018
4019 4020 4021 4022
4023 4024 4025 4026 4027 il028 4029 4030 4031
4032
MOV PUSH
CALL
SRLOAD
c+
MOV
c
POP
c
MOV
c
INC
c
PUSH
c c
MOV CALL
c
pop
c c
SUB MOV
c
SUB
C
AOO
c
SUB
c
MOV
c c c c c
PUSH MUL MUL MOV
SUB
c
ASSUME
c
PUSH
c
POP
c
POP
C
OR
c c c
JZ MOV SUB
c
SUB
C
c
ASSUME
c
PUSH
c
CALL
C
PUSH
c
PUSH
c
MOV
C
MUL
C
MOV
C
POP
C
POP
C
ASSUME
C
POP
C
C
PUSH
C
MOV
C
MOV
C
MOV
C
CALL
C
MOV
C
MOY
C
CALL
C
POP
C
CALL
C
C
PUSH
C
OEC
C
MOV
C
MOV
C
MOV
C
CALL
C
POP
C DXR10:
C
CALL
C
CLO
C
JMP
C OXR9:
c
MOV
c
JMP
c GRAPHICS_Ofe2
c
c
SUBTTl
BL,AL OX ~~_ST_l
ES,OX OX AX,OX AH BX BH, ACT I VE_PAGE GRX PSN BX
AX,CRT_COLS OI,AX OX,CX OX,0101H AH,AH AL,BL OX PO f NTS CRT_GOLS SI,OI SI,AX
DS:NOTH~NG
ES OS OX BL, Bl OXR9 el,OH CL,BL CH,CH
DS:ABSO OS OOS AX OX AX,CX PO I NTS CX,AX OX AX DS;NOTHING OS
OX AX,SP OH,3 DL, GRAPH_ADOR OUT.OX Ol, SEQ.AODR AX,020FH OUT.OX OX CRANK.4
OX BP AX,BP DH,3 g~;- G~~PH_ADDR
OX
BLNK.il
V.RET
BL,OH OXR10 ENOP
II NE COUNT SAVE LOWER R I CHT SET REGEN SEGMENT ; MOV CHAR ROW UP BY ONE ; ADDRESS IN RECEN ; ONE SCAN OVERSHOOT CALCULATE WINDOW ADJUST COUNT BYTES PER CHAR BYTES PER ROW SET OS TO
THE REGEN SEGMENT SCROLL COUNT BLANK [NT I RE WINDOW
; BYTES PER CHAR
GRAPHICS SEQUENCER ENABLE ALL MAPS SCROLL THE SCREEN
; BLAN~ ENT I RE WINDOW
c c
INCLUDE
VGRW.INC
SUBTTL VCRW. INC
c
PAGE
c
c
ASSUME DS:ABSO
c FINO_POSITION PROG
NEAR
c
MOV
CL,BH
oI SPLAY PAGE TO ex
C
XOR
CH,CH
C
MeV
SI,CX
MOVE TO SI FOR INDEX
C
SAL
SI,l
* 2 fOR WORD OFFSET
C
MOV
AX, [S I+ OFfSET CURSOR.POSN I
ROW/COLUMN OF THAT PAGE
C
XOR
BX,BX
SET START ADDRESS TO 0
C C P4: C C
JC><Z
AOD LOOP
.
P5
BX,CRT_LEN
NO_PAGE PAGE LOOP LENGTH OF BUFFER
C P5:
NO_PAGE
C
CALL
POSITION
OETERMINE LOC IN REGEN
C
AOO
BX,AX
C
RET
ADD TO START OF REGEN
C FIND_POSITION ENOP
C C
: ----------------------------------------------.--------
C
EXPAND_MED.COLOR
C
TH I S ROUTI NE EXPANDS THE LOW 2 BI15 IN BL TO
C
FILL THE ENTIRE BX REGISTER
C
ENTRY
C
BL = COLOR TO BE USED ( LOW 2 BITS )
C
EXIT
C
; C
r~Lg~L~~TIO)BE USED' 6 REPLICATIONS Of THE :
C
~~9-----PR~~~---NE;;'R-------------------------------------
C
C C
A_ND
BL,3
~~
ISOLATE THE COLOR BITS
w"m~
C
PUSH
CX
SAVE REGISTER
C
MOV
CX,3
NUMBER OF TIMES
C S20:
C
SAL
AL,l
C
SAL
AL,1
LEfT SHI fT BY 2
C
OR
BL,AL
ANOTHER COLOR VERSION
C
INTO BL
C
LOOP
S20
fiLL All Of 6L
C
MOV
BH,BL
C
POP
cx
fiLL UPPER PORTION REGI STER BACK
C
RET
ALL DOPiE
- - -: - -::-:::::::--- C 819
£HOP
C
C
C
~,' -EX;;;'ND;=~~E~~~~~::
~::~:
~:~
~~: ~:-::
C
ALL Of THE BITS, TURNING THE 8 BITS INTO
August 2, 1984
IBM Enhanced Graphics Adapter 135
1662
1682 1683 1684
1685 1687 168A
16M 168C 168E 1690 1692 1694 1696
1698 1691..
52 51 53 2B 02 B9 0001
8B 08 23 09 OB 03 01 EO 01 E1 8B 08 23 09 OB 03 01 E1
169C 13 EC
169E 16M
161..1
16"'2. 161..3 16A4
8B C2 5B
59
51.. C3
161..4 16A4 16M
16A1 161..8 16M 1Me 1680 1682 16B4
16B6 1688 1689 1681..
1..1 0450 R
53 8B 08 81.. C4 F6 26 0441.. R 01 EO 01 EO 2A FF 03 C3 58 C3
1681..
16BA 16BB 1680 16BF 16C1
16C5
53 81.. OF 21.. FF 01 E3 8B 87 0450 R
5B
16C6 16C6 16C7
16C8 16C9 16CB 16CD 16CF 16D1 16D5 16D9 160B 160D 16E1 16E3
16E3 16[5 16E7
16E7 16E8 16E9
16EA
16E8
53 51 52 2A ED 8A CF 8B 08 81.. C4 F6 26 04.41.. R F7 26 0485 R 21.. FF 03 C3 8B 1E 044C R E3 04
03 C3 E2 FC
51.. 59 58 C3
16EB
16EB
16EE 1M2 16F6 16F9 16fB 16FE 16fE
1700
BE 8800 BB 3E 0410 R 81 E7 0030 83 FF 30 75 03 BE BOOO
BE C6 C3
1701
1701 1704 1707
E8 16E8 R E8 1651 R 8B F3
1709 88 16 0463 R 1700 63 C2 06
1710 F6 06 0487 R 04
4033
40" 4035
4036 4037
4038
4039
4040
4041 4042 4043 4044
401t5 4046
4047 4048
4049 4050 4051
4052 4053
4054 4055 4056 4057 4058 4059 4060 4061 4062
4063 4064 4065 4066 4067
4068 4069
4070 4071 4072 4073 4014 4075 4076 4077
4078 4079 4080 4081 4082 4083
4084
4085
4086 4087
4088 4089 4090 4091
4092 4093 4094 4095
4096 4097
4098
4099 4100 4101 4102 4103 4104
4105 4106
4107 4108 4109 4110 4111 4112 4113
4114 4115 4116 4117 4118
4119
4120
4121 4122 4123 4124 4125 4126
4127 4128 4129 4130 4131
4132 4133 4134 4135 4136 4137 4138 4139 4140
4141
4142 4143 4144
4145 4146 4147
4148
4149 4150 4151 4152 4153 4154
4155 4156 4157
4156
c c c
16 BITS. THE RESULT IS LEFT IN AX ~2~-----;ROC----~~A.R-------------------------------------
c c
PUSH
OX
PUSH
ex
SAVE REG I STERS
c
PUSH
BX
c
SUB
DX,OX
RESULT REGISTER
c
MOV
c S22:
CX,1
MASK REGISTER
c c c c
MDV
BX,AX
AND
BX,CX
OR
DX,BX
SHL
AX,1
BASE I NTO TEMP USE MASK TO EXTRACT BIT PUT I NTO RESULT REG I 5TER
c
SHL
CX,1
5H I FT BASE AND MASK BY 1
c
MOV
BX,AX
BASE TO TEMP
c c c c
AND
BX,ex
OR
DX,BX
SHL
CX,1
c
JHe
S22
EXTRACT THE SAME BIT
PUT I NTO RESULT SHIFT ONLY MASK NOW,
MOVING TO NEXT BASE
USE MASK BIT COMING OUT
c
TO TERMINATE
c
MOV
AX,OX
RESULT TO PARM REG I STER
c c
POP
BX
POP
ex
RECOVER REGISTERS
c c
POP
ox
RET
ALL DONE
C S21
[NDP
C
C S26
PRoe
NEAR
C
MOV
AA, CURSOR_POSN
GET CURRENT CURSOR
e GRAPH_POSN
LABEL NEAR
e
PUSH
BX
SAVE REG I STER
c
MOV
BX,AX
c
MOV
AL,AH
SAVE A COPY OF CURSOR GET ROWS TO AL
c
MUL
BYT£ PTR CRT eOLS
MULTI PLY BY BYTES/COLUMN
c
SHL
AX,1
-
*4 SINCE 4 ROWS/BYTE
c c c
SHL SUB ADD
AX,' BH,BH AX,BX
I SOLATE COLUMN VALUE OETERMINE OFF5ET
c c
PDP
BX
RET
RECOVER PO INTER ALL DONE
e S26
ENDP
c
c
e
GR_CUR
c
ENTRY
c c
BH '" 0 I SPLAY PAGE EXIT
c
AX:: CURSOR POSITION FOR REQUESTED PAGE
c
c
c
ASSUME os: ABSO
e
PUSH
BX
SAVE REG I STER
c
MOV
aL,BH
; GET TO LOW BYTE
c
SUB
BH,BH
ZERO HIGH BYTE
c
SAL
BX,1
*2 FOR WORD COUNT
c
MOV
AX, [ax + OffSET CURSOR_POSN I
CURSOR, REQUESTED PAGE
c
POP
BX
RECOVER REG I STER
c
c
GRX PSN
c
ENTRY
c
AX '" CURSOR POSITION IN DESIRED PAGE
c
8H :: DES I RED PAGE
c
EXIT
g C
GRX:;;N-
APXRO'";
------- --- BYTE OffSET INTO
----NE~R
R-E-C-E-N-
-------
--------.--
------
-----
C
PUSH
C
PUSH
C
PUSH
C
SUB
C
MOV
C
MOV
C
MOV
C
MUL
C
MUL
C
SUB
C
ADD
C
MOV
C
JCXZ
C
C
ADO
C
LOOP
C
C
POP
POP
POP
RET
GRX_PSN ENOP
BX CX OX CH,CH CL, BH BX,AX AL,AH BYTE PTR CRT_COLS POINTS BH,BH AX, BX BX, CRT _LEN GP_2
AX,BX GP_3
OX CX BX
SAVE SAVE SAVE ZERO PAGE NUMBER ROW, COLUMN ROW
* ROW COLUMNS/ROW
BYTES PER ROW ZERO TO LEAVE COL VALUE ADD I N COLUMN PAGE LENGTH NO PAGE OFFSET
AOD I N THE PAGE LENGTH DO FOR NUMBER OF PAGES
RECOVER RECOVER RECOVER
MOV
SI,OB800H
MOV
01, EQUI P_FLAG
C
AND
DI,030H
C
CNP
DI,030H
C
JHE
P6 A
e
MOV
51-:-0BOOOH
C P6_A:
C
MOV
C
RET
ES, SI
C
C
;-READ:;C=C~~R~~T- --. -------~~-- ---~------ --------.---- -~
C
C
THIS ROUTINE READS THE ATTRIBUTE AND CHARACTER :
C
AT THE CURRENT CURSOR POSITION AND RETURNS THEM:
c ,
TO THE CALLER
e ; INPUT
C
(AH) :. CURRENT CRT MODE
C
(BH) = DISPLAY PAGE ( ALPHA MODES ONLY)
c
(OS) = DATA SEGMENT
e
(ES) = RECEN SEGMENT
= e e :,:OUTPUT (AL)
CHAR READ
e
(AH) = ATTRIBUTE READ
C
C
ASSUME CS: CODE, OS: ABSO, ES: NOTH I NG
C READ_AC_CURRENT PROC
NEAR
C
e c
CALL
:~L
HK ES
~:~~;:t0SITI0N
c
e
NOV
OX, ADDR_6845
; ADDRESSING IN 51 GET BASE ADDRESS
C
ADD
DX,6
c
POINT AT STATUS PORT
C
c
TEST
INFO,4
136 mM Enhanced Graphics Adapter
August 2, 1984
1715 06 1716 1F 1717 74 08
1719 1719 171A
171C
171E 171F 171 F 1720 1722
1724 1724 172' 1728
EC AS 01 75 F8 FA
EC A8 01 74 FB
AD E9 219E R
1728 1728 172A
1720
8A 24 8A 44 01 89 COOO
1730
1732 1732 1734
82 00
85 Cl F8
1735 1737 1738 1738 173A 1He
74 01 F9
DO 02 01 E9 01 E9
173E 73 F2
17"'0 1743 1744 1745
88 56 00 45
C3
1745 1745 1748
174B 1740
E8 16EB R E8 16A4 R
8B fO 83 EC 08
1750 8B EC
1752 1757
1758
1759
80 3E 0449 R 06 06
1F
72 1A
175B 1750 1750
17SF 1762 1763 1767 176A
176B
176E
1770 1772
B6 04
8A 04 88 46 00 45 8A 84 2000 88 46 00 45 83 C6 50 FE CE 75 EB E8 17 90
1775 1775 1177 1779 1779
01 E6 B6 04
E8 1728 R
171C
1780 1783 1187 1789
81 C6 2000 E8 1728 R 81 EE HBO
fE CE
75 EE
178B 178B l78C 178F 1793
1794
1E E8 OCFE R C4 3E 010C R
1 F
83 ED 08
1791 1799 179A 179C 179C 1790 179E HAl
l7Al
HAl
68 F5 fC 80 00
16 H 6A 0060
56 57
4159
4160 4161
4162
4163
4164 4165
4166 4167 4166
4169
4170
4171 4172 4173 4174
4175 4176 4177 4118 4179 4180 4181
4182 4183 4184 4185 4166 4167 4188
4189 4190 4191 4192 4193 4194 4195 4196 4197 4198 4199 4200 4201 4202
4203
4204 4205 4206 4207
4208 4209 4210 4211 4212 4213 4214 4215 4216
4217 4218 4219 4220 4221
4222 4223 4224 4225 4226 4227
4228 4229 4230 4231
4232
4233 4234 4235 4236 4237 4238 4239 4240 4241 4242
4243 4244 4245 4246 4247 4248 4249 4250 4251
4252
4253 4254 4255 4256 4257 4258 4259
4260 4261 4262 4263 4264 4265 4266 4267 4268 4269 4270 4271
4272 4273 4274 4275 4276 4277 4276
4279 4280 4281 4282 4283 4284
c
PUSH
ES
C
POP
OS
SEGMENT FOR QUICK ACCESS
C
C
JZ
PlA
C
C ;-----'WAIT FOR HORIZONTAL RETRACE
C
C P2:
WA I T FOR RETRACE LOW
C C C C C P3:
IN TEST JNZ
CLI
AL,DJ:< AL,1
P2
GET STATUS I S HaRZ RETRACE LOW WAIT UNTIL IT IS NO MORE INTERRUPTS
WAIT FOR RETRACE HIGH
C
IN
AL,DX
C
TEST
AL,1
C
JZ·
P3
GET STATUS
IS IT HIGH WAIT UNTIL IT IS
C P3A: C
LODSW
; GET THE CHAR/ATTR
C
JMP
V RET
C READ_AC_CURRENT EiiDP
C
C C
;-MED=RE~~~~~~~:~::~-:: ::-~:::-:-::~::-::::-~:~-:~:~:---
C
C
BUFFER, COMPARE AGAINST THE CURRENT FOREGROUND
C
COLOR, AND PLACE THE CORRESPONDING ON/OFF BIT
C
PATTERN INTO THE CURRENT POSITION IN THE SAVE
C
AREA
C
ENTRY
C
S I, os == PO I NTER TO REGEN AREA OF INTEREST
C
BX == EXPANDED fOREGROUND COLOR
C
BP "" PO I NTER TO SAVE AREA
C
EXIT
g {;;; C
ep I S I NCREMENT -----PROC----N~AR---
-AF-T-E-R-
-SA-VE----
-----------
--
---
g
=g~ :~:1~:111
g~i ~~~g~DB~~iE
C C
C C S24: e C C
g
MOV
MOV TEST CLC
~~C
eX,DeOOOH DL,D AX, CX
S25
2 BIT MASK TO TEST THE ENTRIES
RESULT REGISTER
15TH I S BACKGROUND? CLEAR CARRY I N HOPES
THAT IT IS
~rs~r T! Ts6Ss~~C~~:~~ND
c S25:
C
RCL
DL,1
MOVE THAT BIT INTO THE
C
SHR
CX,'
C
SHR
CX,1
C
C
JNC
S24
C
C
MOV
(BP I. DL
C
INC
BP
RESULT MOVE THE MASK TO THE
RIGHT BY 2 BITS
DO IT AGAI N I F MASK DIDN'T FALL OUT
STORE RESULT I N SAVE ADJUST POINTER
C C S23 C
RET ENDP
ALL DONE
C
C GRAPHICS READ
C
CALL
C
CALL
PROC MK ES
52.
NEAR
; CONVERTED TO OFFSET
C
MOV
SI,AX
SAVE IN SI
C
SUB
SP,8
ALLOCATE SPACE TO SAVE
C
THE READ CODE POINT
C
MOV
SP, SP
PO I NTER TO SAVE AREA
C
C ;----- DETERMINE GRAPHICS MODES
C
C
CMP
CRT_MO[)E,6
C
PUSH
ES
C
POP
OS
POINT TO REGEN SEGMENT
C
JC
S13P
MED I UM RESOLUT 1ON
C
C ;----- HIGH RESOLUTION READ
C
C ;----- GET VALUES FROM REGEN BUFFER AND CONVERT TO CODE POINT
C
C
MOV
OH,4
C S12P:
C
MOV
AL,(SI J
C
MOV
(BP],AL
C
INC
BP
C
MOV
AL, (S I+2000H I
C
MOV
IBPJ.AL
C
INC
BP
C
ADD
51,80
C
OEC
OH
C
JNZ
S12P
C
JMP
S15P
C
C
C ; ---- MED I UM RESOLUT I ON READ
C
C S13P:
C
SAL
SI,1
C
MOV
C S14P:
DH,4
C
CALL
523
C
C
ADD
SI,2aaaH
C
CALL
523
C
SUB
S I ,2000H-BO
C
DEC
DH
C
JNZ
S14P
C
C ;----- SAVE AREA HAS CHARACTER IN IT, MATCH IT
C
C S15P:
C
PUSH
OS
C
CALL
DOS
C
LES
01, GRX_SET
C
POP
OS
C
SUB
BP,8
C
C
MOV
SI, BP
C
CLO
C
MOV
AL,O
C S16P:
C
PUSH
55
C
POP
OS
C
MOV
DX,128
C S17P:
C
PUSH
51
C
PUSH
01
l NUMBER OF PASSES
GET FIRST BYTE SAVE I N STORAGE AREA NEXT LOCATION GET LOWER REGION BYTE ADJ UST AND STORE
POINTER INTO REGEN LOOP CONTROL DO IT SOME MORE GO MATCH THE SAVED CODE
POINTS
MED_RES_READ OFFSET*2, 2 BYTES/CHAR NUMBER OF PASSES
GET PA I R BYTES INTO SINGLE SAVE
GO TO LOWER REGION GET THIS PAIR INTO SAVE ADJUST POINTER BACK INTO
UPPER KEEP GOING UNTIL 8 DONE
ESTABLISH ADDRESSING
; ADJUST POINTER TO ; BEG I NN I NG OF SAVE AREA
ENSURE 0 I RECT I ON CURRENT CODE PO I NT BE I Ne.
MATCHED ADDRESS I HG TO STACK FOR THE STR I NG COMPARE NUMBER TO TEST AGA I NST
SAVE SAVE AREA PO INTER SAVE CODE POINTER
August 2, 1984
IBM Enhanced Graphics Adapter 137
17A3 17M 17AB
17A9 17M
89 0008
F3/ A6 5F 5E 74 10
17AC HAE
1781 17B2
FE CO 83 C7 08 4A 75 EO
17B'" 3C 00 17B6 74 11
1768 17BB 17BF
17C1 17C3 17C5 17C7
E8 DCFE R C4 3E 007C R 8C CO DB C7 74 04 BO 80 EB 03
17C9 17C9 83 C4 08
17CC E9 219E R 17CF
17CF 17CF E9 1701 R
1702
1702 1706 1709 170B 170E 17EO 17E3
17E5 17E8 17E8 17EB 17ED 17FO 17F2 17F4 17F7 17f9
17FB
8A 26 0449 R 80 FC 07 74 F4 80 FC 03 76 EF 80 FC 06 77 03 E9 1745 R
80 FC OF 72 52 E8 14F7 R 72 40 EB OA 80 FC 00 73 46 BO 00 E9 219E R
17FE
17FE 1801 1603 1806
1808 180C
SA ACOO 8E C2 E8 16BA R 8B fO 88 1E 0485 R 2B E3
180E 8B EC
1810 1811
1813 1815 1817 1819 181B
1810 181F 1822 1825 1828
1626 1828 1820 1630 1831 1835 1836 1638 1839 183C 183f
53 24 01 SA C8 BO 05 02 EO B4 07 B6 03 B2 CE E8 0015 R B8 0518 E8 0015 R
26: 8A 04 f6 DO 68 46 00 45 03 36 044A R
'B 75 FO 5B B8 0510 EB 32 90
183F
183F 1842 1844
1847 1649 1840
BA AOOO 8E C2 E8 16BA R
8B fO 8B 1E 0485 R 2B E3
184f 8B EC
1651
1653 1855 1858 185B 185C 185C 165F 1861 1864
1865 1869 186A
B6 03 B2 CE B8 0508 E8 0015 R 53
26: 8A 04 f6 DO 86 46 00 4, 03 36 044A R .B 75 FO
4285 4286 4287
4288 4289 4290 4291
4292 4293 4294 4295
4296
"'297 4298
"'299 "'300 4301
4302 4303 4304 4305 4306 4307 4308 4309 4310 4311 4312
4313 4314 4315
4316 4317 4318 4319
4320 4321 4322 4323 4324
4325 4326 4327 4328 4329 4330 4331 4332 4333
4334 4335 4336 4337 4338
4339 4340 4341 4342
4343 4344 4345 4346 4347
4348 4349 4350 4351 4352 4353 4354 4355 4356 4357 4358 4359 4360 4361
4362 4363 4364 4365 4366
4367 4368 4369 4370 4371 4372 4373 4374 4375 4376
4377 4378 4319 4380
4381 4382 4383 4384 4385
4366 4387 4388 4389 4390 4391 4392 4393 4394
4395 4396 4397 4396 4399 4400 4401 4402 4403 4404 4405 4406 4407 4408
4409 4410
C
MOV
CX,8
C
REPE
CMPSB
C
POP
01
C
POP
51
C
JZ
S18P
C
C
INC
AL
C
ADD
01,8
C C
DEC JNZ
sOXnp
C
NUMBER OF BYTES TO MATCH COMPARE THE 8 BYTES RECOVER THE PO INTERS
IF ZERO FLAG SET, THEN HATCH OCCURRED NO MATCH, MOVE TO NEXT NEXT CODE PO I NT LOOP CONTROL 00 ALL OF THEM
C ;----- CHAR NOT HATCHED, MIGHT BE I N USER SUPPL I ED SECOND HALF
C
C
CMP
AL,O
AL <> 0 IF ONLY 1ST
C
c
JE
Slap
HALF SCANNED IF '" 0, THEN ALL HAS
C
BEEN SCANNED
C
ASSUME OS:ABSO
C
CALL
DDS
C
LES
01, EXT_PTR
GET POINTER
C
MOV
AX,ES
SEE I F THE PNTR EXISTS
C
OR
AX,OI
IF ALL 0, DOESN'T EXIST
C
JZ
S18P
NO SENSE LOOK I NG
C
MOV
AL,128
ORIGIN FOR SECOND HALF
C
JMP
S16P
GO BACK AND TRY FOR IT
C
C j ---- CHARACTER I S FOUND ( AU=O I F NOT FOUND I C
C S18P:
C
ADD
SP,8
READJUST THE STACK,
C
; THROW AWAY SAVE
C
JMP
V RET
; ALL DONE
C GRAPH ICS_READ ENOP
C
C
C ;ft ____ READ CHARACTER/ATTRIBUTE AT CURRENT CURSOR POSITION
C
C AH8S:
C
JMP
READ_AC_CURRENT
C
C AHa: C C
C
ASSUME OS:ABSO
MOV
AH,CRT_MODE
CMP
AH,07H
; GET THE CURRENT MODE
C
JE
AH8S
C
CMP
AH,03H
C
JBE
AH8S
C
CMP
AH,06H
C C
JA JMP
~R!PH I CS_REAO
C l_l :
C
CMP
AH,OfH
C
JB
GRX_R02
C
CALL
MEM_OET
C
JC
GRX_R02
C
JMP
SHORT GRX_R01
C
CMP
AH,OOH
C
JAE
GRX_RD2
C
MOV
AL,O
C
JMP
V_RET
C
C GRX_RDl PROC
NEAR
C
ASSUME DS;ABSO
RANGE TEST FOUR MAP READ
C
SRLDAD [S,OADOOH
C_
MOV
DX,DAOOOH
C_
MOV
ES,DX
C
CALL
GR CUR
C
MOV
SI~AX
C
MOV
BX, POI NTS
REGEN SEGEHNT
BYTE OFFSET INTO REGEN SAVE IN SI BYTES PER CHARACTER
C
SUB
SP,BX
ALLOCATE SPACE TO SAVE
C
THE READ CODE POINT
C
HOV
BP, SP
POINTER TO SAVE AREA
C
C ;--~-- GET VALUES fROM REGEN BUffER AND CONVERT TO CODE POINT
C
C
PUSH ox
SAVE BYTES PER CHARACTER
C
AND
AL,1
; ODD OR EVEN BYTE
C
MOV
CL,AL
; USE FOR SHIFT
C
MOV
AL,5
COLOR COMP VALUE (CO-C2)
C
SHL
AL,CL
tCl-C3) I F ~OD BYTE
C
MOV
AH, G_COLOR
; COLOR COMPARE REG I STER
C
MOV
DH,3
C
MOV
C
CALL
C
MOV
C
CALL
C S12_':
C
MOV
C
NOT
C
MOV
C
INC
C
ADO
C
DEC
C
JNZ
C
POP
C
MOV
C
JMP
C GRX_R01 ENOP
C
C GRX_RD2 PROC
OL,GRAPH_AODR OUT_OX AX,516H OUT_OX
AL,ES:(SI] AL SS:(BPJ,AL BP SI,CRT_COLS BX 512_1 BX AX,510H GRX_RECG
NEAR
SET GRAPHICS CHIP ; READ MODE ; SET GRAPHICS CHIP
GET FIRST BYTE
SAVE I N STORAGE AREA NEXT LOCATION POtNTER INTO REGEN LOOP CONTROL DO I T SOME MORE RECOVER BYTES PER CHAR UNDO READ MODE CHAR REGONT I ON ROUT I NE
C
ASSUME DS:ABSO
C
SRLOAD ES,OAOOOH
REGEN SEGMENT
C
MOV
OX,OAOOOH
C
MOV
ES,OX
C
CALL
GR_CUR
BYTE OfFSET I NTO REGEN
C
MOV
51 ,AX
SAVE IN SI
C
MOV
ex, POINTS
BYTES PER CHARACTER
C
SUB
SP,BX
ALLOCATE SPACE TO SAVE
C
THE READ CODE PO I NT
C
MOV
BP, SP
POINTER TO SAVE AREA
C
C j----- GET VALUES FROM REGEN 8UFFER AND CONVERT TO CODE POINT
C C
C C C
C C S12:
MOV MOV HOV CALL PUSH
DH,3 OL, GRAPH_AD DR AX,508H OUT_OX BX
GRAPHICS CHIP COLOR COMPARE
SET THE REG! STER SAVE BYTES PER CHARACTER
C
MOV
AL, ES: (51]
C
NOT
AL
C
MOV
SS:IBP1,AL
C
INC
B'
C
ADD
SI,CRT_COLS
C
DEC
BX
C
JHZ
S12
GET COLOR COMPARED BYTE ADJUST SAVE I N STORAGE AREA NEXT LOCAT ION POINTER INTO REGEN LOOP CONTROL DO IT SOME MORE
~
r"'.,
~
138 mM Enhanced Graphics Adapter
August 2, 1984
186C 5B 1860 B8 0500 1870
1670
1"870 E8 0015 R
1873 C4 3E OlOC R 1877 2B E8
1879 187B
187C 167E 167F
1880 1883
1883 1884 1685 1887
1889 188A 188B
8B F5 FC BO 00 16 1F BA 0100
56 57 8B CB F3/ A6 5f 5E 74 07
1880 188F 1891 1892 1694 1894 1896
FE CO 03 FB 4A 75 EF
03 E3 E9 219E R
1899
1899 E6 OCFE R l89C 8A 26 0449 R
16AO 18A3 18A5
18AB 18AA
18AD 1SAD 16BO 18B2
1683 18B4 18B1 18B9 16BA 1688
168F
80 Fe 04 72 08 60 Fe 07 14 03 EB 74 90
E6 16EB R SA E3 50 51 E8 1651 R 6B FB 59 58 68 16 0463 R 83 C2 06
18C2 18C2
18C7 18C9 18C9 18CA 18ce 18CE
l8CF 18CF 1800 1802 1804 1804 1806 1807 1808 18DA
F6 06 0487 R 04 14 08
EC AS 01 15 FB FA
EC A8 01 74 FB
8B C3 AB FB E2 E8 E9 219E R
1800
1800 E8 OCH R 18EO 8A 26 0449 R
18E4 18E1 18E9 18EC
60 FC 04 72 08 80 Fe 07 14 03
18EE EB 30 90 18fl
18f1 E8 16E8 R
4411
4412 4413 4414 4415 4416 4417 4418 4419 4420 41421
4422 4423 4424 4425 4426 4427
4426 4429 4430 4431 4432 4433
4434 4435 4436 4431 4436 4439 4440 4441 4442 4443 4444 4445 4446
4441 4448 4449
4450 4451 4452
4453 4454 4455 4456 4457 4458 4459 4460 4461 4462
4463 4464
4465 4466 4467 4466 4469 4470 4471
4472 4473
4474 4475 4476 4417 4478 4479 4480 4481 4482 4483 4464
4485 4486 4481 4466 4469 4490 4491 4492
4493 4494 4495
4496 4491 4498 4499
4500 4501 4502 4503 4504 4505 4506 4507
4506 4509 4510 4511 4512 4513 4514 4515 4516 4517 4518 4519 4520 4521 4522 4523 4524 4525 4526 4527
4528 4529 4530 4531 4532 4533 4534
4535 4536
C
POP
BX
C
MOV
AX,500H
RECOVER BYTES PER CHAR UNDO READ MOOE
C CRX_R02 ENOP
C
C
e
e ;----- SAVE AREA HAS CHARACTER IN tT, MATCH IT
e
e
CAll
OUT_OX
e
LES
OI,GRX_SET
e
SUB
BP, BX
C
C e
MOV
SI, BP
CLD
C
MOV
Al,D
C
PUSH
55
C
e
PDP MOV
05
ox, 2560
e
e
PUSH
51
e
PUSH
01
e
MOV
CX,8X
e
REPE
CMPS8
e
POP
01
SET READ MODE BACK CET fONT DEFINITIONS ADJUST POINTER TO
BEGINNING OF SAVE AREA
ENSURE 0 I RECT I ON CODE PO I NT BE I NG MATCHED ADDRESS I NG TO STACK
FOR THE STRING COMPARE NUMBER TO TEST ACA r"1ST
SAVE SAVE AREA POINTER SAVE CODE POINTER NUMBER Of BYTES TO MATCH COMPARE THE 8 BYTES RECOVER THE PO INTERS
C
POP
51
C
e
JZ
S18_5
e
INC
AL
e
ADD
DI,BX
C
DEC
OX
e e
J"
S17_5
If ZFl SET, THEN MATCH
OCCURRED NO MATCH, ON TO NEXT
NEXT CODE PO I NT lOOP CO~TROl
00 All Of THEM Al=CHAR, 0 I f NOT FOUND
C
ADD
READJUST THE STACI(
e
JMP
j----- e
e
WRITE CHARACTER/ATTRIBUTE AT CURRENT CURSOR POSITION
C
C
C
e C
WRITE_~T~U=~5~iNE WRITES THE ATTRIBUTE
AND CHARACTER AT THE CURRENT CURSOR
C
POSITION
e
I ~PUT,
e
(AH) '" CURRENT CRT MOOE
e
(BH) '" DISPLAY PAGE
e
(CX) '" COUNT OF CHARACTERS TO WRITE
e
(All'" CHAR TO WRITE
c
(Bl) '" ATTRIBUTE Of CHAR TO WRITE
e
(DSI = DATA SECMENT
C
(E5) '" REGEN SEGMENT
e
OUTPUT
e C e
-------N-O--NE-------------------------------------
AH9:
e
ASSUME OS: ABSO
e
CAll
DDS
e
MOV
AH, CRT_MODE
e
e e
eMP Je
P.AH,4
IS THIS GRAPHICS
e C
eMP JE
P.AH,7
IS THIS BW CARD
C
JMP
GRAPH I CS_WR ITE
C P6: C
CALL
MK_ES
j WR ITE.AC_CONTI NUE
C
HOV
AH,Bl
GET ATTRIBUTE TO AH
C
PUSH
AX
e c
PUSH CAll
ex
F I NO_PoS I T I ON
c
HOV
DI,ex
e
POP
CX
e
POP
BX
e
MOV
OX, AODR_664 5
SAVE ON STACI( SAVE WR ITE COUNT
ADDRESS TO 01 REGISTER WRITE COUNT CHARACTER I ~ BX REG GET BASE ADDRESS
C
e
ADD
DX,.
POI NT AT STATUS PORT
C ;----- WAIT FOR HORIZONTAL RETRACE
C
C P1:
e
TEST
INFO,4
C
JZ
P9A
C P8:
e e e e
IN TEST
J"
eLi
Al,oX Al,l
PB
GET STATUS IS IT lOW WAIT UNTil IT IS NO MORE INTERRUPTS
C P9:
C
IN
AL,DX
e C
P, TEST
JZ
Al,1
GET STATUS IS IT HIGH WAIT UNTIL IT IS
C P9A:
C
HOV
AX,BX
RECOVER THE CHAR/ATTR
C
STOSW
PUT THE CHAR/ATTR
c
STI
; INTERRUPTS BACI( ON
e
lOOP
AS MANY TIMES
e
JMP
e
e ;----- WRITE CHARACTER ONLY AT CURRENT CURSOR POSITION
e
C
C ; WR I TE_C_CURRENT
C
THIS ROUTINE WRITES THE CHARACTER AT
C
THE CURRENT CURSOR POSITION, ATTRIBUTE
C
UNCHANGED
C
INPUT
C
(AH) = CURRENT CRT MODE
e
(BH) = DISPLAY PAGE
e
(CX) = COUNT OF CHARACTERS TO WRITE
e
(Al) = CHAR TO WRITE
c
(OS) '" DATA SEGMENT
e
(ES) '" REGEN SEGMENT
C
OUTPUT
C
NONE
C i~~~--------------------------------------------C
C
ASSUME DS:ABSO
C
e
CALL HOV
DDS AH,CRT_MODE
e
e
eMP
AH,4
e
Je
PlO
e
eMP
AH,1
e
JE
PlD
IS THIS GRAPHICS IS THIS BW CARD
C
C
JHP
GRAPHICS_WRITE
C P10:
C
CALL MleES
August 2, 1984
IBM Enhanced Graphics Adapter 139
18F4
18f5 18f6 18F9 l8FB lsre
50
51 E8 1651 R 8B fB 59 5B
18-fD 1901 1904 1904 1909 1908 190B 190C
190E 1910
1911 1911 1912 1914
1916 1916 1918 1919 191A 191B
1910
8-B 16 0463 R 83 C2 06
f6 06 0487 R 04 74 OB
EC A8 01 75 fB fA
EC A8 01 74 fB
SA C3 AA FB 47 E2 E7 E9 219E R
1920 1920 1923
1925 1928 1928 1928 1920
8-0 rc 07 72 03 E9 1907 R
E8- 16E8 R B4 00 50
192E E8 16A4 R 1931 8B f8
1933 58 1934 3C 80 1936 73 06
1938 C5 36 010C R 193C EB 06
193E 193E 2C 80 1940 C5 36 007C R
1944 1944 1946 1948 194A 194C 1940
1950 1955 1956
01 EO 01 EO 01 EO 03 fO 1E E8 ocrE R 80 3E 0449 R 06
1r
72 2C
1956 1958 1959 195A 195C 195C 1950 1960 1962 1963 1964 1964 1969
196C 196E 1970
57
56 B6 04
AC f6 C3 80 75 16
AA AC
26: 8885 83 C7 4f FE CE 75 EC
5E
1FfF
4537 4538
4539 4540 4541
4542 4543 4544
4545 4546
"5"7 45484549 4550 4551 4552 4553
4554 4555
4556 4557 4558 4559 4560 4561 4562 4563 4564 4565
4566 4567 4568 4569 4570 4571
4572 4573 4574 4575 4576 4577 4578
4579 4580 458-1 4582 4583 458-4 4585
4586 4587
458-8458-9 4590
4591 4592 4593 4594 4595 4596 4597 45984599
4600 4601 4602 4603 4604
4605 4606 4607 46084609
4610 4611 4612 4613 4614 4615
4616 4617 4618 4619 4620 4621
4622 4623 4624 4625 4626 4627 4628
4629 4630 4631
4632 4633 4634 4635 4636 4637 46384639 4640 4641 4642 4643 4644 4645 4646 4647 46484649 4650 4651 4652 4653 4654 4655 4656 4657 4658 4659 4660 4661 4662
PUSH PUSH CALL
MOV POP POP
AX ex fiND_POSITION
DI,BX
cx
BX
;----- WAIT FOR HORIZONTAL RETRACE
P1 1: P12:
P13: P13A:
MOV AOO
TEST JZ
IN TEST JNZ CLI
IN TEST JZ
MOV STOSB ST' INC LOOP JMP
OX, AODR 6845 DX,6 -
INfO,4 P13A
AL,DX AL,l P12
AL,OX AL,l P13
AL,BL
SAVE ON STACK SAVE WRI TE COUNT
ADDRESS TO DI WRITE COUNT BL HAS CHAR TO WR I T E
GET BASE ADDRESS POINT AT STATUS PORT
GET STATUS IS IT LOW WAIT UNTIL IT IS NO MORE INTERRUPTS
GET STATUS I SIT HIGH WAIT UNTIL IT IS
RECOVER CHAR PUT THE CHAR/ATlR I NTERRUPTS BACK ON BUMP POI NTER PAST AlTR
AS REQUESTED
GRAPHICS WRITE THIS ROUTINE WRITES THE ASCII CHARACTER TO THE CURRENT POSITION ON THE SCRrEN.
ENTRY AL = CHARACTER TO WR I TE BL = COLOR ATTRIBUTE TO BE USED rOR fOREGROUND COLOR If BIT 7 IS SET, THE CHAR IS XOR'D INTO THE REGEN
BUffER (0 '5 USED fOR THE BACKGROUND COLOR I
= CX = NUMBER Of CHARS TO WR I TE
OS DATA SEGMENT ES = REGEN SEGMENT EXIT NOTH I NG I S RETURNED
GRAPHICS READ TH I S ROUT I NE READS THE ASC 1 I CHARACTER AT THE CURRENT
CURSOR POSITION ON THE SCREEN BY MATCHING THE DOTS ON THE SCREEN TO THE CHARACTER GENERATOR CODE POINTS ENTRY NONE (0 IS ASSUMED AS THE BAGKGROUND COLOR) EX1T AL = CHARACTER READ AT THAT POSITION (0 RETURNED IF
NONE FOUND)
fOR COMPATIBILITY ROUTINES, THE IMAGES USED TO FORM CHARS ARE:
CONTAINED IN ROM FOR THE 1ST 128 CHARS. TO ACCESS CHARS
IN THE SECONO HALf, THE USER MUST INITIALIZE THE VECTOR AT
INTERRUPT lFH (LOCATION 0007CH) TO POINT TO THE USER
SUPPLIED TABLE Of GRAPHIC IMAGES (8X8 BOXES).
;
-------------- --- fAILURE TO DO SO WILL
~-----
-C-A-U-S-E---IN---S-T-R-A-N-G-E--R-E-S-U LT-S-----------------
ASSUME CS:CODE, OS: ABSO, ES: NOTH I NG
GRAPHICS WRITE PROC
NEAR
CMP
AH,7
JB
51 A
JMP
GRX.WRT
CALL
MOV PUSH
MK ES AH-:-O AX
o TO HIGH Of COOE POINT
SAVE COOE PO I NT VALUE
;----- DETERMINE POSITION IN REGEN BUFFER TO PUT CODE POINTS
CALL MOV
S26 DI,AX
LOC I N REGEN BUf fER REGEN POINTER IN 01
;----- OETERMINE REGION TO GET CODE POINTS fROM
POP
CMP JAE
AX AL.80H S1
RECOVER CODE POI NT IS IT IN SECOND HALf YES
IMAGE IS IN fiRST HALf, CONTAINED IN ROM
LOS JMP
; ----- I MAGE IS I N SECOND HALF, I N USER RAM
51:
SUB
AL.80H
LOS
SI, EXT_PTR
oEXTEND CHAR OR I GIN fOR SECOND HALF
;----- DETERMINE GRAPHICS MODE IN OPERATION
S2:
SAL
AX,1
SAL
AX,1
SAL
AX,1
ADD
51 ,AX
PUSH
OS
CALL
ODS
CMP
CRT MODE,6
POP
OS
JC
S7
OETERM I NE.MODE MULTI PLY CODE PO I NT
VALUE BY 8 51 HAS OffSET or
DESIRES CODES
TEST fOR MEDIUM RES MODE
;----- HIGH RESOLUTION MODE
S3:
PUSH
01
PUSH
51
MOV
DH,4
S4:
LODSB
TEST
BL,80H
JNZ
S6
STOSB
LODSB
S5:
MOV
ES: [01 +2000H-1 I, AL
ADO
01,79
OEC
OH
JNZ POP
SS4,
~!~~-~~~~N PO INTER
SAVE CODE POI NTER NUMBER OF TIMES THROUGH
LOOP GET BYTE fROM CODE PO I NT SHOULD WE USE THE
fUNCT ION TO PUT CHAR IN STORE IN REGEN BurrER
STORE IN SECONO HALF MOVE TO NEXT ROW I N REGEN DONE WITH LOOP
140 IBM Enhanced Graphics Adapter
August 2, 1984
1971 1972 1973 1975 1978 1978 197B
197C 1970 1982
5f 47 E2 E3 E9 219E R
26: 32 05 AA At; 26: 3285 lFFF EB EO
~
1984 1964 1986 1988 1966 1986 198C 1980
198F 196F 1990 1993
8A 03 01 E7 E. 1660 R
57 56 B6 04
AC E. 1682 R 23 C3
1995 1996 199A 1990 19A1 19A1 19A4 19A8 19A9 19AC 19AE 19B1 1983 1986 19Bo 1980 19C2 19C7 19CA 19CC 19CE 19CF 1900
1901 1902 1904 1907
F6 C2 80 74 07 26: 32 25 26: 32 45 01
26: 88 25 26: 88 45 01 AC E. 1682 R 23 c3 f6 C2 80 74 OA 26: 32 A5 2000 26: 32 65 2001
26: 88 AS 2000 26: 88 85 2001 83 C7 50 FE C[ 75 C1 5E 5f 47
"'E2 87
E9 219E R
~ ~
1907
1901 19DA 19DC 190f 19E1
19E4 19E6 19E8 19EA 19EA 19EC 19fO 19F1 19F4 19F6
80 FC Of 72 OE £8 14F7 R 72 09 80 £3 85 8A E3 00 E4 OA DC
2A £4 F7 26 0485 R 50 E8 168A R 88 f8 88 2E 0485 R
19fA 19FD 19FF lA03 lA04 lA06 lA08 lA08 lA08 lAOD lAOF TA12 111.15 lA16 lA18 lA19 lA18 lA1E lA21
lA>' 1A24
lA>6 lA27 1A2A lA2A 1A28
lA2f lA30 1Al2 lA33 lA34 1A35 1A35 lA37 1A39 1A38
lA3E lA3f lA40 lA41 lA43 lA44
BA AOOO BE C2 C5 36 OlOC R 5. 0' FO B6 03
F6 C3 80 74 DB 82 CE B8 0318 E8 0015 R ED lE 90
57 B2 C4 B8 020f f8 oD15 R 28 CO 51 86 CD 1E £8 OCFE R
AA 03 3E 044A R
"'E2 F.
1F 59 SF
82 C4 B4 02 8A C3 E8 0015 R 57 53 51 8B DO 1E E8 OCfE R
lA47 88 OE 044A R 1A48 1F
lAIlC
4663 4664
4665 4666
4667 4668 4669 4670 4671 4672
4673 4674 4675 4676 4677 4678 4679
4680 4681 4682 4683
4684 4685 4686 4687 4688 4689 4690 4691 4692 4693 4694 4695 4696 4697 4698 4699 4700 4701 4702
4703 4704
4705 4706 4707 4708 4709 4710 4711 4712
4713 4714 4715 4716 4717 4718 4719 4720 4721 4722 4123 4724 4725
4726 4727 4728 4729 4730 4731 4732 4733 4734 4735 4736 4737 4738 4739 4740 4741 4742 4743 4744
4745 4746 4747 4748
4749 4750 4751 4752 4753 4754 4755 4756 4757 4758
4759 4760 4761 4762 4763 4764 4765 4766 4767 4768 4769 4710 4771 4772 4773 ~774 ~775 4776 4177
4778 4779 4780 4781
4782 4783 4784 4785 ~786
11787 4788
0
POP
01
0
INO
01
C
LOOP
S'
C
JMP
V_RET
RECOVER REGEN POINTER PO I NT TO NEXT CHAR POS
HORE CHARS TO WR ITE
C 56: C C
0 0 C
c
XOR STOSB
LODSB XOR JMP
AL,ES:{OIJ
AL, ES: [01 +2000H~1 ] 55
XOR WI TH CURRENT STORE THE CODE POINT AGAIN fOR ODD FI ELO
BACK TO MAINSTREAM
C ; ---~~ MED I UM RESOLUT ION WR I TE
C C S7 :
C C
C C 58:
c C
C
c S9:
C
C C
C
MOV SAL CALL
PUSH PUSH MOV
LODSB CALL AND
DL,BL 01,1 51'
01 51 DH,4
521 AX,ex
MED_RES_WR I TE SAVE HIGH COLOR 81T OFFSET"2, 2 BYTES/CHAR EXPAND BL TO fULL WORD
OF COLOR SAVE REGEN PO INTER SAVE THE CODE PO INTER NUM6ER OF LOOPS
GET CODE POINT DOUBLE UP ALL THE e I TS CONVERT THEM TO FORE~
GROUND COLOR (0 BACK)
C
TEST
DL,80H
C
JZ
510
C
XOR
AH,ES:[ol}
IS THIS XOR fUNCTION NO, STORE IT IN AS IT IS DO FUNCTION WITH HALf
C
XOR
AL,ES:[DI+1]
AND WI TH OTHER HALF
C 510;
C
MOV
ES: (OII,AH
C
MOV
ES: (ol+lJ,AL
0
Loosa
STORE FIRST BYTE STORE SECOND BYTE GET CODE PO I NT
C
CALL
521
C
AND
AX,BX
CONVERT TO COLOR
0
TEST
DL,80H
IS THIS XOR fUNCTION
0
JZ
511
NO, JUST STORE THE VALUE
C
XOR
AH, ES: [01 +2000H]
FUNCT I ON WI TH FIRST HALf
0
XOR
AL, ES; I 0 I +2001 HJ
AND WITH SECOND HALF
C S11 :
0
NOV
ES:(01+2000H],AH
0
MOV
ES: [01+2000H+1 ],AL
STORE IN SECOND PORTION
C
ADO
DI,80
POINT TO NEXT LOCATION
C
DEO
DH
0
JNZ
S'
0
POP
51
KEEP GOING RECOVER CODE PONTER
C
POP
01
RECOVER REGEN POINTER
0
INO
01
PO I NT TO NEXT CHAR
e
INC
01
e
LOOP
58
; MORE TO WR I TE
e
JMP
V_RET
C GRAPHICS_WRITE [NOP
- -- - - -- e
0 ; ~~------ ~~~---~--
--~-~-~---~----- -----~~~~--- -----~----
0
ENTRY
C
AL '" CHAR TO WRITE
0
8H '" DISPLAY PAGE
e 0
= BL '" AlTR 18UTE/COLOR
CX COUNT Of CHARS TO WR I TE
C
-~~~------------------------------~~~~--~------~~-------------~-
C GR)CWRT PROC
NEAR
C
ASSUME DS:ABSO, ES:NOTHING
0
eMP
AH,OfH
640X350 GRAPH I CS
0
J8
NO_ADJl
C
CALL
HEM DET
BASE CARD
0
c
JO AND
NO_ADJ1 BL,100001018
85H, XOR C2 CO MASK
C
MOV
AH,BL
C
SHL
AH,l
EXPAND CO TO Cl, C2 TO C3
0
OR
BL,AH
BUILD ?(80H) + (O,3,C, F)
C NO_ADJl :
c
SUB
AH,AH
ZERO
0
MUL
POI NTS
OFFSET fONT TABLE BASE
C
PUSH
AX
FONT TA8LE DISPLACEMENT
0
CALL
GR_CUR
0
MOV
OI,AX
GET OFFSET INTO REGErt !NTO DESTINATION
e
MOV
BP, POINTS
BYTES PER CHAR
C
c. c.
SRLOAD ES,OAOOOH
MOV
DX,DAOOOH
MOV
ES,DX
REGEN SEGEMNT
C
LOS
SI,GRX_SET
; ADDRESS I NG TO FONTS
0
POP
AX
RECOVER OFFSET
0
ADD
SI,AX
CHARACTER IN TABLE
C
MOV
DH,3
0 S20A:
0
TEST
Bl.08DH
TEST FOR XOR
C
JZ
NO_XOR
NO XOR
e
MOV
DL, GRAPH_ADDR
0
MOV
AX,0316H
GRAPH I CS CH I P XOR
C e
CALL JMP
~~~_DX
SET REG J STER SKI P BLANK
C NO_XOR:
BLANK BOX FOR GHAR
C
PUSH
01
SAVE REGEN PO INTER
0
MOV
DL,SEQ_AoDR
0
MOV
AX,020FH
ENA8LE ALL MAPS
0
CALL
OUT_OX
e
SUB
AX,AX
STORE ZERO
0
PUSH
OX
SAVE CHARACTER COUNT
C
MOV
CX,BP
GET BYTE COUNT
C
PUSH
OS
0
CALL
DDS
C SUA:
C
STOSB
ZERO REGEN BYTE
0
ADD
DI,CRT_COLS
NEXT BYTE Of BOX
e
DEO
01
ADJUST
C
LOOP
S13A
NEXT BYTE
C
POP
OS
C
POP
CX
RECOVER CHARACTER COUNT
C
POP
01
RECOVER REGEN POI NTER
C F_2:
0
MOV
DL, SEQ_ADDR
C
MOV
AH,02H
SET MAP MASK
0
MOV
AL,8L
fOR COLOR
0
CALL
OUT_OX
SET THE CHIP
0
PUSH
01
SAVE OFFSET ! N REGEN
C
PUSH
OX
C
PUSH
OX
SAVE COLOR VALUE SAVE CHACTER COUNT
C
MOV
BX,BP
LOOP CONTROL, 8YTES/CHAR
e
PUSH
OS
SAVE FONT SEGMENT
0
CALL
DDS
0
ASSUME oS;ABSO
SET LOW RAM SEGMENT
0
MOV
CX,CRT_eOLS
C
POP
OS
GET COLUMN COUNT RESTORE FONT SEGMENT
e
ASSUME oS:NOTHING
C SlK:
; WRITE OUT THE CHARACTER
August 2, 1984
IBM Enhanced Graphics Adapter 141
lA4C lA4E 1A51 lA54
lA55 lA57 lA58
8A 04 26: 8A 25
26: 88 05
46 03 F9 4B 75 F2
lA5A lA5B lA5c lA5E
1A5F 1A60
59 5B
28 F5 Sf 47
E2 A6
1M2
1A64 1A67
lA6A 1A6C lA6F 1AI2 lA75
B2 CE
88 0300
E8 0015 R 82 C4 B8 020F E8 0015 R E9 219E R
lA75
lA75 lA7A lA7C lA81 lA83
lAB5 lA85 lA88 lA88 1 ABA
lABC 1A90
lA93 lA96
lA98 lA9A lA9C lA90
lA9D
lMO 1M2
80 3E 0463 R B4 74 09 F6 06 0487 R 02 74 05 CO 42
E9 219E R
28 CO 8B E8 C4 3E 04A8 R 83 C7 04 26; C4 3D 8C CO DB C7 74 01 45
E8 lOCO R OA rr 75 65
lM4 lM6 lAA9 1MB lME
lABO lAB3 1A85 lAB8 lABA lABC lABf lACl lAC4 lAC6 lAC8 lACB lACE
eA FB AD 0466 R 24 EO 80 E3 1 f OA C3
A2 0466 R 8A Of 80 E7 08
DO E7 8A (8
80 E5 Ef OA ED 80 E3 Of 8A fB
DO E3 80 E3 10 80 E7 07 OA Of
tAOO AO 0449 R lAD3 3C 03
lA05 76 DE
lA07 B4 00 1A09 8A C3 lADB E8 lD9F R
lADE OB EO lAEO 74 03 lAE2 26: 88 10
lAE5 lA£5 lAEA lAEC lA[f
lAfl lAfl 1Ar3
lAf5 lAf8 lAf8 lAfA 1AFC lBOO
lBOO lB02 lB05
1807
80 3E 0449 R 03 77 05 E8 OE9A R 72 07
B4 11 8A C3 E8 lD9F R
OB ED 74 04 26: aa 50 10
aA 00 80 E3 20 B1 05 02 EB
4789 4790 4791 4792 4793 4794 4795 4796 4797 4798
4799 4800
4801 4802 4803 4804
4805 4806 4807 4808 4809 4810 4811 4812 4813 4814 4815 4816 4817 4818 4819 48'20
4821 4822 4823 4824 4825 4826 4827 4828
4829 4830 4831 4832
4833 4834 4835 4836 4837
4838 4839 4840 11841 48112 4843 4844 11845 4846 4847 4848 4849 4850 4851
4852 4853 4854 4855
4856 4857 4858 4859 4860 4861 4862 4863 4864 4865
4866 4867 4868 4869 4870 4871 4872 4873 4874 4875 4876 4877
4878 4879 4880 4881
4882 4883 4884 4885 4886 4887 4888
4889 4890 4891 4a92 4893 4894 4895 4896 4897 4898 4899 4900
4901 4902 4903 11904 4905 4906 4907 4908 4909 4910 4911 4912 4913 4914
MOV MOV
:~:~~~I~:I
MOV
ES:[DIJ.Al
INC
51
AOO
ol,CX
OEC
BX
JNZ
SlK
CODE POINT LATCH DATA WR I TE ONE BYTE OF fONT NEXT FONT POI NT ONE ROW BELOW LAST PO I NT BYTES PER CHAR COUNTER DO NEXT ROW OF CHARACTER
POP POP SUB POP INC LOOP
CX
BX SI, BP 01 01 S20A
; CHARACTER COUNT ; COLOR VALUE ; ADJUST PTR TO FONT TABLE ; REGEN POINTER ; NEXT CHAR POSN I N REGEN ; WRITE ANOTHER CHARACTER
MOV MOV CAll MOV MOV CALL
JMP GRX_WRT ENDP
Ol,GRAPH_ADOR
AX,0300H OUT OX OL, SEQ_AODR AX,020FH OUT OX
V_RET
NORMAL WRI TE, NO ROTATE SET THE CHI P
ENABLE ALL HAPS SET THE CHI P
~
SUSTTl
;----- SET COLOR PALETTE
AHB:
A&SUHE
CM' JE TEST
JZ INT
M21 _B:
JMP M21_A:
SUB
MOV LES AOO
LES
MOV
OR
JZ
INC NOT4AHB:
CALL
OR JNZ
DS:ABSO
BYTE PTR AODR_6845, OB4H M21 B INfO,2 M21_A 42H
V_RET
AX,AX
BP,AX 01, SAVE_PTR 01,4 OI,OWORO PTR AX, ES AX,DI NOT4AHB BP
ES; [01]
PAl_INIT SH, BH H2O
; CALL VALID ONLY fOR COLOR ; SEE IF I TS THE OLD COLOR CARD ; If NOT. HANDLE IT HERE
OLD CODE CALL
BACK TO CALLER
; ----- HANDLE BH '" 0 HERE
ALPHA MODES => Bl '" OVERSCAN COLOR
GRAPHIGS
=> Bl = OVERSCAN AND BACKGROUND COLOR
;----- MOVE INTENSITY BIT fROM 03 TO 04 FOR COMPATIBiliTY
MOV MOV AND ANO OR
MOV MOV AND SHL
MOV AND OR AND MOV SHL AND AND
OR
BH,Bl Al,CRT_PAlETTE Al,OEOH Bl, 01 fH Al,BL
CRT_PAlETTE,Al BL,BH BH,08H 8H, 1 CH,Al CH,OEfH CH,CH Bl,OfH BH, Bl Bl,l BL,010H BH,07H
Sl,BH
MOV CMP JBE
Al, CRT_MODE Al,3 M21
j----- GRAPHICS MODE DONE HERE (SET PALETTE 0 AND OVERSCAN)
HOV HOV CALL
AH,O AL,Bl
PAL_SET
OR JZ HOV
BP,BP M21
Es:IOlj,Bl
;----- ALPHA MODE DONE HERE (SET OVERSCAN REGISTER)
HZl :
CM' JA CAll
JC SET_OVRSC:
MOV
MOV
CAll SKI P_OVRSC:
OR
JZ
M21Y:
MOV
MOV AND
MOV
SHR
CRT_MODE, 3 SET_OVRSC BRST_OET SKI P_OVRSC
AH,Ol1H AL,Bl PAL_SET
BP, BP H21Y ES:(DIJ(160j,Bl
Bl,CH BL,020H Cl,5 BL,CL
j----- HANDLE BH '" 1 HERE
ALPHA HODES => NO EFFECT
GRAPHICS
=> lOW BIT Of BL =- 0
PALETTE 0 = BACKGROUND
PALETTE 1 '" GREEN
PALETTE 2 '" RED
PALETTE 3 '" BROWN
=> lOW 81 T OF 8l =- 1
PALETTE 0 '" BACKGROUND
PALETTE 1 = CYAN
PALETTE 2 '" MAGENTA
PALETTE -3 '" WH I TE
CHECK fOR AN ENHANCED MODE NO CHANCE SEE I f WE ARE ENHANCED THERE I S NO BORDER
OVERSCAN REG I STER
SET THE BORDER
142 IBM Enhanced Graphics Adapter
August 2, 1984
lB09
1809 80 3E 0449 R 03 lBOE 76 4A
lBl0 lB13 1815
lB18 181A 181C lB1C
lBlF
lB21 1B23 1B25 1827 lB29
AO 0466 R 24 OF 80 E3 01 74 02 OC 20
A2 0466 R 24 10 OC 02 OA 08 84 01 8A C3 E8 109F R
lB2C lB2E
lB30 1B34
OB ED 74 04
26: 66 50 01
lB34 lB36
lB38 lB3A
lB3C
fE C3 FE C3 B4 02 8A C3
E8 109F R
lB3F lB41
1B43 lB47
OB ED 74 04
26: 68 50 02
lB47 1B49 1B4B lB40
lB4F
FE C3
FE C3 B4 03 8A C3
E8 lD9F R
1B52 OB ED lB54 74 04 lB56 26: 88 5003
lB5A lB5A E8 10B7 R lB5D E9 219E R
lB60
1860 1864 1865 1867 1869
F7 26 044A R 51 01 E9 01 E9 01 E9
1868 1860 186F 1871 , 873
lB77
lB19
lB79 187B 1870
1870 187E 1880 1863 lB85 1 B87 lB88
03 Cl 8A OF 2A FF 88 C8 8B 1£ 044C R E3 04
03 C3 E2 FC
59 8B 08 80 E1 01 BO 80 02 E8 C3
lB88 lB66 53 lB69 50
1 B8A 186C 1880
1890
80 28 52 80 E2 fE
F6 E2
1B92 1893 lB96 1898 lB9B
lB9B
1 B9D lB9E
5A F6 C2 01 74 03 05 2000
8B Fa 58 88 01
4915
4916 4917 4918 4919
4920 4921 4922 4923 4924
4925 4926 4927 4928 4929 4930 4931 4932 4933 4934
4935
4936 4937
4938
4939 4940 4941 4942 4943 4944 4945 4946 4947 4948 4949 4950 4951 4952
4953 4954
4955 4956 4957 4958 4959 4960 4961 4962
4963
4964 4965 4966 4967 4968 4969 4970 4971
4972 4973
4974 4975 4976 4977
4978 4979 4980 4981 4982
4983 4984 4985 4986 4987 4988 4989 4990 4991 4992
4993 4994 4995 4996 4997 4998 4999 5000 5001
5002 5003 5004 5005 5006
5007
5008 5009 5010
5011 5012 5013
5014 5015 5016
5017
5018
5019
5020
5021 5022
5023 5024 5025 5026 5027
5028
5029
5030
5031 5032 5033 5034 5035 5036 5037 5038
5039
5040
M20: CMP
JBE
CRT_MODE,3 M80
M22:
MOV AND AND Jl OR
MOV AND OR OR MOV MOV CALL
AL, CRT_PALETTE AL,ODFH BL,l M22 AL,020H
CRT PALETTE,Al Al,OlOH AL,2 Bl,Al AH,l AL,8l PAL-SET
M22Y:
OR Jl MOV
BP,BP M22Y E5:[Dlllll,BL
INC INC MOV
MOV CAll
BL BL AH,2
AL,BL PAL_SET
M27Y:
OR JZ MOV
BP,BP M27Y [S:{DI Jl2],BL
INC tNC MOV MOV CALL
BL BL AH,3 AL,BL PAL_SET
OR JZ MOV
BP,BP
M80 ES:(DI][3),Bl
MBO:
CALL JMP
PAL_ON V.RET
C
INCLUDE
VDOT. INC
C
SUBTTL VDOT. I Ne
c
PAGE
C
c
ENTRY
c
OX '" ROW
c
ex '" COLUMN
C
BH '" PAGE
C
C
BX = OFfSET I NTO REGEN
C ;
AL '" BIT MASK fOR COLUMN BYTE
C b~T~SUP~~-------;~O~----N~;R--------------------C
* C
C ; ----- OffSET = PAGE OFFSET + ROW
BYTES/ROW + COlUMN/8
C
C
MUL
~~RD PTR CRT_cOlS
C
PUSH
C
SHR
eX,l
C
SHR
CX,l
C
SHR
CX,l
C
C
ADD
AX,CX
C
HOV
BL, BH
C
SUB
BH, BH
C
MOV
CX,BX
C C
MOV JCXZ
~~~~RT_LEN
C
* ROW BYTES/ROW
SAVE COLUMN VALUE DIVIDE BY EIGHT TO
DETERMINE THE BYH THAT THIS DOT IS IN
(8 BITS/BYTE) BYH OfFSET INTO PAGE GET PAGE INTO Bl ZERO COUNT VALUE LENGTH Of ONE PAGE PAGE ZERO
C
ADD
AX,BX
C
LOOP
DS_3
C
C
pop
ex
C
MOV
BX,AX
C
AND
CL,07H
C
MOV
AL,080H
C
SHR
AL,CL
C
RET
BUMP TO NEXT PAGE 00 fOR THE REST
RECOVER COLUMN VALUE REGEN OFFSET SH I FT COUNT FOR BIT MASK MASK BIT POSITION MASK BIT
C DOT_SUP_l
ENDP
C
C
C
THIS SUBROUTINE OETERMINES THE REGEN BYTE LOCATION
C
c
OF THE INDICATED ROW COLUMN VALUE IN CRAPHICS MODE. ENTRY··
e
OX '" ROW VALUE (0-199)
e
CX", COLUMN VALUE (0-639)
c
EXI T -
c
51 '" OFFSET INTO REGEN BUfFER FOR BYTE OF INTEREST
c
AH '" MASK TO STR I P OFF THE B ITS Of INTEREST
c
CL'" BITS TO SHifT TO RIGHT JUSTIFY THE MASK IN AH
c c c
DH '" # BITS IN RESULT
k3~-~-·-;~~~----N~;R-------------------------------------
c
PUSH
8X
SAVE BX DURING OPERATION
e
PUSH
AX
WI LL SAVE Al DURING OPERATION
e
c ;----- DETERMINE 1ST BYTE IN IDICATED ROW BY MULTIPLYING ROW VALUE BY 40 c ; --._- ( LOW BIT Of ROW DETERM I Nrs EVEN/ODD. 80 BYTES/ROW
c
e
MOV
AL,40
e e c
PUSH AND MUL
OX DL,OFEH DL
c
e
POP
OX
e
TEST
OL,l
e
JZ
R4
c
ADD
AX,2000H
SAVE ROW VALUE STRIP OFF ODD/EVEN BIT AX HAS ADDRESS Of 1ST BYTE
Of INDICATED ROW RECOVER IT TEST FOR EVEN/OOO JUMP I F EVEN ROW
OFfSET TO LOCATION OF ODD ROWS
C R4:
EVEN_ROW
C
HOV
SI,AX
MOVE PO I NTER TO S I
C
e e
POP HDV
AX DX,CX
RECOVER AL VALUE COLUMN VALUE TO OX
c ;----- DETERMINE GRAPHICS MODE CURRENTLY IN EFfECT
c C c
~ -S~T-~;-T~E-REG~ STE;;S-;'C~ORD~NG-TO-THE-MODE-- ---------- ------- -
e
CH '" MASK FOR LOW Of COLUMN ADDRESS ( 1/3 fOR HI CH/MEO RES)
August 2, 1984
mM Enhanced Graphics Adapter 143
lBAO lBA3 1 BA6 lBAB lBAO 1 BBO
BB 02CO 99 0302 60 3E 0449 R 06 12 06 BB 0180 69 0103
lBB3 lBB3 22 [A
lBB5 03 EA
lBB7 03 F2 1BB9 6.1. f1
lBBB 2A C9 lB80
18BO DO C8
l8BF 02 CO lBel FE CF lBC3 15 F8
lBC5 lBC7 1 BC9 lBCA 18C8
8.1. E3 02 EC 58 C3
1 BCB 80 3[ 0449 R 07 lBOO 17 2.1.
1802
1802 52
lBD3 1606 1608 1609 lBOA 180B 180E
18EO 18[2
1BE5 1BE6 lBE9 lB[B lBED lBEF lBFl 18Fl
18F4 lSF5 18F6
lBF8 lBFA
18fC
9A B800 8E C2 SA 50 50 [8 lB88 R 02 [8 22 C4 26: 8A OC 58 F6 C3 80 15 00 f6 04 22 ec 0.1. Cl
26: 88 04 58 E9 219E R
32 Cl [8 F5
lBFC 18FC
lCOl lC03 lC06 lC08 lCOA lCOC lCOE lCl0 lCl0 lCll lC13 lC16 le18 lC1A lC1C 1C1F
80 3E 0449 R OF 12 00 E8 14f1 R 12 08 24 85 8.1. EO DO E4 OA C4
50 88 C2 E8 1860 R 86 03 82 CE 84 08 E8 0015 R 52
lC20
1C23 1C25 lC26 1C27 lC29 lC2C 1C2E lC30 lC32
lC35 lC38 lC38 lC3A le3e lClE
8.1. AOOO SE C2 5.1. 58 6A E8 F6 C5 SO 74 0.1. 94 03 60 18 [8 0015 R EB 12 90
82 C4 94 02 BO fF E8 0015 R
5041 5042 5043 5044 5045 5046
5047 5048 5049
5050 5051 5052
5053 5054 5055 5056 5057 5056
5059 5060 5061 5062 5063 5064
5065 5066 5067 5068 5069 5070 5071 5072 5073
5074 5015 5016 5077 5078 5079 5080 5081 5082 5083
5064 5085 5066 5061 5068 5089 5090 5091 5092 5093 5094 5095 5096 5097 5098 5099 5100 5101 5102 5103
5104 5105 5106 5107 5108
5109 5110 5111 5112 5113 5114 5115 5116 5117 5118 5119 5120
5121 5122 5123 5124 5125 5126 5127 5128 5129
5130 5131 5132 5133
5134 5135 5136 5137 5138 5139 5140 5141 5142 5143 5144 5145 5146 5147 5148 5149 5150 5151 5152
5153 5154 5155 5156 5157 5158
5159 5160 5161 5162 5163 5164
5165 5166
: =. - - --: e
e e e
; CL '" # OF ADDRESS BITS IN COLUMN VALUE ( 3/2 FOR H/M)
; BL '" MASK TO SELECT 81TS FROM POINTED BYTE (80H/COH FOR H/M)
--~~. ~~~~~~-~~-~~~~~-~~~~ ~~.!~~~~~~-~~~~-~ ~ ~~. ~~~-~~~!---
e
e
MOV
ax,2COH
e e e e
MOV eMP
JC MOV
CX,302H CRT_MOOE,6
R' BX,180H
SET PARMS FOR MED RES HANDLE IF MEO ARES
e e
MOV
CX,703H
SET PARMS FOR HIGH RES
C ;----- DETERMINE BtT OFFSET IN BYTE FROM COLUMN MASK
e
C R5:
e c
AND
CH,DL
; ADDRESS OF PEL WITHIN BYTE TO CH
cc ;----- DETERMINE BYTE OffSET FOR THIS LOCATION IN COLUMN
e
SHR
OX,CL
; SH I FT BY CORRECT AMOUNT
C
ADD
SI,DX
C
MOV
OH, BH
e
INCREMENT THE POINTER
; GET THE # OF BITS I N RESULT TO OH
cC ;----- MULTIPLY BH (VALID BITS IN BYTE) BY CH (BIT OFfSET)
e
SUB
CL,CL
ZERO INTO STORAGE LOCATION
eC R6: e e e e
ROR
ADD DEC JNZ
AL,1
CL,CH BH R6
LEFT JUST I FY THE VALUE IN AL (FOR WRITE)
ADD I N THE 81 T OFFSET VALUE
LOOP CONTROL
ON EXIT, CL HAS SHIFT COUNT
C
TO RESTORE BITS
C
HOV
AH,BL
GET MASK TO AH
e
SHR
AH, CL
MOVE THE MASK TO CORRECT LOCA T t ON
e
POP
BX
RECOVER REG
---------- -.---------- ------------------ C
e c e e e
RET
R'
[NOP
RETURN WI TH EVERYTH I NG SET UP
; ------------
-------
-
---
READ DOT -- WRITE DOT
THESE ROUTINES WILL WRITE A DOT, OR READ THE DOT AT
e
THE INDICATED LOCATION
e
ENTRY -
C C
ex '" OX -::: ROW (0-199)
(THE ACTUAL VALUE DEPENDS ON THE MODE)
COLUMN ( 0-639) ( THE VALUES ARE NOT RANGE CHECKED 1
C
AL'" DOT VALUE TO WRITE (1,2 OR 4 81TS DEPENDING ON MODE.
C
REQ'O FOR WRITE DOT ONLY, RIGHT JUSTIFIED)
C
BIT 1 OF AL=l INDICATES XOR THE VALUE INTO THE LOCATION
C
OS = DATA SEGMENT
e
ES '" REGEN SEGMENT
e
e
EXIT
-.---------- ee
e
; ---- ----AL---:::
DOT
VALUE
R--E-A-D-,--R-IG-H-T---J-U-S-T--if-iE-D--,--RE-A--D-O--N-L-Y------ ---
C ; ----- WRlTE DOT
C
C AHC:
C
ASSUME OS: A8S0
C
eMP
CRT.MOOE,1
C
c
JA
WRlTE.DOT.2
e WRITE.DOT
e
ASSUME
e
PUSH
c
SRLOAD
e+
MOV
e+
MOV
e
POP
c
PUSH
c
PUSH
PROC
NEAR
OS: ABSO, ES: NOTH I NG
OX
[S,08800H
OX,OBSDOH
ES,DX
OX
AX
AX
SAVE DOT VALUE TWICE
e C
CALL SHR
R3 AL,CL
e e e c
AND MOV POP TEST
AL,AH
CL,ES: (SI J BX
BL,80H
e
JNZ
R2
e
NOT
AH
DETERMINE BYTE POSITION OF THE OOT SH I FT TO SET UP THE 81 TS FOR OUTPUT
STR I P Off THE OTHER BITS GET THE CURRENT BYTE RECOVER ><OR FLAG IS IT ON YES, XOR THE DOT SET THE MASK TO REMOVE THE
C
AND
CL,AH
INDICATED BITS
C
OR
AL,CL
OR IN THE NEW VALUE OF THOSE BITS
C Rl;
e
MOV
ES:[SI1,AL
FINISH DOT RESTORE THE BYTE I N MEMORY
C
POP
AX
c
JMP
V.RET
C R2:
e e
XOR JMP
e WRITE.OOT
e
e WRITE DOT 2
AL,CL R, ENOP
PROC
NEAR
XOR_DOT EXCLUS I VE OR THE DOTS
FINISH UP THE WRITING
C
- CMP
CRT.MOOE,OfH
c
JB
NO AOJ2
C
CALL
MEM.OET
8ASE CARD
C
Je
NO AOJ2
C
AND
AL-:-10000101B
85H, XOR C2 CO MASK
C
MOV
AH,AL
C
SHL
AH,l
EXPAND CO TO Cl, C2 TO C3
C
OR
e NO.ADJ2:
e
PUSH
e
MOV
e
CALL
e c
MOV MOV
e
MOV
AL,AH
AX AX,OX DOT SUP 1 OH,3 OL, GRAPH_AODR AH,G_8IT_MASK
BUILD ?(80Hj + (O,3,C,F)
ROW VALUE BX=OFfSET, AL"'B I T MASK
GRAPHICS CHIP BIT MASK REGISTER
C
CALL
OUT OX
C
PUSH
OX
SET BIT MASK
C
SRLOAO ES,OAOOOH
REGEN SEGMENT
C+
HOV
OX,OAOOOH
e+
HOV
ES,OX
c e
POP
OX
PDP
AX
e
MOV
CH,AL
c e e
TEST JZ MOV
CH,080H
~~7~_DAT A_ROT
RECOVER COLOR SAVE COLOR SEE IF XOR NO XOR DO XOR
C
MOV
AL,018H
XOR FUNCTION
C
CALL
OUT OX
SET THE REGISTER
C
JMP
WO_B
SK I P THE BLANK
C WD.A:
BLANK THE DOT
C
MOV
OL, SEQ_ADDR
SEQUENCER
C
MOV
AH, S_MAP
e
MOV
AL,OFfH
e
CALL
OUT_OX
MAP MASK
ENABLE ALL MAPS SET THE REG I STER
144 IBM Enhanced Graphics Adapter
August 2, 1984
lC41 lC44 lC46 lC49 lC49 lC4B
lC4D lC4F lCSl lC54 lC57
lC59
26: 8A 07 2A CO 26: 88 07
82 C4 84 02 8A C5 24 OF E8 0015 R 26: 8A 07 BO FF 26: 88 07
lC5C lC5F lC61 lC63 lC65 lC68 lC6A lC6C lC6F lC72
lcn
E8 0015 R 82 CE B4 03 2A CO E8 0015 R B4 06 BO FF E8 0015 R E9 219£ R
lC72 50 lC73 52
lC74 lC77 1C79 lC7A lC7B lC70 lC80 lC82 lC84 lC66 lC88 lC89
SA ADOO 8E C2 5A 58 8B C2 £8 1660 R B5 07 2A £9 2B 02 BO 00 C3
lC89 lC89 lC8B lC8D lC8E lC90 lCn lC95 lC96 lC99 lC9B
1C9E 1C9F
8A CO 84 04 52 86 03 82 CE E8 0015 R 5A 26: 8A 27 02 EC 80 £4 01
C3
lC9F
lC9F 80 3E 0449 R 07 lCA4 77 18
lCA6
lCA6 52
lCA7 lCAA lCAC lCAD lCBO leB3 lCS5 lCB7 lCB9
lCBB lCBE
SA B800 8E C2 5A E8 1B88 R 26: SA 04 22 C4 02 EO 8A CE 02 CO
E9 219E R
lCBE lCBE lCC3 lCC5 lCC8
80 3E 0449 R OF 72 25 E8 14F7 R 72 20
lCCA
lCCA lCCO lCDO lC02 lCD4 lC06 lC08 lCOB lCOO lCDF lCE1 lCE3 lCES tCE7 lCEA
E8 1C72 R E8 1C89 R OA 04 00 E4 OA 04 BO 02 E8 lC89 R DO E4 00 £4 OA 04 DO E4 OA 04 8A C2 E9 219E R
lCEA
1CEA
tCEO lCEO tCFO lCF2 lCF4 lCF6 lCF8 lCFA lCFC lCFE
'DO'
E8 1C72 R
E8 lC89 R 8A C8 02 E4 OA 04 FE CO 3C 03 76 F1 8A C2 E9 219E R
5167 5168
5169 5170 5171
5172 5173 5174 5175 5176 5177
5178 5179 5180 5181 5182 5183 5184 5185 5186 5187 5188 5189 5190
5191 5192 5193 5194 5195 5196 5197 5198 5199 5200 5201 5202
5203 5204 5205 5206 5207 5208 5209 5210 5211 5212 5213 5214 5215
5216 5217 5218 5219 5220 5221 5222 5223 5224 5225 5226 5227
5228 5229
5230 5231 5232 5233 5234 5235 5236 5237 5238 5239 5240 5241 5242 5243 5244 5245
5246 5247 5248 5249 5250 5251
5252
5253 5254 5255 5256 5257 5258 5259 5260 5261 5262 5263 5264 5265
5266 5267 5268 5269 5270 5271 5272 5273 5274 5275 5276 5277 5278 5219 5280 5281 5282 5283 5284 5285 5286 5287 5288 5289 5290 5291 5292
C
MOV
Al,ES:[BXJ
C
SUB
AL,AL
C
MOV
ES: {8XI,AL
C WD_B:
e C
MOV MOV
Dl,SEQ AODR AH, S_MAP
e e
MOV ANO
AL,eH AL,OFH
e
CALL
OUT OX
e e
MOV MOV
AL,ES:18X] AL,OFFH
e
MOV
ES:[BXj,AL
C
C ;----- NORMALIZE THE ENVIRONMErH
e
e
CALL
OUT ox
e
MOV
DL, GRAPH_AOOR
C
MOV
AH,G_DATA_ROT
e
SUB
Al,AL
e e
CALL MOV
OUT_OX AH,G_BIT_MASK
e
MOV
AL,OHH
C
CAll
e e
JMP
WRITE_DOT_2
OUT_OX V_RET ENOP
C
e
PROC
NEAR
e
ASSUME DS:ABSO
e
PUSH
AX
e
PUSH
OX
e
SRLOAO ES,OAOOOH
e+
MOV
OX, DAOOOH
e+
MOV
ES,DX
e
POP
OX
C
POP
AX
e
MOV
AX,OX
C
CALL
OOT_SUP_1
e
HOV
CH,7
C
SUB
CH,CL
e C
SUB MOV
OX,OX AL,O
e
RET
e e
ENOP
e C e
PROC MOV MOV
NEAR CL,CH AH,4
e e e
PUSH MOV MOV
OX OH,3 Ol, GRAPH AOOR
C
CALL
OUT_OX -
e
POP
OX
C
MOV
AH, ES: [BX}
C
SHR
AH,CL
C
AHa
AH,l
e e e
RET
ENDP
e ;----- READ DOT
e
e AHD:
e
ASSUME OS:A8S0
C
eMP
CRT_MOOE,7
C C
JA "-'
C READ_DOT
PROC
HEAR
C
ASSUME OS:ABSO, ES: HOTH I NG
C
PUSH
OX
C
SRlOAO ES,OB800H
C+
MOV
OX,OB800H
C+
MOV
ES,OX
C
POP
OX
C
CAll
R3
C
MOV
AL,ES:ISI]
C
AND
AL,AH
C
SHL
AL,CL
C
MOV
CL,OH
C
ROL
AL,CL
g C
JMP
REAO_D~T
V REl ENOP
LATCH DATA ZERO BLANK THE OOT SET THE COLOR MAP MASI< SEQUENCER MAP MASK REG ISTER COLOR VALUE VALUES 0-15 SET IT LATCH DATA WRI TE VALUE SET THE DOT
ALL MAPS ON GRAPH I CS CH t PS XOR R£GISTER NORMAL WRITES SET IT BIT MASK ALL BITS ON SET IT WR I TE DOT DONE
DETERMINE BYTE POSITION OF DOT GET THE BYTE MASI< OFF THE oTHER B ITS I N THE BYTE LEFT JUSTI FY THE VALUE GET NUMBER OF BITS IN RESULT RIGHT JUSTIFY THE RESULT
e
e
eMP
CRT _MODE, OFH
e e e
J' CALL JC
READ_OOT_2 HEM_DEl REAO_DOT_2
e
C READ DOT 1
PROC
NEAR
e
- ASSUME DS:ABSO, ES:NOTHING
; 2 MAPS
e C
CALL CALL
.0 5 RO-1S
C
e e
OR SHL OR
OL;AH AH,l OL,AH
C
MOV
AL,2
e
CALL
RO_1S
C
SHL
AH,l
C
SHL
e e
OR SHL
e e
OR MOV
C
JMP
e READ_DOT_l
AH,1 OL,AH AH,l OL,AH
AL,OL
V RET
ENOP
C
e READ DOT 2
PROC
NEAR
e - ASSUME DS:ABSO, ES:NOTHING
e
CALL
RD_S
; lj MAPS
C
C
CALL
RO_1S
C
MOV
CL,AL
e e
SHL OR
AH,CL DL,AH
C
'He
AL
e C
eMP JBE
AL,3 RD 2A
C
MOV
AL;OL
C
JMP
VREl
eC REAO_OOT_2 e
ENOP
C
WRITE TTY
WRITE TELETYPE 10 ACTIVE PAGE
e
-THIS INTERFACE PROVIDES A TELETYPE LIKE INTERFACE TO THE VIDEO
e e e
CARD. THE INPUT CHARACTER IS WRITTEN TO THE CURRENT CURSOR POSITION, AND THE CURSOR IS MOVED TO THE NEXT POSITION, If THE CURSOR LEAVES THE LAST COLUMN OF THE FIELD, THE COLUMN I S SET
August 2, 1984
IBM Enhanced Graphics Adapter 145
1001
1001 1002 1006 '007 1009 1006 1 DOD
1011
50 6A 3E 0462 R 53 SA OF ]2 FF 01 £3 88 97 0450 R
58
1012 1014 1016 1018 lOlA lOlC lOlE
1020
3C 00 74 5C 3C OA 74 5C 3C 08 74 4C 3C 07
74 5C
1022 84 OA
1024 89 0001 1027 CD 10
1029
1028 lOU lD31 1033 1037
FE C2
3A 16 044A R 75 35 2A 02 3A 36 0484 R 75 28
1039 1039 £8 1150 R
lOle lDlF
1041 1043 1045 1047 1049 1049
104B 1040
lD4F 104f
1052
1054 lD58 l05e l05E l05E 1060 1060 1061 1064 1064 1066 1066 1068
AD 0449 R 3C 04 72 06 2A FF 3C 07 75 06
B4 08 CO 10 8A Fe
B8 0601 2B C9 SA 36 0484 R SA 16 044A R FE CA
CD 10
58 E9 219E R
FE e6
84 02 fB F4
l06A l06A
'06C lD6E 1070
DA 02
74 Fe FE CA EB F4
1072 1072 2A 02 1074 EB fO
1076 1016 l07A l07C
lA 36 0484 R 75 E8 EB BB
lOlE lOlE
1080 1083
B3 02 E8 0020 R EB DB
1085
1085 1089 1080 1090
1092
6A 26 044A R SA 3E 0462 R AD 0487 R 24 80
OA 06 0449 R
5293
5294 5295 5296 5297 5298
5299 5300 5301 5302 5303 5304
5305 5306
5301 5308 5309 5310
5311 5312 5313 5314 5315 5316
5317 5318
5319 5320 5321 5322 5323 5324 5325 5326 5327 5328 5329
5330 5331 5332 5333 5334 5335 5336 5331 5338 5339 5340 5341 5342 5343 5344 5345 5346 5347
5348 5349 5350 5351
5352 5353 5354 5355
5356 5357 5358 5359 5360 5361 5362 5363 5364 5365 5366
5361 5368 5369 5310 5311 5372
5313 5374 5315 5376 5377
5378 5379 5380 5381 5382 5383 5384
5385 5386 5387 5388 5389 5390 5391 5392 5393 5394 5395 5396 5391
5398 5399 5400 5401 5402 5403
5404 5405 5406 5401 5408 5409 5410 5411 5412 5413 5414 5415 5416 5417 5418
C
TO ZERO, AND THE ROW VALUE IS I NCREMUHED.
IF THE ROW VALUE
C
LEAVES THE FIELD, THE CURSOR IS PLACED ON THE LAST ROW, FIRST
C
COLUMN, AND THE ENTIRE SCREEN IS SCROLLED UP ONE LINE. WHEN
C
THE SCREEN IS SCROLLED UP, THE ATTRIBUTE FOR FILLING THE NEWLY
C
BLANKED LINE IS READ FROM THE CURSOR POSITION ON THE PREVIOUS
C
LI HE BEFORE THE SCROLL, ! N CHARACTER MODL I N GRAPH I CS MODE,
C
THE 0 COLOR I S USED.
C
ENTRY
C
(AH) = CURRENT CRT MODE
C
(AL) = CHARACTER TO BE WRITTEN
C
NOTE THAT BACK SPACE, CAR RET, BELL AND LINE FEED ARE HANDLED
C
AS COMMANDS RATHER THAN AS DISPLAYABLE GRAPHICS
C
(BL) " FOREGROUND COLOR FOR CHAR WR I TE I F CURRENTLY I N A
C
GRAPH I CS MODE
C
EXIT
C ;
ALL REG J STERS SAVED
:
C iHE;~----------------------------~--------~------------------------------
C
C
ASSUME CS: CODE, os: ABSO
C
PUSH
AX
SAVE REG I STERS
C
MOV
BH.ACTIVE_PAGE
GET THE ACT I VE PAGE
C
PUSH
BX
SAVE
C
MOV
BL,BH
GET PAGE TO BL
C
XOR
BH,BH
CLEAR HIGH BYTE
C C
SAL
eX,l
MOV
ox, rax + OF FSET CURSOR_POSN I
*2 fOR WORD OFfSET CURSOR, ACT I VE PAGE
C
POP
BX
C
RECOVER
C ; ----- OX HOW HAS THE CURRENT CURSOR PaS I T I ON
C
e
eMP
AL,ODH
I SIT CARR! AGE RETURN
C
JE
U9
e
eMP
AL,OAH
e e
JE CMP
Ul0 AL,08H
CAR_RET IS 11 A LINE FEED
LINE_FEED I SIT A BACKSPACE
C
JE
U8
e
eMP
AL,07H
e
JE
Ull
BACK SPACE IS IT A BELL BELL
C
eC ;----- WRITE THE CHAR TO THE SCREEN
C
MOV
AH,10
WR I TE CHAR ONLY
C
e
MOV INT
eX,1 ION
ONLY ONE CHAR WRITE THE CHAR
C C
;----- POSITION THE CURSOR FOR NEXT CHAR
e
e
INC
OL
C
CMP
DL,BYTE PTR CRT~COLS
e
JNZ
U7
TEST FOR COLUMN OVERFLOW SET_CURSOR
C
SUB
DL,DL
e e c
CMP JNZ
DH, ROWS U6
e ;----- SCROLL REQUIRED
e
COLUMN FOR CURSOR SET_CURSOR~INC
C U1:
C e
CALL
; SET THE CURSOR
e ;~---- DETERMINE VALUE TO FILL WITH DURING SCROLL
e
e
MOV
AL, CRT MODE
GET THE CURRENT MODE
e
CMP
AL,4 ~
C
JB
U2
READ-CURSOR
C
e e
C U2:
SUB CMP JNE
SH,BH AL,7 U3
FILL WITH BACKGROUND
SCROLL-UP READ-CURSOR
C
HOV
AH,8
C
I NT
10M
READ CHAR(ATTR
C C U3:
e
C
HOV
SH,AH
MOV SUB
AexX,,c6x01H
STORE IN BH SCROLL-UP SCROLL ON ELI NE UPPER LEFT CORNER
C
MOV
OH, ROWS
LOWER RIGHT ROW
C C C U4:
MOV OEC
DL, BYTE PTR CRT~COLS OL
LOWER RIGHT COLUMN V I DED-CALL-RETURN
C
I NT
10M
C U5:
e
POP
e
JMP
SCROLL UP THE SCREEN TTY-RETURN
RESTORE THE CHARACTER RETURN TO CALLER
C U6:
SET-CURSOR-INC
C
INC
NEXT ROW
C U7:
SET-CURSOR
C
MOV
AH.2
e e
JMP
U4
e ; ----- BACK SPACE FOUND
e
[STABl! SH THE NEW CURSOR
C U8:
C
OR
DL,DL
ALREADY AT END OF LI NE
C
JZ
U7
SET CURSOR
C
OEC
DL
e e
JMP
U7
NO -- JUST MOVE I T BACK SET_CURSOR
C ; ----- CARRI AGE RETURN FOUND
e
eC U9:
SUB
DL,DL
c
JHP
U7
c
MOVE TO FIRST COLUMN SET~CURSOR
C ; ----- LINE FEED FOUND
C
e Ul0:
C
, CMP
DH, ROWS
e
JHE
U6
BOTTOM OF SCREEN YES, SCROLL THE SCREEN
C
JMP
Ul
e
NO, JUST SET THE CURSOR
C
e e U11 :
BELL FOUND
C
MOV
SL,2
e
CALL
BEEP
SET UP COUNT FOR BEEP SOUND THE POD BELL
C
JMP
U5
e
e
TTY_RETURN
C ; ----- CURRENT VIDEO STATE
C
e AHF: e
ASSUME OS:ABSO
C
MOV
AH, BYTE PTR CRT~COLS
GET NUMBER Of COLUMNS
C
MOV
BH,ACTIVCPAGE
e e
HOV AND
AL, INFO AL,080H
C
OR
AL, CRT~MODE
146 IBM Enhanced Graphics Adapter
August 2, 1984
1096 5F 1097 5E 1098 59 1099 59 109A 5' lD9B IF 109C 07
1090 50 lD9E CF
~
109f 109f 10AO lOA3 10A4 10A4 lOA5 10A7 10A9
10M lOAC 10AE lOAF 10Bl
1082
1054 10B5 10B6
10B7
50 E8 OD05 R fA
EC AS 08 74 fB 58 82 CO 86 C4 EE 86 C4 EE BO 20 EE fB C3
10B7 lOB7 1 DBA lOBC lOBE 10BF lOCO
E8 lOCO R B2 CO 80 20 EE
C3
lOCO lOCO lDC3 lDC4
lOC5
E8 0005 R EC
C3
lOC5
lOC5 F6 06 0487 R 02 lDCA 75 07
10CC 1001 1003 1003 1005 1007
80 3E 0"63 R B4 74 33
8A EO OA E4 75 30
~
1009 100B 100f 10E2 10E5 lOE7 10E9 lOEB lOEC
28 ED C4 3E 04A8 R 83 C7 04 26: C4 3D
8C CO DB C7 74 01
45
lOEC 1DEF 10fl
10F3 lDF6 10F9 10FB 10m tDff 1£01 lE03 lE06 1£06
E8 lOCO R 8A E3 8A C7 E8 1D9F R E8 10B7 R OB ED 74 09 8A C7 2A FF 03 fB 26: 88 05
E9 219E R
1£09
1£09 FE CC lEOB 75 20
lEaD lEaF 1El 3 lE16
lE19 lE18 1 E1D
lEH lE20
28 ED C4 3E 04A8 R 83 C7 04 26: C4 30
8C co OB C7 74 01
45
~
H2O 1[23
1E25 1 E27 lE2A
E8 lOCO R B4 11 8A C1 £8 109F R E8 10B7 R
lE20 1£2F
lE31 lE34
08 ED
74 05 83 C7 11 26: 88 3D
lE37 £9 219E R
lE3A lE3A FE CC
lE3C 75 40
1ElE IE lE3f DO
5419 5420
5421 5422 5423 5424 5425 5426
5427 5428 5429 5430 5431 5432 5433 5434 5435
5436 5437 5438 5439 5440 5441 5442 5443 5444 5445
5446 5447 5448 5449
5450 5451 5452 5453 5454 5455 5456 5457 5458
5459 5460 5461 5462 5463
5464
5465 5466 5467 5468 5469 5470 5471 5472 5473
547" 5475 5476 5477 5476 5479 5480 5481 5482 5483 5484 5485 5486 5487
5488 5489 5490 5491
5492 5493 5494 5495 5496 5497 5498 5499 5500 5501
5502
5503 5504 5505 5506 5507 5508
5509 5510 5511 5512 5513 5514
5515 5516 5517 5518 5519 5520 5521 5522 5523 5524 5525 5526 5527 5528 5529
5530 5531 5532 5533 5534
5535 5536 5537 5536 5539 5540 5541 5542 5543
5544
POP
01
POP
S!
POP
CX
POP
CX
POP
ox
POP
OS
POP
ES
pOP
BP
IRET
SUBTTL
; DISCARD BX
PAL_SET PROC PUSH CALL CLI
V'R;
IN TEST JZ
POP
MOV XCHG OUT XCHG OUT
MOV
OUT STI RET PAL_SET ENDP
NEAR AX WHAT_BASE
AL,OX AL,08H VR AX DL,ATTR_WRITE AL,AH OX,AL AL,AH OX,AL AL,OZOH OX,AL
; VERT I CAL RETRACE
PAL_ON PAL_ON
PROC CALL MOV
MOV OUT
RET ENOP
NEAR PAL INIT OL,ATTR_WRITE AL,020H OX,AL
PAL_INIT CALL IN
RET PAL..1NIT
PROC
NEAR
WHAT BASE
AL,DX
ENDP
; ---- SET PALETTE REGI STERS
AH10:
ASSUME DS:ABSO
TEST
INfO,2
JNZ
BM_Of<
; I N MONOCHROME MODE
;----- HERE THE EGA IS IN A COLOR MODE
8M_OK:
GNP JE
MOV OR JNZ
BYTE PTR ADOR_6845,OB4H BM_OUT
AH,AL AH,AH BM_1
; ---- SET INDIVIDUAL REGISTER
TLO_' :
SUB LES ADD
LES HOV OR JZ INC
BP,BP OI,SAVE.PTR 01,4 OI,OWORD PTR ES:[OI] AX,ES AX,DI TLO_l
8P
BM_OUT:
CALL MOV MOV CAll CALL OR JZ MOV SUB ADD MOV
JMP
PAL I NI T AH,BL AL,BH PAL SET PAL::::ON BP.BP B",-OUT AL,BH BH, BH OI,BX ES:[OI J,AL
V_RET
BM_l:
DEC JHZ
AH BM_2
TLO_2:
SU8 LES ADD LES HOV OR JZ INC
BP,BP DI, SAVE.PTR 01,4
Ot,OWORO PTR ES:[OI J
AX,ES AX,OI TLO_2
SP
; .--- SET OVERSCAN REG I STER
CALL
HOV MOV CALL CALL
PAL INtT
AH,Ol1H AL,BH PAL_SET PAL_ON
DR JZ ADD MOV
BP, BP
8M.OUT OI,011H
ES:[OIJ,BH
JMP
V_RET
BM_2:
DEC JNZ
AN BM_3
;----- SET 16 PALETTE REGISTERS AND OVERSCAN REGISTER
PUSH
OS
PUSH
ES
August 2, 1984
IBM Enhanced Graphics Adapter 147
1E40 1£44
1£47 1£4A 1£4C
1£4£
C4 3E 04A8 R 83 C7 0-4 26: c4 30 8C CO
OB C7
7409
1E50 1£51 1E52 1£54
1E57
1f 1E 88 F2
890011 F3t A4
lE59 1£59 07 1£5A 1 F
lE5B 1 £50 1£60 1[62
1 £62 1£65 1 E68 lE6A
lE6B lE6E lE70
1£72 1£75 1£78 1 E7B
88 OA £8 lOCO R 2A E4
26: 8A 07 E8 lD9F R F£ C4 43 M FC 10 72 F2 FE C4 26: 6A 07 £8 lD9F R E8 lDB7 R E9 219E R
1 E7E lE7E FE CC lE60 75 29
1£82 1 E83 1E86 1£89 lE8C
53 E8 D05A R 83 C3 33 26: 8A 07 5B
lE80 OA DB lE8F 75 OA
1 E91 lE96 lE98 lE98 lE98 lE90
80 26 0465 R OF 24 F7 EB OC 90
FE CB 75 07
1 E9F 1£A4 lEA6
lEA6 lEA8 lEA8 lEAB
80 DE 0465 R 20 DC 08
84 10 E8 109F R
E9 219E R
lEAE
lEAE 50
lEAF 55 lEBO 53 lEBl 51 1EB2 52
1 E83 06
1 EB4 1 EB7 lEBA lEBB
lEBO 1E8F lEC4 lEC6 1 EC6 lEeB 1 ECB 1 EC£ lEOl 1 E02
E8 OCFE R AO 0449 R 50 3C 07
74 07 C6 06 0449 EB 05
R DB
C6 06 0449 R OC
E6 OOA8 R
£8 OCFE R 58
A2 0449 R
1E05 07 1£06 5A 1E07 59 1E08 5B 1E09 5D 1EOA 58
lEOB lEOO 1 EOF lHO lEEl 1£E3 1 EE6 lE£8 1HA 1 £EC lEEF lEFt lEFt 1 EF3
OA CO 74 17 OE 07 2802 B9 0100 FE C8 75 07 87 DE BO 0000 E E805
B7 08 BO 0000 E
5545 5546 5547
5548 5549 5550 5551
5552 5553 5554
5555 5556 5557 5558 5559 5560 5561
5562 5563 5564 5565 5566 5567 5568 5569 5570 5571 5572
5573 5574 5575 5576 5577 5578 5579 5580 5581 5582 5583
5584 5585 5586 5587 5588 5589
5590 5591 5592 5593 5594 5595 5596 5597 5598
5599 5600 5601 5602 5603
5604 5605 5606 5607
5608 5609 5610 5611 5612 5613 5614 5615 5616 5617 5618 5619 5620 5621 5622 5623 5624 5625 5626 5627 5628 5629 5630 5631 5632 5633 5634 5635 5636 5637 5638 5639 5640 5641 5642 5643 5644 5645 5646 5647 5648 5649
5650 5651 5652
5653 5654
5655 5656 5657 5658 5659 5660 5661 5662
5663 5664 5665 5666 5667 5668 5669 5670
LES ADD LES MDV DR JZ
PDP PUSH MOV MOV MOVSB
01, SAVE_PTR D! ,4 OI,DWORD PTR ES:IOII AX,ES AX,DI TlO_3
OS OS SI,DX ex,170
ES:DI PTR TO PAL SAVE AREA
PARAMETER ES PARAMETER OffSET
POP POP
MOV CALL SUB
MOV CALL INC INC CMf JB INC MOV CALL CALL JMP
ES OS
BX,OX
~~~A~NIT
AL, ES: 1BX]
PAL_SET AH BX AH,010H BM 2A AH AL,ES:[BX] PAL SET PAL::::ON V_RET
DEC JNZ
AH 8M_4
; ----- TOGGLE I NTENS I FYtBL I NK I NG BI T
PUSH CALL ADO MOV POP
8X
MexA,K0C1B0AHSE+ LN_4
AL, ES: [8X]
8X
OR JNZ
BL,8L BM_6
; ----- ENABLE 'MTENS' FY
AND AND
JMP
CRT MODE SET,1'0'1111B AL,OF7H
BM_7
DEC JNZ
BL BM_7
; ----- ENABLE BL I NK
OR
CRT_MODE_SET, 020H
OR
AL,08H
MOV CALL
JMP
AH, P_MODE PAL_SET
V_RET
INCLUDE SU8TTL PAGE
VCHGEN. 'NC VCHGEN. INC
ENTRY
AL '" 0 USER SPEC I FI ED FONT
1 8 X 14 FONT
2 8 X 8 DOUBLE DOT
;
BL = BLOCK TO LOAD
:
b~:~~~7~~----------------------------------------
PUSH
AX
PUSH
BP
PUSH
BX
PUSH ex
PUSH
OX
PUSH
ES
; SAVE THE I NVOLV£D REGS
H14: H15:
ASSUME CALL MOV PUSH eMP JE
"OV JMP
OS:ABSO DOS AL, CRT_MODE
AX AL,7
H14
CRT _MOOE,DBH SHORT H15
MOV
CRT_MODE,OCH
CALL CALL POP
MOV
SET_REGS DOS AX
CRT_MODE,AL
SET DATA SEGMENT GET THE CURRENT MODE SAVE IT IS TH I S MONOCHROME ; MONOCHROME VALUES COLOR VALUES SKI P
; MONOCHROME VALUES
RESET THE DATA SEGM£NT RECOVER OLD MODE VALUE RETURN TO LOW MEMORY
POP
ES
POP
ox
POP
CX
POP
8X
POP
BP
POP
AX
RESTORE REGS THAT WERE USED BY THE MODE SET ROUTINES
OR
AL,AL
JZ
DO_MAP2
PUSH
CS
POP
ES
SUB
ox, OX
MOV
CX,02560
DEC
AL
JNZ
H7
MOV
8H,0140
MOY
BP, OffSET CGMN
JMP
SHORT DO_MAP2
H7:
MOV
8H,8
MOV
SP, OffSET CGDOOT
SET flAGS USER SPEC I F I EO FONT SET SEGMENT TO
TH I S MODULE ZERO OUT START OFFSET CHAR COUNT (FULL SET) WH I CH PARAMETER MUST BE ONE BYTES PER CHARACTER 8 X 14 TABLE OFFSET STORE IT
8 x 6 FONT ROM 6 X 8 DOUBLE DOT
-~ ~~;~~-~HAR~cjiR-GiNER;joR-~OAD-·--------------·
148 IBM Enhanced Graphics Adapter
August 2, 1984
~ ~
lEF6 1Ef6 1Ef7 lEF8
1 EF9 lEfC lEFE 1Eff 1FOO H02
H04 1f05 H01 H09 H09 HOD HOF 1Fll 1Fll H13 H15 1F11 H19 H1B H1B H1C 1 F1E H2O 1 F22 H25 H26 H28
H28
00 1F
"
BA ACOO 8E C2 5A 51 B1 05 03 E2 59 OA DB 711 08
81 C2 4000 FE CB 15 F8
8A C7 2A E4 88 FA 8B F5 E3 00
51 88 C8 F3/ A4 2B fa 83 C7 20 >9 E2 F3
e3
1 F29
H29 H2C 1 F2F lF33 H38 1F3A 1F3C H3F 1 F3F H41
1 F43 H46
E8 OCFE R A3 0485 R 88 16 0463 R 80 3E 0449 R 07 75 05 84 14 E8 0015 R
FE C8 B4 09 E8 0015 R FE C8
1F48 H4A H4C 1 F4E H50
8A [8
8A C8 FE Cl B4 01 CO 10
H52 H56
H59 H5C 1f5E
H61 H63 1 F66 1f66 H61 1F6B H6C 1F6f 1f11 1F13 H77 H18 H7C H1E H81
H84 H86 1F8A 1F8C
H8F 1F92 1F95
8A lE 0449 R 88 015E 80 FB 03 77 08 E8 OE9A R 72 03 B8 00C8
99
4.F1 36 0485 R
A2 0484 R FE CO 2A E4 F1 26 0485 R 48 88 16 0463 R 84 12 E8 0015 R AD 0484 R FE co F6 26 044A R 01 EO 05 0100 A3 OljljC R E8 OE96 R E9 219E R
H98
1F98 3C 10 1F9A 13 37
H9C lF9E HAD HA3 lfA6
HA9 HAC HBO HB2 HB4
3C 03 13 17 E8 lEAE R E8 ODA8 R E8 OE96 R
E8 OCFE R 8B DE 0460 R BII 01 CO 10 E9 219E R
~
HB1 1f81
lf89 lFBB
75 11
B6 03 B2 c4
HBD B8 000 1 lFCO E8 0015 R
HC3 B4 03 HC') 8A C3 1FC1 £8 OD15 R
5611
5612 5613 56111 5615 5616 5611 5618 5679 5680 5681 5682
5683 5684 5685 5686 5681 5688 5689
5690 5691 5692
5693 5694 5695 5696 5691 5698 5699 5100 5101 5102 5103 5704 5105 5706 5701 5108 5109 5110 5111 5712 5113 5714 5115 5116 5111 5118 5119 5120 5121 5122 5123 5724 5725 5126 5121 5128 5129 5130 5131 5132 5133 5134 5135 5136 5137 5138 5139 5140 5141
5142 5143 5144 5145 5146 5141 5148 5149
5150 5151 5152 5153 5154 5155 5156 5151 5158 5159 5160 5761 5162 5163 5164 5165 5166 5161
5168 5169 5110 5111 5112
5713 511lj
5115 5716 5111 5118 5719 5180 5181 5182 5183 5784 5185 5786 5181 5788 5189 5190 5191 5192 5193 5194 5195 5196
e
e
ENTRY
e
ES:BP - POINTER TO TABLE
e
ex
- COUNT OF CHARS
e
ox
- CHAR COUNT OFFSET INTO MAP 2
e
BH
- BYTES PER CHARACTER
e e
--------B-L------ --M-A-P-2---B-LO-C--K--T-O--lO-A-D--------------
e OO_MAP2:
e
PUSH
ES
FONT TABLE SEGMENT
e
POP
os
; ADDRESSING TO TABLE
e
PUSH
DX
; SAVE REG I STER
e
SRLOAO ES,OAOOOH
; ADDRESSING TO MAP 2
e+
MOV
OX,OAOOOH
e+
HOV
ES,OX
e
POP
ox
; RECOVER REGISTER
e
PUSH
ex
; MULTI PLY BY 020H SINCE
e
HOV
CL,5
MAXIMUM BYTES PER
C
SHL
OX,CL
; CHARACTER IS 32D"'020H
C
POP
ex
; RECOVER
e
OR
BL,BL
; WH I CH 16K BLOCK TO LOAD
e
JZ
H3
; BLOCK ZERO
C H4:
e
ADD
OX,04000H
I NCREMENT TO NEXT 8LOCK
e
DEC
BL
; ANY MORE
e
JHZ
H4
; 00 ANOTHER
e H3:
C
HOV
AL,eH
BYTES PER CHARACTER
e
SUB
AH,AH
ZERO
e
MOV
OI,DX
OFFSET INTO MAP
e
MOV
SI,BP
OffSET INTO TABLE
e
JeXl
LO_OVER
CHARACTER COUNT
e
e
PUSH
ex
SAVE CHARACTER COUNT
e
MOV
CX,AX
; ONE ENT I RE CHARACTER
e
REP
MOVSB
AT A TIME
e
SUB
OI,AX
; ADJUST OffSET
e
ADD
DI,020H
NEXT CHARACTER POS I T I ON
C
POP
ex
RECOVER CHARACTER COUNT
e
LOOP
LD
DO THE REST
C LD_OVER:
e
RET
e
e BRK_1 :
e
ASSUME OS:ABSO
e
CALL
DDS
SET LOW MEMORY SEGMENT
e
MOV
POINTS,AX
GET BYTES/CHARACTER
C
MOV
OX,ADOR_6845
CRTC REG I STER
e
eMP
CRT_MODE,7
C
JHE
HllA
C
MOV
AH, C_UNOERLN_LOC
R14H
e
CALL
OUT_OX
SET THE UNDERLINE LOC
e Hl1A:
e
DEC
AL
POINTS - 1
e
MOV
AH, C_MAX_SCAN_lN
R09H
e
CALL
OUT_OX
SET THE CHARACTER HEIGHT
e
DEC
AL
POINTS - 2
e
C
MOV
CH,AL
CURSOR START
e
MOV
CL,AL
; CURSOR END
C
IHC
CL
; ADJUST END
e
HOV
AH,l
; SET C_TYPE BIOS CALL
e
IHT
lOH
; SET THE CURSOR
e
e
HOV
Bl, CRT_MODE
; GET THE CURRENT MODE
C
MOV
AX,350D
MAX SCANS ON SCREEN
C
eMP
8L,3
640X200 ALPHA MODES
e
JA
H11
MUST BE 350
C
CALL
8RST_DET
e
Je
H11
e
MOV
AX,200D
SET FOR 200
e Hl1 :
e
Cwo
PREPARE TO DIVIDE
e
DIV
POINTS
MAX ROWS ON SCREEN
e
DEC
AX
ADJUST
e
MOV
ROWS,AL
SAVE ROWS
e
IHe
AL
READJUST
e
SUB
AH,AH
CLEAR
e
MUL
POINTS
ROWS*BYTES/CHAR
e
DEC
AX
ADJUST
C
MOV
ox, ADDR_6845
CRTC ADDRESS
C
HOV
AH, C_VRT_DSP_END
SCANS DISPLAYED
e
CALL
OUT_OX
SET IT
e
MOV
AL, ROWS
GET CHARACTER ROWS
e
IHe
AL
ADJUST
e
MUL
BYTE PTR CRT_COLS
ROWS*COLUMNS
e
SHL
AX,l
*2 FOR ALPHA MODE
e
ADO
AX, 2560
SPACE BETWEEN PAGES
C
MOV
CRT_LEN,AX
BYTES PER PAGE
C
CALL
PH_5
VIDEO ON
e
JMP
V_RET
RETURN TO CALLER
C
e i----- LOADABLE CHARACTER GENERATOR ROUTINES
e
e AHl1:
e
eMP
AL,010H
; CHECK PARAMETER
e
JAE
AHll_ALPHAl
; NEXT STAGE
C
e ; ---- ALPHA MODE ACT I V I TV HERE
e
e
eMP
AL,03H
RANGE CHECK
e
JAE
H1
NEXT STAGE
e e
CALL CALL
~~TG~~GS
e
CALL
PH "5
SET THE CHAR GrN ; VIDEO ON
e
. ASSUME DS:ABSO
e
CALL
DDS
c
MOV
ex, CURSOR_MODE
; SET THE DATA SEGMENT ; GET THE MODE
e
MOV
AH,l
; SET C_ TYPE
e
IHT
10H
EMULATE CORRECT CURSOR
e
JMP
V_RET
; RETURN TO CALLER
e
e ; ---- SET THE CHARACTER GENERATOR BLOCK SELECT REG I STER
e
e H1:
e
JHE
H2
NOT I N RANGE
e
MOV
OH,3
C
HOV
OL, SEILADDR
SEQUENCER
e
e
MOV
AX,l
AH:::S_RESET, AL:::1
e
CALL
OUT_OX
C
e
MOV
AH, S_CGEN
CHAR BLOCK REGI STER
e
MOV
AL,BL
GET THE VALUE
e
CALL
OUT_OX
SET IT
e
August 2, 1984
IBM Enhanced Graphics Adapter 149
lFCA HCO lFOO lFOO
B8 0003 E8 0015 R
E9 219E R
lFD3
lFD3 3C 20 lFD5 73 26
lF07 lF09 HOB lFDD HOE HOF
lFE2 lFE5 lFE6
lFE7 lFE9 lFEB 1 FED lFEF lrFl lFF4 lFF6 lFF8 lFF8 lFFA
2C 10 3C 02 77 F3 50 53 E8 lEAE R E8 OOAS R 5B 58 8A EO OA £4 8A C7 7tI 09 BO 08 80 Fe 01 75 02 BO OE
2A E4 E9 lF29 R
lFFO
lFFO 1 fFf 2001
2003
3C 30 73 6A 2C 20 75 11
2005 2007 2009
200A lOOE 2012 2013 2013 2016
2B 02 8E DA FA 89 2E D07C R 8C 06 007E R FB
E9 219E R
2016 52
2017
2019 201B 201C 201E
2020 2022 2024 2025 2026 2028 202A 2020 2030 2032 2032 2035 2038 2038
2039 2030 2041
2B Ol 8E OA 5A 3C 03 77 F3 FE C8 74 14 OE 07 FE e8 75 08 B9 OOOE BO 0000 E E8 06
B9 0006 80 0000 E
FA 89 2E OlOC R 8C 06 OlOE R FB
2042 2045 2049 204B 204E 2050 2052 2054 2057 2057 2059 2058 2050 2050 205F 205f 2061 2064
E8 OCFE R 69 DE 0485 R 8A C3 B8 2067 R OA eo 75 05 SA C2 Ea 09 90
3C 03 76 02 BO 02
2E: 07
FE C6 A2 0481.i R E9 219E R
2067 2067 00 DE 19 28
2068
2068 2060 206F 206F 2072 2072 2076 207A 2070 207F 2082
3C 30 74 03
E9 219E R
88 DE 0485 R 6A 16 0-481.i R 80 FF 07 77 FO 80 Ff 01 77 18
2084
2085 2087 2069
52
28 02 BE OA 5A
5797 5798 5799
5800 5801 5802 5803
5804 5805
5806 5807 5808
5809 5810 5811 5812 5813
5814 5815 5816 5817 5818 5819 5820 5821
5822 5823 5824 5825 5826 5827 5828 5829 5830 5831 5832 5833 5834 5835 5836
5837 5838 5839 5840 5841 5842
5843 581.i4 581.i5
5846 5847 5848 5849 5850 5851 5852 5853 5854
5855 5856 5857 5658 5659
5860 5661 5662 5863 5664 5865 5866 5867 5868 5869 5870 5871 5872 5873
5874 5875 5876 5877 5878
5879 5880 5881 5882 5883 5884 5885 5886 5887
5888 5889 5890 5891 5892 5893 5894 5895 5896 5897 5898 5899 5900 5901 5902 5903 5904 5905 5906 5907 5908 5909 5910 5911 5912 5913 5914 5915 5916
5917 5918 5919 5920 5921 5922
e
MOY
AX.3
e
CALL
OUT_OX
; AH:oS_RESET, AL:03
e H2:
e
JMP
V_RET
e
; RETURN TO CALLER
e AH11_ALPHAl :
e
ASSUME DS:ABSO
e
eMP
AL,020H
e
JAE
AH11_GRAPHICS
e
e ;----- ALPHA MODE ACTIVITY HERE e
e
SUB
AL,010H
e
eMP
AL,02H
e
JA
H2
; AQJUST TO 0 - N
; RANGE CHECK I NVAL 10 CALL
e
PUSH
AX
; SAVE
e
PUSH
BX
e
CALL
CH_GEN
LOAD THE CHAR GEN
e
CALL
SET_REGS
e
POP
BX
e
POP
AX
; RESTORE
e
MOY
AH,AL
; CALLI NG PARAMETER
e
OR
AH,AH
; USER MODE
e
MOY
AL,SH
e
JZ
H13
; DO NOT SET BYTES/CHAR
e
MOY
AL,8
; 8 X 8 FONT
e
eMP
AH,l
I S THE CALL FOR MONoe
e
JNE
H13
; NO, LEAVE IT AT 8
e e H13 :
MOY
AL,14D
; MONoe SET
e
SUB
AH,AH
; CLEAR UPPER BYTE
e
JMP
SRK_1
; CONTINUE
e
e ;----- GRAPHICS MODE ACTIVITY HERE
e
e AH1 l_GRAPH I CS:
e
ASSUME DS:ABSO
e
eMP
AL,030H
e
JAE
AHll INFORM
e
SUB
AL,020H
C
JNZ
flO
C
C ;----- COMPATIBILITY, UPPER HALF GRAPHICS CHARACTER SET
C
C
ASSUME DS:ASSQ
e
SRLOAO OS,O
e+
SUB
OX,OX
C+
MOY
OS,OX
e
eLi
e
MOY
WORD PTR EXT_PTR , BP
C
MOY
WORD PTR EXT _PTR + 2 , ES
C
STI
e Fll :
C
JMP
V_RET
C flO;
e C
ox ASSUME OS:ABSO
PUSH
e
SRLOAO 05,0
e+
SUB
OX,OX
C+
MOY
OS,OX
C
POP
ox
C
CMP
AL,03H
; RANGE CHECK
C
JA
F11
e
DEC
AL
C
JZ
fl9
e
PUSH
es
C
POP
ES
e
DEC
AL
C
JNZ
[13
C
MOV
CX,14D
C
MOY
SP,OFFSET CGMN
ROM 8 X 14 CHARACTER SET
C
JMP
SHORT f19
C f13:
e
MOY
CX.8
C
MOY
SP,OFFSET eGOOOT
ROM 8 X 6 DOUBLE DOT
C F19:
C
CLI
e
MOY
WORD PTR GRX_SET , BP
C
MOV
WORD PTR GRX_SET + 2 , ES
C
STI
C
ASSUME DS:ABSO
C
CALL
DDS
C
MOY
POINTS,CX
e
MOY
AL,BL
e
MOY
eX,OFFSET RT
e
OR
AL,AL
C
JNZ
DR_3
C
MOY
AL,OL
C C DR_3:
JMP
DR_'
e
eMP
AL,3
C
JBE
OR_2
C
MOY
AL,2
e OR_2:
C
XCAT
CS: RT
C OR_l :
C
DEC
AL
C
MOY
ROWS,AL
C
JMP
V_RET
C
C
LABEL BYTE
e
DB
000,140,250,430
C
C
C
INFORMATION RETURN -DONE HERE
C
C AHll _INFORM:
C
ASSUME oS;ABSO
C
CMP
AL,030H
C
JE
F6
C f5:
C
JMP
V_RET
e F6:
C
MOY
eX,POINTS
e
HOY
OL.ROWS
C
eMP
BH,7
C
JA
f5
C
CMP
BH,l
C
JA
f7
C
e e
ASSUME OS: ASSO
PUSH ox
e
SRLOAO OS,O
c+
SUB
Ox, OX
c+
MOY
OS,OX
C
POP
OX
r"\
150 IBM Enhanced Graphics Adapter
August 2, 1984
~
~
~
208A 208C
208E 2092 2095 2095 2099
OA rr
75 07 C4 2E 007C R EB 1A 90
C4 2E 010C R £B 13 90
209C
209C 209F 20Al 20A3 20A5 20A9 20AC 20AD
80 Ef 02 8A Of 2A ff 01 £3 81 C3 20B7 R 2E: 8B 2F DE
07
20AE 20AE 5F 20AF 5£
,. 20BO 5B
20Bl 5B 20B2 2083 1F
2084 5. 2085 5' 20B6 eF
20B7 20B7
20B9 2088 20BO
0000 E 0000 E 0000 E 0000 E
2QBF
208F 20C2
20C4 20C6 2QC9 20CB 20CE
80 f6 10 72 51 74 1B 80 fB 20
74 03 E9 219E R
20CE 2000 2002 2003 2009 2000 20DE 20El 20£1 20E5 20E8
26 02 8E OA FA C7 06 0014 R 21A7 R 8C DE 0016 R FB E9 219E R
8A 3E 0481 R 80 E7 02
OOH
20EA 20£0 20EF 20Fl 20F3
AD 0487 R
24 60 81 05 02 E8
8A 08
20F5
20f9 20FB 20rE 2100 2102
210~
2106
8A OE 0488 R SA E9 80 E1 OF 00 £0 00 EO 00 ED DO EO
80 E5 OF
2109 210A 210B 210C 2100 210E 210f 2110
211' 2112 2112
2115 2115 2115
5F 5E 5A 5A SA 1F 07 50 CF
[9 219E R
E9 219E R
2118 2118 211A
211C 211E 211f 2121 2123 2125 2129 212A
3C 04 73 F9 E3 F1 53 8A OF 2A FF
01 £3 8B B7 0450 R
5.
56
2128
212C 212F 2131 2132 2132 2133
2134 2135 2137
2136 213C 213E 2140 2142 2144
5D B8 0200 co 10
5'
51 53 50 86 EO 26: 8A 46 00 45 3C 00 14 30 3C OA 74 39 3C 08
5923 5924 5925 5926 5927 5928 5929 5930 5931
5932 5933 5934
5935 5936 5937 5938 5939 5940 5941 5942 5943 5944 5945 5946 5947 5948 5949
5950 5951 5952
5953 595'-1 5955 5956 5957 5958
5959 5960 5961
5962 5963 5964 5965 5966 5967 5968 5969 5970 5971 5972
5973 5974 5975 5976 5977 5978 5979 5980 5981
5982 5983 5981l 5985 5986
5987 5988 5989 5990 5991 5992 5993 599-4 5995 5996 5991 5998 5999 6000 6001 6002
6003 600-4 6005 6006 6001 6008
6009 6010 6011 6012 6013 6014 6015 6016
6011 6018 6019 6020 6021 6022 6023 6024 6025 6026 6027 6028 6029 6030 6031
6032 6033 6034 6035 6036 6037
6036 6039 6040 6041 6042 6043 6044 6045 6046 6041
6048
C
OR
BH, BH
C
J"Z
F9
C
LES
BP,EXT_PTR
C
JMP
INfORM_OUT
c f9:
C
lES
BP,GRX_SET
C
JMP
INFORM_OUT
C C ; ---- HANDLE BH "" 2 THRU 8H '" 5 HERE RETURN ROM TABLE POINTERS
C
C F7:
C
ASSUME DS:ABSO
e
SUB
BH,2
e
MOV
BL, BH
e
SUB
BH, BH
C
SAL
BX,1
C
ADO
BX,OffSET TBL_5
c
MOV
BP,CS:jBXj
e
PUSH
es
e
POP
£S
e
e INfORM_OUT:
C
POP
01
C
POP
51
C
POP
BX
C
POP
AX
O'SCARD SAVED CX
C
POP
AX
D! SCARO SAVED OX
e
POP
OS
e
POP
AX
e
POP
AX
DISCARD SAVED ES DISCARD SAVED BP
e
IRET
e
c ; ---- TABLE OF CHARACTER GENERATOR OFFSETS
e
C TBL_5 lABEL WORD
e
OW
OffSET CGMN
e
OW
OFFSET CGOOOT
e
OW
OFfSET INT_1 F_l
e
OW
OFFSET CGMN_FDG
e
e
SU8TTL
; ---- AL TERNAH SELECT
AH12: ACT_2: ACT_3:
ASSUME eMP JB JE eMP JE JMP
SRLOAD SUB MOV ell MOV MOV STI JMP
OS:ABSO BL,010H ACT 1 ACT-3 8L,020H ACT 2 V_RET
05,0 OX,OX OS,OX
RETURN ACT I VE CALL
ALTERNATE PRINT SCREEN I NVAL I 0 CALL NEW PRINT SCREEN
WORD PTR INT5_PTR, OFfSET PRINT_SCREEN WORD PTR 1NT5_PTR+2. CS
V_RET
MOV AND
SH'
8H, INFO
8H,2 8H,l
LOOK I NG FOR MONOC 8 I T ISOLATE ADJUST
MDV AND MDV SHR MOV
AL,INfO AL,01100000B
CL,5 AL,CL BL,AL
LOOK I NG FOR MEMORY MEMORY al TS
5HI fT COUNT ADJUST MEM VALUE RETURN REGISTER
MOY MOV
A"D SHR SHR SHR
SH' AND
CL,INFO_3
CH,CL CL,OFH CH.l CH,1 CH,1 CH.1 CH,OFH
FEATURE/SWITCH DUPLICATE IN CH MASK Off SW I TCH VALUE MOVE FEATURE VALUE
MASK IT
POP POP POP PDP POP PDP PDP POP , RET
AH12_X: JMP
ACT 1: STR::::OUTZ:
JHP
01 51 OX OX OX OS ES BP
V_RET
V_RET
DISCARD ex 01 SCARD CX
RETURN TO CALLER RETURN TO CALLER
;----- WRITE STRING
AH13:
CMP JAE
Jexz PUSH MOV SUB SAL
MOY POP PUSH
AL,04 STR_OUTZ STR_OUTZ
BX 8L,BH 8H,SH BX,l
S I, I ex + OfFSET CURSOR_POSN I BX
51
RANGE CHECK I NVAL' 0 PARAMETER
SAVE REGISTER GET PAGE TO LOW BYTE
; *2 fOR WORD OFFSET ; GET CURSOR POSITION
RESTORE ; CURRENT VALUE ON STACK
STR_l :
PUSH HOV INT POP
PUSH PUSH PUSH XCHG MOV
,"e eM' J' eMP JE eMP
AX AX.0200H 10H AX
ex BX AX AH,AL AL,ES: IBP] BP AL,OOH STR_CR_Lf AL,OAH STR_CR_LF AL,08H
; SET THE CURSOR POS I TI ON
; GET THE CHAR TO 14R' TE CARRIAGE RETURN 1I ME FEED BACKSPACE
August 2, 1984
IBM Enhanced Graphics Adapter 151
21"6 2146
214A. 214C 214F
2152 2154 2158
2159 2159 2158 2150 215F 2163 2165 2169 216B 216E 2110
2112 2172 2174 2176 2176 2119 2118
2170 2170 211F 2181
2183 2185 2187 2188
2188 218C 2180 218E
14 35 3C -01 74 31 89 0001 60 FC 02 72 05 26: 6A 5E 00 45
84 09 CO 10 FE C2 3A 16 044A R 72 11 3A 36 0481j R 75 07 B8 OEOA CD 10 FE CE
fE C6 2A 02
88 0200 CD 10 E8 OE
84 OE CO 10 8A OF 2A FF 01 E3 88 97 0450 R
58 56 59 £2 A2
2190 SA
2191 2193
2195 2191 2199 219C 219E
3C 01 74 09
3C 03 74 05 88 0200 CD 10
219E 219E SF 219F 5E 21AO 58 21A1 59 21A2 5A 21A3 1F 21All 07 21AS 50 21A6 CF 21A7
21A7
21A7 21A7 21A8 21A9 21AA 21AB 21AC 21AO 21BO 21B5 2187 218C 216E
F6 1E 50 53 51 52 fa OCFE R 80 lE 0500 R 01 74 63 C6 06 0500 R 01 84 OF CD 10
21CO 21C2 21C6 21C8 21CB 21CC 21CE 2100 2101 2102
8A CC 8A 2E 0484 R FE C5 E8 2220 R 51 84 03 CO 10 59 52 II 02
2104 2104 2106 2108 21DA 21DC
B4 02 CD 10 84 08 CD 10 OA Co
6049
6050 6051 6052
6053 6054
6055 6056 6051
6058 6059 6060
6061 6062
6063 6064
6065 6066
6061
6066 6069 6070 6071
6072 6073 6074
6075 6076 6077 6078
6079
6080 6081
6082 6083 6084 6085
6086
6087 6088 6089 6090
6091 6092
6093 60911 6095
6096 6091
6098 6u99 6100
6101 6102
6103 6104
6105 6106 6107
6108 6109 6110 6111
6112 6113
6114
6115 6116 6111 6118 6119 6120
6121 6122
6123 612'-1 6125 6126 6127
6128 6129 6130 6131 6132
6133 613'-1 6135 6136 6137 6138 6139 6140 6141 6142 6143 6144 6145 6146 6147 6148 6149 6150 6151 6152 6153 6~54 6155 6156 6157 6158
6159
6160 6161
6162 6163 6164 6165 6166 6167
6168 6169 6170 6171 6172 6173
6174
JE CHP JE
MOV
CHP JB HOV
'"C
HOV
'NT 'NC CHP JB CMP JNE
HOV
, NT DEC
INC SUB
HOV 'NT JHP STR~CR_Lr: HOV 'NT HOV SUB SAL HOV
POP POP POP LOOP
POP
CHP JE CHP JE
MOV
'NT STR_OUT:
~~;O~~_Lf
STR_CR_Lf CX,l AH,2 DO STR SL-:-ES: [BP] BP
AH,09H 10M DL OL, BYTE PTR CRT _COLS STR_2 DH,ROWS
~~;O~OAH
10M OM
OM OL,DL
AX,0200H 10M SHORT STR_4
AH,OEH 10M BL,8H BH,SH BX,1 OX, (BX + OffSET CURSOR_POSN I
AX BX CX STR_1
OX
AL,1 STR OUT AL,3 STR our AX,0200H 10M
BELL COUNT OF CHARACTERS CHECK WHERE ATTR IS NOT IN THE STRING GET THE ATTRIBUTE NEXT ITEM IN STRING ; WRITE THE CHAR/ATTR NEXT CURSOR POSITION COLUMN OVERFLOW NOT YET
NEXT ROW COLUMN ZERO ; SET THE CURSOR
; GET PACE TO LOW BYTE *2 fOR WORD OFFSET
; CE' CURSOR POSITION
RECOVER CURSOR POSI T I ON fROM I!'USH S I ABOVE
SET CURSOR pas I TI ON
ALLOW FALL THROUGH
V_RET V_RET
PROC
POP POP POP POP POP POP POP
POP IRET ENDP
NEAR
01 SI BX CX OX OS ES
BP
; VIDEO BIOS RETURN
COMBO_VIDEO
ENOl'
e
INCLUDE
VPRSC. INC
C
SUBTTL VPRSC.INC
e
PAGE
e C
; --- - - ------------------- - ------ -- ---------------------- - --------- INTERRUPT 5
e
THIS LOGIC WILL BE INVOKED BY INTERRUPT 05H TO PRINT THE
e
SCREEN. THE CURSOR POSITION AT THE TIME THIS ROUTINE IS INVOKED
e
WILL BE SAVED AND RESTORED UPON COMPLETION. THE ROUTINE IS
e
INTENDED TO RUN WITH INTERRUPTS ENABLED. IF A SUBSEQUENT
e
'PRINT SCREEN' KEY IS DEPRESSED DURING THE TIME THIS ROUTINE
C
IS PRINTING IT WILL BE IGNORED.
C
ADDRESS 50:0 CONTAINS THE STATUS OF THE PRINT SCREEN:
c
e
50:0
=0
EITHER PRINT SCREEN HAS NOT BEEN CALLED
e
OR UPON RETURN fROM A CALL THIS INDICATES
e
A SUCCESSFUL OPERAT I ON.
C
=1
PR I NT SCREEN I S I Ii PROGRESS
------------------- C
C
; ---- ------- --"-'-255---- -ER-RO-R---EN--C-O-UN-TER-E-D---O-U-R-I-N-C-PR--INT I NG
C
ASSUME CS: CODE, OS: ABSO
C PRINT_SCREEN
pROC
FAR
e
ST'
C
e
PUSH
OS
PUSH
AX
MUST RUN WI TH I NTS ENABLED MUST USE 50:0 FOR DATA
AREA STORAGE
C
PUSH
BX
C
PUSH ex
USE THIS LATER FOR CURSOR LIMITS
C
PUSH
OX
WI LL HOLD CURRENT CURSOR pas
C
CALL
ODS
e
eMP
STATUS_BYTE, 1
SEE IF pR I NT ALREAOY I N PROGRESS
C
e
JZ
EXIT
MOV
STATUS BYTE, 1
JUMP If PRINT IN PROGRESS INDICATE PRINT NOW IN PROGRESS
C
HOV
AH,15 -
WI LL REQUEST THE CURRENT MODE
C
'NT
10M
[AL)=MOOE (NOT USED)
C
[AH ]=NUMBER COLUMNS/L I NE
C
[BHj=VISUAL PAGE
e
e
AT THIS POINT WE KNOW THE COLUMNS/LINE ARE IN
C ,
[AX] AND THE PACE If APPLICABLE IS IN IBH). THE STACK
-------- ------- ---- C
C
; ;
-
-
--
HAS
-- ----- OS,AX,BX.CX,OX PUSHED.
[AL] --H-A-S--V-ID-E-O--M-O-D-E---- - ---
C
MOV
CL,AH
; WILL MAKE USE OF [CX] REG TO
C
HOY
CH,ROWS
e
INC
CH
e
CALL
CRLF
e
PUSH
CX
CONTROL ROW At COLUMNS ADJUST CAR RETURN LINE FEED ROUT I NE
SAVE SCREEN BOUNDS
C
HOV
AH,3
WILL NOW REAO THE CURSOR.
C
INT
10H
AND PRESERVE THE POSITION
C
POP
CX
RECALL SCREEN BOUNDS
C
PUSH
OX
RECALL I BH I=V I SUAL PAGE
e
C
-------X-O-R------D--X-,O-X-----------------------S-E-T--C-U-RS-O-R---P-O-S-I-T-IO--N--T-O (0,0)
e
THE LOOP FROM PRI10 TO THE INSTRUCTION PRIOR TO PRI20
e
I S THE LOOP TO READ EACH CURSOR pas I T ION FROM THE
C
SCREEN AND pR I NT.
eC ~R~10~-----------------------------------------------------------
c
HOV
AH.2
TO INDICATE CURSOR SET REQUEST
, NT
10M
NEW CURSOR POS ESTABLISHED
MOV , NT
AH,8 10M
TO INDICATE REAO CHARACTER CHARACTER NOW I N I AL I
OR
AL,AL
SEE IF VALID CHAR
152 IBM Enhanced Graphics Adapter
August 2, 1984
210E 2HO 2H2 2H2 2H3 21E5 21 E7 21 E9 21EA 21EO 21EF 21Fl
21F3 21 F5 21 F7
21 f9 21 fA
21 fD 21FE
2200 2202
75 02 BO 20
52 33 02 32 E4 CO 17 5A f6 C4 29 7521 FE C2 3A CA 75 Of 32 02 8A [2 52 E8 2220 R SA f[ C6 3A [E 75 00
2204 2205 2207 2209 220E 2210 2210 2211 2213 2215 221A 221A 221B 221C 2210 221 E 221f
2220
SA 84 02 CO 10 C6 06 0500 R 00 EB OA
5A B402 CO 10 C6 06 0500 R FF
SA 59 58 58 1f Cf
2220 2220 2222
33 02 32 £4
2224 2226 2228
222A 222C 222E 222F
BO 00 CO 17 32 [4
BO OA CO 17 C3
222F
0000
0000
0000
0008 OOOE
0016 OOlC
0024 002A
0032 0038
0040 0046
004E 0054
005C 0062
006A 0070
0078 007E
0086 008C
0094 009A
00A2 00A8
OOBO 00B6
OOBE 00C4
ooce
0002
OOOA
OOED
00E8 OOH
00F6 OOfC
0104 010A
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 7£ 81 AS 81 61 BO 99 81 7E 00 00 00 00 00 7E FF DB FF fF C3 £7 Ff 7E 00 00 00 00 00 00 6C FE FE FE FE 7C 38 10 00 00 00 00 00 00 10 38 7C FE 7C 38 10 00 00 00 00 00 00 18 3C 3C E7
E7E7 18 18 3C 00 00 00 00 00 18 3C 7E Ff FF 1E 18 18 3C 00 00 00 00 00 00 00 00 18 3C 3C 18 00 00 00 00 00 FF fF FF Ff Ff E7 C3 C3 E7 Ff FF FF FF Ff 00 00 00 00 3C 66 42 42 66 3C 00 00 00 00 FF FF FF ff C3 99 80 80 99 C3 FF ff ff FF 00 DOlE DE 1A 32 78 CC CC CC 78 00 00 00 00 00 3C 66 66 66 3c 18 1E 18 18 00 00 00 00 00 3f 33 3F 30 30 30 70 FO EO 00 00 00 00 00 7F 63 7F 63 63 63
61 E7 E6 CO 00 00 00 00 18 18 DB 3C E7 3C DB 18 18 00 00 00
00 00 80 co EO F8
fE F8 EO CO 80 00 00 00 00 00 02 06 DE 3E FE l [ DE 06 02 00 00 00 00 00 18 3C 7E 18 18 18 7E 3C 18 00 00 00 00 00 66 66 66 66
6175 6176 6177 6178 6179 6180 6181 6182 6183 6184 6185 6166 6187 6186 6189 6190 6191 6192 6193 6194 619S 6196 6191 6198 6199 6200 6201 6202 6203 6204 6205 6206 6201 6206 6209 6210 6211 6212 6213 6214 6215 6216 6217 6218 6219 6220 6221 6222 6223 6224 6225 6226 6227 6228 6229 6230 6231 6232 6233
,
, 2
3
5 6 7
8·
'0
"'2
13
,.1'"5
'6 17 '8
20
2' 22
2'23
25 26
2.27
28
30 31 32 33
'3"5
36
3.37
38
"'.0,' ""'"6"''
,"'8.'
50 5' 52 53
'5""6
57
558.
.60
6' 62 63
65
e e
JNZ
PRI1S
MOV
AL, I
JUMP I F VAL I D CHAR MAKE A BLANK
C PR115:
e
PUSH
e
XOR
e
XOR
e
lNT
e
POP
e
TEST
e
JNZ
e e
'Ne
eNP
e
JNZ
e
XOR
e
MOV
e
PUSH
e
CALL
e
POP
e e
'Ne
eNP
e
JNZ
e
OX OX,OX AH,AH 17H OX AH,029H ERR10
OL CL,OL
PRll0 DL,DL AH,DL OX CRLf OX OH CH,OH PRll0
SAVE CURSOR POSITION INDICATE PRINTER 1 TO INDICATE PRINT CHAR IN PR 1NT THE CHARACTER RECALl CURSOR POS j T I ON
TEST FOR PR r NTER ERROR JUMP r F ERROR DETECTED ADVANCE TO NEXT COLUMN SEE I F AT END Of llN[
I F NOT PROCEED BACK TO COLUMN 0
[AHI"'O SAVE NEW CURSOR POS tTl ON LI NE fEED CARR I AGE RETURN
RECALL CURSOR PQS I T rON ADVANCE TO NEXT II NE
FIN I SHED? I F NOT CONTI NUE
[ALI
e
POP
OX
RECALL CURSOR POS I T ION
e
NOV
e
, NT
c
MOV
c
JMP
e ERR10:
e e
POP NOV
e
INT
e
NOV
e EXIT;
AH,2 'OH STATUS_BYTE,O SHORT EXIT
OX AH,2 'OH STATUSrBYTE,OFFH
TO I NOICATE CURSOR SET REQUEST CURSOR POSlT ION RESTORED INDICATE FINISHED EXIT THE ROUTINE
GET CURSOR POSITION TO REQUEST CURSOR SET CURSOR POSITION RESTORED I NO I CA TE ERROR
e
POP
c
POP
e
POP
e
POP
e
POP
e e
I RET PR I NT_SCREEN
e
OX
ex
8X AX OS
ENDP
RESTORE ALL THE REG I STERS USED
e ; ------ CAR~ I AGE RETURN, LINE fEED SUBROUT I NE
e
e CRLf
PROC
NEAR
e
XOR
OX, OX
PRINTER 0
e
XOR
AH,AH
WILL NOW SEND INITIAL CR, If
e
TO PRINTER
e e e
MOV
AL,ODH
'NT
17H
XOR
AH,AH
eR SEND THE LI HE fEED
NOW FOR THE CR
e
MOV
AL,OAH
LF
e
I NT
17H
SEND THE CARRIAGE RETURN
e
RET
e CRLf
ENDP
e
e
SUBTTL
CODE
ENDS ENO
CODE CGMN
PAGE, 120
SUBTTL MONOCHROME CHARACTER CENERA TOR
SECMENT PUBLI C
PUBLIC CCMN
LABEL BYTE
OB
OOOH, OOOH, OOOH, OOOH, OOOH, OOOH,OOOH, OOOH ; ~~p~~!~F~ri6TTERN
OB
OOOH,OOOH,OOOH,OOOH,OOOH,OOOH
; BOTTOM HALf 00
OB
000H,000H,07EH,OB1H,OA5H,081H,061H,OBDH TH_01
OB
099H,081H,07EH,000H,000H,000H
, BT 01
DB
000H,OOOH.07£H,OFfH,OOBH,OHH,OfFH,OC3H ; TH::::02
OB
0£7H,OFFH,07EH,000H,000H,000H
, BT_02
08
000H,000H,OOOH,06CH,OFEH,OFEH,OFEH,OfEH ; TH_03
DB
07CH.036H,OlOH,OOOH,OOOH,OOOH
; BT 03
DB
000H,000H,OOOH,010H,038H,07CH,OfEH,01CH ; TH=04
DB
036H,010H,000H,000H,000H,000H
BT 04
DB
OOOH, OOOH, 018H, 03CH, 03CH, O£7H, onH, OE7H ; TH::::05
08
018H,016H,03CH,000H,000H,000H
, Bl_05
OB
OOOH, OOOH,016H, 03CH, 07EH, OFfH,OffH, 01EH ; TH_06
DB
018H,018H,03CH,OOOH,000H,OOOH
, 6T 06
OB
OOOH,000H,OOOH,OOOH,000H,018H,03CH,03CH ; TH::::07
OB
016H,000H,000H,000H,000H,000H
8T 01
DB
OFFH,OffH,OFFH,OFFH,OFFH,OE7H,OC3H,OC3H ; TH=08
DB
OE:7H,OFfH,OFfH,OfFH,OfFH,OFFH
· 81 08
OB
OOOH,OOOH,000H,000H,03CH.066H,042H,042H ; TH=09
DB
066H,03CH,000H,000H,000H,000H
8T 09
06
OfFH,OfFH,OfFH, OFFH,OC3H, 099H, OBOH, OBOH TH,=,OA
06
099H,OC3H,OFFH,OFFH,OffH,OfFH
BT OA
DB
OOOH,OOOH, 01 EH, OOEH, 01AH, 032H, 078H, OCCH TH::::OB
DB
OCCH, aCCH, 078H, OOOH, OOOH, OOOH
; BT_OB
DB
000H,000H,03CH,066H,066H,066H,03CH,018H ; TH_OC
DB
07EH,018H,016H,000H,000H,OOOH
, BT DC
DB
OOOH,000H,03FH,033H,03fH,030H,030H,030H ; TH=OD
DB
010H,OFOH,OEOH,000H,000H,OOOH
6T 00
DB
OOOH, OOOH, 07FH, 063H, 07FH, 063H, 063H, 063H TH::::OE
DB
067H,OE7H,OE6H,OCOH,OOOH,000H
, BT_OE
08
000H,000H,016H,018H,00BH,03CH,OE7H,03CH ; TH_Of
OB
008H, 018H,018H, OOOH, OOOH, OOOH
000H,OOOH,080H,OCOH,OEOH,OF8H,OfEH.Of6H; TH_10
DB
OEOH,OCQH,080H,000H,OOOH,OOOH
8T 10
DB
OOOH,OOOH, 002H, 006H, OOEH, 03£H, OF[H, 03EH TH::::11
DB
OOEH, 006H, 002H,000H, OOOH,OOOH
, BT _11
DB
000H,000H,018H,03CH,07EH,01SH,016H,018H ; TH_12
DB
07EH,03CH,01SH,OOOH,000H,000H
; BT_'2
DB
000H,000H,066H,066H,066H,066H,066H,066H ; TH-13
August 2, 1984
IBM Enhanced Graphics Adapter 153
0112 0118
0120 0126
012E 0134
013C 0142
014A 0150
0158 015E
0166 016c
0114 OHA
0182 0188
0190 0196
019E 01A4
01AC 01B2
alBA
66 66
00 66 66 00 00 00 0000 7F DB DB DB 78 lB lB 16 lB 00 00 00
00 7C C6 60 38 6C c6 C6 6C 38 OC C6 1C 00 00 00 00 00 00 00 00 00 FE FE FE 00 00 00 00 00 18 3C 7E 18 18 18 7E 3C 18 7E 00 00 00 00 18 3C 7E 18 18 18 16 18 18 00 00 00 00 00 18 18 18 18 18 18 7E 3C 18 00 00 00 00 00 00 00 18 OC FE OC 18 00 00 00 00 00 00 00 00 00 30 60 FE 60 30 00 00 00 00 00 00 00 00 00 00 CO CO CO FE 00 00 00 00 00 00 00 00 00 28 6C
FE 6C 28 00 00 00 00 00 00 00 00 10 38 38 7C 7C FE FE 00 00 00 00 00 00 00 FE FE 7C
7C 38 38 10 00 00 00 00
01GO
01CS OlCE
0106 010C
01E4 OlEA
01F2 01F8
0200 0206
020E 0214
021C 02"22
02?A 02]0
0238 023E
0246 024C
0254 025A
0262 0268
0210 0276
027E 0284
028C 0292
029A
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 18 3C 3C 3C 18 18 00 18 18 00 00 00
00 66 66 66 24 00 00 00 000000000000
00 00 6C 6C FE 6C 6C 6C FE 6C 6C 00 00 00 1818 1C C6 C2 CO
7C 06 86 C6 7C 18 18 00 00 00 00 00 C2 C6
ac 18 30 66 C6 00 00 00 00 00 38 6C 6C 38 76 DC CC CC 76 00 00 00 00 30 30 30 60 00 00 00 00 00 00 00 00 00 00 00 OC 18 30 30
30 30 30 18 OC 00 00 00 00 00 30 18 OC OC OC DC OC 18 30 00 00 00 00 00 00 00 66 3C
H 3C 66 00 00 00 00 00 00 00 00 00 18 18 7E 18
18 00 00 00 00 00 00 00 00 00 00 00 00 00 18 18 18 30 00 00 00 00 00 00 00 00 FE 00 00 00 00 00 00 00 00 00 00 UO 00 00 00 00 00 18 18 00 00 00 00 00 02 06 OC 18 30 60 CO 80 00 00 00 00
O2AO
02A8 02AE
0286 028C
02C4 02GA
0202 0208
02EO 02E6
02EE 02F4
02FC 0302
030A 0310
0318 031E
0326 onc
0334 OBA
0342 0348
00 00 7C C6 CE DE F6 E6 C6 C6 7C 00 00 00 00 00 18 38 78 18 18 18 18 18 7[ 00 00 00 00 00 7C C6 06 OC 18 30 60 c6 FE 00 00 00 00 00 7C C6 06 06 3C 06 06 C6 7C 00 00 00 00 00 oc lC 3C 6C CC FE OC OC 1E 00 00 00
00 00 FE CO CO CO FC 06 06 C6 7C 00 00 00 00 00 38 60 CO CO
FC C6 C6 C6 7C 00 00 00 00 00 FE C6 06 DC 18 30 30 30 30 00 00 00 0000 7C C6 C6 C6 7C C6 c6 C6 7C 00 00 00 0000 7C C6 C6 C6 7E 06 06 OC 78 00 00 00 00 00 00 18 18 00 00 00 18 18 00 00 00 00 00 00 00 18 18 00 00 00 18 18 30 00 00 00 00 00 06 OC 18 30
60 30
66 67 68 69 70 71 72
H 74 75 76 77 78 79 80 81 82 83
8a4s
86 87 88 89 90
9' 92
"94
95 96 97 98 99 100
10' 102 103
'04 '05 '06 107 108
,,,109
110
112 113 114 115
,,,116
117
119
'20 '21 122 123 124 125
'26 '27 '28 129
11330'
132 133 134 135
1m36
138
1'43.9
'41
'42 '43 144 ,"5 146 147 148
'49 150 151 152
,,,153
154
156 157 158 159 16.
16' '62 163 164 165 16.
'".87
~69
170 171 172 173 174 175 17' 177 178 179 18. 181 182 183 184 185 18' 187
188 189 19. 191
DB
000H,066H,066H,OOOH,OOOH,OOOH
, BT_'3
DB
000H,OOOH,07FH,OOBH,OOBH,OOBH,07BH,01BH ; TH_14
DB
01 BH, 01 BH, 01BH, OOOH, OOOH, OOOH
BT_li1
DB
OOOH, 07CH, OC6H, 060H, 038H, 06CH, OC6H, OC6H TH_'5
DB
06CH,038H,00CH,OC6H,07CH,000H
, BT_1S
DB
OOOH,OOOH,OOOH,OOOH,OOOH,OOOH,OOOH,OOOH ; TH_16
DB
OFEH,OFEH,OFEH,OOOH,OOOH,OOOH
BT 16
DB
OOOH, OOOH, 018H, 03CH, 07EH ,018H, 018H, 018H TH=,7
DB
07EH,03CH,018H,07[H,000H,000H
, 8T_17
DB
000H,000H,018H,03CH,07EH,018H,018H,018H ; TH_18
DB
018H,018H,018H,OOOH,OOOH,OOOH
, aT 18
DB
OOOH,OOOH,018H,018H,018H,018H,018H,018H ; TH='9
DB
07EH, 03CH, 018H, OOOH,OOOH, OOOH
BT_19
08
OOOH, OOOH, OOOH, 000H,018H, OOCH, OFEH, OOCH TH_' A
DB
018H,OOOH,000H,OOOH,000H,OOOH
; BT_1A
DB
000H,OOOH,000H,000H,030H,060H,OFEH,060H ; TH_18
08 DB
g~g~:ggg~: ggg~: ggg~; ggg~:ggg~, OCOH, OCOH ~~=~~
08
OFEH,OOOH,OOOH,OOOH,OOOH,OOOH
; 8T_1C
08
000H,OOOH,000H,OOOH,028H,06CH,OFEH,06CH i TH_1D
08 DB
g5~~:ggg~: ggg~:g~g~: g~g~: g~~~, 07CH, 07CH ~ ~~=~~
DB
OFEH, 0 FEH, OOOH, OOOH, OOOH, OOOH
8T_1 E
DB
OOOH, OOOH,OOOH, OFEH, OFEH, 07CH, 07CH, 038H TH_1 F
DB
038H, 010H, OOOH,OOOH, OOOH, OOOH
6T_, F
DB
OOOH,OOOH, OOOH,OOOH, OOOH, OOOH, OOOH, OOOH ; TH_20 SP
DB
OOOH,OOOH,OOOH,OOOH,OOOH,OOOH
BT_20 SP
DB
OOOH, OOOH, 01 8H, 03CH,03CH, 03CH, 018H, 01 8H TH_21 1
DB
000H,018H,018H,OOOH,000H,OOOH
; 8T_21 !
DB
000H,066H,066H,066H,024H,OOOH,OOOH,OOOH ; TH_22 "
DB
DB
ggg~: ggg~: ggg~: g~g~: gn~: g~g~, 06CH, 06CH ~ ~~=~~ ;
DB
08
g~~~:g~~~:g~g~;gg~~:ggg~:ggg~~07CH,006H ; ~~=~t ~
DB
DB
ggg~:gg~~:g~g~:gbg~:g~~~:gg~~,OOCH,0'8H ; ~~=~~ fs'
08
030H,066H,OC6H,OOOH,OOOH,OOOH
8T 25 '%'
DB
OOOH, OOOH, 038H, 06CH, 06CH, 038H, 076H, ODCH TH=26 &:
DB
OCCH,OCCH,076H,OOUH,000H,000H
; BT 26 iii:
08
OOOH, 030H, 030H,030K, 060H, OOOH, OOOH, OOOH ; TH=27 I
DB
OOOH, OOOH, OOOH,OOOH, OOOH. OOOH
BT 27
08
OOOH,OOOH,OOCH,018H,030H,030H,030H,030H TH_28 (
DB 08
g~g~; 86g~: ggg~: g~g~: ggg~: ggg~, OOCH, OOCH ; ~~=~~ ~
i DB
DB
ggg~; gbg~: g~g~:ggg~: g~~~;g~g~. OF FH, 03CH ~~=~: l
DB
066H,OOOH,OOOH,OOOH,OOOH,000H
, BT_2A *
DB
000H,OOOH,OOOH,OOOH,018H,018H,07EH,018H ; TH_2B +
DB
018H,OOOH,OOOH,OOOH,OOOH,OOOH
, BT_28 +
DB
OOOH,OOOH,OOOH,OOOH,OOOH,OOOH,OOOH,OOOH ; TH_2C
DB
018H,018H,018H,030H,OOOH,000H
IH 2C ,
DB
OOOH,OOOH,OOOH,OOOH,OOOH,OOOH,OFEH,OOOH TH=20
08
OOOH,OOOH,OOOH,OOOH,OOOH,OOOH
; 8T_20
DB
OOOH,OOOH,OooH,OOOH,OOOH,OOOH,OOOH,OOOH ; TH_2E ·
DB
000H,018H,018H,OOOH,000H,OOOH
; BT_2E ·
DB
OOOH,OOOH,002H.006H,OOCH,018H.030H,060H ; TH_2F /
DB
OCOH, 080H, OOOH, OOOH, OOOH, OOOH
DB
000H,OOOH,07CH,OC6H,OCEH,OOEH,OF6H,OE6H ; TH_30 0
DB
OC6H, OC6H, 07CH,OOOH, OOOH, OOOH
; 8T_30 0
DB
000H,000H,018H,038H,078H,018H,018H,018H ; TH_31 1
08
018H,018H,07[H,OOOH,000H,OOOH
8T_31 1
08
000H,OOOH,07CH,OC6H,006H,OOCH,018H,030H TH_32 2
DB
DB
ggg~; gg~~: g;~~:gg~~: gg~~:gg~~, 03CH, 006H ; n=~~ ~
DB
006H,OC6H,07CH,OOOH,OOOH,OOOH
8T_33 3
08
OOOH,OOOH,OOCH,01CH,03CH,06CH,OCCH,OfEH TH_344
08 DB
ggg~:ggg~;g~~~;ggg~:ggg~;ggg~,OFCH,006H ~ ~~=i~ ~
DB
006H,OC6H,01CH,OOOH,OOOH,OOOH
; 8T_35 5
DB
OOOH,000H,038H.060H,OCOH,OCOH.OFCH,OC6H ; TH_36 6
08
OC6H,OC6H,07CH,OOOH,OOOH,OOQH
; 8T_36 6
08
000H,OOOH,OFEH,OC6H,006H.00CH,018H,030H ; TH_37 7
DB
DB
g~g~:g~~~:g~g~:gg~~:gg~~:gg~~,07CH,OC6H i ~~3~ J
08 DB
gg~~: gg~~: gig~; gg~~:gg~~: gg~~, 07EH, 006H ; ~~=i~ ~
DB
006H,OOCH,078H,OOOH,000H,OOOH
, BT_39 9
08
000H,000H,OOOH,018H,018H,OOOH,000H,000H ; TH_3A :
DB
018H,018H,OOOH,OOOH,OOOH,OOOH
, 8T 3A :
DB
000H,OOOH,OOOH,018H,018H,OOOH,OOOH,000H ; TH=38 ;
DB
018H,018H,030H,OOOH,000H,000H
; 8T_3B ,
DB
OOOH,OOOH,006H,OOCH,018H,030H,060H,030H ; TH_3C <
.r"'\
154 IBM Enhanced Graphics Adapter
August 2, 1984
~
~ ~
0350 0356
035E 0364
036C 0372
037A
18 DC 06 00 00 00 00 00 00 00 00 7E 00 00 7£ 00 00 00 00 00 00 00 60 30 18 DC 06 OC 18 30 60 00 00 00 00 00 7C C6 C6 DC
18 18 00 18 18 00 00 00
0380
0388 038E
0396 039C
03A4 03M
0382 0388
03CO 03C6
03CE 0304
a30C 03E2
03EA 03fO
03F8 03FE
0406 040C
0414 041A
0422 0428
0430 0436
043E 0444
044C 0452
045A
00 00 7C C6 C6 DE DE OE DC CO 7C 00 00 00 00 00 10 38 6C C6 C6 FE c6 c6 c6 00 00 00 00 00 FC 66 66 66 7C 66 66 66 FC 00 00 00 00 00 3C 66 C2 CO CO CO C2 66 3C 00 00 00 00 00 F8 6C 66 66 66 66 66 6c F8 DO DO 00
00 00 FE666266 78 68 62 66 FE 00 00 00 00 00 FE 66 62 68
78 68 60 60 fO 00 00 00 00 00 3C 66 C2 co CO DE c6 66 3A 00 00 00 00 00 C6 C6 C6 C6
,.FE C6
C6 c6 C6 00 00 00 00 00 3C 16 18 18 18 18
18 3C 00 00 00 00 00 lEOCOCOC DC DC CC CC 78 00 00 00 00 00 E6 66 6C 6c
78 6C 6C 66 E6 00 00 00 00 00 fO 60 60 60 60 60 62 66 FE 00 00 00 00 00 C6 H FE FE 06 c6 C6 C6 C6 00 00 00 00 00 c6 E6 F6 FE DE CE C6 C6 C6 00 00 00 00 00 38 6C C6 C6 C6 C6 C6 6C 38 00 00 00
0460
0468 046E
0476 047C
0484 048A
0492 0498
04AO 04A6
04AE 0484
04BC 04C2
04CA 0400
0408 04DE
04E6 04EC
04F4 04FA
0502 0508
0510 0516
051 E 0524
052C 0532
053A
00 00 FC 66 66 66 7C 60 60 60 FO 00 00 00 00 00 7e C6 C6 C6
C6 06 DE 7C DC DE 00 00 00 00 Fe 66 66 66 7C 6C 66 66 E6 00 00 00
,.00 00 7C C6 C6 60
38 DC C6 c6 7C 00 00 00 00 00 7E 7E 5A 18
1B 18 18 3C 00 00 00 00 00 C6 C6 C6 C6 C6 C6 C6 C6 7C 00 00 00 00 00 C6 C6 G6 C6 C6 C6 6C 38 10000000
00 00 C6 C6 C6 C6 06 06 FE 7C 6c 00 00 00 00 00 C6 C6 6C 38
38 38
,. 6C C6 C6 00 00 00
00 00 66 66 66 66 3C 16 18 18 3C 00 00 00 00 00 FE C6 8C 30 60 C2 C6 FE 00 00 00 00 00 3C 30 30 30 30 30 30 30 3C 00 00 00 00 00 80 CO EO 70 3. 1C DE 06 02 00 00 00 00 00 3C DC OC DC DC DC DC DC 3C 00 00 00 10 38 6C C6 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 FF 00
0540
0548 054E
OSS6 OSSC
0564 056A
0572 0578
0580 0586
30 30 18000000 00 00 00 00 00 00 00 00 00 00 00 00 00 78 ac 7C CC CC 76 00 00 00 00 00 EO 60 60 78 6C 66 66 66 7C 00 00 00 00 00 00 00 00 7C C6 CO
co C6 7C 00 00 00 00 00 lC DC DC 3C 6C CC CC CC 76 00 00 00 00 00 00 00 00 7C C6 F£
192 193 19.
195 196 197 198 199
200 201
202 203
20' 205 206 207 208 209 210 211 212 213
214 215 216 217 21B 219 220 221 222
223
22' 225 226 227 228 229 230 231 232
233 234 235 236 237 23B 239 2.0
2" 2'2 243
2" 245
2.6 2.7
2'B
2'9 250
251 252 253 254 255 256 257 25B 259 260 261 262 263 26.
265 266 267 26. 269 270 271 272 273
27' 275 276 277 27B 279 2BO 281 282 283 28. 265 286 287 28B 289 290 291 292 293
29' 295 296 297 298 299
300 301 302 303
3D' 305 306 307
308 309 310 311 312 313
31' 315 316
311
DB
01BH, OOCH, 006H,OOOH, OOOH, OOOH
8T 3C <:
DB
OOOH, OOOH, OOOH, OOOH, ODOH, 07EH, OOOH, OOOH TH::::30 '"
DB
07EH, OOOH, OOOH. OOOH, OOOH, OOOH
ST 30 ""
DB
OOOH,OOOH, 060H, 030H,018H, OOCH, 006H, OOCH TH=3E >
08
018H, 030H, 060H, OOOH, OOOH, OOOH
8T 3E >
08
OOOH, OOOH, 07CH, OC6H, OC6H, OOCH, OlBH, 018H ; TH=3F ?
DB
OOOH, 018H, 018H, OOOH, OOOH, OOOH
BT_3F ?
DB
OOOH, OOOH, 07CH, OC6H, OC6H, ODEH,OO[H,OOEH ; TH_40 @
DB
OOCH, OCOH, 07CH, OOOH, OOOH, OOOH
BT 40 @
DB
OOOH, OOOH, 01 OH, 038H, 06CH, OC6H, OC6H, OFEH TH=41 A
DB
OC6H, OC6H, OC6H, OOOH, OOOH, OOOH
; 8T 41 A
DB
ooaH, OOOH, OFCH, 066H. 066H, 066H, 07CH, 066H ; TH=42 8
DB
066H. 066H, OFCH, OOOH, OOOH, OOOH
; ST_42 B
DB
OOOH, OOOH, a3CH, 066H, OC2H, OCOH, OCOH, OCOH TH_43 C
DB
OC2H, 066H, 03CH, OOOH, OOOH, OOOH
BT_43 C
DB
OOOH, OOOH, OF8H, 06CH. 066H, 066H, 066H, 066H ; TH .·44 0
DB
066H, 06CH, OF8H, OOOH, OOOH, OOOH
6T 44 0
OB
aOOH, OOOH, OfEH, 066H, 062H, 068H, 078H, 068H TH::45 E
DB
062H, 066H, OFEH, OOOH, OOOH. OOOH
8T_45 E
DB
OOOH, OOOH, OFEH, 066H, 062H, 068H, 078H, 068H TH_46 F
DB
060H, 060H, OfOH, OOOH, OOOH, aOOH
BT 46 F
DB
OOOH, OOOH, 03CH, 066H, OC2H, OCOH, OCOH,ODEH TH::::47 G
DB
OC6H, 066H, 03AH, OOOH, OOOH, OOOH
8T 47 G
DB
OOOH, OOOH, OC6H, OC6H, OC6H, OC6H. OFEH, OC6H TH::::48 H
DB
OC6H, OC6H, OC6H. OOOH, OOOH, OOOH
6T_48 H
DB
OOOH, OOOH, 03CH, 018H, 018H, 018H, 018H, 018H TH_49 I
DB
016H, 018H, 03CH, OOOH, OOOH, OOOH
8T 49 I
DB
OOOH, OOOH, 01 EH, OOCH, OOCH, OOCH, OOCH, OOCH TH::::4A J
DB
OCCH, OCCH, 078H, OOOH, OOOH, OOOH
BT 4A J
DB
OOOH, OOOH, OE6H, 066H, 06CH, 06CH, 078H, 06CH TH::::4B K
DB
06CH, 066H, OE6H, OOOH, OOOH, OOOH
BT_4B K
DB
OOOH, OOOH, OfOH, 060H, 060H, 060H, 060H, 060H TH_4C L
DB
062H, 066H, OFEH,OOOH, OOOH, aOOH
BT_4C L
DB
OOOH, OOOH, OC6H, OEEH, OFEH, OFEH, 006H, OC6H TH_4D M
DB
OC6H, OC6H, OC6H, OOOH, OOOH, OOOH
BT 40 M
DB
OOOH, OOOH, OC6H, OE6H, OF6H, OFEH, OOEH, OCEH TH::::4E N
DB
OC6H, OC6H, OC6H, OOOH, OOOH, OOOH
8T 4E N
DB
OOOH, OOOH, 038H, 06CH, OC6H, OC6H. OC6H, OC6H TH::::4f 0
DB
OC6H, 06CH, 038H, OOOH, OOOH, OOOH
8T_4F 0
DB
OOOH, OOOH, OFCH, 066H, 066H, 066H, 07CH, 060H ; TH_50 p
DB
060H, 060H, OFOH, OOOH, OOOH, OOOH
8T 50 P
DB
OOOH, OOOH, 07CH, OC6H, OC6H, OC6H, OC6H, 006H TH-51 Q
DB
OOEH, 07CH, OOCH, OOEH, OOOH, OOOH
BT_51 Q
DB
OOOH, OOOH, OFCH, 066H, 066H, 066H, 07CH, 06CH TH_52 R
DB
066H, 066H, OE6H, OOOH, OOOH, OOOH
8T_52 R
DB
OOOH,OOOH, 07CH, OC6H, OC6H, 060H, 038H, OOCH TH_53 5
DB
OC6H, OC6H, 07CH. OOOH, OOOH, OOOH
6T 53 S
DB
OOOH, OOOH, 07EH, 07EH,05AH, 0 18H, 018H, 018H TH::::54 T
DB
018H, 018H, 03CH,OOOH, OOOH, OOOH
BT _54 T
DB
OOOH, OOOH, OC6H, OC6H, OC6H, OC6H, OC6H, OC6H TH_55 U
DB
OC6H, OC6H, 07CH, OOOH, OOOH, OOOH
8T_55 U
DB
OOOH, OOOH, OC6H, OC6H, OC6H, OC6H, OC6H, OC6H TH_56 V
DB
06CH, 038H, 010H, OOOH, OOOH, OOOH
8T _56 V
08
OOOH, OOOH, OC6H, OC6H, OC6H, OC6H, OD6H, 006H TH ·.57 W
DB
OFEH, 07CH, 06CH,000H, OOOH, OOOH
BT_57 W
DB
OOOH, OOOH, OC6H,OC6t-1, 06CH, 038H,038H, 038H TH_58 X
DB
06CH, OC6H, OC6H, OOOH, OOOH, OOOH
8T_58 X
DB
OOOH, OOOH, 066H, 066H, 066H, 066H, 03CH, 018H TH_59 Y
DB
018H, 018H, 03CH, OOOH, OOOH, OOOH
; 8T 59 Y
DB
OOOH, OOOH, OFEH, OC6H, 08CH, 018H, 030H, 060H ; TH::::SA Z
DB
OC2H, OC6H, OFEH,OOOH, OOOH, OOOH
B1 _SA Z
DB
OOOH, OOOH, 03CH,030H, 030H, 030H, 030H, 030H TH_5B [
DB
030H, 030H, 03CH, OOOH, OOOH, OOOH
BT_5B [
DB
OOOH, OOOH, oaOH, OCOH, OEOH, 070H,038H, 01eH TH_5C
DB
OOEH, 006H, 002H, OOOH, OOOH, OOOH
BT_SC
DB
OOOH, OOOH, 03CH, OOCH, OOCH, OOCH, OOCH, OOCH TH_5D
DB
OOCH, OOCH, 03CH,000H, OOOH, OOOH
; BT_SO
DB
010H, 038H, 06CH,OC6H, OOOH, OOOH, OOOH, OOOH TH_SE
DB
OOOH, OOOH, OOOH, OOOH, OOOH, OOOH
8T_5E
DB
OOOH, OOOH, OOOH, OOOH ,OOOH, OOOH,OOOH, aOOH TH_5f _
DB
OOOH, OOOH, OOOH. OOOH,OFFH, OOOH
8T_SF
DB
030H, 030H, 018H. OOOH, OOOH, ooaH. OOOH, OOOH ; TH_60
08
OOOH, OOOH, OOOH, OOOH, OOOH, aOOH
8T_60
DB
OOOH, OOOH, OOOH, OOOH, OOOH, 078H,oaCH, 07CH TH_61 LOWER_CASE A
DB
OCCH, OCCH, 076H,OOOH, OOOH, OOOH
8T_61 LOWER_CASE A
DB
OOOH, OOOH, OEOH,060H, 060H, 078H, 06CH, 066H TH_62 L.C. 8
DB
066H, 066H, 07CH, OOOH, OOOH, OOOH
BT 62 L.C.
DB
OOOH, OOOH, OOOH, OOOH, OOOH, 07CH, OC6H, OCOH TH=63 L.C.
DB
OCOH, OC6H, 07CH, aOOH, OOOH, OOOH
8T_6.3 L.C.
DB
OOOH, OOOH, 01 CH, OOCH, OOCH, 03CH. 06CH, OCCH TH_64 L.C.
DB
OCCH, OCCH, 076H,OOOH, OOOH, OOOH
8T_64 L.C.
DB
OOOH, OOOH, OOOH, OOOH, OOOH, 07CH, OC6H, OF EH TH_65 L.C.
August 2, 1984
IBM Enhanced Graphics Adapter 155
058E 0594
059C 05A2
05AA 05BO
0588 058E
05C6 05CC
0504 05DA
05E2 05E8
05fO 05f6
05H 0604
060C 0612
061A
CO C6 7C 00 00 00 00 00 38 6c 64 60 fO 60
60 60 fO 00 00 00 00 00 00 00 00 76 CC CC
CC 7C OC CC 78 00 00 00 EO 60 60 6C
76 66 66 66 E6 00 00 00 00 00 18 18 00 38 18 18
18 18 3C 00 00 00
00 00 06 06 00 DE 06 06 06 06 66 66 3C 00 00 00 EO 60 60 66 6C 78
6C 66 E6 00 00 00 00 00 38 18 18 18 18 18 18 18 3C 00 00 00
00 00 00 00 00 EC "06 06 06 C6 00 00 00 00 00 00 00 00 DC 66 66 66 66 66 00 00 00 00 00 00 00 00 7C c6 C6 C6 C6 7C 00 00 00
0620
0628 062E
0636 063C
0644 064A
0652 0658
0660 0666
066E 06711
067C 0682
068A 0690
0698 069E
06A6 06AC
06B4 06BA
06C2 06C8
0600 0606
060E 06E4
06EC 06F2
06FA
00 00 00 00 00 DC 66 66 66 7C 60 60 FO 00 00 00 00 00 00 76 CC CC
CC 7C DC DC 1E 00
00 00 00 00 00 DC 76 66 60 60 fO 00 00 00 00 00 00 00 00 7C C6 70 1C C6 7C 00 00 00 00 00 10 30 30 fC 30 30 30 36 lC 00 00 00 00 00 00 00 00 CC CC CC
CC CC 76 00 00 00 00 00 00 00 00 66 66 66 66 3C 18 00 00 00 00 00 00 00 00 C6 C6 06 06 F[ 6C 00 00 00 00 00 00 00 00 C6 6c 38 38 6c C6 00 00 00 00 00 00 00 00 C6 C6 c6 C6 7E 06 DC f8 00 00 00 00 00 00 F[ CC 18 30 66 FE 00 00 00 00 00 DE 18 18 18 70 18 18 18 DE 00 00 00 00 00 18 18 18 18 00 18 18 18 18 00 00 00 00 00 70 18 18 18 O[ 18 18 18 70 00 00 00
00 00 76 DC 00 00 00 00 00 00 00 00 00 00 00 00 00 00 10 38 6C C6 C6 FE 00 00 00 00
0700
0708 070E
0716 071C
0724 D72A
0732 0738
0740 0746
074E 0754
075C 0762
076A 0770
0778 077E
0786 078C
0794 079A
07A2 07A8
07BO 0786
07BE 07C4
07CC
00 00 3C 66 C2 CO CO C2 66 3C DC 06 7C 00
00 00 CC Cc 00 CC CC cc CC CC 76 00 00 00 00 DC 18 30 00 7C C6 FE
CO C6 7C 00 00 00 00 10 38 6C 00 78 OC 7C CC cc 76 00 00 00 00 00 CC CC 00 78 DC 7C CC CC 7f, 00 00 00 00 60 30 18 00 78 DC 7C CC CC 76 00 00 00 00 38 6C 38 00 78 DC 7C cc CC 76 00 00 DO 00 00 00 00 3C 66 60 66 3C DC 06 3C 00 00 00 10 38 6C 00 7C c6 F[ CO C6 7C 00 00 00 00 00 CC CC 00 7C C6 FE co C6 7C 00 00 00 00 60 30 18 00 7C C6 f E
co C6 7C 00 00 00 00 00 66 66 00 38 18 18 18 18 3C 00 00 00 00 18 3C 66 00 38
18 18 18 18 3C 00 00 00 00 60 30 18 00 38 18 18 18 18 3C 00 00 00 00 C6 C6 10 38 6C C6 C6 f E C6 C6 00 00 00
31.
319 320 321
322
323
324
325
326
327
32. 329
330 331 332
333 334 335
336 337
33' 339 340 341 342 343 344 3115 346 347
34. 349 350 351 35< 353
354 355 356 357 356 359
360
361
362
363 364 365 366 367 366 369 370 371 372
373 374
375 376
377
376 379 360 361 362 363 364 365
366 367 366 369 390 391 392 393 394 395 396 397
39' 399 400 401
402 403
404 405
406 1107
406
409 410 411
412 413 414
415 416 417
41' 1119
420 421
422 423
424
425
426 427 428 429 430
431 1132
433 434 435
436 437
43. 439 440 441 442 1143
06 06
06 06
DB
DB
DB
DB
DB
DB
DB
DB
D0B.
00..
D0B.
06 06
00.. 000...
0.
0.
DB
DB 0.
00..
0000....
0.
DB
00..
DB 0.
DB
DB
0.DB
0.
DB
DB
DB
DB
DB
0D0B..
D.
DB
DB
DB
DB
DB
DB
0DB.
D.
DB
DB
DB
DB
DB
DB
0.
DB
DB
DB
DB
D.
DB
DB
DB
DB
D.
D.
OCOH,OC6H,07CH,000H,000H,000H OOOH, OOOH, 038H, 06CH, 064H, 060H, OfOH, 060H
8T 65 l.C. E
TH=66 L.C. f
060H,060H,OfOH,000H,OOOH,000H
BT_66 l.C. f
OOOH,000H,000H,000H,OOOH,076H,OCCH,OCCH ; TH_67 L.C. a
OCCH,07CH,00CH,OCCH,078H,000H OOOH,OOOH, OEOH, 060H, 060H, 06CH, 076H, 066H
BT_67 L.C. TH_68 L. C.
066H,066H,0[6H,000H,000H,000H OOOH, 000H,01-8H, 018H, OOOH, 038H, 018H, 018H
8T_68 L.C. TH_69 L. C.
018H,018H,03CH,OOOH,OOOH,OOOH
· 8T_69 l.C. I
000H,OOOH,006H,006H,000H,OOEH,006H,006H ; TH_6A l.C. J
006H,006H,066H,066H,03CH,000H
· BT_6A l.C. J
000H,OOOH,OEOH,060H,060H,066H,06CH.078H ; TH_6B L.C. K
06CH,066H,OE6H,000H,000H,OOOH OOOH, OOOH, 038H, 018H, 018H, 018H,O 18H, 018H
8T_6B L.C. TH_6C L. C.
018H,018H,03CH,000H,OOOH,000H OOOH, OOOH, OOOH, OOOH, OOOH, OECH, 0 FEH, OD6H
BT_6C L.C. TH_60 L. C.
OD6H,OD6H,OC6H,OOOH,OOOH,OOOH OOOH, OOOH, OOOH. OOOH,OOOH, 00CH,066H,066H
8T_60 L.C, TH_6E L. C.
066H,066H,066H,000H,OOOH,000H
, BT_6E L.C.
000H,OOOH,OOOH,OOOH,OOOH,07CH,OC6H,OC6H ; TH_6f L.C.
OC6H, OC6H, 07CH, OOOH, OOOH,OOOH
000H,000H,OOOH,OOOH,000H,ODCH,066H,066H ; TH_70 L,C. P
066H,07CH,060H,060H,OFOH,OOOH OOOH, OOOH, OOOH, OOOH, OOOH, 076H, OCCH, OCCH
BT_70 L.C. TH_71 L. C.
OCCH,07CH,OOCH,OOCH.01[H,OOOH OOOH, OOOH, OOOH,OOOH, OOOH, OOCH, 076H,066H
BT_71 L.C. TH_72 L. C.
060H,060H,OFOH,OOOH,OOOH,000H
; 8T_72 L.C.
000H,OOOH,OOOH.000H,OOOH,07CH,OC6H,070H ; TH_73 L.C.
01CH,OC6H,07CH,OOOH,000H,OOOH OOOH, OOOH, 01 OH, 030H, 030H, OfCH, 030H, 030H
8T_73 L.C. TH_14 L. C.
030H,036H,OlCH,OOOH,OOOH,OOOH OOOH, OOOH, OOOH, OOOH, OOOH, OCCH, OCCH, OCCH
8T_74 l.C. TH_75 L. C.
OCCH,OCCH,076H,000H,OOOH,OOOH OOOH, OOOH, OOOH, OOOH,OOOH, 066H, 066H,066H
8T_75 L.C, TH." 76 L. C.
066H,03CH,018H.000H,OOOH,OOOH
; BT_76 L.C. V
000H,OOOH,OOOH,OOOH,OOOH,OC6H,OC6H,006H ; TH_77 L.C, W
OD6H,OFEH,06CH,OOOH,OOOH,OOOH
; BT_77 L.C.
OOOH,OOOH, OOOH, OOOH, OOOH, OC6H, 06CH, 038H TH_78 L. C.
038H,06CH,OC6H,000H,OOOH,OOOH OOOH, OOOH,OOOH, OOOH, OOOH, OC6H, OC6H,oc6H
BT_78 L.C. TH_79 l. C.
OC6H,07EH,006H.OOCH,Of8H,000H
; 8T_79 L,C. Y
OOOH,OOOH,OOOH,OOOH,OOOH,OFEH,OCCH,018H ; TH_7A L.C. Z
ggg~:ggg~:g~~~:g~g~:g~~~:g~~~,070H,018H i ~~3: t'~RA~
018H,018H,OOEH,OOOH,OOOH,OOOH 000H,000H,018H,018H,018H,018H,000H,018H
BT 78 L BRAK TH=7C,
018H,018H,018H,000H,OOOH,OOOH
· BT 1c I
000H,OOOH,070H,018H,018H,018H,OO[H,018H ; TH=70 R BRAK
018H,018H,070H,OOOH,OOOH,OOOH
, BT_70 R BRAK
000H,OOOH,076H,ODCH,OOOH,OOOH,OOOH,OOOH ; TH_7E TILDE
OOOH,OOOH,OOOH,OOOH,OOOH,OOOH
; BT 7[ TILDE
000H,OOOH,OOOH,OOOH,OlOH,038H,06CH,OC6H ; TH=7F DELTA
OC6H, OF[H, OOOH. OOOH,OOOH, OOOH
000H,000H,03CH,066H,OC2H,OCOH,OCOH,OC2H ; TH_80
066H,03CH,00CH,006H,07CH,OOOH
, BT_80
OOOH,OOOH,OCCH,OCCH,OOOH,OCCH,OCCH,OCCH ; TH_81
OCCH,OCCH,076H,OOOH,OOOH,OOOH
; BT 81
000H,OOCH,018H,030H,OOOH,07CH,OC6H,OfEH ; TH=82
OCOH,OC6H,07CH,OOOH,OOOH,OOOH
; 8T_82
000H,010H,038H,06CH,OOOH,078H,OOCH.07CH ; TH_83
OCCH,OCCH,076H,OOOH,OOOH,OOOH OOOH, OOOH, OCCH, OCCH, 000H,078H, OOCH, 07CH
6T 83 TH:84
OCCH, OCCH,076H, OOOH, OOOH, OOOH OOOH, 060H,030H, 0 18H, OOOH,078H, OOCH, 07CH
6T_84 TH_85
OCCH,OCCH,016H,OOOH,000H,OOOH
, BT_85
000H,038H,06CH,038H.000H,078H,OOCH,07CH ; TH_86
ggg~:ggg~:gb~~:ggg~:g~g~:g~g~,060H,066H ~ ~~=~~
03CH, OOCH, 006H, 03CH,OOOH, OOOH OOOH, 01 OH,038H, 06CH, oaOH, 07CH,OC6H, OfEH
BT_87 TH_88
OCOH, OC6H, 07CH, OOOH. OOOH,OOOH OOOH, OOOH, OCCH, OCCH, OOOH, 07CH,OC6H, OF[H
BT_88 TH_89
OCOH,OC6H,07CH,OOOH,OOOH,000H
; 8T 89
000H,060H,030H,018H,OOOH,07CH,OC6H,OfEH ; TH::::8A
ggg~: ggg~: g~~~;ggg~:ggg~: g~~~,018H.018H ~~=~:
018H,018H,03CH,OOOH.OOOH,OOOH
; BT_8B
000H,018H,03CH,066H,OOOH,038H,018H,018H ; TH_BC
o1SH, 018H, 03CH, OOOH, OOOH, OOOH
OOOH, 060H, 030H, 018H, 000H,038H,OlBH, 018H
BT_8C TH_80
g6g~: g~~~:g~~: g~g~: g~~~: g~g~,OC6H, OC6H ~~=g~
OfEH, OC6H, OC6H,OOOH,OOOH, OOOH
6T _8E
156 IBM Enhanced Graphics Adapter
August 2, 1984
OTD2 38 6C 38 00 38 5C
444
C6 C6
445
07DA FE C6 C6 00 00 00
440
447
on:o 18 30 60 00 FE 66
448
60 7C
449
07(8 60 66 FE 00 00 00
450
07EE 00 00 00 00 CC 76
451
36 7E:
452
07F6 08 08 6E 00 00 00
453
07FC 00 00 3[ 6C ce CC
454
FE CC
455
0804 CC CC CE 00 00 00
456
08DA 00 10 38 6C 00 7C
457
C6 e6
458
0812 e6 C6 7e 00 00 00
459
0818 00 00 C6 C6 00 7e
460
c6 C6
461
0820 C6 C6 7C 00 00 00
462
0826 00 60 30 18 00 7C
463
C6 C6
464
082E C6 C6 7e 00 00 00
465
0834 00 30 78 ee 00 CC
466
ce cc
467
D83C CC CC 76 00 00 00
468
0842 00 50 30 18 00 CC
469
cc ee
470
084A cc CC 76 00 00 00
471
0850 00 00 C6 C6 00 C6
472
c6 C6
473
0858 C6 7E 06 DC 78 00
474
085E 00 C6 C6 38 6C C6
475
C6 C6
476
0866 c6 6C 38 00 00 00
477
086C 00 C6 e6 00 C6 C6
47.
C6 C6
419
0874 C6 C6 7C 00 00 00
480
D87A 00 18 18 3C 66 60
481
60 66
482
0882 3e 18 18 00 00 00
483
0888 00 38 6C 64 60 FO
484
60 60
48'
0890 60 E6 FC 00 00 00
486
0896 00 00 66 66 3C 18
487
7E 18
488
089E 7E 18 18 00 00 00
489
08A4 00 F8 ee ee F8 C4
490
CC DE
491
08AC CC CC e6 00 00 00
492
08B2 000E1B181818
493
7E 18
494
08BA 18 18 18 08 70 00
49'
496
08CO 00 18 30 60 00 18
497
OC 7C
498
08C8 CC cc 76 00 00 00
499
08CE 00 DC 18 30 00 38
500
18 18
501
0806 18 18 3C 00 00 00
502
08DC 00 18 30 60 08 7C
503
C6 C6
504
08£4 C6 C6 7C 00 00 00
505
08EA 00 18 30 60 00 CC
500
CC CC
507
08F2 ee ce 76 00 00 00
508
08F8 00 00 76 DC 00 DC
509
66 66
510
0900 66 66 66 00 00 00
511
0906 76 DC 00 C6 E6 F6
512
FE DE
513
090£ CE c6 c6 00 00 00
514
0914 00 3C 6C 6e 3E 00
515
7E 00
516
091C 00 00 00 00 00 00
517
0922 00 38 6C 6C 38 00
518
7C 00
519
092A 00 00 00 00 00 00
520
0930 00 00 30 30 00 30
521
30 60
522
0938 C6 C6 7C 00 00 00
523
093E 00 00 00 00 00 00
524
FE CO
525
0946 CO CO 00 00 00 00
526
094C 00 00 00 00 00 00
527
FE 06
528
0954 06 06 00 00 00 00
529
095A 00 CO CO C6 CC DB
530
30 60
531
0962 DC 86 DC 18 3E: 00
532
0968 00 CO CO C6 CC 08
533
30 66
534
0970 CE 9E 3E 06 06 00
537
0976 00 00 18 18 00 18
536
18 3C
537
097E 3C 3C 18 00 00 00
538
0984 00 00 00 00 36 6c
539
08 6C
540
098C 36 00 00 00 00 00
541
0992 00 00 00 00 08 6C
542
36 6G
543
099A 08 00 00 00 00 00
544
545
09AO 11 44 11 44 11 44
546
11 44
547
09A8 11 44 11 44 11 44
548
09AE 55 AA 55 AA 55 AA
549
55 AA
550
09B6 55 AA 55 AA 55 AA
551
09BC DO 77 DO 77 DO 77
552
DO 77
553
09C4 DO 77 DO 77 DO 77
554
09CA 18 18 18 18 18 16
555
18 18
556
0902 18 18 18 18 18 18
557
09D8 18 18 18 18 18 18
558
18 F8
559
09[0 18 18 18 18 18 18
560
09(6 18 18 18 18 18 F8
561
18 F8
562
09EE 18 18 18 18 18 16
563
09f4 36 36 36 36 36 36
564
36 F6
565
09FC 36 36 36 36 36 36
566
OA02 00 00 00 00 00 00
567
00 FE
568
OAOA 36 36 36 36 36 36
569
08
038H, 06CH, 038H,OOOH, 038H, 06CH, OC6H, QC6H ; TH._8F
DB
OFEH, OC6H, OC6H, OOOH, OOOH, OOOH
DB
018H, 030H, 06QH,000H,OFEH, 066H, 060H,07CH ; TH_90
DB DB
g~g~: ggg~: g~~~; ggg~: ggg~: g~g~, 036H, 07EH ~~=~~
DB DB
ggg~:ggg~:g~~~:g~g~:ggg~:ggg~,oF£H,OeCH ~ ~~=~~
DB DB
ggg~:g~g~:g~~~:g~g~:ggg~:g~g~,OC6H,OC6H ~ ~~=~~
DB
OC6H,OC6H,07CH,000H,000H,000H
; 8T_93
DB
000H,000H,OC6H,OC6H,OOOH,07CH,OC6H,OC6H ; TH_94
DB DB
ggg~: g~g~: gig~:g~~~: ggg~: g~g~, OC6H, OC6H ~~=~~
DB
OC6H,OC6H,07CH,OOOH,000H,OOOH
; BT_95
DB
OOOH,030H,078H,OCCH,OOOH,OCCH,OCCH,OCCH ; TH_96
DB
OCCH,OCCH,076H,000H,OOOH,OOOH
; 6T_96
DB
OOOH,060H,030H,018H,000H,OCCH,OCCH,OCCH ; TH_97
DB
OCCH,OCCH,076H,000H,OOOH,OOOH
; 6T 97
DB
000H,OOOH,OC6H,OC6H,OOOH,OC6H,OC6H,OC6H ; TH::::98
DB
OC6H, 07EH, 006H, OOCH, 018H, OOOH
; BT 98
DB
OOOH,OC6H,OC6H,038H,06CH,OC6H,OC6H,QC6H ; TH::::99
DB
OC6H,06cH,038H,000H,000H,OOOH
8T 99
DB
000H,oc6H, OC6H, OOOH, OC6H, OC6H, OC6H, OC6H TH::::9A
DB
OC6H,OC6H,07CH,OOOH,OOOH,OOOH
: BT 9A
DB
OOOH,018H,018H,03CH,066H,060H,060H,066H ; TH::::9B
DB
03CH,018H,018H,OOOH,OOOH,000H
; BT_98
DB
000H,038H,06CH,064H,060H,OFOH,060H,060H ; TH_9C
DB
060H,OE6H,OFCH,000H,OOOH,000H
BT 9C
DB
OOOH, OOOH, 066H, 066H, 03CH, 018H, 01EH, 018H TH::::90
DB
07£H,018H, 018H, OOOH, OOOH, OOOH
BT_9D
DB
OOOH, Of8H, OCCH, OCCH, 0 F8H, OC4H, OCCH, ODEH TH_9E
DB
OCCH, OCCH, OC6H, OOOH, OOOH, OOOH
BT_9£
DB
OOOH,OO£H, 01 BH, 018H, 018H, 018H, 07EH, 0 18H TH_9F
018H, 018H, 016H, 008H,070H, OOOH
BT_9F
DB
000H,018H,030H,060H,OOOH,078H,00CH,07CH ; TH_AO
DB DB
ggg~: ggg~: gig~: g~g~: ggg~: g~~~, 0 18H, 01 8H ~~:::::?
DB
018H,018H,03CH,OOOH,QOQH,OOOH
; 8T Al
DB
OOOH, 018H, 030H, 060H, OOOH, 07CH, OC6H, OC6H TH:::A2
DB
OC6H,OC6H,07CH,000H,000H,000H
BT A2
DB
OOOH, 018H, 030H, 060H, OOOH, OCCH, OCCH, OCCH T(::A3
DB
OCCH,OCCH,076H,OOOH,OOOH,OOOH
6T A3
DB
OOOH, OOOH, 076H, OOCH, OOOH, ODCH, 066H, 066H TH::::A4
DB
066H, 066H, 066H, OOOH, OOOH, OOOH
6T A4
DB
076H, ODCH, OOOH, OC6H, 0£6H, Or6H, Of£H, 00£1-1 TH:::A5
DB
OCEH,OC6H,OC6H,000H,OOOH,OOOH
BT A5
DB
OOOH, 03CH, 06CH, 06CH, 03£H, OOOH, 07£H, OOOH TH::::A6
DB
OOOH, OOOH, OOOH, OOOH, OOOH, OOOH
, BT_A6
DB
000H,036H,06CH,06CH,038H,OOOH,07CH,000H ; TH_A7
DB
OOOH,OOOH,OOOH,OOOH,OOOH,OOOH
· BT A7
DB
OOOH, OOOH, 030H, 030H, OOOH, 030H, 030H,060H ; TH:::A8
DB
OC6H,OC6H,07CH,OOOH,OOOH,000H
, 8T A8
DB
OOOH,OOOH,OOOH,OOOH,OOOH,OOOH,OF£H,OCOH ; TH~A9
DB
OCOH,OCOH,OOOH,OOOH,OOOH,OOOH
; BT A9
DB
000H,000H,OOOH,000H,OOOH,OOOH,OFEH,006H ; TH::::AA
DB
006H,006H,000H,000H,000H,OOOH
; BT AA
DB
OOOH, OCOH, OCOH, OG6H, OCCH, OD8H, 030H, 060H TH::::AB
DB
00CH,086H,00CH,018H,03£H,OOOH
· BT AB
DB
000H,OCOH,OCOH,OC6H,OCCH,OD8H,030H,066H ; TH::::AC
DB
OCEH,09EH,03EH,006H,006H,0001-l
; 8T AC
DB
000H,000H,018H,018H,OOOH,018H,018H,03CH ; TH::Ao
DB
03CH, 03CH, 018H, OOOH, OOOH, OOOH
BT _AD
DB
OOOH, OOOH, OOOH, OOOH, 036H, 06CH, OD8H, 06CH ; TH_AE
DB
036H,OOOH,000H,OOOH,000H,OOOH
BT A£
DB
OOOH, OOOH, OOOH, OOOH, OD8H, 06CH, 036H, 06GH TH::::AF
DB
006H, OOOH, OOOH, OOOH, OOOH, OOOH
BT_AF
DB
011H,044H,011H,044H,011H,044H,011H,044H ; TH_80
DB
011H,044H,011H,044H,011H,044H
, BT BO
DB
055H,OAAH,055H,OAAH,055H,OAAH,055H,OAAH ; TH::::Bl
DB
055H,OAAH,055H,OAAH,055H,OAAH
BT 61
DB
ODDH, 077H, ODDH, 077H, OODH, 077H, ODOH, 077H TH::::B2
DB
OODH, 077H, ODDH, 077H, ODDH, 077H
8T_82
DB
018H, 018H, 018H, 018H, 018H, 018H, 0 18H, 018H TH_83
DB
016H,018H,018H,018H,018H,018H
6T B3
DB
018H, 018H, 018H, 018H, 018H, 018H, 018H, OF8H TH::::84
DB
018H,018H,018H,018H,018H,018H
; 8T 84
DB
018H,018H,018H,018H,018H,OF8H,018H,OF8H ; TH=65
DB
018H, 018H, 018H, 018H, 018H, 018H
6T _B5
DB
036H, 036H, 036H, 036H, 036H, 036H, 036H, OF6H TH_86
DB
036H,036H,036H,036H,03.6H,036H
BT B6
DB
OOOH,OOOH,OOOH,OOOH,OOOH,OOOH,OOQH,OFEH ; TH::::B7
DB
036H, 036H, 036H, 036H, 036H, 036H
8T B7
August 2, 1984
IBM Enhanced Graphics Adapter 157
OA10
OA18 DAlE
OA26 OA2C
OA34 OA3A
OA42 OM8
OA50 OA56
OA5E OA64
OMe
OA72
OA7A
00 00 00 00 00 F8 18 F8
18 18 18 18 18 18 36 36 36 36 36 F6 06 F6
36 36 36 36 36 36 36 36 36 36 36 36 36 36
36 36 36 36 36 36 00 00 00 00 00 FE 06 F6 36 36 36 36 36 36 36 36 36 36 36 F6 06 FE
00 00 00 00 00 00
36 36 36 36 36 36 36 FE
00 00 00 00 00 00
18 18 18 18 18 F8 18 F8
00 00 00 00 00 00
00 00 00 00 00 00 00 F8
18 18 lB lB lB 18
OA80
OAS8 OASE
OA96 OA9C
OAA4 OAAA
OAB2 DABS
OACO OAC6
DACE OAD4
OAOC OAE2
OAEA OArO
OAF8 OAFE
0606 OBOC
OB14 OB1A
OB22 OB28
OB30 OB36
OB3E OB41j
OBIjC OB52
OB5A
18 18 18 18 18 18 18 IF
00 00 00 00 00 00 18 18 18 18 18 18 18 FF
00 00 00 00 00 00 00 00 00 00 00 00
00 FF 18 18 18 lB 18 18 18 18 18 18 lB 18 18 1F
18 18 18 18 18 18
00 00 00 00 00 00 00 FF
00 00 00 00 00 00 18 18 18 18 18 18 18 FF
lB 18 18 18 18 18
18 18 18 18 18 IF 18 IF 18 18 18 18 18 18 36 36 36 36 36 36
36 37 36 36 36 36 36 36 36 36 36 36 36 37 30 3F
00 00 00 00 00 00
00 00 00 00 00 3F
30 37 36 36 36 36 36 36 36 36 36 36 36 F7 DO FF 00 00 00 00 00 00
00 00 00 00 00 FF DO F7
36 36 36 36 16 36 36 36 36 36 36 37 30 37
36 36 36 36 36 36 00 00 00 00 00 FF 00 FF 00 00 00 00 00 00
36 36 36 36 36 F7 DO F7 36 36 36 36 36 36 18 18 18 18 18 FF
00 FF
00 00 00 00 00 00
OB60
OB68 OB6E
OB76 OB7C
0884 OB8A
0692 OB98
OBAO OBA6
OBAE OBB4
OBBC OBC2
OBCA OBDO
OB08 OBOE
OBE6 OBEC
OBF4 OBFA
OC02 OC08
OC10 OC16
DelE OC24
OG2C OC32
OC3A
36 36 36 36 36 36 36 FF 00 00 00 00 00 00
00 00 00 00 00 FF DO FF 18 18 18 18 18 18
00 00 00 00 00 00 00 FF
36 36 36 36 36 36 36 36 36 36 36 36 36 3F
00 00 00 00 00 00 18 18 18 16 18 IF 18 1F
00 00 00 00 00 00 00 00 00 00 00 IF 18 1F 18 18 18 18 18 18
00 00 00 00 00 00 00 3F 36 36 36 36 36 36 36 36 3fi 36 36 36 36 FF 36 36 36 36 36 36 18 18 18 18 lB FF 18 FF 18 18 IS lS 18 18 18 16 18 18 18 18 18 F8
00 00 00 00 00 00 00 00 00 00 00 00 00 IF 18 18 18 18 1B 18 FF FF FF FF FF FF
FF FF FF FF FF FF FF FF
00 00 00 00 00 00 00 FF FF FF FF FF FF FF FO FO FO Fa FO FO FO FO FO Fa FO FO FO FO OF OF OF OF OF OF OF OF
OF OF OF OF OF OF FF FF FF FF FF FF FF 00
00 00 00 00 00 00
OC40 OC48
00 00 00 00 00 76 DC OS 08 DC 76 00 00 00
570 571 572 573 574 575 576 577 578
579 580 581 582
583 584 585 586 587
588 589 590 591 592 593 594 595 596 597 598 599 600 601 602
603 60 11 605
606 607
608 609 610 611 612
613 61!1
615 616 617 618
619 620 621 622 623 624
625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 6ljO 641 642 643
644 645 646 647 648 649 650 651 65? 653 654 655 656 657 658 659 660 661 662
663 664
665 666 667 668
669 670 671 672 673 674 675 676 677 678 679 680 681
682 683 684 605 686 687 688 689 690 691 692 693 694 695
DB
OOOH, OOOH, OOOH, OOOH, OOOH, OF8H, 018H,OF8H ; TH_B8
DB
018H, 018H, a 18H, 018H,018H, 018H
BT B8
DB
036H, 036H, 036H, 036H,036H, OF6H, 006H,OF6H TH:::B9
08
036H, 036H, 036H, 036H, 036H, 036H
BT_B9
06
036H, 036H, 036H, 036H, 036H, 036H, 036H, 036H TH_BA
DB
036H,036H, 036H, 036H, 036H, 036H
BT_BA
DB
OOOH, OOOH, OOOH, OOOH, OOOH,OFEH, 006H, OF6H TH_BB
08
036H, 036H, 036H, 036H,036H, 036H
BT BB
DB
036H, 0 36H, 036H, 036H, 036H, a F6H, 006H, OrEH TH:::BC
DB
OOOH, OOOH, OOOH, OOOH, OOOH, OOOH
BT BC
DB
036H, 036H, 036H, 036H, 03 6H, 036H, 036H, OFEH TH:::SD
DB
OOOH, OOOH, OOOH, OOOH, OOOH, OOOH
BT_BD
06
a 18H, 018H, 018H, 018H, 018H, OF8H,O 18H, OF8H TH_BE
DB
OOOH, OOOH, OOOH, oaOH, ODOH, ODOH
BT BE
DB
OOOH, OOOH, OOOH, OOOH, OOOH, OOOH, OOOH, 0 F8H TH=BF
06
o 18H, 018H, 018H, 01SH, 018H, 018H
BT_BF
DB
01 8H, 018H, 018H, 018H, 01SH, 018H, 018H, 01 FH ; TH_CO
DB
OOOH, OOOH, OOOH, OOOH, OOOH, OOOH
; BT co
DB
018H, 018H, 018H, 018H, 01 8H, 018H, 018H, OFFH TH:::Cl
DB
OOOH, OOOH, OOOH, OOOH, OOOH, OOOH
BT_Cl
DB
OOOH, OOOH,OOOH, OOOH, OOOH, OOOH, OOOH, OFFH TH_C2
06
018H, 018H, 018H, 018H, 018H, 018H
BT C2
DB
o 18H, 018H, 018H, 018H, 018H, 018H, 0 18H, 0 1 FH TH:::C3
OB
018H, 018H, 018H,01SH, 018H, 018H
BT C3
DB
OOOH, OOOH, OOOH, OOOH, OOOH, OOOH, OOOH, OF FH TH:::CII
DB
OOOH, OOOH, OOOH, OOOH, OOOH, OOOH
BT C4
DB
018H, 018H, 018H, 018H, 018H, 018H, 018H, OFFH TH:::C5
DB
018H, 018H, 018H,018H,018H, 018H
BT_C5
08
018H, 018H, a 18H, 018H, 01 8H, 01 FH, 018H, 0 1 FH TH_C6
DB
018H, 018H, 0 18H, 018H, 01SH, 018H
BT_C6
DB
036H, 036H, 036H, 036H, 036H, 036H, 036H, 03 7H TH_C7
06
036H, 036H, 036H, 036H, 036H, 036H
BT_C7
DB
036H, 036H, 036H, 036H, 036H, 037H, 030H,03FH TH_C8
DB
OOOH, OOOH, OOOH, OOOH, OOOH, OOOH
BT C8
DB
OOOH, OOOH, OOOH, OOOH,OOOH. 03 FH, 030H, 037H TH-:::C9
DB
036H, 036H, 036H, 036H, 036H, 036H
BT_C9
DB
036H, 036H,036H, 036H, 036H, Of7H, OOOH, OFFH TH_CA
DB
OOOH, OOOH, OOOH, OOOH, OOOH, OOOH
BT_CA
DB
OOOH, OOOH, OOOH, OOOH, OOOH, OFFH, OOOH, OF7H TH_CB
DB
036H, 036H, 036H, 036H, 036H, 036H
BT CB
DB
036H, 036H, 0 36H, 036H. 036H, 037H, 030H, 031H TH=CC
08
036H, 036H, 036H, 036H, 036H, 036H
BT CC
DB
OOOH, OOOH, OOOH, OOOH, OOOH, a FFH, OOOH, a FFH TH:::CO
DB
OOOH, OOOH, OOOH, OOOH,OOOH, OOOH
BT_CD
DB
036H, 036H, 036H, 036H, 036H, OF7H, OOOH,OF7H TH_CE
DB
036H, 036H, 036H, 036H, 036H, 036H
BT_CE
DB
o 18H. 018H, 018H, 018H, 018H, OFFH, OOOH, OFFH TH_CF
DB
OOOH, OOOH,OOOH, OOOH, OOOH, OOOH
BT_CF
DB
036H, 036H, 036H, 036H, 036H, 036H, 036H, OFFH ; TH_DO
DB
OOOH, OOOH, OOOH,OOOH, OOOH, OOOH
BT_DO
DB
OOOH, OOOH, OOOH, OOOH, OOOH, OFFH, OOCH, OFFH TH_Dl
DB
01 8H, 0 18H, 0 18H, 018H, 018H, 01 8H
; BT 01
DB
OOOH, OOOH, OOOH, OOOH, OOOH, OOOH, OOOH, OFFH TH::':02
DB
036H, 036H, 036H, 036H, 036H, 036H
BT 02
DB
036H, 036H, 036H, 036H, 036H, 036H, 036H, 03FH TH:::03
DB
OOOH, OOOH,OOOH, OOOH, OOOH, OOOH
BT 03
DB
o 18H, 018H, 018H,018H, 018H, 01 FH, 01SH, 01 rH TH=D4
DB
OOOH, OOOH, OOOH, OOOH, OOOH, OOOH
BT 04
DB
OOOH, OOOH, OOOH,OOOH,OOOH, 01 FH, 018H, 01 FH TH:::D5
DB
01 8H, 018H, 018H, 018H, 0 18H, 018H
BT_D5
DB
OOOH, OOOH, OOOH, OOOH, OOOH, OOOH, OOOH, 03FH TH_D6
DB
036H, 036H,036H, 036H, 036H, 036H
BT_06
DB
036H, 036H, 036H, 036H, 036H, 036H, 036H, 0 FFH TH_07
DB
036H, 036H, 036H, 036H, 036H, 036H
BT_D7
DB
018H,?1 8H,018H, 018H, 018H, OFFH, 018H, OF FH TH_D8
DB
01 8H, 018H, 0 18H, 01SH, 018H, 018H
BT 08
DB
o 18H, 0 18H, 0 18H, 0 18H. 0 18H, a 18H, 018H, OF8H TH:::09
DB
OOOH, OOOH, OOOH, OOOH, OOOH, OOOH
BT_D9
DB
OOOH, OOOH, OOOH,OOOH, OOOH, OOOH, OOOH, 01 FH TH_DA
DB
o 18H, 018H,O ISH, 018H, 018H,018H
BT DA
DB
o FFH, OFFH, OFFH, OFFH, OFFH, OFFH, 0 FFH, OF FH TH:::OB
DB
OFFH, OFFH, a FFH, OFFH, OFFH, OFFH
BT DB
DB
OOOH, OOOH,OOOH, OOOH, OOOH, OOOH, OOOH, OF FH TH:::OC
DB
OFFH, OFFH, OFFH,OFFH, OFFH, OFFH
BT DC
08
OFOH, 0 FOH, 0 FOH, a FOH, 0 FOH, 0 FOH, OFOH. OFOH TH=OO
DB
OFOH, OFOH, 0 FOH,OFOH, OFOH, OFOH
BT DO
DB
OOFH, OOFH, OOFH, OOFH, OOFH, OOFH, OOFH,OOFH ; TH::':OE
DB
OOFH, OOFH, OOFH, OOFH, OOFH, OOFH
BT_DE
DB
o FFH, OFFH, OFFH, OFFH, OFFH, OFFH, 0 FFH, OOOH TH_DF
DB
OOOH. OOOH, OOOH, OOOH, OOOH, OOOH
BT_DF
DB
- OOOH, OOOH,OOOH, OOOH, DOOH, 076H, ODCH, OD8H ; TH EO
DB
OD8H, ODCH, 076H, OOOH. OOOH, OOOH
BT_EO
158 IBM Enhanced Graphics Adapter
August 2, 1984
OC4E
OC56 OC5C
OC64 OC6A
OC72 OC78
oceo
OC86
OC8E OC94
OC9C OCAl
OCM OC80
OCBe OGBE
OCC6 OGCC
OC04 OCDA
OCE2 OCE8
OCFO OCF6
OCFE 0004
OoOC 0012
001A
00 00 00 00 1C C6
Fe C6 C6 FC co co 40 00 00 00 FE C6 C6 CO co CO CO CO co 00 00 00 00 00 00 00 FE 6C 6C 6c 6C 6C 6C 00 00 00 00 00 FE C6 60 30
18 30 60 C6 FE 00 00 00 00 00 00 00 00 7E 08 08 08 08 10 00 00 00 00 00 00 00 66 66 66 66 7e 60 60 co 00 00 00 00 00 00 76 DC 18 18 18 18 18 00 00 00 00 00 7E 18 3C 66
66 66 3C 18 7£ 00 00 00 00 00 38 6C C6 C6 FE C6 C6 6c 38 00 00 00 00 00 38 6C C6 C6 c6 6C 6C 6C EE 00 00 00 ~OODlE 30 18 DC 3E 66 66 66 3C 00 00 00 00 00 00 00 00 7E DB DB 7E 00 00 00 00 00 00 00 03 06 7E DB 08 F3 7E 60 CO 00 00 00 00 00 1C 30 60 60 7C 60 60 30 1C 00 00 00 00 00 00 7C C6 c6 C6 C6 C6 C6 C6 00 00 00
0020
0028 OD2E
0036 OD3C
0044 004A
0052 0058
0060 0066
OD6£ OD74
007C 0082
OOSA 0090
0098 OD9E
ODA6 OOAC
0084 OOBA
o00oCca2
0000 0006
OODE 00E4
OOEC OOF2
OOFA OEOO
00 00 00 FE 00 00 FE 00 00 FE 00 00 00 00 00 00 00 18 18 7E 18 18
00 00 FF 00 00 00 00 00 30 18 DC 06
ac 18
30 00 7E DODD 00 00 00 DC 18 30 60 30 18 OC 00 7E 00 00 00 00 00 DE 1B 1B 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
08 DB 70 00 00 00 00 00 00 18 18 00 7E 00 18 18 00 00 00 00 00 00 00 00 76 DC 00 76 DC 00 00 00 00 00 00 38 6C 6C 38 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 18 18 00 00 00 00 00 00 00 00 00 00 00 00 00 18 00 00 00 00 00 00 00 OF DC OC OC OC OC EC 6C 3C lC 00 00 00 00 08 6C 6C 6c 6c 6C 00
00 00 00 00 00 00 00 70 08 30 60 C8 F8 00 00 00 00 00 00 00 00 00 00 00 7C 7e 7C 7C 7C 7C 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
0000 0000
0000 0001
0009 OOOF 0010
0018 DOlE 001F
0027 0020 OOZE
10 00 00 00 00 24 66
FF 66
24 00 00 00 00 00 22 00 63 63 63 22 00 00 00 00 00 00 00 00 00 2B 000000 18 18 18 FF 18 18 18 00 00 00 00 20 00 00 00 00 00 00 fF 00
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
78'
790
791
1
2
,3
4
6
7
8
9
10
11
12
13
14
1"6
17
18
19
20
21
22
23
24
25
26
27
28
CODE
DB DB
DB OB
DB DB
DB DB
OB OB
DB DB
OB DB
OB OB
DB OB
DB DB
OB DB
DB DB
OB OB
DB OB
DB
OB DB
DB DB
OB DB
DB DB
DB DB
DB OB
OB OB
OB OB
OB DB
DB OB
DB OB
OB OB
DB OB
DB DB
DB DB
OB ENDS END
000H.000H,OOOH,OOOH,07CH,OC6H,OFCH.OG6H ; TH_E1
gg~~:g6g~: g~~~: gg~~: g~~~: ggg~.OCOH, OCOH ~~=g
ggg~: ggg~: ggg~: ggg~:g~~~: g~g~. 06CH, 06CH ~~=g
06CH,06CH,06CH,OOOH,OOOH,OOOH
; 6T E3
OOOH,OOQH,OFEH,OC6H,060H,030H,018H,030H ; TH E4
g8g~: gg8~: g66~; ggg~: ggg~:g~~~. OD8H, 008H ~~:::~~
008H,OD6H,070H,OOOH,OOOH,OOOH
; 81_E5
OOOH, OOOH, OOOH,OOOH,066H, 066H, 066H, 066H 1H_E6
07CH, 060H, 060H, OCOH, OOOH, OOOH OOOH, OOOH, OOOH, 000H,076H, ODCH, 018H. 018H
018H, 016H, 018H,OOOH,OOOH. OOOH OOOH, OOOH, 07EH, 01 8H, 03CH. 066 H, 066H, 066H
03CH, 018H, 07£H, OOOH, OOOH, OOOH OOOH, OOOH. 038H, 06CH, OC6H, OC6H, 0 FEH, OC6H
OC6H, 06CH, 038H, OOOH, OOOH, OOOH OOOH, OOOH, 038H, 06CH, OC6H, OC6H,OC6H, 06CH
06CH, 06CH, OEEH, OOOH, OOOH, OOOH OOOH, OOOH, 01 EH, 030H, 0 18H, OOCH, 03EH. 066H
066H, 066H, 03CH. OOOH, OOOH, OOOH OOOH. OOOH, OOOH, OOOH, OOOH. D7EH, ODBH. ODBH
07EH, OOOH, OOOH, OOOH, OOOH, OOOH OOOH, OOOH, 003H, 006H, 07EH, OOBH, ODBH, 0 F3H
07EH, 060H, OCOH, OOOH, OOOH, OOOH
; BT ED
000H,000H,OlCH,030H,060H,060H,07CH,060H ; TH::::EE
060H,030H,01CH,OOOH,OOOH,OOOH OOOH, OOOH, OOOH, 07CH, OC6H, OC6H, OC6H, OC6H
BT EE TH::::EF
OC6H, OC6H, OC6H, OOOH, OOOH, OOOH
8T _EF
OOOH,OOOH,OOOH,OFEH,OOOH,OOOH,OFEH,OOOH ; TH_FO
OOOH,OfEH,QOOH,OOOH,OOOH,OOOH 000H,OOOH,OOOH,018H,018H,07EH,018H,018H
BT FO
TH Fl
OOOH,OOOH,OFFH,OOQH,OOOH,OOOH OOOH, OOOH, 030H, 018H, OOCH. 006H, OOCH, 018H
BT Fl
TH:::F2
030H,OOOH,07EH,OOOH,OOOH,OOOH
, BT_F2
OOOH, OOOH,OOCH, 018H, 030H, 060H, 030H, 018H .; TH_F3
OOCH, OOOH, 07EH, OOOH,OOOH, OOOH OOOH, OOOH,OOEH, 018H,018H, 018H, 018H, 018H
BT_F3
TH_F4
018H,018H,018H,018H,018H,018H 018H, 018H, 018H, 018H,018H, 018H, 018H, 018H
BT F4
TH::::F5
OD8H,OD8H,070H,OOOH,OOOH.000H OOOH. OOOH. OOOH, 018H, 0 18H, OOOH, 07EH, OOOH
8T F5
TH-F6
018H,018H,000H,OOOH,OOOH,OOOH
, BT F6
OOOH,OOOH,000H,000H,076H,ODCH,000H,076H ; TH:::n
ODCH, OOOH, OOOH, OOOH, OOOH,OOOH OOOH, 038H, 06CH, 06CH, 038H, OOOH, OOOH, OOOH
BT F7
TH:::F8
OOOH,OOOH,OOOH,OOOH,OOOH,OOOH OOOH, OOOH, OOOH,OOOH,OOOH, OOOH, 018H, 018H
BT F8
TH::::F9
OOOH, OOOH, OOOH, OOOH, OOOH, OOOH OOOH, OOOH, OOOH,OOOH, OOOH, OOOH, OOOH, 018H
8T_F9
TH_FA
OOOH, OOOH,OOOH, OOOH, OOOH, OOOH OOOH, OOFH,OOCH,OOCH, OOCH, OOCH, OOCH, OECH
06CH,03CH,OlCH,ooaH,OOOH,OOOH OOOH, 008H, 06CH, 06CH, 06CH, 06CH, 06CH, OOOH
8T_FA
TH_FB
8T F8
TH:::FC
OOOH,OOOH,OOOH,OOOH,OQOH,OOOH
, BT FC
000H,070H,008H,030H,060H,OG8H,OF8H,OOOH ; TH:::m
OOOH,OOOH,OOOH,OOOH,OOOH,ooaH aaOH,OOOH,OOOH, OOOH, 07CH, 07CH, 07CH, 07CH
BT FO
TH:::FE
07CH,07CH,OOOH,OOOH,OOOH,000H OOOH, OOOH, OOOH, OOOH, OOOH,OOOH, OOOH, OOOH
BT FE
TH:::FF
OOOH, OOOH,OOOH, OOOH, OOOH, OOOH
BT_FF
PAGE,120
SUBTTL MONOCHROME CHARACTER GENERATOR
CODE
SEGMENT PU8L 1C
PUBL I C CGMN FOG
CGMNJOG
LABEL BYTE
ALPHA SUPPLEMENT
STRUCTURE OF TH I S FILE
DB
XXH
WHERE XX IS THE HEX CODE FOR THE FOLLOWING CHAR
DB
[BYTES 0 - 13 OF THAT CHARACTER)
os'
OOH
INDICATES NO MORE REPLACEMENTS TO BE DONE
DB
01DH
DB
oaOH, OOOH, OOOH, OOOH, 024H, 066H, OFFH, 066H TH_ 10
DB
OZ4H,000H,OOOH,OOOH,OOOH,OOOH
8T_10
DB
OZ2H
DB
000H,063H,063H,063H,022H,OOOH,OOOH,OOOH TH_22 "
DB
OOOH,OOOH,OOOH,OOOH,OOOH,OOOH
BT_22 "
DB
02BH
,
DB
000H,OOOH,OOOH,018H,018H,018H,OFFH,018H ; TH_2B +
DB
018H,018H,OOOH,OOOH,OOOH,OOOH
BT_28 +
DB
02DH
DB
OOOH,OOOH,OOOH,OOOH,OOOH,OOOH,OFFH,OOOH TH_20
August 2, 1984
IBM Enhanced Graphics Adapter 159
0036 00 00 00 00 00 00
29
003C 40
30
0030 00 00 C3 E1 ff DB
31
C3 C3
32
0045 C3 C3 C3 00 00 00
33
004B 5"
34
004C 00 00 fF DB 99 1B
35
18 1B
36
0054 18 18 3C 00 00 00
37
005A 56
38
005B 00 00 C3 C3 C3 C3
39
C3 C3
40
0063 66 3C 18 00 00 00
41
0069 57 006A 00 00 C3 C3 C3 C3
'""3
DB DB
44
0072 FF 66 66 00 00 00 0078 5B
,4,65
0079 00 00 C3 C3 66 3C 1B 3C
'""B
0081 66 C3 C3 00 00 00
"9
0087 59
50
0088 00 00 C3 C3 C3 66
51
3C 18
52
0090 1B 1B 3C 00 00 00
53
0096 5A
5"
0097 00 00 FF C3 86 oc
55
18 30
56
009F 61 C3 ff 00 00 00
57
00A5 60
5B
00A6 00 00 00 00 00 E6
59
FF DB
60
OOAE DB DB DB 00 00 00
61
00B4 76
62
00B5 00 00 00 00 00 C3
6J
C3 C3
64
OOBO 66 3C 18000000
65
00C3 77
66
00C4 00 00 00 00 00 C3
67
C3 DB
68
DB Ff 66 00 00 00
69
91
70
00 00 00 00 6E 3B
n
lB 7E
72
OODB 08 DC 77 00 00 00
73
OOEl 9B
74
00E2 00 18 18 7E C3 CO
75
CO C3
76
OOEA 7E 18 18000000
77
OOFO 90
7B
OOFl 00 00 C3 66 3C 1B
79
FF 18
80
00F9 FF 18 18000000
81
~OFF 9E
82
0100 00 FC 66 66 7C 62
B3
666F
B4
0108 66 66 F3 00 00 00
85
OlOE F1
86
010F 00 00 18 18 1B FF
B7
18 1B
8B
0117 18 00 fF 00 00 00
89
0110 F6
90
01lE 00 00 18 18 00 00
91
FF 00
92
" 0126 00
012C 00
18 00 00 00
93 94
0120
95
96
1
2
0000
3
4
0000
5
6
0000 00 00 00 00 00 00
7
0000
B
0008 7E 81 A5 81 BO 99
9
81 7E
10
0010 7E FF DB FF C3 E7
11
FF 7E
12
0018 6C FE FE FE 7C 38
13
1000
14
0020 10 38 7C FE 7C 38
15
1000
16
0028 387C 3B FE FE 7C
17
387C
18
0030 10 10 38 7C FE 7C
19
387C
20
0038 00 00 1B 3C 3C 1B
21
0000
22
0040 FF FF E7 C3 CJ E7
23
FF FF
2',
0048 00 3C 66 42 42 66
25
3C 00
26
0050 FF C3 99 Bo BO 99
27
C3 FF
28
0058 Of 07 Of 70 CC CC
29
CC 78
30
0060 3C 66 66 66 3C 18
31
" 7E
0068 3F 33 3F 30 30 70
32 33
FO EO
34
0070 7f 63 7F 63 63 67
35
£6 CO
36
0078 99 5A 3C E7 E7 JC
37
5A 99
38
39
0080 BO EO 18 FE 18 EO
40
8000
41
0088 02 DE 3E FE 3E OE
42
0200
43
0090 18 3C 7E 18 18 7E
44
3C 1B
45
0098 666666666600
46
66 00
OGAD 7F DB DB 7B 18 1B
'1B
lB 00
49
00A8 3E 63 38 6c 6C 38
50
CC 78
51
OOBO 00 00 00 00 7E 7E
52
7E 00
53
00B8 18 3C 7E 187E 3C
54
18 FF
55
" " " oDeD 18 3C 7E
56
CODE
DB DB DB
DB DB DB
DB DB DB
DB DB DB
DB DB DB
DB DB DB
DB DB DB
DB DB DB
DB DB DB
DB DB DB
DB DB DB
DB DB DB
DB DB DB
DB DB DB
DB DB DB
DB DB DB
D' DB ENOS END
OOOH, OOOH, OOOH, OOOH, OOOH, OOOH 040H
OOOH, OOOH, OC3H, O£7H, OFFH, OOBH, OC3H, OC3H
BT_20 TH_40 M
OC3H, OC3H, OC3H, OOOH, OOOH, OOOH 054H OOOH, OOOH, OFFH, ?OBH, 099H, 018H, 018H, 018H
BT_40 M TH_54 T
018H, 018H, 03CH, OOOH, OOOH, OOOH 056H OOOH, OOOH, OC3H, OC3H, OC3H, OC3H, OC3H, OC3H
BT_54 T TH_56 V
066H, 03CH, 018H, OOOH, OOOH, OOOH
BT_56 V
057H
;
OOOH, OOOH, OC3H, OC3 H, OC3H, OC3H, ODBH, OOBH TH_57 W
OFFH, 066H, 066H, OOOH, OOOH, OOOH 058H OOOH, OOOH, OC3H, OC3H, 066H, 03CH, 018H, 03CH
BT_57 W TH_58 X
BT_58 X
TH _59 y
BT_59 Y
TH_5A Z
061 H, OC3H, OF FH, OOOH, OOOH, OOOH
BT_5A Z
06DH
OOOH, OOOH, OOOH, OOOH, OOOH, OE6H, 0 FFH, ODBH ; TH_6D L.C. H
ODBH, OoBH, ODBH, OOOH, OOOH, OOOH 076H OOOH, OOOH, OOOH,OOOH, OOOH, OC3H, OC3H, OC3H
BT_60 L,C, H TH_76 L.C. Y
066H, 03CH, 018H, OOOH, OOOH, OOOH 077H OOOH, OOOH, OOOH, OOOH, OOOH, OC3H, OC3H, OOBH
BT_76 L.C, Y TH_77 L.C, W
OOBH, OF FH, 066H, OOOH, OOOH, OOOH 091H OOOH, OOOH, OOOH, OOOH, 06EH, 03BH, 01 BH, 07EH
6T_77 L.C. W TH_91
OD8H, OOCH, 077H, OOOH, OOOH, OOOH 09BH OOOH, 0 18H, 018H, 07EH, OC3H, OCOH, OCOH, OC3H
BT_91 TH_9B
07EH,018H,018H,000H,OOOH,OOOH
090H OOOH, OOOH, OC3H, 066H ,.o3CH, 0 18H, 0 FFH, 018H
BT_9B TH_90
OFFH,018H,018H,000H,OOOH,OOOH
09EH 000H,OFCH,066H,066H,07CH,062H,066H,06FH
BT_9D TH_9E
066H,066H,OF3H,000H,000H,000H
BT_9E
OF1H
;
- 000H,000H,018H,018H,018H,OFFH,018H,018H TH F1
018H,000H,OFFH,000H,OOOH,000H OF6H OOOH, OOOH, 0 18H, 018H, OOOH, OOOH, OFFH, OOOH
BT- F1
TH _F6
OOOH, 018H, 018H, OOOH, OOOH, OOOH OOOH
BT F6 NO-MORE
CODE CGODOT
PAGE,120 SUBTTL DOUBLE DOT CHARACTER GENERATOR SEGMENT PUBL I C
PUBLIC CGOOOT,INT_1F_l LABEL BYTE
DB
OOOH, OOOH, OOOH, OOOH, OOOH, OOOH, OOOH, OOOH
DOUBLE DOT 0_00
DB
07EH, 081 H, OA5H, 081 H, OBOH, 099H, 081 H, 07EH ; 0_01
DB
07EH, Of FH, OOBH, Of FH, DC3H, OE7H, OfFH, 07EH ; 0_02
DB
06CH,OFEH,OFEH,OFEH,07CH,038H,010H,OOOH ; 0_03
010H,038H,07CH,OFEH,07CH,038H,010H,OOQH ; 0_04
DB
038H,07CH,038H,OFEH,OFEH,07CH,038H,07CH ; 0_05
DB
Q1QH,Dl0H,038H,07CH,OFEH,07CH,038H,07CH ; 0_06
DB
OOOH, OOOH, 0 18H, 03CH, 03CH, 018H, OOOH, OOOH ; 0_07
DB
OFFH,OFFH,OE7H,OC3H,OC3H,OE7H,OFFH,OFFH ; 0_08
DB
OOOH,03CH,066H,042H,042H,066H,03CH,OOOH ; 0_09
OFFH, OC3H, 099H, OBDH, OBDH, 099H, OC3H, 0 FFH ; D_DA
OOfH, 007H, OOFH, 070H, OCCH, aCCH, OGCH, 078H ; O_OB
DB
03CH, 066H, 066H, 066H, 03CH, a 18H, 07£H, 018H ; D_DC
DB
03 fH, 033 H, 03 FH, 030H, 030H, 070H, a FOH, OEOH ; o_00
DB
07 fH, 063 H, 07 FH, 063H, 063H, 06 7H, 0£6H, OCOH ; O_OE
099H, 05AH, 03CH, OE7 H, OE7 H, 03CH, 05AH, 099H ; D_OF
DB
080H, OEDH, OF8H, OFEH, OF6H, OEOH, 080H, OOOH ; 0_10
DB
002H, OOEH, 03EH, OFEH, 03EH, OOEH, 002H, OOOH ; 0_"
DB
018H, 03CH, 07EH, 018H, 018H, 07EH, 03CH, 018H ; 0_12
DB
066H, 066H, 066H, 066H, 066H, OOOH, 066H, OOOH ; 0_13
DB
07 FH, ODBH, ODBH, 07BH, 01 BH, 01 BH, 01 BH, OOOH ; o_14
DB
03EH, 063H, 038H, 06CH, 06CH, 038H, aCCH, 078H ; o_15
DB
OOOH, OOOH, OOOH, OOOH, 07EH, 07EH, 07£H, OOOH ; 0_16
DB
018H, 03CH, 07£H, 018H, 07EH, 03CH, 018H. OFFH ; 0_17
DB
018H, OSCH, 07EH, 018H, 018H, 018H, 018H, OOOH ; 0_18
160 IBM Enhanced Graphics Adapter
August 2, 1984
00C8 0000 0008 ODED 00E8 OOFO 00F8
18 00 18 18 18 18 7E 3C 18 00 DO 18 DC FE DC 18 00 00 00 10 60 FE 60 30
00 00 00 00 CO CO CO FE 00 00 00 24 66 FF 66 24 00 00 00 18 3C 7E FF FF 00 00 00 FF FF 7E 3C 18 00 00
~
0100 0108
< ! 0110
0118
0120
0128
01JO
0138
0140
0148
0150
0158
0160
0168
0170
0178
00 00 00 00 00 00 00 00 30 78 78 30 30 00 30 00 6C 6C 6C 00 00 00
00 00 6C 6C FE 6C FE 6C 6C 00 30 7C CO 78 OC F8
30 00 00 C6 CC 18 30 66
C6 00 38 6C J8 76 OC CC
76 00 60 60 CO 00 00 00 00 00 18 30 60 60 60 30 18 00 60 30 18 18 18 30 60 00 00 66 3C FF 3C 66
00 00 00 30 3D FC 30 30 00 00 00 00 00 00 00 30 30 60 00 00 00 rc 00 00 00 00 00 00 00 00 00 30 30 00 06 OC 18 30 60 CO 80 00
~
0180 0188 0190 0198 OlAD 01A8 01BO 01B8 OlCO 01C8 0100 0108 OlEO 01E8 OUO OU8
7C C6 CE DE f6 E6 7C 00
30 70 30 30 30 30 FC 00
78 CC DC 38 60 CC FC 00 18 CC DC 38 OC CC 78 00 lC 3C 6C CC FE DC
1 E 00 FC CO F8 OC OC cc 78 00 38 60 CO F8 CC CC 78 00 FC CC OC 18 30 30 30 00 78 CC CC 78 CC CC
78 00 78 CC CC 7C OC 18
70 00 00 30 30 00 00 30 30 00 00 30 30 00 00 30 30 60 18 30 60 CO 60 30
18 00 00 00 FC 00 00 FC 00 00 60 30 180C1830 60 00 78 CC OC 18 30 00 30 00
~
0200 0208 0210 0218 0220 0228 0230 0238 0240 0248 0250 0258 0260 0268 0270 0278
7C C6 DE DE DE CO
78 00 30 78 CC CC FC CC CC 00 FC 66 66 7C 66 66 FC 00 3C 66 CO CO CO 66 3C 00 F8 6C 66 66 66 6c F8 00 FE 62 68 78 68 62 FE 00 FE 62 68 78 68 60
FO 00 3C 66 CO CO CE 66
3E 00 CC CC CC fC CC CC CC 00 78 30 30 30 30 30 78 00 lEocococcccc
78 00 E6 66 6C 78 6c 66 E6 00 fO 60 60 60 62 66 FE 00 C6 EE FE FE D6 C6 C6 00 C6 E6 F6 DE CE C6 C6 00 38 6C c6 c6 C6 6C
38 00
0280 0288 0290 0298 02AO 02AB
FC 66 66 1C 60 60 FO 00 78 cc CC CC DC 78
lC 00 fC 66 66 1C 6C 66 £6 00 78 CC EO 70 lC CC 78 00 FC B4 30 30 30 30
18 00 CC CC CC CC CC CC
,,'7..
60 61
62 63 6. 6,
66 67 68 6. 70 71
72 73
7' 75 76 77 78 79 BO 81
8' 83
8' 8' 86 87 88 8. 90 91 92
..·3,·
'6 .7 .8 99 100 101 102
11003.
105 106 107 108 10. 110 111 112 113
" '115
116 117 11B
119
120 121 122 123
12' 125 126 127
128 129
130 131 132 133
13' 135 136 137 138 139 140
14' 142 143
14' 14' 146
147 148 149 150 151 '
152 153
15' 155 156 157
158 159 160 161 162 163
16' 165 166 167 168 169 170 171 172
173
17' 175 176 177
178
17' 180
'81 182
DB
01 8H,018H,018H, 018H,07EH,03CH,018H, OOOH ; 0_19
DB
OOOH, 018H, OOCH, OFEH,OOCH,018H, OOOH, OOOH ; O_lA
DB
OOOH, 030H, 060H, OFEH, 060H, 030H, OOOH, OOOH ; O_lB
OOOH, OOOH, OCOH,OCOH,OCOH,OFEH,OOOH, OOOH ; O_lC
OOOH. 024H, 066H, OFFH, 066H. 024H, OOOH,OOOH ; 0_10
DB
- OOOH, 018H, OlCH, 07EH, OFFH, OFFH, OOOH, OOOH ; 0 1E
DB
OOOH, OFFH, OFFH, 07EH, 03CH, 018H, OOOH,OOOH ; O_lF
DB
OOOH, OOOH, OOOH, GOOH, GOOH, OOOH, OOOH, OOOH SP 0_20
DB
OlOH, 078H, 078H, 030H, 030H, OOOH, 030H, OOOH : ! 0_21
DB
06CH, 06CH, 06CH, OOOH, OOOH, OOOH, GOOH, OOOH : 0_22
DB
06CH, 06CH, OrEH, 06CH, OFEH, 06CH, 06CH, OOOH 1/ 0_23
DB
030H, 07CH, OCOH, 078H, OOCH, OF8H, OJOH, OOOH S 0_24
DB
OOOH, OC6H, OCCH, 018H, 030H, 066H, OC6H, OOOH ; PER CENT 0_25
DB
038H, 06CH, OJ8H, 076H, OOCH, OCCH, 076H, OOOH : & 0_26
DB
060H, 060H, OCOH, OOOH, OOOH, OOOH, OOOH, OOOH
0_27
DB
018H,030H, 060H, 060H, 060H, 030H, 018H, OOOH I 0_28
DB
060H, 030H, 01 8H, 018H, 018H, 030H, 060H, OOOH I 0_29
08
* OOOH, 066H, 03CH, 0 FFH, 03CH, 066H, OOOH, OOOH ; 0_2A
DB
OOOH, 030H, 030H, OFCH, 030H, 030H, OOOH, OOOH ; + 0_2B
DB
OOOH, OOOH, OOGH, OOOH, OOOH, 030H,030H, 060H ; 0_2C
DB
OOGH, OOOH, OOOH, 0 FCH. OOOH, OOOH, OOOH, OOOH ; ~ 0_20
DB
OGGH, OOOH, OOOH, OOOH, OOOH, 030H, 030H, OOOH ; 0_2E
DB
006H, OOCH, 018H, OlOH, 060H, OCOH,080H, OOOH ; / D_2F
01CH, OC6H, OCEH, OOEH, Of6H, OE6H,07CH, OOOH ; o 0_30
DB
030H, 070H, 030H, 030H, OlOH, 030H, OFCH, OOOH ; 1 0_31
DB
07 8H, OCCH, OOCH, 038H, 060H, OCCH, OFCH, OOOH ; 2 0_32
DB
078H, OCCH, OOCH, 038H,OOCH,OCCH, 078H,OOOH ; 3 0_33
DB
OtCH, 03CH,06CH, OCCH, OFEH, OOCH, 01 EH, OOOH : 4 0_34
DB
OFCH, OCOH, OF8H, OOCH, OOCH, OCCH, 018H, OOOH : 5 0_35
DB
038H, 060H, OCOH, OF8H, OCCH, OCCH, 078H, OOOH ; 6 0_36
DB
OFCH, OCCH, OOCH, 0 18H, OJOH, 030H, 030H, OOOH : 7 0_37
DB
078H,OCCH, OCCH, 078H, OCCH, OCCH, 078H, OOOH 8 0_38
DB
078H,OCCH, OCCH, 07CH, OOCH, 018H, 010H, OOOH : 9 0_39
DB
OOOH, 030H, 030H, OOOH, OOOH, OJOH, 030H, OOOH : 0_3A
DB
OOOH, 030H, 030H, OOOH, OOOH, 030H, 030H, 060H : 0_38
DB
018H, 030H, 060H, oeOH, 060H, 030H, 018H, OOOH < 0_3C
DB
OOOH,OOOH, OFCH, DOOH, OOOH, OFCH, OOOH, OOOH " 0_30
DB
060H, 030H, 018H, OOCH, 018H, 030H, 060H, OOOH 078H, OCCH, OOCH, 018H, 030H, OOOH, 030H, OOOH
,> 0_3E 0_3F
DB
07CH,OC6H,00EH,ODEH,OOEH,OCOH,078H,000H ; 00_40
DB
030H, 078H, OCCH, OCCH, OFCH, OCCH, OCCH,OOOH ; A 0_41
OFCH, 066H, 066H, 07CH, 066H, 066H, orCH,OOOH ; B 0_42
DB
03CH, 066H, OCOH, OCOH, OCOH, 066H,03CH, OOOH : C 0_43
° OF8H, 06CH, 066H, 066H,066H,06CH, Of8H,OOOH ;
0_44
DB
OFEH, 062H, 068H, 078H, 068H, 062H, OFEH, OOOH ; E 0_45
OfEH, 062H, 068H, 078H, 068H, 060H, OFOH, OOOH ; F 0_46
DB
03CH, 066H, OCOH, OCOH,OCEH, 066H, 03EH, OOOH : G 0_47
DB
OCCH, OCCH, OCCH, OFCH,OCCH, OCCH, OCCH,OOOH ; H 0_48
DB
078H,030H,030H, 030H, 030H, 030H, 078H, OOOH : I 0_49
01 EH,OOCH, OOCH, OOCH, OCCH, OCCH, 078H, OOOH : J 0_4A
DB
OE6H, 066H, 06CH, 078H, 06CH, 066H, OE6H, OOOH : K 0 _4B
DB
OFOH, 060H, 060H, 060H, 062H, 066H, OFEH, OOOH : L 0_4C
DB
OC6H,OEEH, OFEH, 0 FEH, 006H, OC6H, OC6H, OOOH M 0_40
DB
OC6H,OE6H, OF6H, OOEH, OCEH, OC6H, OC6H, OOOH : N 0_4E
DB
038H, 06CH, OC6H, OC6H, OC6H, 06CH, OJ8H, OOOH ; o 0_4F
DB
OFCH, 066H, 066H, 07CH, 060H, 060H, OFOH, OOOH : PO_50
DB
078H, OCCH,OCCH, OCCH, OOCH, 078H, OlCH, OOOH ; Q 0_51
DB
OfCH, 066H, 066H, 07CH, 06CH, 066H, 0 E6H, OOOH : R 0_52
DB
078H, OCCH, OEOH, 070H, 01Ctl, OCCH. 07SH, OOOH ; SO_53
DB
OFCH,OB4H.030H, 030H,030H, 030H, 078H, OOOH ; TO_54
DB
OCCH, OCCH, OCCH, OCCH,OCCH. OCCH, OfCH,OOOH ; U 0_55
August 2, 1984
IBM Enhanced Graphics Adapter 161
fC 00
18'
0280 CC CC CC CC CC 78
18'
30 00
185
0268 C6 C6 C6 06 FE EE
18.
C6 00
187
02CO C6 C6 6C 38 38 6C
188
C6 00
189
02C8 CC CC CC 78 30 30
190
78 00
191
0200 fE C6 8C 18 32 66
192
fE 00
19'
0208 78 60 60 60 60 60
19'
78 00
195
02EO CO 60 30 18 OC 06
19'
02 00
197
02E8 78 18 18 18 18 18
'98
78 00
'99
02fO 10 38 6C C6 00 00
200
00 00
20'
02F8 00 00 00 00 00 00
202
00 FF
203
204
0300 30 30 18 00 00 00
205
00 00
20'
0308 00 00 78 OC 7C CC
207
76 00
208
0310 EO 60 60 7C 66 66
209
DC 00
210
0318 00 00 78 CC CO CC
211
78 00
212
0320 lC DC OC 7C CC CC
213
76 00
214
0328 00 00 78 CC fC CO
215
78 00
21.
0330 36 6C 60 fO 60 60
217
FO 00
21'
0338 00 00 76 CC CC 7C
219
OC f8
220
0340 EO 60 6C 76 66 66
221
E6 00
222
0348 30 00 70 30 30 30
223
76 00
0350 OC 00 DC ac OC cc
224 225
CC 76
22'
0358 EO 60 66 6C 76 6C
227
E6 00
228
0360 70 30 30 30 30 30
229
78 00
230
0368 00 00 CC FE FE 06
231
C6 00
232
0370 00 00 f8 CC CC CC
233
CC 00
234
0376 00 00 78 CC CC CC
235
78 00
236
237
0380 00 00 DC 66 66 7C
2'8
60 FO
239
0388 00 00 76 CC CC 7C
240
OC 1E
24'
0390 00 00 DC 76 66 60
242
FO 00
243
0398 00 00 7C CO 78 OC
244
F8 00
245
03AO 10 30 7C 30 30 34
24'
18 00
247
03AS 00 00 CC Cc Cc CC
248
76 00
249
0380 00 00 CC Cc CC 78
250
30 00
251
03B8 00 00 C6 06 FE FE
252
6C 00
253
03CO 00 00 C6 6C 38 6C
254
C6 00
255
03C8 00 00 Cc Cc CC 7C
25'
OC F8
257
0300 00 00 FC 98 30 64
258
FC 00
259
0308 1C 30 30 EO 30 30 1C 00
226.,0
03EO 18 18 18 00 18 18
2'2
03E8
i8 00 EO 30 30 1C 30 30 EO 00
2"263
265
OHO 76 DC 00 00 00 00
26.
00 00
267
03f8 00 10 38 6C C6 C6
268
FE 00
269
270
0400
271
272
0400 78 CC CO CC 78 18
273
OC 78
27.
0408 00 cc 00 CC CC CC
275
7E 00
27.
0410 lC 00 78 CC FC CO
277
78 00
278
0418 7E C3 3C 06 3E 66
279
H 00
280
0420 CC 00 78 DC 7C CC
281
7E 00
282
0428 EO 00 78 DC 7e ee
283
7E 00
284
0430 30 30 78 oe 7C CC
285
7E 00
28.
0436 00 00 78 CO CO 78
287
DC 36
288
0440 7E C3 3C 66 7E 60
289
3C 00
290
0448 CC 00 78 CC FC CO
291
78 00
292
0450 EO 00 78 CC FC CO
293
78 00
294
0458 CC 00 70 30 30 30
295
78 00
296
0460 7C C6 38 18 18 18
297
3C 00
298
0468 EO 00 70 30 30 30
299
76 00
300
0410 C6 36 6C C6 FE C6
30'
C6 00
302
0476 30 30 00 78 CC FC CC 00
'3D03.
305
0480 1C 00 FC 60 78 60
300
fC 00
307
0486 00 00 7F DC 7F CC
308
OB OB OB OB OB DB
DB OB OB
DB DB DB DB OB DB DB DB DB DB DB OB
DB DB OB
DB OB DB DB DB DB OB 08 OB OB DB DB DB DB DB DB
INT_1 F_1 DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB
DB DB
OCCH, OCCH, OCCH, OCCH, OCCH, 018H, 030H,OOOH ; V 0_56 OC6H,OC6H,OC6H,006H,OFEH,OEEH,OC6H,OOOH ; W 0_51 OC6H,OC6H,06CH,038H,038H,06CH,OC6H,OOOH ; X 0_58 OCCH, OCCH, OCCH, 018H, 030H, 030H, 018H, OOOH ; YO_59 OFEH,OC6H,08CH,018H,032H,066H,OFEH,OOOH ; Z D_5A
078H,060H,060H,060H,060H,060H,078H,OOOH ; I 0_5B
OCOH,060H,030H,018H,OOCH,006H,002H,OOOH ; IV'CKSLASH 0_5C
018H,018H,018H,016H,018H,018H,078H,000H ; 1 o_50
010H, 038H, 06CH, OC6H, OOOH, OOOH, OOOH, OOOH ; CIRCUMfLEX 0_5E OOOH,OOOH,OOOH,OOOH,OOOH,OOOH,OOOH,OFFH ; _ 0_5F
030H,030H,018H,OOOH,000H,000H,OOOH,000H ; , 0_60 000H,000H,018H,OOCH,07CH,OCCH,076H,OOOH ; LOWER CASE A 0_61 OEOH,060H,060H,07CH,066H,066H,00CH,OOOH ; L.C. B 0_62 000H,OOOH,016H,OCCH,OCOH,OCCH,078H,OOOH ; L.C. C 0_63 01CH,OOCH,00CH,07CH,OCCH,OCCH,076H,OOOH L.C. 00_64 000H,OOOH,078H,OCCH,OFCH,OCOH,078H,000H ; L.C. E '0_65 038H,06CH,060H,OFOH,060H,060H,OFOH,OOOH ; L.C. F 0_66 000H,OOOH,076H,OCCH,OCCH,07CH,OOCH,Of6H ; L.C. G 0_67 OEOH,060H,06CH,076H.066H,066H,OE6H,OOOH ; L.C. H 0_66 030H,000H,070H,030H,030H.030H,078H,OOOH ; L.C. I 0_69 00CH,OOOH,OOCH,OOCH,OOCH,OCCH,OCCH,078H ; L.C. J 0_6A OEOH,060H,066H,06CH.018H,06CH,OE6H,OOOH ; L.C. K 0_6B 010H,030H,030H,030H,030H,030H,018H.000H ; L.C. L 0_6C 000H,000H,OCCH,OFEH.OfEH,0O6H,OC6H,000H ; L.C. M 0_6D OOOH,000H,OF8H,OCCH,OCCH,OCCH,OCCH,OOOH ; L.C. N D_6E 000H,COOH,078H,OCCH,OCCH,OCCH,078H,OOOH ; L.C. 0 0_6F
OOOH,000H,OOCH,066H,066H,OlCH,060H,OFOH ; L,C. P 0_70 000H,OOOH,016H,OCCH,OCCH,07CH,00CH,01EH; L.C. Q 0_11 OOOH, OOOH, ODCH,076H, 066H, 060H, OroH, OOOH ; 000H,000H,07CH,OCOH,078H,OOCH,OF8H,OOOH ; L.C. S 0_13 010H,030H,07CH,030H,030H,034H,018H,000H ; L.C. T 0_74 OOOH,OOOH, OCCH, OCCH, OCCH, OCCH, 076H, OOOH ; OOOH,000H,OCCH,OCCH,OCCH,078H,030H,000H ; L.C. V 0_76 000H,OOOH,OC6H,006H,OfEH,OFEH,06cH,000H ; L.C. W 0_11 000H,000H,OC6H,06CH,038H,06cH,oc6H,OOOH ; L.C. X 0_78 000H,OOOH,OCCH,OCCH,OCCH,07CH,00CH,Of8H ; L.C. Y 0_79 000H,OOOH,OfCH,098H,030H,064H,OFCH,OOOH ; L.C. Z D_IA 01CH,030H,030H,OEOH.030H,030H,01CH,OOOH ; L BRAK 0_7B 018H,018H,018H,000H,018H,018H,018H,OOOH ; I 0_7C OEOH, 030H, 030H, 0 lCH, 030H,030H, OEOH, OOOH ; R BRAK 0_70 076H,OOCH,OOOH,OOOH,OOOH.000H,OOOH,OOOH ; TILDE D_7E 000H,010H,038H,06CH,0C6H,OC6H,OfEH,OOOH ; DELTA D_7F
LABEL BYTE 078H,OCCH,OCOH,OCCH,078H,016H,OOCH,078H; 000H,OCCH,OOOH,OCCH,OCCH,OCCH,07EH,OOOH; 01CH,OOOH,078H,OCCH,orCH,OCOH,078H,000H; 07EH,OC3H,03CH,006H,03EH,066H,03fH,OOOH; OCCH,OOOH,078H,00CH,07CH,OCCH,07EH,OOOH; O[OH,OOOH, 078H, OOCH, 07CH, OCCH, 07EH, OOOH; 030H,030H,078H,OOCH,07CH,OCCH,07EH,000H; 000H,OOOH,076H,OCOH,OCOH,078H,OOCH,038H; 07EH,OC3H,03CH,066H,07EH,060H,03CH,000H; OCCH,000H,078H,OCCH,OFCH,OCOH,078H,000H; OEOH,OOOH, 078H, OCCH,OfCH, OCOH, 078H, OOOH; OCCH,OOOH,070H,030H,010H,030H,078H,OOOH; 07CH, OC6H,038H,018H, 018H, 018H, 03CH, OOOH; OEOH,OOOH,070H,030H,030H,030H,078H,OOOH; OC6H,038H,06CH,OC6H,OFEH,OC6H,OC6H,OOOH; 030H,030H,OOOH,016H,OCCH,OFCH,OCCH,OOOH;
0_80 0_81 0_82 0_83 0_84 0_85 0_86 0_87 0_88 0_89 0_8A D~8B 0_8C 0_80 0~8E D_8F
01CH,000H,OFCH,060H,078H,060H,OFCH,OOOH; 000H,OOOH,07fH,OOCH,07FH,OCCH,07FH,OOOH;
0_90 0_91
162 IBM Enhanced Graphics Adapter
August 2, 1984
7f 00
309
0490 3E 6C CC FE CC CC
310
CE 00
311
0496 76 CC 00 76 CC CC
312
78 00
313
04AO 00 CC 00 76 CC CC
31.
78 00
315
04A8 00 EO 00 76 CC CC
316
78 00
317
0480 78 CC 00 CC CC CC
318
7E 00
319
0486 00 EO 00 CC CC CC
320
7E 00
321
04CO 00 CC 00 CC CC 7C
322
DC f8
323
04C8 C3 18 3C 66 66 3c
32.
~
18 00 0.00 CC 00 CC CC CC ee
325 326
76 00
327
0'08 18 18 7E CO CO 7E
328
18 18
329
04EO 38 6C 64 fO 60 E6
330
fe 00
331
04£6 CC CC 76 FC 30 FC
332
30 30
333
04FO F6 CC CC fA C6 CF
33'
C6 C7
335
04F8 O£ lB 18 3C 16 18
336
08 70
337
338
0500 lC 00 78 OC 7C cc
339
7E 00
340
0508 38 00 70 30 30 30
341
78 00
342
0510 00 lC 00 78 CC CC
343
78 00
34'
0518 00 lC 00 CC CC CC
345
7E 00
346
0S,20 00 f8 00 F6 CC CC
347
CC 00
348
0526 FC 00 ce EC FC DC
349
CC 00
350
0530 3C 6C 6C 3E 00 7E
351
00 00
352
0S,38 38 6C 6C 38 00 7C
353
00 00
35.
0540 30 00 30 60 CO CC
355
78 00
356
0548 00 00 00 FC CO CO
357
00 00
358
0550 00 00 00 FC DC OC
359
00 00
360
0558 C3 C6 CC DE 33 66
361
CC OF
362
0560 C3 C6 CC DB 37 6F
363
CF 03
36.
0568 18 18 00 18 18 18
365
18 00
366
0570 00 33 66 CC 66 33
367
00 00
368
0576 00 CC 66 33 66 CC
369
00 00
370
371
0580 22 88 22 88 22 88
372
22 88
373
~
0588 55 AA 55 AA 5S, M 55 AA
37. 375
0590 DB 77 DB EE DB 77
376
DB EE
377
0598 18 18 18 18 18 18
378
18 18
379
05AO 18 18 18 18 F8 18
380
18 lB
381
05A8 18 18 f8 18 F8 18
382
18 18
383
0580 36 36 36 36 F6 36
38'
36 36
385
05B8 00 00 00 00 FE 36
386
36 36
387
05CO 00 00 F6 18 F8 lB
388
18 18
389
05C8 36 36 F6 06 F6 36
390
36 36
391
0500 36 36 36 36 36 36
392
36 36
393
0508 00 00 FE 06 F6 36
39'
36 36
395
05EO 36 36 F6 06 FE 00
396
00 00
397
05E8 36 36 36 36 FE 00
398
00 00
399
05FO 18 18 F8 18 F8 00
.00
00 00
'01
05F8 00 00 00 00 Fa 18
.02
18 18
'03
0600 18 18 18 18 1F 00
'0' .05
00 00
'06
0608 18 18 18 18 FF 00
'07
00 00
'08
0610 00 00 00 00 Ff 18
'09
18 18
410
0618 0620
18 18 18 18 IF 18 18 18 00 00 00 00 ff 00
00 00
."'"412
41.
0628 18 18 18 18 ff 18
'15
18 lB 0630 lB 18 1F 18 IF 18
.41176
18 18
418
0638 36 36 36 36 37 36
419
36 36
'20
0640 36 36 37 30 3F 00
'21
00 00
.22
~
0648 00 00 3f 30 37 36 36 36
'23 .2.
0650 36 36 F7 00 FF 00
.25
00 00
'26
0658 00 00 ff 00 F7 36
'27
36 36
'28
0660 36 36 37 30 37 36
.29
36 36
430
0668 00 00 FF 00 FF 00
'31
00 00
432
0670 36 36 f7 00 F7 36
'33
36 36
43'
August 2, 1984
DB
03EH, 06CH, OCCH, OfEH, OCCH, OCCH, OCEH, OOOH ; 0_92
DB
076H,OGCH, OOOH, 076H, oeCH, OCCH, 078H, OOOH ; 0_93
DB
OOOH, OCCH, OOOH, 078H, OCCH, OCCH, 078H, OOOH ; 0_94
DB
OOOH, OEOH, OOOH, 076H, OCCH, OCCH, 078H, OOOH ; D_95
DB
078H, OCCH, OOOH, OCCH, OCCH, OCCH, 07EH, OOOH ; 0_96
DB
OOOH. OEOH, OOOH, OCCH, OCCH, OCCH, 07EH, OOOH ; 0_97
DB
OOOH, OCCH, OOOH, OCCH, OCCH, a 7CH, OOCH, 0 F6H ; o_98
DB
OC3H, a 16H, 03CH, 066H, 066H, 03CH, a 16H, OOOH ; D_99
DB
oeCH, OOOH,OceH, OCCH, OceH, oeCH, 078H, OOOH ; D_9A
DB
018H, 018H, 07EH,OCOH, OCOH,07EH, 016H, 018H ; D_9B
DB
036H, 06CH, 064H, OfOH, 060H, 0£6H, 0 FCH, OOOH ; D_9C
DB
OCCH, OCCH, 076H, arCH, 030H, OFCH, 030H,030H ; D_9D
DB
OF6H,OCCH, OCCH, OFAH, OC6H, OCFH, OC6H,OC7H ; D_9E
DB
OOEH, 01 BH, 018H, 03CH, 018H, 0 18H, 008H, 070H ; D_9F
DB
01CH, OOOH, 078H, OOCH, 07CH, OCCH, 07EH, OOOH ; D_AO
DB
038H, OOOH, 070H, 030H, 030H, 030H,076H, OOOH ; D_Al
DB
OOOH, a 1CH, OOOH, 078H, OCCH, OCCH, 078H, OOOH ; 0_A2
DB
OOOH, 0 1CH, OOOH. OCCH, OCCH, OCCH, 07 EH, OOOH ; 0_A3
DB
OOOH, 0 F8H, OODH, Of8H, OceH, OCCH, OCCH, OOOH ; D_AA
DB
OFCH, OOOH, OceH, OECH, OFCH, 0 DCH, OCCH, OOOH ; D_AS,
DB
03CH, 06CH, 06CH, 03EH, OOOH, 07EH, OOOH, OOOH ; D_A6
DB
038H, 06CH, 06CH, 038H, OOOH, 07CH, OOOH, OOOH ; D_A7
DB
030H, OOOH, 030H, 060H, OCOH, OCCH, 076H, OOOH ; D_A8
DB
OOOH, OOOH, OOOH, 0 FCH, OCOH, OCOH,OOOH, OOOH ; D_A9
DB
OOOH, OOOH, OOOH, OfCH, OOCH, OOCH, OOOH, OOOH ; D_AA
DB
OC3H, OC6H, OCCH, OOEH, 033H, 066H, OCCH, OOFH ; D_AB
DB
OC3H, OC6H, OceH, ODBH, 037H, 06FH, OCFH, 003H ; D_AC
DB
o 18H, 018H, OOOH, 018H, 018H, 0 18H, 0 18H, OOOH ; D_AD
DB
OOOH, 033H, 066H, OCCH, 066H, 033H, OOOH, OOOH ; O_AE
DB
OOOH, OCCH, 066H, 033H, 066H,OCCH, OOOH, OOOH ; O_AF
DB
022H, 088H, 022H, 088H, 022H, 088H, 022H, 088H ; o_BO
DB
055H, OMH, 055H, OMH, 055H, OMH, 055H, OMH ; O_Bl
DB
OOBH, 077H, ODBH, OEEH, OOBH, 077H, ODBH, OEEH ; 0_B2
DB
018H,018H, 01 8H, 018H, 018H, 018H, 018H, 018H ; 0_B3
DB
018H, 018H, 018H, 018H, OF8H, 018H, 018H, 018H ; 0_B4
DB
018H, 018H, OF8H, 018H,OF8H, 018H, 018H, 018H ; 0_B5
DB
036H, 036H, 036H, 036H, OF6H, 036H, 036H, 036H ; 0_B6
DB
OOOH, OOOH, OOOH, OOOH, 0 FEH, 036H, 036H, 036H ; D_B7
DB
OOOH, OOOH, 0 F8H, 018H, OF8H, 0 18H, 01 8H, 018H ; 0_B8
DB
036H, 036H, Of6H, 006H, Of6H, 0 36H, 036H, 036H ; D_B9
DB
036H, 036H, 036H, 036H, 036H, 036H, 036H, 036H ; D_BA
DB
OOOH, OOOH, OFEH, 006H, OF6H, 036H, 036H, 036H ; O_BB
DB
036H,036H, OF6H, 006H, OFEH, OOOH, OOOH, OOOH ; O_BC
DB
036H,036H, 036H, 036H. OFEH, OOOH,OOOH, OOOH ; D_BD
DB
018H, 018H, OF8H, 018H, OF8H, OOOH, OOOH, OOOH ; O_BE
DB
OOOH, OOOH, OOOH, OOOH, OFeH, 01 8H, 018H, 018H ; D_Bf
DB
o 16H, 018H, 018H, 018H, 01 FH, OOOH, OOOH, OOOH ; D_CO
DB
018H, 0 16H. 018H, 01 8H, OffH, OOOH, OOOH, OOOH ; O_Cl
DB
OOOH, OOOH, OOOH, OOOH, OffH, 0 18H, 0 18H, 018H ; 0_C2
DB
018H, 018H, 018H, 018H, 01 FH,018H, 018H, 018H ; D_C3
DB
OOOH, OOOH, OOOH, OOOH, Of FH, OOOH, OOOH, OOOH ; D_C4
DB
018H,018H. 018H, 018H, 0 FFH, 01 8H, 018H,018H ; D_C5
DB
018H, 018H, 01 FH, 018H, 01 FH,018H, 018H,018H ; D_C6
DB
036H, 036H, 036H, 036H, 037H, 036H, 036H, 036H ; D_C7
DB
036H, 036H, 037H, 030H, 03 FH, OOOH, OOOH, OOOH ; D_C8
DB
OOOH, 000H,03FH, 030H, 037H, 036H, 036H, 036H ; 0_C9
DB
036H, 036H,0F7H,OOOH, OFFH,OOOH, OOOH, OOOH ; D_CA
DB
OOOH, OOOH, OffH, 000H,0F7H,036H, 036H, 036H ; D_CB
DB
036H, 036H.037H, 030H, 037H, 036H, 036H, 036H ; O_CC
DB
OOOH, OOOH, OffH, OOOH, 0 ffH, OOOH, OOOH, OOOH ; D_CD
DB
036H,036H, OF7H, OOOH, OF7H, 036H, 036H, 036H ; D_CE
IBM Enhanced Graphics Adapter 163
0678 18 18 FF 00 FF 00
435
00 00
436
437
0680 36 36 36 36 FF 00
438
00 00
439
0688 00 00 FF 00 FF 18
440
18 18
441
0690 00 00 00 00 FF 36
442
36 36
443
0698 36 36 36 36 3F 00
444
0000
445
06AO 18 18 1F 18 1F 00
446
00 00
447
06A8 00 00 1F 18 1F 18
448
18 18
449
0680 00 00 00 00 3F 36
450
3636
451
0688 36 36 36 36 FF 36
452
36 36
453
06CO 18 18 FF 18 fF 18
454
18 18
455
06C8 18 18 18 18 F8 00
456
00 00
457
0600 00 00 00 00 1F 18
458
18 18
459
0608 FF FF FF FF FF FF
460
FF FF
461
06EO 00000000 FF FF
462
FF FF
463
06E8 FO FO FO FD FO FO
464
FO FO
465
06FO OF OF OF OF OF OF
466
OF OF
467
06F8 Fe Fe FF FF 00 00
468
0000
469
470
0700 00 00 76 DC C8 DC
471
76 00
472
0708 00 78 CC F8 CC FB
473
CO CO
474
0710 00 FC CC CO CO CO
475
CO 00
476
0718 00 FE 6C 6C 6C 6C
477
6C 00
478
0720 FC CC 60 30 60 CC
479
FC 00
480
0728 00 00 7E 08 08 08
481
70 00
482
0730 00 66 66 66 66 7C
483
60 CO
4B4
0738 00 76 DC 18 18 18
485
0740
18 00 FC 30 78 CC CC 78 ]0 FC
486
487 488
0748 38 6C C6 FE C6 6C
489
38 00
490
0750 38 6C C6 C6 6C 6C
491
EE 00
492
0758 1C 30 18 7C CC CC
493
78 00
494
0760 00 00 7E DB DB 7E
495
00 00
496
0768 06 OC 7E DB DB 7E
497
60 co
498
0770 38 60 co F8 CO 60
499
38 00
500
0778 78 CC CC CC CC CC
501
CC 00
502
503
0780 00 FC 00 FC 00 FC
504
00 00
505
0788 30 30 FC 30 30 00
506
FC 00
507
0790 60 30 18 30 60 00
508
FC 00
509
0798 18 30 60 30 1800
510
FC 00
511
07AO DE 18 18 18 18 18
512
18 18
513
07A8 18 18 18 18 18 08
514
DB 70
515
07BO 30 30 00 FC 00 30
516
3000
517
07B8 00 76 DC 00 76 DC
51B
00 00
519
07CO 38 6C 6G 38 00 00
520
00 00
521
07G8 00 00 00 18 18 00
522
00 00
523
0700 00 00 00 00 18 00
524
00 00
525
0708 OF DC DC OC EC 6C
526
3C 1C
527
07EO 78 6C 6C 6C 6C 00
52B
00 00
529
07E8 70 18 30 60 78 00
530
00 00
5]1
07FO 00 00 3C ]C 3C ]C
532
00 00
53]
07F8 00 00 00 00 00 00
5]4
00 00
535
0800
536
537
0000
0000 0000
08
018H,018 H,OFFH,000H,OFFH,OOOH,OOOH,OOOH ; O~CF
036H, 036H, 036H, 036H, OFFH, OOOH, OOOH, OOOH ; O~OO
DB
OOOH, OOOH, OFFH, OOOH, OFFH, 018H, 0 18H, 018H ; 0~01
OOOH, OOOH, OOOH, OOOH, OF FH, 036H, 036H, 036H ; 0~02
036H, 036H, 036H, 036H, 03 FH, OOOH, OOOH. OOOH ; 0~03
018H, 018H, 01 FH, 018H, 01 FH, OOOH, OOOH, OOOH ; 0~04
DB
OOOH, OOOH, 01 FH, 018H, 01 FH, 018H, 018H ,018H ; D~D5
DB
OOOH, OOOH, OOOH, OOOH, 03 FH, 0 36H, 036H, 036H ; D~D6
036H, 036H, 0 36H, 036H, 0 FFH, 03 6H, 0 36H, 036H ; D~D7
DB
018H, 018H, OFFH, 018H, OFFH, 018H, 018H, 018H ; 0~08
DB
018H,018H,018H,018H,OF8H,OOOH,000H,OOOH ; 0~09
DB
OOOH,OOOH,OOOH,OOOH,Ol FH,018H,018H,018H ; O~OA
OFFH, 0 FFH, 0 r FH, OFFH, OFFH, OFFH, 0 FFH, OFFH ; 0~08
DB
OOOH, OOOH, OOOH, OOOH, OFFH, OFFH, OFFH, OFFH ; O~OC
OFOH, OFOH, OFOH, OFOH, OFOH, OFOH, OFOH, OFOH ; O~OO
DB
OOFH, OOFH, OOFH, OOFH, OOFH, OOFH, OOFH, OOFH ; D~OE
DB
OF FH, OFFH, aFFH, OFFH, OOOH, OOOH, OOaH, OOOH ; O~DF
OOOH, OOOH, 076H, OOCH, OC8H, OOCH, 076H. OOOH ; D_EO
DB
OOOH, 078H, OCCH.OF8H, OCCH, OF8H, OCOH, OCOH ; 0_E1
OOOH, OFCH, OCCH,OCOH, OCOH, OCOH, OCOH. OOOH ; 0_E2
DB
OOOH, 0 FEH, 06CH, 06CH, 06CH, 06CH, 06CH, OOOH
0_E3
OFCH, OCCH, 060H, 030H, 060H, OCCH, OFCH, OOOH
0- E4
08
OOOH, OOOH, 07EH, 008H, 008H, 008H, 070H, OOOH
0_E5
08
OOOH, 066H, 066H, 066H, 066H, 07CH, 060H, OCOH
0- E6
08
OOOH, 076H, ODCH, 0 18H, 018H, 018H, 018H, OOOH
0- E7
08
o FCH, 030H, 078H, OCCH, OCCH, 078H, 030H, orCH
0 _EB
08
038H, 06CH, OC6H, 0 FEH, OC6H, 06CH, 038H, OOOH ; 0- E9
08
038H, 06CH, OC6H, OC6H, 06CH, 06CH, OEEH, OOOH ; D_EA
08
01 CH, 030H, 018H, 07CH, OCCH, OCCH, 078H, OOOH ; O_EB
DB
OOOH, OOOH, 07EH, OOBH, OOBH, 07 EH, OOOH, OOOH ; D_EC
006H, OOCH, 07EH, OOBH, OOBH, 07 EH, 060H, OCOH ; D_EO
DB
038H. 060H, OCOH, 0 F8H. OCOH, 060H, 03 8H, OOOH ; D__ EE
07 8H. OCCH, OCCH, OCCH, OCCH, OCCH, OCCH, OOOH ; O_EF
DB 08 08 08 08 DB
DB DB ENDS END
OOOH, OFCH, OOOH, OFCH, OOOH, OFCH. OOOH, OOOH ; 030H, 030H, OFCH, 030H, 030H, OOOH, OFCH, OOOH ; 060H, 030H, 018H, 030H, 060H, OOOH, OFCH, OOOH ; o 18H, 030H, 060H, 030H, 0 18H, OOOH, OFCH, OOOH OOEH, 01 BH, 01 BH, 0 18H, 0 18H, 0 18H, 018H, 018H ; o 18H, 018H, 018H, 0 18H, 0 18H, OD8H, 008H, 070H ; 030H. 030H, OOOH, 0 FCH, OOOH, 030H, 030H, OOOH ; OOOH, 076H, OOGH, OOOH, 076H, oDGH, OOOH, OOOH ; 038H. 06CH, 06CH, 038H. OOOH, OOOH, OOOH, OOOH ; OOOH. OOOH, OOOH, 018H, 01 8H, OOOH, OOOH, OOOH ; OOOH, OOOH, OOOH, OOOH, 01 8H, OOOH, OOOH, OOOH ; OOFH, OOCH, OOCH, OOCH, OECH, 06CH, 03CH, 01 CH ; 078H, 06CH, 06CH, 06CH, 06CH, OOOH, OOOH, OOOH ; 070H, 018H, 030H, 060H, 078H, OOOH, OOOH, OOOH ; OOOH, OOOH, 03GH, 03CH, 03CH, 03CH, OOOH, OOOH ; OOOH, OOOH, OOOH, OOOH, OOOH, OOOH. OOOH, OOOH ;
O_FO 0- F1 0- F2 0- F3 0- F4 0- F5 O_F6 D_F7 D_F8 D_F9 O_FA 0- FB 0 - FC 0- FO 0- FE 0- FF
PAGE,120
SUBTTL END ADDRESS
CODE
SEGMENT PUBLIC
PUBLIC END_ADDRESS
END ADDRESS
LABEL BYTE
CODE
ENOS
END
164 IBM Enhanced Graphics Adapter
August 2, 1984
Index
~A
Attribute Address Register 56
Attribute Controller
description 3
registers 56
B
BIOS
description 4
vectors with special
meanings 103
BIOS listing 103
Bit Mask Register 54
compatibility issues 74
configuration switches 80
CRT Controller
description 3
registers 24
CRT Controller Address
Register 24
CRT Controller Overflow
Register 30
Cursor End Register 33
Cursor Location High
Register 35
Cursor Location Low
Register 35
Cursor Start Register 32
D
Data Rotate Register 49
c
direct drive connector 83
display buffer 4
character generator
ROM 1
Character Map Select
Register 21
Clocking Mode Register 19
Color Compare Register 48
Color Don't Care Register 53
color mapping 10
Color Plane Enable
Register 60
E
Enable Set/Reset Register 47
End Horizontal Blanking
Register 27
End Horizontal Retrace
Register 29
Index-l
End Vertical Blanking
I
Register 40
Input Status Register One 15
Input Status Register Zero 14
F
Interface 76
feature connector 76
feature connector 76
Feature Control Register 14
L
G
Light Pen High Register 36
light pen interface 84
Light Pen Low Register 37
Graphics Controller
Line Compare Register 43
description 3
registers 45
Graphics 1 and 2 Address
Register 46
M
Graphics 1 Position
Register 45
Graphics 2 Position
Register 46
Map Mask Register 20
Maximum Scan Line
Register 32
Memory Mode Register 23
Miscellaneous Output
H
Register 12
Miscellaneous Register 52
Mode Control Register 41,58
Horizontal Display Enable End
Mode Register 50
Register 26
modes
Horizontal Pel Panning
alphanumeric 8
Register 60
graphics 8
Horizontal Total Register 25
IBM Color Display 5
IBM Enhanced Color
Display 6
~..
IBM Monochrome
Display 6
Index-2
o
Offset Register 38
Overscan Color Register 59
Graphics Controller 45
Sequencer 18
Reset Register 18
s
p
Sequencer
description 3
Palette Registers 57
registers 18
Preset Row Scan Register 31
Sequencer Address Register 18
programming
Set/Reset Register 47
considerations 62
specifications 79
compatibility issues 74
configuration switch
creating a split screen 73
settings 81
creating a 512 character
configuration switches 80
set 70
direct drive connector 83
creating an 80 by 43
light pen interface 84
alphanumeric mode 71
system board switches 79
programming registers 62
Start Address High Register 34
RAM loadable character
Start Address Low Register 34
generator 69
Start Horizontal Blanking
vertical interrupt feature 72
Register 26
Start Horizontal Retrace Pulse
Register 28
Start Vertical Blanking
R
Register 39
support logic 4
RAM loadable character
generator 69
Read Map Select Register 50
registers
Attribute Controller 56
CRT Controller 24
external 12
u
Underline Location
Register 39
Index-3
v
Vertical Display Enable End
Register 38
vertical interrupt feature 72
Vertical Retrace End Register 36
Vertical Retrace Start
Register 36
Vertical Total Register 30
Index-4
Adobe Acrobat Pro Extended 9.5.5 Adobe Acrobat Pro Extended 9.5.5