IBM Enhanced Graphics Adapter

minuszerodegrees.net

OA - IBM Enhanced Graphics Adapter
----- ------_---------.---------

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