minuszerodegrees.net
----- ------_---------.--------- Personal Computer IBM Enhanced Graphics Adapter iv Contents Description .................................... 1 Major Components .......................... 3 Modes of Operation ......................... 5 Basic Operations ............................ 8 Registers ................................. 12 Programming Considerations ..................... 62 Programming the Registers ................... 62 RAM Loadable Character Generator ........... 69 Creating a 512 Character Set ................. 70 Creating an 80 by 43 Alphanumeric Mode ....... 71 Vertical Interrupt Feature .................... 72 Creating a Split Screen ...................... 73 Compatibility Issues ........................ 74 Interface ..................................... 76 Feature Connector ......................... 76 Specifications ................................. 79 System Board Switches ...................... 79 Configuration Switches ...................... 80 Direct Drive Connector ..................... 83 Light Pen Interface ......................... 84 Jumper Descriptions ........................ 85 Logic Diagrams ................................ 87 BIOS Listing ................................. 103 Vectors with Special Meanings ............... 103 Index ........................................ Index-l v Description The IBM Enhanced Graphics Adapter (EGA) is a graphics controller that supports both color and monochrome direct drive displays in a variety of modes. In addition to the direct drive port, a light pen interface is provided. Advanced features on the adapter include bit-mapped graphics in four planes and a RAM (Random Access Memory) loadable character generator. Design features in the hardware substantially reduce the software overhead for many graphics functions. The Enhanced Graphics Adapter provides Basic Input Output System (BIOS) support for both alphanumeric (A/N) modes and all-points-addressable (APA) graphics modes, including all modes supported by the Monochrome Display Adapter and the Color/Graphics Monitor Adapter. Other modes provide APA 640x350 pel graphics support for the IBM Monochrome Display, full 16 color support in both 320x200 pel and 640x200 pel resolutions for the IBM Color Display, and both A/N and APA support with resolution of 640x350 for the IBM Enhanced Color Display. In alphanumeric modes, characters are formed from one of two ROM (Read Only Memory) character generators on the adapter. One character generator defines 7x9 characters in a 9x14 character box. For Enhanced Color Display support, the 9x14 character set is modified to provide an Sx14 character set. The second character generator defines 7x7 characters in an SxS character box. These generators contain dot patterns for 256 different characters. The character sets are identical to those provided by the IBM Monochrome Display Adapter and the IBM Color/Graphics Monitor Adapter. The adapter contains 64K bytes of storage configured as four 16K byte bit planes. Memory expansion options are available to expand the adapter memory to 12SK bytes or 256K bytes. The adapter is packaged on a single 13-1/8 inch (333.50 mm) card. The direct drive port is a right-angle mounted connector at ~ the rear of the adapter and extends through the rear panel of the system unit. Also on the card are five large scale integration (LSI) modules custom designed for this controller. August 2, 1984 IBM Enhanced Graphics Adapter 1 Located on the adapter is a feature connector that provides access to internal functions through a 32-pin berg connector. A separate 64-pin connector provides an interface for graphics memory expansion. The following is a block diagram of the Enhanced Graphics Adapter: CPU Addr. CPU Data ..~ . ~ CRTC I LSI ~ f. --.. MUX ~ I~ GRAPH ~ LSI H 1. 4 BIT 0 f- MAP ~ ~t--- GRAPH ... 4 I- LSI ~ SEQ ~ :J 3~ ... 4 BIT 2f-- MAP ~Iil LSI I-- ,1. p,1r ... ATTRIB LSI :: DIRECT DRIVE ... OUTPUT Enhanced Graphics Adapter Block Diagram 2 IBM Enhanced Graphics Adapter August 2, 1984 Major Components CRT Controller The CRT (Cathode Ray Tube) Controller (CRTC) generates horizontal and vertical synchronous timings, addressing for the regenerative buffer, cursor and underline timings, and refresh addressing for the dynamic RAMs. Sequencer The Sequencer generates basic memory timings for the dynamic RAMs and the character clock for controlling regenerative memory fetches. It allows the processor to access memory during active display intervals by inserting dedicated processor memory cycles periodically between the display memory cycles. Map mask registers are available to protect entire memory maps from being changed. ~ Graphics Controller The Graphics Controller directs the data from the memory to the attribute controller and the processor. In graphics modes, memory data is sent in serialized form to the attribute chip. In alpha modes the memory data is sent in parallel form, bypassing the graphics controller. The graphics controller formats the data for compatible modes and provides color comparators for use in color painting modes. Other hardware facilities allow the processor to write 32 bits in a single memory cycle, (8 bits per plane) for quick color presetting of the display areas, and additional logic allows the processor to write data to the display on non-byte boundaries. Attribute Controller --~ The Attribute Controller provides a color palette of 16 colors, each of which may be specified separately. Six color outputs are August 2, 1984 IBM Enhanced Graphics Adapter 3 available for driving a display. Blinking and underlining are controlled by this chip. This chip takes data from the display memory and formats it for display on the CRT screen. Display Buffer The display buffer on the adapter consists of 64K bytes of dynamic read/write memory configured as four 16K byte video bit planes. Two options are available for expanding the graphics memory. The Graphics Memory Expansion Card plugs into the memory expansion connector on the adapter, and adds one bank of 16K to each of the four bit planes, increasing the graphics memory to 128K bytes. The expansion card also provides DIP sockets for further memory expansion. Populating the DIP sockets with the Graphics Memory 'Module Kit adds two additional 16K banks to each bit plane, bringing the graphics memory to its maximum of 256K bytes. The address of the display buffer can be changed to remain compatible with other video cards and application software. Four locations are provided. The buffer can be configured at segment address hex AOOOO for a length of 128K bytes, at hex AOOOO for a length of 64K bytes, at hex BOOOO for a length of 32K bytes, or at hex B8000 for a length of 32K bytes. BIOS A read-only memory (ROM) Basic Input Output System (BIOS) . module on the adapter is linked to the system BIOS. This ROM BIOS contains character generators and control code and is mapped into the processor address at hex COnGO for a length of 16K bytes. Support Logic The logic on the card surrounding the LSI modules supports the modules and creates latch buses for the CRT controller, the ~ 4 IBM Enhanced Graphics Adapter August 2, 1984 processor, and character generator. Two clock sources (14 MHz and 16 MHz) provide the dot rate. The clock is multiplexed under processor I/O control. Four I/O registers also resident on the card are not part of the LSI devices. ~ Modes of Operation IBM Color Display The following table describes the modes supported by BIOS on the IBM Color Display: ALPHA BUFFER BOX MAX. MODE # TYPE COLORS FORMAT START SIZE PAGES RESOLUTION 0 A/N 16 40x25 88000 8x8 8 320x200 1 A/N 16 40x25 88000 8x8 8 320x200 2 A/N 16 80x25 88000 8x8 8 640x200 3 A/N 16 80x25 88000 8x8 8 640x200 4 APA 4 40x25 88000 8x8 1 320x200 5 APA 4 40x25 88000 8x8 1 320x200 6 APA 2 80x25 88000 8x8 1 640x200 0 APA 16 40x25 AOOOO 8x8 2/4/8 320x200 E APA 16 80x25 AOOOO 8x8 1/2/4 640x200 Modes 0 through 6 emulate the support provided by the IBM Color/Graphics monitor Adapter. Modes 0,2 and 5 are identical to modes 1,3 and 4 respectively at the adapter's direct drive interface. The Maximum Pages fields for modes D and E indicate the number of pages supported when 64K, 128K or 256K bytes of graphics memory is installed, respectively. August 2, 1984 IBM Enhanced Graphics Adapter 5 IBM Monochrome Display The following table describes the modes supported by BIOS on the IBM Monochrome Display. ALPHA BUFFER BOX MAX. MODE # TYPE COLORS FORMAT START SIZE PAGES RESOLUTION 7 A/N 4 80x25 BOOOO 9x14 8 720x350 F APA 4 80x25 AOOOO 8x14 1/2 640x350 Mode 7 emulates the support provided by the IBM Monochrome Display Adapter. IBM Enhanced Color Display The Enhanced Graphics Adapter supports attachment of the IBM Enhanced Color Display. The IBM Enhanced Color Display is capable of running at the standard television frequency of 15.75 KHz as well as running 21.85 KHz. The table below summarizes the characteristics of the IBM Enhanced Color Display: Parameter Horiz Scan Rate Vertical Scan Rate Video Bandwidth Displayable Colors Character Size Character Box Size Maximum Resolution Alphanumeric Modes Graphics Modes TV Frequency 15.75 KHz. 60 Hz. 14.318 MHz. 16 Maximum 7 by 7 Pels 8 by 8 Pels 640x200 Pels 0,1,2,3 4,5,6,D,E High Resolution 21.85 KHz. 60 Hz. 16.257 MHz. 16 or 64 7 by 9 Pels 8 by 14 Pels 640 by 350 Pels 0,1,2,3 10 In the television frequency mode, the IBM Enhanced Color Display displays information identical in color and resolution to the IBM Color Display. In the high resolution mode, the adapter provides enhanced alphanumeric character support. This enhanced alphanumeric support consists of transforming the 8 by 8 character box into an 8 by 14 character box, and providing 16 colors out of a palette of 6 IBM Enhanced Graphics Adapter August 2, 1984 64 possible display colors. Display colors are changed by altering the programming of the color palette registers in the Attribute Controller. In alphanumeric modes, any 16 of 64 colors are displayable. the screen resolution is 320x350 for modes 0 and 1, and 640x350 for modes 2 and 3. The resolution displayed on the IBM Enhanced Color Display is selected by the switch settings on the Enhanced Graphics Adapter. The Enhanced Color Display is compatible with all modes listed for the IBM Color Display. the following table describes additional modes supported by BIOS for the IBM Enhanced Color Display: ALPHA BUFFER BOX MAX. MODE # TYPE COLORS FORMAT START SIZE PAGES RESOLUTION 0* A/N 16/64 40x25 88000 8x14 8 320x350 1* A/N 16/64 40x25 88000 8x14 8 320x350 2* A/N 16/64 80x25 88000 8x14 8 640x350 3* A/N 16/64 80x25 88000 8x14 8 640x350 10* APA 4/16 80x25 ADOOO 8x14 1/2 640x350 16/64 * Note that modes 0, 1,2, and 3, are also listed forIBM Color Display support. BIOS provides enhanced support for these modes when an Enhanced Color Display is attached. The values in the "COLORS" field indicate 16 colors of a 64 color palette or 4 colors of a sixteen color palette. In mode 10, The dual values for the "COLORS" field and the "MAX. PAGES" field indicate the support provided when 64K or when greater than 64K of graphics memory is installed, respectively. August 2, 1984 mM Enhanced Graphics Adapter 7 Basic Operations Alphanumeric Modes The data format for alphanumeric modes on the Enhanced Graphics Adapter is the same as the data format on the IBM Color/Graphics Monitor Adapter and the IBM Monochrome Display Adapter. As an added function, bit three of the attribute byte may be redefined by the Character Map Select register to act as a switch between character sets. This gives the programmer access to 512 characters at one time. This function is valid only when memory has been expanded to 128K bytes or more. When an alphanumeric mode is selected, the BIOS transfers character patterns from the ROM to bit plane 2. The processor stores the character data in bit plane 0, and the attribute data in bit plane 1. The programmer can view bit planes 0 and 1 as a single buffer in alphanumeric modes. The CRTC generates sequential addresses, and fetches one character code byte and one attribute byte at a time. The character code and row scan count address bit plane 2, which contains the character generators. The appropriate dot patterns are then sent to the palette in the attribute chip, where color is assigned according to the attribute data. Graphics Modes 320x200 Two and Four Color Graphics (Modes 4 and 5) Addressing, mapping and data format are the same as the 320x200 pel mode of the Color/Graphics Monitor Adapter. The display buffer is configured at hex B8000. Bit image data is stored in bit planes 0 and 1. 640xlOO Two Color Graphics (Mode 6) Addressing, mapping and data format are the same as the 640x200 pel black and white mode of the Color/Graphics 8 IBM Enhanced Graphics Adapter August 2, 1984 Monitor Adapter. The display buffer is configured at hex B8000. Bit image data is stored in bit plane O. 640x350 Monochrome Graphics (Mode F ) This mode supports graphics on the IBM Monochrome Display with the following attributes: black, video, blinking video, and intensified video. Resolution of 640x350 requires 56K bytes to support four attributes. By chaining maps 0 and 1, then maps 2 and 3 together, two 32K bit planes can be formed. This chaining is done only when necessary (less than 128K of graphics memory). The first map is the video bit plane, and the second map is the intensity bit plane. Both planes reside at hex address AOOOO. Two bits, one from each bit plane, define one picture element (pel) on the screen. The bit definitions for the pels are given in the following table. The video bit plane is denoted by CO and the Intensity Bit Plane is denoted by C2. C2 co 0 0 0 1 1 0 1 1 Pixel Color Black Video Blinking Video Intensified Video Valid Attributes 0 3 C F The byte organization in memory is sequential. The first eight pels on the screen are defined by the contents of memory in location AOOO:OH, the second eight pels by location AOOO: IH, and so on. The first pel within anyone byte is defined by bit 7 in the byte. The last pel within the byte is defined by bit 0 in the byte. Monochrome graphics works in odd/even mode, which means that even CPU addresses go into even bit planes and odd CPU addresses go into odd bit planes. Since both bit planes reside at address AOOOO, the user must select which plane or planes he desires to update. This is accomplished by the map mask register of the sequencer. (See the table above for valid attributes). August 2, 1984 IBM Enhanced Graphics Adapter 9 16/64 Color Graphics Modes (Mode 10) These modes support graphics in 16 colors on either a medium or high resolution monitor. The memory in these modes consists of using all four bit planes. Each bit plane represents a color as shown below. The bit planes are denoted as CO,Cl,C2 and C3 respectively. ,r- co = Blue Pels C 1 = Green Pels C2 = Red Pels C3 = Intensified Pels Four bits (one from each plane) define one pelon the screen. The color combinations are illustrated in the following table: I R G B Color 0 0 0 0 Black 0 0 0 1 Blue 0 0 1 0 Green 0 0 1 1 Cyan 0 1 0 0 Red 0 1 0 1 Magenta 0 1 1 0 Brown 0 1 1 1 White 1 0 0 0 Dark Gray 1 0 0 1 Light Blue 1 0 1 0 Light Green 1 0 1 1 Light Cyan 1 1 0 0 Light Red 1 1 0 1 Light Magenta 1 1 1 0 Yellow 1 1 1 1 Intensified White ~ ... The display buffer resides at address AOOOO. The map mask register of the sequencer is used to select any or all of the bit planes to be updated when a memory write to the display buffer is executed by the Cpu. Color Mapping The Enhanced Graphics Adapter supports 640x350 Graphics for both the IBM Monochrome and the IBM Enhanced Color 10 IBM Enhanced Graphics Adapter August 2, 1984 Displays. Four color capability is supported on the EGA without the Graphics Memory Expansion Card (base 64 KB), and sixteen colors are supported when the Graphics Memory Expansion Card is installed on the adapter (128 KB or above). This section describes the differences in the colors displayed depending upon ~ the graphics memory available. Note that colors OH, lH, 4H, and 7H map directly regardless of the graphics memory available. Character Attribute OOH* 01 H* 02H 03H 04H* OSH 06H 07H* OSH 09H OAH OBH OCH ODH OEH OFH Monochrome Black Video Black Video Blinking Intensified Blinking Intensified Black Video Black Video Blinking Intensified Blinking Intensified Mode 10H 64KB Black Blue Black Blue Red White Red White Black Blue Black Blue Red White Red White Mode 10H >64KB Black Blue Green Cyan Red Magenta Brown White Dark Gray Light Blue Light Green Light Cyan Light Red Light Magenta Yellow Intensified White * Graphics character attributes which map directly regardless of the graphics memory available. August 2, 1984 IBM Enhanced Graphics Adapter 11 Registers External Registers This section contains descriptions of the registers of the Enhanced Graphics Adapter that are not contained in an LSI device. ,,-....., Name Miscellaneous Output Register Feature Control Register Input Status Register 0 Input Status Register 1 ? = B in Monochrome Modes Port Index 3C2 - 3?A - 3C2 - 3?2 - ? = D in Color Modes MisceUaneous OUtput Register This is a write-only register. The processor output port address is hex 3C2. A hardware reset causes all bits to reset to zero. Miscellaneous Output Register Format Bit 7 6 5 4 3 2 1 0 I/O Address Select Enable Ram Clock Select 0 L...-------l~ Clock Select 1 Disable Internal Video Drivers Page Bit For Odd/Even '---------...... Horizontal Retrace Polarity L...------------l~ Vertical Retrace Polarity Bit 0 3BX/3DX CRTC I/O Address-This bit maps the CRTC I/O addresses for IBM Monochrome or Color/Graphics Monitor Adapter emulation. A logical 0 sets CRTC addresses to 3BX and Input Status Register 1 's address to 3BA for Monochrome emulation. A logical 1 sets CRTC 12 mM Enhanced Graphics Adapter August 2, 1984 Bit 1 ~ Bit 2-Bit 3 Bit 4 Bit 5 Bit 6 Bit 7 addresses to 3DX and Input Status Register l's address to 3DA for Color/Graphics Monitor Adapter emulation. Enable RAM-A logical 0 disables RAM from the processor; a logical 1 enables RAM to respond at addresses designated by the Control Data Select value programmed into the Graphics Controllers. Clock Select-These two bits select the clock source according to the following table: Bits 3 2 o 0o 1- 1 0- 1 1- Selects 14 MHz clock from the processor I/O channel Selects 16 MHz clock on-board oscillator Selects external clock source from the feature connector. Not used Disable Internal Video Drivers-A logical 0 activates internal video drivers; a logical 1 disables internal video drivers. When the internal video drivers are disabled, the source of the direct drive color output becomes the feature connector direct drive outputs. Page Bit For Odd/Even-Selects between two 64K pages of memory when in the Odd/Even modes (0,1,2,3,7). A logical 0 selects the low page of memory; a logical 1 selects the high page of memory. Horizontal Retrace Polarity-A logical 0 selects positive horizontal retrace; a logical 1 selects negative horizontal retrace. Vertical Retrace Polarity-A logical 0 selects positive vertical retrace; a logical 1 selects August 2,1984 IBM Enhanced Graphics Adapter 13 negative vertical retrace. The IBM Monochrome display requires a negative vertical retrace polarity. Feature Control Register This is a write-only register. The processor output register is hex 3BA or 3DA. Feature Control Register Format Bit 7 6 5 4 3 2 1 0 Feature Control Bit 0 Feature Control Bit 1 Reserved Not Used Bits 0 and 1 Feature Control Bits-These bits are used to ~ convey information to the feature connector. The output of these bits goes to the FEAT 0 (pin 19) and FEAT 1 (pin 17) of the feature connector. Input Status Register Zero This is a read-only register. The processor input port address is hex 3C2. 14 IBM Enbanced Graphics Adapter August 2, 1984 Input Status Register Zero Format Bit 7 6 5 4 3 2 1 0 I I I I I I :Not Used Switch Sense Reserved Reserved CRT Interrupt Bit 4 Bits 5 and 6 Bit 7 Switch Sense-When set to J, this bit allows the processor to read the four configuration switches on the board. The setting of the CLKSEL field determines which switch is being read. The switch configuration can be determined by reading byte 40:88H in RAM. Bit 3: Switch 4 ; Logical 0 = switch closed Bit 2: Switch 3 ; Logical 0 = switch closed Bit 1: Switch 2 ; Logical 0 = switch closed Bit 0: Switch 1 ; Logical 0 = switch closed Feature Code-These bits are input from the Feat (0) and Feat (1) pins on the feature connector. CRT Interrupt-A logical 1 indicates video is being displayed on the CRT screen; a logical 0 indicates that vertical retrace is occurring. Input Status Register One This is a read-only register. The processor port address is hex 3BA or hex 3DA. August 2, 1984 IBM Enhanced Graphics Adapter 15 Input Status Register One Format Bit 7 6 5 4 3 2 1 0 Display Enable Light Pen Strobe Light Pen Switch Vertical Retrace Diagnostic 1 Diagnostic 0 Not Used Bit 0 Bit 1 Bit 2 Bit 3 Bits 4 and 5 Display Enable-Logical 0 indicates the CRT raster is in a horizontal or vertical retrace interval. This bit is the real time status of the display enable signal. Some programs use this status bit to restrict screen updates to inactive display intervals. The Enhanced Graphics Adapter does not require the CPU to update the screen buffer during inactive display intervals to .~ avoid glitches in the display image. Light Pen Strobe-A logical 0 indicates that the light pen trigger has not been set; a logical 1 indicates that the light pen trigger has been set. Light Pen Switch-A logical 0 indicates that the light pen switch is closed; a logical 1 indicates that the light pen switch is open. Vertical Retrace-A logical 0 indicates that video information is being displayed on the CRT screen; a logicall indicates the CRT is in a vertical retrace interval. This bit can be programmed to interrupt the processor on interrupt level 2 at the start of the vertical retrace. This is done through bits 4 and 5 of the ~ Vertical Retrace End Register of the CRTC. Diagnostic Usage-These bits are selectively connected to two of the six color outputs of the 16 IBM Enhanced Grapbics Adapter August 2, 1984 Attribute Controller. The Color Plane Enable register controls the multiplexerfor the video wiring. The following table illustrates the combinations available and the color output wiring. Color Plane Register Bit5 Bit4 0 0 0 1 1 0 1 1 Input Status Register One Bit5 Blt4 Red Secondary Blue Secondary Red Not Used Blue Green Secondary Green Not Used August 2, 1984 IBM Enhanced Graphics Adapter 17 Sequencer Registers Name Address Reset Clocking Mode Map Mask Character Map Select Memory Mode Port 3C4 3C5 3C5 3C5 3C5 3C5 Index - 00 01 02 03 04 Sequencer Address Register The Address Register is a pointer register located at address hex 3C4. This register is loaded with a binary value that points to the sequencer data register where data is to be written. This value is referred to as "Index" in the table above. Sequencer Address Register Format Bit 7 6 5 4 3 2 1 0 1'----11_1_1_1_1_I-:: SequencerAddress L..--I . .. - Not Used Bit O-Bit 3 Sequencer Address Bits-A binary value pointing to the register where data is to be written. Reset Register This is a write-only register pointed to when the value in the address register is hex 00. The output port address for this register is hex 3C5. 18 IBM Enhanced Graphics Adapter AU2USt 2. 1984 Reset Register Format Bit 7 6 5 4 3 2 1 0 I11I11 ~ Asynchronous Reset Synchronous Reset Not Used Bit 0 Bit 1 Asynchronous Reset-A logical 0 commands the sequencer to asynchronous clear and halt. All outputs are placed in the high impedance state when this bit is a O. A logical 1 commands the sequencer to run unless bit 1 is set to zero. Resetting the sequencer with this bit can cause data loss in the dynamic RAMs. Synchronous Reset-A logical 0 commands the sequencer to synchronous clear and halt. Bits 1 and 0 must both be ones to allow the sequencer to operate. Reset the sequencer with this bit before changing the Clocking Mode Register, if memory contents are to be preserved. Clocking Mode Register This is a write-only register pointed to when the value in the address register is hex 01. The output port address for this register is hex 3C5. Clocking Mode Register Format Bit 7 6 5 4 3 2 1 0 8/9 Dot Clocks Bandwidth Shift Load Dot Clock Not Used August 2, 1984 mM Enhanced Graphics Adapter 19 Bit 0 Bit 1 Bit 2 Bit 3 8/9 Dot Clocks-A logical 0 directs the sequencer to generate character clocks 9 dots wide; a logical 1 directs the sequencer to generate character clocks 8 dots wide. Monochrome alphanumeric mode (07H) is the only mode that uses character clocks 9 dots wide. All other ~ modes must use 8 dots per character clock. Bandwidth-A logical 0 makes CRT memory cycles occur on 4 out of 5 available memory cycles; a logical 1 makes CRT memory cycles occur on 2 out of 5 available memory cycles. Medium resolution modes require less data to be fetched from the display buffer during the horizontal scan time. This allows the CPU greater access time to the display buffer. All high resolution modes must provide the CRTC with 4 out of 5 memory cycles in order to refresh the display image. Shift Load-When set to 0, the video serializers are reloaded every character clock; when set to 1, the video serializers are loaded every other character clock. This mode is useful when 16 bits are fetched per cycle and chained together in the shift registers. Dot Clock-A logical 0 selects normal dot clocks derived from the sequencer master clock input. When this bit is set to 1, the master clock will be divided by 2 to generate the dot clock. All the other timings will be stretched since they are derived from the dot clock. Dot clock divided by two is used for 320x200 modes (0, 1,4,5) to provide a pixel rate of 7 MHz, (9 MHz for mode D). Map Mask Register This is a write-only register pointed to when the value in the address register is hex 02. The output port address for this register is hex 3C5. 20 mM Enhanced Graphics Adapter August 2, 1984 Map Mask Register Format BH 7 6 5 4 3 2 1 a a 1 Enables Map 1 Enables Map 1 1 Enables Map 2 1 Enables Map 3 Not Used Bit O-Bit 3 Map Mask-A logical 1 in bits 3 through 0 enables the processor to write to the corresponding maps 3 through O. If this register is programmed with a value of OFH, the CPU can perform a 32-bit write operation with only one memory cycle. This substantially reduces the overhead on the CPU during display update cycles in graphics modes. Data scrolling operations are also enhanced by setting this register to a value of OFH and writing the display buffer address with the data stored in the CPU data latches. This is a read-modify-write operation. When odd/even modes are selected, maps 0 and 1 and maps 2 and 3 should have the same map mask value. Character Map Select Register This is a write-only register pointed to when the value in the address register is hex 03. The output port address for this register is 3C5. August 2, 1984 mM Enhanced Graphics Adapter 21 Character Map Select Register Format Bit IIII ~III ~I:. 7 6 5 4 3 2 1 0 Character Map Select B - - Character Map Select A _ L-~~-L _ _ _ _ _ _ _ _ _ _ _~ NotUsed Bit O-Bit 1 Character Map Select B--Selects the map used to generate alpha characters when attribute bit 3 is a 0, according to the following table: Bits 1 0 Value 0 0 0 1 1 0 1 1 Map Selected 0 1 2 3 Table Location 1st 8K of Plane 2 Bank 0 2nd 8K of Plane 2 Bank 1 3rd 8K of Plane 2 Bank 2 4th 8K of Plane 2 Bank 3 Bit 2-Bit 3 Character Map Select A--Selects the map used /""'"". to generate alpha characters when attribute bit 3 is aI, according to the following table: Bits 3 2 Value 0 0 0 1 1 0 1 1 Map Selected 0 1 2 3 Table Location 1sl 8K of Plane 2 Bank 0 2nd 8K of Plane 2 Bank 1 3rd 8K of Plane 2 Bank 2 4th 8K of Plane 2 Bank 3 In alphanumeric modes, bit 3 of the attribute byte normally has the function of turning the foreground intensity on or off. This bit however may be redefined as a switch between character sets. This function is enabled when there is a difference between the value in Character Map Select A and the value in Character Map Select B. Whenever these two values are the same, the character select function is disabled. The memory mode register bit 1 must be a 1 (indicates the memory extension card is installed in the unit) to enable this function; otherwise, bank 0 is always selected. 22 mM Enhanced Graphics Adapter August 2, 1984 128K of graphics memory is required to support two character sets. 256K supports four character sets. Asynchronous reset clears this register to O. This should be done only when the sequencer is reset. Memory Mode Register This is a write-only register pointed to when tlte value in the address register is hex 04. The processor output port address for this register is 3C5. Memory Mode Register Format Bit 7654321 0 E Alpha Extended Memory Odd/Even Not Used Bit 0 Bit 1 Bit 2 Alpha-A logical 0 indicates that a non-alpha mode is active. A logical 1 indicates that alpha mode is active and enables the character generator map select function. Extended Memory-A logical 0 indicates that the memory expansion card is not installed. A logical 1 indicates that the memory expansion card is installed and enables access to the extended memory through address bits 14 and 15. Odd/Even-A logical 0 directs even processor addresses to access maps 0 and 2, while odd processor addresses access maps 1 and 3. A logical 1 causes processor addresses to sequentially access data within a bit map. The maps are accessed according to the value in the map mask register. August 2, 1984 IBM Enhanced Graphics Adapter 23 CRT Controller Registers Name Port Index Address Register 3?4 - Horizontal Total 3?5 00 Horizontal Display End 3?5 01 Start Horizontal Blank 3?5 02 End Horizontal Blank 3?5 03 Start Horizontal Retrace 3?5 04 End Horizontal Retrace 3?5 05 Vertical Total 3?5 06 Overflow 3?5 07 Preset Row Scan 3?5 08 Max Scan line 3?5 09 Cursor Start 3?5 OA Cursor End 3?5 OB Start Address High 3?5 OC Start Address Low 3?5 00 Cursor Location High 3?5 OE Cursor Location Low 3?5 OF Vertical Retrace Start 3?5 10 light Pen High 3?5 10 Vertical Retrace End 3?5 11 light Pen Low 3?5 11 Vertical Display End 3?5 12 Offset 3?5 13 Underline Location 3?5 14 Start Vertical Blank 3?5 15 End Vertical Blank 3?5 16 Mode Control 3?5 17 line Compare 3?5 18 ? = B in Monochrome Modes and 0 in Color Modes CRT Controller Address Register The Address register is a pointer register located at hex 3B4 or hex 3D4. If an IBM Monochrome Display is attached to the adapter, address 3B4 is used. If a color display is attached to the adapter, address 3D4 is used. This register is loaded with a binary value that points to the CRT Controller data register where data is to be written. This value is referred to as "Index" in the table above. 24 IBM Enhanced Graphics Adapter August 2, 1984 CRT Controller Address Register Format Bit 7 6 5 4 3 2 1 0 -=: 11..-...1.1_1_1_1_I_I CRTCAddress ,----I - . _ Not Used Bit O-Bit 4 CRT Controller Address Bits-A binary value pointing to the CRT Controller register where data is to be written. Horizontal Total Register This is a write-only register pointed to when the value in the CRT Controller address register is hex 00. The processor output port address for this register is hex 3B5 or hex 3D5. Horizontal Total Register Format Bit 7 6 5 4 3 2 1 0 ~.. 1--1---11----L..1---II---'-I_IL.........L..I----I-I HorizontaI Total This register defines the total number of characters in the horizontal scan interval including the retrace time. The value directly controls the period of the horizontal retrace output signal. An internal horizontal character counter counts character clock inputs to the CRT Controller, and all horizontal and vertical timings are based upon the horizontal register. Comparators are used to compare register values with horizontal character values to provide horizontal timings. Bit O-Bit 7 Horizontal Total-The total number of characters less 2. August 2, 1984 mM Enhanced Graphics Adapter 25 Horizontal Display Enable End Register· This is a write-only register pointed to when the value in the CRT Controller address register is hex 01. The processor output port address for this register is hex 3B5 or hex 3D5. Horizontal Display Enable End Register Format Bit 7 6 5 4 3 2 1 0 1-1---I.I---LI--JI'--.L..I---,-I--LI--III..-"".~ Horizontal Display Enable End This register defines the length of the horizontal display enable signal. It determines the number of displayed character positions per horizontal line. Bit O-Bit 7 Horizontal display enable end -A value one less than the total number of displayed characters. Start Horizontal Blanking Register This is a write-only register pointed to when the value in the CRT Controller address register is hex 02. The processor output port address for this register is hex 3B5 or hex 3D5. Start Horizontal Blanking Register Format Bit 7 6 5 4 3 2 1 0 1..1---,-1---1.1--11_1...1---L.I---L--II..-.... Start Vertical Blanking This register determines when the horizontal blanking output signal becomes active. The row scan address and underline scan line decode outputs are multiplexed on the memory address outputs and cursor outputs respectively during the blanking interval. These outputs are latched external to the CRT Controller with the falling edge of the BLANK output signal. The row scan address and underline signals remain on the output signals for one character count beyond the end of the blanking signal. r---..... 26 mM Enhanced Graphics Adapter August 2, 1984 Bit O-Bit 7 Start Horizontal Blanking-The horizontal blanking signal becomes active when the horizontal character counter reaches this value. ,..-..., End Horizontal Blanking Register This is a write-only register pointed to when the value in the CRT Controller address register is hex 03. The processor output port address for this register is hex 3B5 or hex 3D5. End Horizontal Blanking Register Format Bit 7 6 5 4 3 2 1 0 I I I I' I End Blanking Display Enable Skew Control Not Used This register determines when the horizontal blanking output ,..-..., signal becomes inactive. The row scan address and underline scan line decode outputs are multiplexed on the memory address outputs and the cursor outputs respectively during the blanking interval. These outputs are latched external to the CRT Controller with the falling edge of the BLANK output signal. The row scan address and underline signals remain on the output signals for one character count beyond the end of the blanking signal. Bit O-Bit 4 End Horizontal Blanking-A value equal to the five least significant bits of the horizontal character counter value at which time the horizontal blanking signal becomes inactive (logical 0). To obtain a blanking signal of width W, the following algorithm is used: Value of Start Blanking Register + Width of :Alanking signal in character clock units = 5-bit result to be programmed into the End Horizontal Blanking Register. August 2,1984 IBM Enhanced Graphics Adapter 27 Bit S-Bit 6 Display Enable Skew Control-These two bits determine the amount of display enable skew. Display enable skew control is required to provide sufficient time for the CRT Controller to access the display buffer to obtain a character and attribute code, access the character generator font, and then go through the Horizontal Pel Panning Register in the Attribute Controller. Each access requires the display enable signal to be skewed one character clock unit so that the video output is in synchronization with the horizontal and vertical retrace signals. The bit values and amount of skew are shown in the following table: Bits 6 5 o 0 Zero character clock skew o lOne character clock skew 1 0 Two character clock skew 1 1 Three character clock skew Start Horizontal Retrace Ptdse Register This is a write-only register pointed to when the value in the CRT Controller address register is hex 04. The processor output port address for this register is hex 3B5 or hex 3D5. Start Horizontal Retrace Pulse Register Format Bit 7 6 5 4 3 2 1 0 I I I I I I I I ~ Start Horizontal Retrace Pulse This register is used to center the screen horizontally, and to specify the character position at which the Horizontal Retrace Pulse becomes active. 28 IBM Enhanced Graphics Adapter August 2, 1984 Bit O-Bit 7 Start Horizontal Retrace Pulse-The value programmed is a binary count of the character position number at which the signal becomes active. ~ End Horizontal Retrace Register This is a write-only register pointed to when the value in the CRT Controller address register is hex os. The processor output port address for this register is hex 3BS or hex 3DS. End Horizontal Retrace Register Format Bit 7 6 5 4 3 2 1 0 I I I I I I I I :.. . . End Horizontal Retrace - Horizontal Retrace Delay '----------~ Start Odd Memory Address This register specifies the character position at which the .......-....., Horizontal Retrace Pulse becomes inactive (logical 0). Bit O-Bit 4 End Horizontal Retrace-A value equal to the five least significant bits of the horizontal character counter value at which time the horizontal retrace signal becomes inactive (logical 0). To obtain a retrace signal of width W, the following algorithm is used: Value of Start Retrace Register + width of horizontal retrace signal in character clock units = S-bit result to be programmed into the End Horizontal Retrace Register. Bit 5-Bit 6 Horizontal Retrace Delay-These bits control the skew of the horizontal retrace signal. Binary 00 equals no Horizontal Retrace Delay. For some modes, it is necessary to provide a horizontal retrace signal that takes up the entire blanking interval. Some internal timings are generated by the falling edge of the horizontal retrace signal. To guarantee the signals are August 2,1984 mM Enhanced Graphics Adapter 29 Bit 7 latched properly, the retrace signal is started before the end of the display enable signal, and then skewed several character clock times to provide the proper screen centering. Start Odd/Even Memory Address-This bit controls whether the first CRT memory address output after a horizontal retrace begins with an even or an odd address. A logical 0 selects even addresses; a logicall selects odd addresses. This bit is used for horizontal pel panning applications. Generally, this bit should be set to a logical O. Vertical Total Register This is a write-only register pointed to when the value in the CRT Controller address register is hex 06. The processor output port address for this register is hex 3B5 or 3D5. Vertical Total Register Format Bit 7 6 5 4 3 2 1 0 I I I III II· Vertical Total Bit O-Bit 7 Vertical Total-This is the low-order eight bits of a nine-bit register. The binary value represents the number of horizontal raster scans on the CRT screen, includio,g vertical retrace. The value in this register determines the period of the vertical retrace signal. Bit 8 of this register is contained in the CRT Controller Overflow Register hex 07 bit o. CRT Controller Overflow Register This is a write-only register pointed to when the value in the CRT Controller Address Register is hex 07. The processor output port address for this register is hex 3B5 or hex 3D5. 30 mM Enhanced Graphics Adapter August 2, 1984 CRTC Overflow Register Format B~ 7 6 5 4 3 2 1 0 Vertical Total Bit 8 Vertical Display Enable End Bit 8 Vertical Retrace Start Bit 8 Start Vertical Blank Bit 8 Line Compare Bit 8 Cursor Location Bit 8 Not Used Bit 0 Bit 1 Bit 2 Bit 3 Bit 4 Bit 5 Vertical Total-Bit 8 of the Vertical Total register (index hex 06). Vertical Display Enable End-Bit 8 of the Vertical Display Enable End register (index hex 12). Vertical Retrace Start-Bit 8 of the Vertical Retrace Start register (index hex 10). Start Vertical Blank-Bit 8 of the Start Vertical Blank register (index hex 15). Line Compare-Bit 8 of the Line Compare register (index hex 18). Cursor Location-Bit 8 of the Cursor Location register (index hex OA). Preset Row Scan Register This is a write-only register pointed to when the value in the CRT Controller address register is hex 08. The processor output port ~ address for this register is hex 3B5 or hex 3D5. August 2, 1984 mM Enhanced Graphics Adapter 31 Preset Row Scan Register Format Bit 7 6 5 4 3 2 1 0 111"111: Starting Row Scan Count after a Vertical Retrace Not Used This register is used for pel scrolling. Bit O-Bit 4 Preset Row Scan (Pel Scrolling)-This register specifies the starting row scan count after a vertical retrace. The row scan counter increments each horizontal retrace time until a maximum row scan occurs. At maximum row scan compare time the row scan is cleared (not preset). Maximum Scan Line Register This is a write-only register pointed to when the value in the CRT ~ Controller address register is hex 09. The processor output port address for this register is hex 3B5 or hex 3D5. Maximum Scan Line Register Format Bit 7 6 5 4 3 2 1 0 III I I II: Maximum Scan Line Not Used Bit O-Bit 4 Maximum Scan Line-This register specifies the number of scan lines per character row. The number to be programmed is the maximum row scan number minus one. Cursor Start Register This is a write-only register pointed to when the value in the CRT Controller address register is hex OA. The processor output port 32 IBM Enhanced Graphics Adapter August 2, 1984 address for this register is hex 3B5 or hex 3D5. Cursor Start Register Format Bit 7 6 5 4 3 2 1 0 Row Scan Cursor Begins Not Used Bit O-Bit 4 Cursor Start-This register specifies the row scan of a character line where the cursor is to begin. The number programmed should be one less than the starting cursor row scan. Cursor End Register This is a write-only register pointed to when the value in the CRT Controller address register is hex OB. The processor output port address for this register is hex 3B5 or hex 3D5. Cursor End Register Format Brt 7 6 5 4 3 2 1 0 II I Row Scan Cursor Ends Cursor Skew Control Not Used Bit O-Bit 4 Bit S-Bit 6 Cursor End-These bits specify the row scan where the cursor is to end. Cursor Skew-These bits control the skew of the cursor signal. August 2, 1984 mM Enhanced Graphics Adapter 33 Bits 6 5 o 0 Zero character clock skew o lOne character clock skew 1 0 Two character clock skew 1 1 Three character clock skew Start Address High Register This is a read/write register pointed to when the value in the CRT Controller address register is hex OC. The processor input/output port address for this register is hex 3B5 or hex 3D5. Start Address High Register Format Bit 7 6 5 4 3 2 1 0 III III I~ High Order Start Address Bit O-Bit 7 Start Address High-These are the high-order eight bits of the start address. The 16-bit value, from the high-order and low-order start address registers, is the first address after the vertical retrace on each screen refresh. Start Address Low Register This is a read/write register pointed to when the value in the CRT Controller address register is hex OD. The processor input/output port address for this register is hex 3B5 or hex 3D5. Start Address Low Register Format Bit 7 6 5 4 3 2 1 0 I ~ Low Order Start Address 34 IBM Enhanced Graphics Adapter August 2, 1984 Bit O-Bit 7 Start Address Low-These are the low-order 8 bits of the start address. Cursor Location High Register This is a read/write register pointed to when the value in the CRT Controller address register is hex OE. The processor input/output poct address for this register is hex 3B5 or hex 3D5. Cursor Location High Register Format Bit 7 6 5 4 3 2 1 0 I I I I I I · High Order Cursor Location Bit O-Bit 7 Cursor Location High-These are the high-order 8 bits of the cursor location. ~ Cursor Location Low Register This is a read/write register pointed to when the value in the CRT Controller address register is hex OF. The processor input/output port address for this register is hex 3B5 or Hex 3D5. Cursor Location Low Register Format Bit 7 6 5 4 3 2 1 0 I I I I I I I · Low Order Cursor Location Bit O-Bit 7 Cursor Location Low- These are the low-order 8 bits of the cursor location. August 2, 1984 IBM Enhanced Graphics Adapter 3S Vertical Retrace Start Register This is a write-only register pointed to when the value in the CRT Controller address register is hex 10. The processor output port address for this register is hex 3B5 or hex 3D5. Vertical Retrace Start Register Format Bit 7 6 5 4 3 2 1 0 IL...-..LI---II_.L..I.........LI---II_.L..I.........L---I.~. Low Order Vertical Retrace Pulse Bit O-Bit 7 Vertical Retrace Start-This is the low-order 8 bits of the vertical retrace pulse start position programmed in horizontal scan lines. Bit 8 is in the overflow register location hex 07. Light Pen High Register This is a read-only register pointed to when the value in the CRT ~ Controller address register is hex 10. The processor input port address for this register is hex 3B5 or hex 3D5. Light Pen High Register Format Bit 7 6 5 4 3 2 1 0 III II I I I High Order Memory Address Counter Bit O-Bit 7 Light Pen High-This is the high order 8 bits of the memory address counter at the time the light pen was triggered. VerticaI Retrace End Register This is a write-only register pointed to when the value in the CRT Controller address register is hex 11. The processor output port 36 IBM Enhanced Graphics Adapter August 2, 1984 address for this register is hex 3B5 or hex 3D5. Vertical Retrace End Register Format Bit 765 432 1 Q ~ I I I I I I I I Vertical Retrace End Q=Clear Vertical Interrupt Q=Enable Vertical Interrupt Not Used Bit O-Bit 3 Bit 4 Bit 5 Vertical Retrace End-These bits determine the horizontal scan count value when the vertical retrace output signal becomes inactive. The register is programmed in units of horizontal scan lines. To obtain a vertical retrace signal of width W, the following algorithm is used: Value of Start Vertical Retrace Register + width of vertical retrace signal in horizontal scan units = 4-bit result to be programmed into the End Horizontal Retrace Register. Clear Vertical Interrupt-A logical 0 will clear a vertical interrupt. Enable Vertical Interrupt-A logical 0 will enable vertical interrupt. Light Pen Low Register This is a read-only register pointed to when the value in the CRT Controller address register is hex 11. The processor input port address for this register is hex 3B5 or 3D5. August 2, 1984 IBM Enhanced Graphics Adapter 37 Light Pen Low Register Format Bit 7 6 5 4 3 2 1 0 '--..L...-.....I'-.L..I---LI........II'-.L..I---LI_~.. Low Order Memory Address Counter Bit O-Bit 7 Light Pen Low-This is is the low-order 8 bits of the memory address counter at the time the light pen was triggered. Vertical Display Enable End Register This is a write-only register pointed to when the value in the CRT Controller address register is hex 12. The processor output port address for this register is hex 3B5 or hex 3D5. Vertical Display Enable End Register Format Bit 7 6 5 4 3 2 1 0 I IIIIIII Low Order Vertical Display Enable End Bit O-Bit 7 Vertical Display Enable End-These are the low-order 8 bits of the vertical display enable end position. This address specifies which scan line ends the active video area of the screen. Bit 8 is in the overflow register location hex 07. Offset Register This is a write-only register pointed to when the value in the CRT Controller address register is hex 13. The processor output port address for this register is hex 3B5 or hex 3D5. ~ 38 IBM Enhanced Graphics Adapter August 2, 1984 Offset Register Format Bit 7 6 5 4 3 2 1 0 I · Logical line width of the screen Bit O-Bit 7 Offset-This register specifies the logical line width of the screen. The starting memory address for the next character row is larger than the current character row by this amount. The Offset Register is programmed with a word address. Depending upon the method of clocking the CRT Controller, this word address is either a word or double word address. Underline Location Register This is a write-only register pointed to when the value in the CRT Controller address register is hex 14. The processor output port address for this register is hex 3B5 or hex 3D5. Underline Location Register Format Bit 7 6 5 4 3 2 1 0 III I I : Horizontal row scan where underline will occur Not Used Bit O-Bit 4 Underline Location-This register specifies the horizontal row scan on which underline will occur.. The value programmed is one less than the scan line number desired. ~ Start Vertical Blanking Register This is a write-only register pointed to when the value in the CRT Controller address register is hex 15. The processor output port August 2, 1984 IBM Enhanced Graphics Adapter 39 address for this register is hex 3B5 or hex 3D5. Start Vertical Blanking Register Format Bit 7 6 5 4 3 2 1 0 IIII II~ Start Vertical Blanking Bit O-Bit 7 Start Vertical Blank-These are the low 8 bits of the horizontal scan line count, at which the vertical blanking signal becomes active. Bit 8 bit is in the overflow register hex 07. End Vertical Blanking Register This is a write-only register pointed to when the value in the CRT Controller address register is hex 16. The processor output port address for this register is hex 3B5 or hex 3D5. End Vertical Blanking Register Format Bit 7 6 5 4 3 2 1 0 I I I I I I I : End Vertical Blanking Not Used Bit O-Bit 4 End Vertical Blank-This register specifies the horizontal scan count value when the vertical blank output signal becomes inactive. The register is programmed in units of horizontal scan lines. To obtain a vertical blank signal of width W, the following algorithm is used: Value of Start Vertical Blank Register + width of vertical blank signal in horizontal scan units = 5-bit result to be programmed into the End Vertical Blank Register. 40 IBM Enhanced Graphics Adapter August 2, 1984 Mode Control Register This is a write-only register pointed to when the value in the CRT Controller address register is hex 17. The processor output port address for this register is hex 3B5 or hex 3D5. Mode Control Register Format Bit 7 6 5 4 3 2 1 0 CMSO Select Row Scan Counter Horizontal Retrace Select L--_ _ _~~ Count by Two Output Control I....---------i~ Address Wrap ' -_ _ _ _ _ _ _..... Word/Byte Mode 1....-_ _ _ _ _ _ _ _. . . . Hardware Reset ,-.... Bit 0 Compatibility Mode Support- When this bit is a logical 0, the row scan address bit 0 is substituted for memory address bit 13 during active display time. A logical 1 enables memory address bit 13 to appear on the memory address output bit 13 signal of the CRT Controller. The CRT Controller used on the IBM Color/Graphics Monitor Adapter is the 6845. The 6845 has 128 horizontal scan line address capability. To obtain 640 by 200 graphics resolution, the CRTC was programmed for 100 horizontal scan lines with 2 row scan addresses per character row. Row scan address bit 0 became the most significant address bit to the display buffer. Successive scan lines of the display image were displaced in memory by 8K bytes. This bit allows compatibility with the 6845 and Color Graphics APA modes of operation. August 2, 1984 mM Enhanced Graphics Adapter 41 Bit 1 Bit 2 Bit 3 Bit 4 Bit 5 Select Row Scan Counter-A logical 0 selects row scan counter bit 1 on MA 14 output pin. A logical 1 selects MA 14 counter bit on MA 14 output pin. Horizontal Retrace Select-This bit selects Horizontal Retrace or Horizontal Retrace divided ~ by 2 as the clock that controls the vertical timing counter. This bit can be used to effectively double the vertical resolution capability of the CRT Controller. The vertical counter has a maximum resolution of 512 scan lines due to the 9-bit wide Vertical Total Register. If the vertical counter is clocked with the horizontal retrace divided by 2 clock, then the vertical resolution is doubled to 1024 horizontal scan lines. A logical oselects HRTC and a logical 1 selects HRTC divided by 2. Count By Two- When this bit is set to 0, the memory address counter is clocked with the character clock input. A logical 1 clocks the memory address counter with the character clock ~ input divided by 2. This bit is used to create either a byte or word refresh address for the display buffer. Output Control-A logical 0 enables the module output drivers. A logical 1 forces all outputs into high impedance state. Address Wrap-This bit selects Memory Address counter bit MA 13 or bit MA 15, and it appears on the MA 0 output pin in the word address mode. If you are not in the word address mode, MA 0 counter output appears on the MA 0 output pin. A logical 1 selects MA 15. In odd/even mode, bit MA 13 should be selected when the 64K memory is installed on the board. Bit MA 15 should be selected when greater then .....-..... 64K memory is installed. This function is used to implement Color Graphics Monitor Adapter compatibility. 42 IBM Enhanced Graphics Adapter August 2, 1984 Bit 6 Word Mode or Byte Mode-When this bit is a logical 0, the Word Mode shifts all memory address counter bits down one bit, and the most significant bit of the counter appears on the least significant bit of the memory address outputs. See table below for address output details. A logical 1 selects the Byte Address mode. CRTC Out Pin MA O/RFA 0 MA 1/RFA 1 MA 2/RFA 2 MA 3/RFA 3 * * * MA 14/RS 3 MA 15/RS 4 Internal Memory Address Counter Wiring to the Output Multiplexer Byte Address Mode Word Address Mode MAO MA1 MA2 MA3 * * * MA14 MA15 MA 15 or MA 13 MAO MA1 MA2 * * * MA13 MA14 ~ Bit7 ° Hardware Reset-A logical forces horizontal and vertical retrace to clear. A logical 1 forces horizontal and vertical retrace to be enabled. Line Compare Register This is a write-only register pointed to when the value in the CRT Controller address register is hex 18. The processor output port address for this register is hex 3B5 or hex 3D5. Line Compare Register Format Bit 765 432 1 0 I Line Compare Target Bit O-Bit 7 Line Compare-This register is the low-order 8 bits of the compare target. When the vertical August 2, 1984 IBM Enhanced Graphics Adapter 43 counter reaches this value, the internal start of the line counter is cleared. This allows an area of the screen to be immune to scrolling. Bit 8 of this register is in the overflow register hex 07. 44 mM Enhanced Graphics Adapter August 2, 1984 Graphics Controller Registers Name Graphics 1 Position Graphics 2 Position Graphics 1 & 2 Address Set/Reset Enable Set/Reset Color Compare Data Rotate Read Map Select Mode Register Miscellaneous Color Don't Care Bit Mask Port 3CC 3CA 3CE 3CF 3CF 3CF 3CF 3CF 3CF 3CF 3CF 3CF Index - - 00 01 02 03 04 05 06 07 08 Graphics 1 Position Register This is a write-only register. The processor output port address for this register is hex 3CC. Graphics I Position Register Format Bit 7 6 5 4 3 2 1 0 I I I I I I ~ Position 0 Position 1 Not Used Bit O-Bit 1 Position-These 2 bits are binary encoded hierarchy bits for the graphics chips. The position register controls which 2 bits of the processor data bus each chip responds to. Graphics 1 must be programmed with a position register value of 0 for this card. August 2, 1984 mM Enhanced Graphics Adapter 45 Graphics 2 Position Register This is a write-only register. The processor output port address for this register is hex 3CA. Graphics II Position Register Format Bit 7 6 5 4 3 2 1 0 IIIIII~ Position 0 Position 1 Not Used Bit O-Bit 1 Position-These 2 bits are binary encoded hierarchy bits for the graphics chips. The position register controls which 2 bits of the processor data bus to which each chip responds. Graphics 2 must be programmed with a position register value of 1 for this card. Graphics 1 and 2 Address Register This is a write-only register and the processor output port address for this register is hex 3CE. Graphics 1 and 2 Address Register Formats Bit 7 6 5 4 3 2 1 0 I I I I : Graphics Address Not Used Bit O-Bit 3 Graphics 1 and 2 Address Bits-This output loads the address register in both graphics chips simultaneously. This register points to the data ~ register of the graphics chips. 46 mM Enhanced Graphics Adapter August 2, 1984 Set/Reset Register This is a write-only register pointed to by the value in the Graphics 1 and 2 address register. This value must be hex 00 before writing can take place. The processor output port address ~ for this register is hex 3CF. Set/Reset Register Format Bit 7 6 5 4 3 2 1 0 Set/Reset Bit 0 Set/Reset Bit 1 Set/Reset Bit 2 Set/Reset Bit 3 Not Used Bit O-Bit 3 Set/Reset-These bits represent the value written to the respective memory planes when the processor does a memory write with write mode 0 selected and set/reset mode is enabled. Set/Reset can be enabled on a plane by plane basis with separate OUT commands to the Set/Reset register. Enable Set/Reset Register This is a write-only register and is pointed to by the value in the Graphics 1 and 2 address register. This value must be hex 01 before writing can take place. The processor output port for this register is hex 3CF. August 2, 1984 IBM Enhanced Graphics Adapter 47 Color Compare Register Format Bit 7 6 5 4 3 2 1 0 Color Compare 0 Color Compare 1 Color Compare 2 Color Compare 3 Not Used Bit O-Bit 3 Enable Set/Reset-These bits enable the set/reset function. The respective memory plane is written with the value of the Set/Reset register provided the write mode is O. When write mode is 0 and Set/Reset is not enabled on a plane, that plane is written with the value of the processor data. Color Compare Register This is a write-only register pointed to by the value in the Graphics 1 and 2 address register. This value must be hex 02 before writing can take place. The processor output port address for this register is hex 3CF. Enable Set/Reset Register Format B~ 7 6 5 4 3 2 1 0 Enable Set/Reset Bit 0 Enable Set/Reset Bit 1 Enable Set/Reset Bit 2 Enable Set/Reset Bit 3 Not Used Bit O-Bit 3 Color Compare-These bits represent a 4 bit color value to be compared. If the processor sets 48 IBM Enhanced Graphics Adapter August 2, 1984 read mode 1 on the graphics chips, and does a memory read, the data returned from the memory cycle will be a 1 in each bit position where the 4 bit planes equal the color compare register. Data Rotate Register This is a write-only register pointed to by the value in the Graphics 1 and 2 address register. This value must be hex 03 before writing can take place. The processor output port address for this register is hex 3CF. Data Rotate Register Format SH 7 6 5 4 3 2 1 0 Rotate Count Rotate Count 1 Rotate Count 2 Function Select Not Used Bit O-Bit 2 Bit 3-Bit 4 Rotate Count-These bits represent a binary encoded value of the number of positions to rotate the processor data bus during processor memory writes. This operation is done when the write mode is o. To write unrotated data the processor must select a count of O. Function Select-Data written to memory can operate logically with data already in the processor latches. The bit functions are defined in the following table. August 2, 1984 mM Enhanced Graphics Adapter 49 Bits 4 3 o 0 Data unmodified. o 1 Data AND'ed with latched data. 1 0 Data OR'ed with latched data. 1 1 Data XOR'ed with latched data. Data may be any of the choices selected by the Write Mode Register except processor latches. If rotated data is selected, the rotate applies before the logical function. Read Map Select Register This is a write-only register pointed to by the value in the Graphics 1 and 2 address register. This value must be hex 04 before writing can take place. The processor output port address for this register is hex 3CF. Read Map Select Register Format Bit 7 6 5 4 3 2 1 0 Map Select 0 Map Select 1 Map Select 2 Not Used Bit O-Bit 2 Map Select-These bits represent a binary encoded value of the memory plane number from which the processor reads data. This register has no effect on the color compare read mode described elsewhere in this section. Mode Register This is a write-only register pointed to by the value in the Graphics 1 and 2 address register. This value must be hex 05 50 IBM Enhanced Graphics Adapter August 2, 1984 before writing can take place. The processor output port address for this register is 3CF. ~ Mode Register Format Bit 7 6 5 4 3 2 1 0 I I : 11 W,;t, Mod, Test Condition Read Mode '-------~ Odd/Even ' - - - - - - - -.... Shift Register Mode ..................- - - - - - -...... Not Used Bit O-Bit 1 Bit 2 Write Mode Bits 1 0 o 0 Each memory plane is written with the processor data rotated by the number of counts in the rotate register, unless Set/Reset is enabled for the plane. Planes for which Set/Reset is enabled are written with 8 bits of the value contained in the Set/Reset register for that plane. o 1 Each memory plane is written with the contents of the processor latches. These latches are loaded by a processor read operation. 1 0 Memory plane n (0 through 3) is filled with 8 bits of the value of data bit n. 1 1 Not Valid The logic function specified by the function select register also applies. Test Condition-A logical 1 directs graphics controller outputs to be placed in high impedance state for testing. August 2, 1984 IBM Enhanced Grapbics Adapter S1 Bit 3 Bit 4 Bit 5 Read Mode-When this bit is a logical 0, the processor reads data from the memory plane selected by the read map select register. When this bit is a logical 1, the processor reads the results of the comparison of the 4 memory planes and the color compare register. Odd/Even-A logical 1 selects the odd/even addressing mode, which is useful for emulation of the Color Graphics Monitor Adapter compatible modes. Normally the value here follows the value of the Memory Mode Register bit 3 of the Sequencer. Shift Register-A logical 1 directs the shift registers on each graphics chip to format the serial data stream with even numbered bits on the even numbered maps and odd numbered bits on the odd maps. Miscellaneous Register This is a write-only register pointed to by the value in the Graphics 1 and 2 address register. This value must be hex 06 before writing can take place. The processor output port for this register is hex 3CF. Miscellaneous Register Format Bit 7 6 5 4 3 2 1 0 Graphics Mode Chain Odd Maps to Even Memory MapO Memory Map 1 Not Used 52 IBM Enhanced Graphics Adapter August 2, 1984 Bit 0 Graphics Mode-This bit controls alpha-mode addressing. A logical 1 selects graphics mode. When set to graphics mode, the character generator address latches are disabled. ~ Bit 1 Chain Odd Maps To Even Maps-When set to 1, this bit directs the processor address bit 0 to be replaced by a higher order bit and odd/even maps to be selected with odd/even values of the processor AO bit, respectively. Bit 2-Bit 3 Memory Map-These bits control the mapping of the regenerative buffer into the processor address space. Bits 3 2 o 0 Hex AOOO for 128K bytes. o 1 Hex AOOO for 64K bytes. 1 0 Hex BOOO for 32K bytes 1 1 Hex B800 for 32K bytes. If the display adapter is mapped at address hex AOOO for 128K bytes, no other adapter can be installed in the system. Color Don't Care Register This is a write-only register and is pointed to by the value in the Graphics 1 and 2 address register. This value must be hex 07 before writing can take place. The processor output port for this register is hex 3CF. August 2, 1984 mM Enhanced Graphics Adapter 53 Color Don't Care Register Format Bit 7 6 5 4 3 2 1 0 Color Plane O=Don't Care Color Plane 1=Don't Care Color Plane 2=Don't Care Color Plane 3=Don't Care Not Used Bit 0 Bit 1 Bit 2 Bit 3 Color Don't Care-Color plane O=don't care when reading color compare when this bit is set to 1. Color Don't Care-Color plane 1=don't care when reading color compare when this bit is set to 1. Color Don't Care-Color plane 2=don't care when reading color compare when this bit is set to 1. r"'\ Color Don't Care-Color plane 3=don't care when reading color compare when this bit is set to 1. Bit Mask Register This is a write-only register and is pointed to by the value in the Graphics 1 and 2 address register. This value must be hex 08 before writing can take place. The processor output port for this register is hex 3CF. Bit Mask Register Format Bit 7 6 5 4 3 2 1 0 I I I I II I I· O-Immune to change 1-Unimpeded Writes 54 IBM Enhanced Graphics Adapter August 2, 1984 Bit O-Bit 7 Bit Mask-Any bit programmed to n causes the corresponding bit nin each bit plane to be immune to change provided that the location being written was the last location read by the processor. Bits programmed to a 1 allow unimpeded writes to the corresponding bits in the bit planes. The bit mask applies to any data written by the processor (rotate, AND'ed, OR'ed, XOR'ed, DX, and SiR). To preserve bits using the bit mask, data must be latched internally by reading the location. When data is written to preserve the bits. the most current data in latches is written in those positions. The bit mask applies to all bit planes simultaneously. August 2, 1984 IBM Enhanced Graphics Adapter SS Attribute Controller Registers Name Address Register Palette Registers Mode Control Register Overscan Color Register Color Plane Enable Register Horizontal Pel Panning Register Port 3CO 3CO 3CO 3CO 3CO 3CO Index - OO-OF 10 11 12 13 Attribute Address Register This is a write-only register. The processor output port is hex 3CO. Palette Registers Hex 00 through Hex OF Format Bit 7 6 5 4 3 2 1 0 Blue Video Green Video Red Video Secondary Blue/Mono Video Secondary Green/Intensity Secondary Red Video Not Used Bit O-Bit 4 Attribute Address Bits-The Address Register is a pointer register located at hex 3CO. This register is loaded with a binary value that points to the attribute data register where data is to be written. The Attribute Controller does not have an address bit input to control selection of the address and data registers. An internal address flip-flop controls selection of either the address or data registers. To initialize the flip-flop, an lOR instruction is issued to the Attribute Controller at address 3BA or 3DA. This clears the flip-flop, and selects the Address Register. After the Address Register has been loaded, the 56 mM Enhanced Graphics Adapter August 2, 1984 Bit 5 next OUT instruction loads the data register. The flip-flop toggles each time an OUT is issued to the Attribute Controller. Palette Address Source-When loading the color palette registers, bit 5 must be cleared to O. To enable the memory data to access the color palette, bit 5 must be set to 1. Palette Register Hex 00 through Hex OF This is a write-only register. The processor output port is hex 3CO. Attribute Address Register Format Bit 7 6 5 4 3 2 1 0 1,--I_I_'I_I~.: AttributeAddress 11 ~ - Palette Address Source '--..L..-_ _ _ _ _ _ _~ Not Used Bit O-Bit 5 · Palette-These 6-bit registers allow a dynamic mapping between the text attribute or graphic color input value and the display color in the CRT screen. A logical 1 selects the appropriate color. A logical 0 de-selects. The color palette register should be modified only during the vertical retrace interval to avoid glitches in the displayed image. Note that some color monitors do not have an intensity input and only a maximum of eight colors are be available. Monitors with four color inputs display sixteen colors, and monitors with six color inputs display 64 colors. August 2, 1984 IBM Enhanced Graphics Adapter 57 Mode Control Register This is a write-only register pointed to by the value in the Attribute address register. This value must be hex 10 before writing can take place. The processor output port address for this register is hex 3CO. 1""'""'. Mode Control Register Format Bit 7 6 5 4 3 2 1 0 Graphics/Alphanumeric Mode Display Type Enable Line Graphics Character Codes Select Background Intensity Or Enable Blink Not Used Bit 0 Bit 1 Bit 2 Graphics/Alphanumeric Mode-A logical 0 selects selects alphanumeric mode. A logical 1 selects graphics mode. Monochrome Display/Color Display-A logical oselects color display attributes. A logical 1 selects IBM Monochrome Display attributes. Enable Line Graphics Character Codes-When · this bit is set to 0, the ninth dot will be the same as the background. A logical 1 enables the special line graphics character codes for the IBM Monochrome Display adapter. This bit when enabled forces the ninth dot of a line graphic character to be identical to the eighth dot of the character. The line graphics character codes for the Monochrome Display Adapter are Hex CO through Hex DF. For character fonts that do not utilize the line graphics character codes in the range of Hex CO 58 IBM Enhanced Graphics Adapter August 2, 1984 Bit 3 through Hex DF, bit 2 of this register should be a logical O. Otherwise unwanted video information will be displayed on the CRT screen. Enable Blink/Select Background Intensity-A logical 0 selects the background intensity of the attribute input. This mode was available on the Monochrome and Color Graphics adapters. A logical 1 enables the blink attribute in alphanumeric modes. This bit must also be set to 1 for blinking graphics modes. Overscan Color Register This is a write-only register pointed to by the value in the Attribute address register. This value must be hex 11 before writing can take place. The processor output port address for this register is hex 3CO. ~ Overscan Color Register Format Bit 7 6 5 4 3 2 1 0 I I I : Se'ec" B'"e Boede, Co'oe Selects Green Border Color Selects Red Border Color Selects Secondary Blue Border Color Selects Intensified or Secondary Green Selects Secondary Red Border Color Not Used Bit O-Bit S ~ Overscan Color-This 6-bit register determines the overscan (border) color displayed on the CRT screen. For monochrome display this register should be set to a value of O. A logical 1 selects the appropriate color. August 2, 1984 IBM Enhanced Graphics Adapter S9 Color Plane Enable Register This is a write-only register pointed to by the value in the Attribute address register. This value must be hex 12 before writing can take place. The processor output port address for this register is 3CO. Color Plane Enable Register Format Bit 7 6 5 4 3 2 1 0 Enable Color Plane Video Status MUX Not Used Bit O-Bit 3 Bit 4-Bit 5 Enable Color Plane-Writing a logical 1 in any of bits 0 through 3 enables the respective display memory color plane. Video Status MUX-Selects two of the six color ~ outputs to be available on the status port. The following table illustrates the combinations available and the color output wiring. COLOR PLANE ENABLE REGISTER Bit 5 Bit4 0 0 0 1 1 0 1 1 INPUT STATUS REGISTER ONE Bit 5 Bit 4 Red Secondary Blue Secondary Red Not Used Blue Green Secondary Green Not Used Horizontal Pel Panning Register This is a write-only register pointed to by the value in the Attribute address register. This value must be hex 12 before ~ writing can take place. The processor output port address for this register is hex 3CO. 60 IBM Enhanced Graphics Adapter August 2, 1984 Horizontal Pel Panning Register Format Bit 7 6 5 4 3 2 1 0 I I I I I I : Horizontal Pel Panning Not Used Bit O-Bit 3 Horizontal Pel Panning-This 4 bit register selects the number of picture elements (pels) to shift the video data horizontally to the left. Pel panning is available in both A/N and APA modes. In Monochrome A/N mode, the image can be shifted a maximum of 9 pels. In all other A/N and APA modes, the image can be shifted a maximum of 8 pels. The sequence for shifting the image is given below: 9 pels/character: 8,0,1,2,3,4,5,6,7 (Monochrome A/N mode only) 8 pels/character: 0, 1,2,3,4,5,6, 7 (All other Modes) August 2, 1984 IBM Enhanced Graphics Adapter 61 Programming Considerations Progr~mming the Registers Each of the LSI devices has an address register and a number of data registers. The address register serves as a pointer to the other registers on the LSI device. It is a write-only register that is loaded by the processor by executing an 'OUT' instruction to its 1/0 address with the index of the selected data register. The data registers on each LSI device are accessed through a common I/O address. They are distinguished by the pointer (index) in the address register. To write to a data register, the address register is loaded with the index of the appropriate data register, then the selected data register is loaded by executing an 'OUT' instruction to the common I/O address. The external registers that are not part of an LSI device and the Graphics I and II registers are not accessed through an address register; they are written to directly. ~ The following tables define the values that are loaded into the registers by BIOS to support the different modes of operation supported by this adapter. 62 IBM Enhanced Graphics Adapter August 2, 1984 RI,lsllr Mdl I' O,lrlllu MImi Miscellaneous Feature Cntrl hrl Idll 3C2 3?A - Input Stat 0 3C2 - Input Stat 1 312 - = ? B in monochrome modes 0 1 2 3 4 5 6 7 0 E F 10 ~ 10; 0" I" 2" 3" 23 23 23 23 23 23 23 A6 23 23 A2 A7 A2 A7 A7 A7 A7 A7 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -- --- --- - - - -- - - ---- --- - -- - - - -- - - - -- = ? D in color modes 'Values for these modes when the IBM Enhanced Color Display is attached :Values for these modes when greater than 64K Graphics Memory is installed External Registers Rellllir Midi I' 0plrllil. Hlml Seq Address hrl In.1I 0 1 2 3 4 5 6 7 0 E F 10 ~ 10: 0" I' 2' 3' 3C4 - - - - - - - - - - - - - - - - - - - Reset 3C5 00 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 Clock Mode 3C5 01 DB DB 01 01 DB DB 01 00 DB 01 05 05 01 01 OB OB 01 01 Map Mask 3C5 02 03 03 03 03 03 03 01 03 OF OF OF OF OF OF 03 03 03 03 Char Gen Sel 3C5 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Memory Mode 3C5 04 03 03 03 03 02 02 06 03 06 06 00 00 06 06 03 03 03 03 'Values for these modes when the IBM Enhanced Color Display is attached :Values for these modes when greater than 64K Graphics Memory is installed Sequencer Registers August 2, 1984 IBM Enhanced Graphics Adapter 63 RIIII'er Mlde It OPIIIIIII Mimi Address Reg Perl ··~u 0 I 2 3 4 5 6 7 0 E F 10 Ft 10: 0- I- 2- 3 3?4 - - - - - - - - - - - - - - - - - - - Horiz Total 3?5 00 37 37 70 70 37 37 70 60 37 70 60 5B 60 5B 20 20 5B 58 Hrz Oisp End 3?5 01 27 27 4F 4F 27 27 4F 4F 27 4F 4F 4F 4F 4F 27 27 4F 4F Strt Hrz Blk 3?5 02 20 20 5C 5C 20 20 59 56 20 56 56 53 56 53 2B 28 53 53 End Hrz Blk 3?5 03 37 37 2F 2F 37 37 20 3A 37 20 lA 17 3A 37 20 20 37 37 Strt Hrz Retr 3?5 04 31 31 5F SF 30 30 5E 51 30 5E 50 50 50 52 28 28 51 51 End Hrz Retr 3?5 05 15 15 07 07 14 14 06 60 14 06 EO 8A 6C 00 60 60 58 58 Vert Total 3?5 06 04 04 04 04 04 04 04 70 04 04 70 6C 70 6C 6C 6C 6C 6C Overflow 3?5 07 11 11 11 11 11 11 11 IF 11 11 IF IF IF IF IF IF IF IF Preset Row SC 3?5 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Max Scan Line 3?5 09 07 07 07 07 01 01 01 00 00 00 00 00 00 00 00 00 00 00 Cursor Start 3?5 OA 06 06 06 06 00 00 00 08 00 00 00 00 00 00 08 08 08 OB Cursor End 3?5 OB Strt Addr Hi 3?5 OC Slrt Addr Lo 3?5 00 ? = B in monochrome modes 07 07 07 07 00 00 00 DC 00 00 00 00 00 00 OC DC OC DC - - - - - - - - - -- - - -- - - - - - - - - - - - - - - - -- - - ? = 0 in color modes ·Values tor these modes when the IBM Enhanced Color Display is attached :Values tor these modes when greater than 64 K Graphics Memory is ins'alled CRT Controller Registers (1 of 2) ~, 64 mM Enhanced Graphics Adapter August 2, 1984 RI,labr .I~I af Operltiln NIIiI I'Irt 11~1l 0 1 2 3 4 5 6 7 0 E F 10 F: 10: O' l' 2' 3' Cursor LC Hi 3?5 OE - - - - - - - - - - - - - - - - - - - Cursor LC Low 3?5 OF - -- - - - - - - - - - - -- -- Vrt Retr Strt Light Pen Hi 3?5 10 El El El El El El EO 5E El EO 5E 5E 5E 5E 5E 5E 5E 5E 3?5 10 - - - - - - - - - - - - - - - - - ~ Vert Retr End 3?5 11 24 24 24 24 24 24 23 2E 24 23 2E 28 2E 28 28 28 28 28 Light Pen Low 3?5 11 - - - - - - - - - - - - - - - - - - Vrt Oisp End 3?5 12 C7 C7 C7 C7 C7 C7 C7 50 C7 C7 50 50 50 50 50 50 50 50 Offset 3?5 13 14 14 28 28 14 14 28 28 14 28 14 14 28 28 14 14 28 28 Underline Loc 3?5 14 08 08 08 08 00 00 00 00 00 00 00 OF 00 OF OF OF OF OF Strt Vert 81k 3?5 15 EO EO EO EO EO EO OF 5E EO OF 5E 5F 5E 5F 5E 5E 5E 5E End Vert Blk 3?5 16 FO FO FO FO FO FO EF 6E FO EF 6E OA 6E OA OA OA OA OA Mode Control 3?5 17 A3 A3 A3 A3 A2 A2 C2 A3 E3 E3 8B 88 E3 E3 A3 A3 A3 A3 Line Compare 3?5 18 FF FF FF FF FF FF FF FF FF H FF FF FF FF FF FF FF FF = = ? B in monochrome modes ? 0 in color modes 'Values for these modes when the IBM Enhanced Color Display is attached :Values for these modes when greater than 64K Graphics Memory is installed CRT Controller Registers (2 of 2) August 2,1984 mM Enhanced Graphics Adapter 65 RIglsler Mldel' O,elllit. Nlme Grphx I Pas Grphx II Pas Grphx I II AD Pari Iidel 0 I 2 3 4 5 6 7 0 E F 10 P 10: 0 1 2 3 3CC - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 3CA - 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 - 3CE - - - - - - - - - - - - - - - - - - Set Reset 3CF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Enable SIR 3CF 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Color Compare 3CF 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Data Rotate 3CF 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Read Map Sel 3CF 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Mode Register 3CF 05 10 10 10 10 30 30 00 10 00 00 10 10 00 00 10 10 10 10 Miscellaneous 3CF 06 OE OE OE OE OF OF 00 OA 05 05 07 07 05 05 OE OE OE OE Color No Care 3CF 07 00 00 00 00 00 00 00 00 OF OF OF OF OF OF 00 00 00 00 Bit Mask 3CF 08 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 'Values for these modes when the IBM Enhanced Color Display IS attached :Values for these modes when greater than 64 K Graphics Memory is installed Graphics 81 Registers 66 IBM Enhanced Graphics Adapter August 2, 1984 RI.llllr .Idl I' O,lralll. NIIII flrt Ildll 0 1 2 3 4 5 6 7 0 E . F 10 F: m O' 1* 2* 3* Address 3?A - - - - - - - - - - - - - - - - - - - Palette 3CO 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Palette 3CO 01 01 01 01 01 13 13 17 08 01 01 08 01 08 01 01 01 01 01 Palette 3CO 02 02 02 02 02 15 15 17 08 02 02 00 00 00 02 02 02 02 02 Palette 3CO 03 03 03 03 03 17 17 17 08 03 03 00 00 00 03 03 03 03 03 Palette 3CO 04 04 04 04 04 02 02 17 08 04 04 18 04 18 04 04 04 04 04 Palette 3CO 05 05 05 05 05 04 04 17 08 05 05 18 07 18 05 05 05 05 05 Palette 3CO 06 06 06 06 06 06 06 17 08 06 06 00 00 00 06 14 14 14 14 Palette 3CO 07 07 07 07 07 07 07 17 08 07 07 00 00 00 07 07 07 07 07 Palette 3CO 08 10 10 10 10 10 10 17 10 10 10 00 00 00 38 38 38 38 38 Palette 3CO 09 11 11 11 11 11 11 17 18 11 11 08 01 08 39 39 39 39 39 Palette 3CO OA 12 12 12 12 12 12 17 18 12 12 00 00 00 3A 3A 3A 3A 3A Palette 3CO DB 13 13 13 13 13 13 17 18 13 13 00 00 00 3B 3B 3B 3B 3B = = ? B in monochrome modes ? 0 in color modes 'Values for these modes when the IBM Enhanced Color Display is attached :Values for these modes when greater than 64K Graphics Memory is installed Attribute Registers (1 of 2) August 2, 1984 IBM Enhanced Graphics Adapter 67 Relisllr M,dl " O,eralill Nalle Port 11'11 0 1 2 3 4 5 6 7 0 E F 10 F: 10: O· I' 2' 3' Palette 3CO OC 14 14 14 14 14 14 17 18 14 14 00 04 00 3C 3C 3C 3C 3C Palette 3CO OD 15 15 15 15 15 15 17 18 15 15 18 07 18 3D 3D 3D 3D 3D Palette 3CO DE 16 16 16 16 16 16 17 18 16 16 00 00 00 3E 3E 3E 3E 3E Palette 3eO OF 17 17 17 17 17 17 18 17 17 00 00 00 3F 3F 3F 3F 3F 3F Mode Control 3CO 10 08 08 08 08 01 01 01 DE 01 01 OB OB DB 01 08 08 08 08 Overscan 3CO 11 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Color Plane 3CO 12 OF OF OF OF 03 03 01 OF OF OF 05 05 05 OF OF OF OF OF Hrz Panning 3CO 13 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ·Values for these modes when the IBM Enhanced Color Display is attached :Values for these modes when greater than 64K Graphics Memory is installed Attribute Registers (2 of 2) 68 IBM Enhanced Graphics Adapter August 2, 1984 RAM Loadable Character Generator The character generator on the adapter is RAM loadable and can support characters up to 32 scan lines high. Two character generators are stored within the BIOS and one is automatically ~ loaded into the RAM by the BIOS when an alphanumeric mode is selected. The Character Map Select Register can be programmed to define the function of bit 3 of the attribute byte to be a character generator switch. This allows the user to select between any two character sets residing in bit plane 2. This effectively gives the user access to 512 characters instead of 256. character tables may be loaded off line.The adapter must have 128K bytes of storage to support this function. Up to four tables can be loaded can be loaded with 256K of graphics memory installed. The structure of the character tables is described in the following figure. The character generator is in bit plane 2 and must be protected using the map mask function. ~ +OK +8K +16K Bit Plane 2 Character Generator 0 Character Generator 1 +32K Character Generator 2 +48K Character Generator 3 +64K ~ The following figure illustrates the structure of each character pattern. If the CRT controller is programmed to generate n row August 2, 1984 mM Enhanced Graphics Adapter 69 scans, then n bytes must be filled in for each character in the character generator. The example assumes eight row scans per character. Address CC * 32 + 0 2 3 4 5 6 7 Byte Image Data 18H 3EH 66H 66H 7EH 66H 66H 66H CC = Value of the character code. For example, 41H in the case of an ASCII "A". Creating· a 512 Character Set This section describes how to create a 512 character set on the IBM Color Display. Note that only 256 characters can be printed on the printer. This is a special application which the Enhanced Graphics Adapter will support. The 9 by 14 characters will be displayed when attribute bit 3 is a logical 0, and the IBM Color/Graphics Monitor Adapter 8 by 8 characters will be displayed when the attribute bit 3 is a logical 1. This example is for demonstrative purposes only. The assembly language routine for creating 512 characters is given below. Debug 2.0 was used for this example. The starting assembly address is 100 and the ~ character string is stored in location 200. This function requires 128K or more of graphics memory. 70 IBM Enhanced Graphics Adapter August 2, 1984 al00 movax,1102 mov bl,02 intl0 ~ movax,1103 mov bl,08 intl0 movax,1000 mov bx,0712 intl0 movax,1301 mov bx,OOOF mov cx,003A mov dx,1600 mov bp,0200 push cs pop es intl0 ~ mov ax ,1301 mov bx,0007 mov cx,003A mov dx,1700 mov bp,0200 push cs pop es intl0 int3 a200 db ;load 8x8 character font in character ;generator number 2 ;select 512 character operation ;if attribute bit 3= 1 use 8x8 font ;if attribute bit 3=0 use 9x14 font ;set color plane enable to 7H to disable ;attribute bit 3 in the color palette ;lookup table ;write char. string with attribute bit 3=1 ;cx = character string length ;write character on line 22 of display ;pointer to character string location ;write char. string with attribute bit 3=0 ;cx = character string length ;write character on line 23 of display ;pointer to character string location "This character string is used to show 512 characters" Creating an 80 by 43 Alphanumeric Mode The following examples show how to create 80 column by 43 row, both alphanumeric and graphics, images on the IBM Monochrome Display. The BIOS Interface supports an 80 column by n row display by using the character generator load routine call. The print screen routine must be revectored to August 2, 1984 IBM Enhanced Graphics Adapter 71 . handle the additional character rows on the screen. The assembly language required for both an alphanumeric and a graphics screen is shown below. moval,7 intlO movax,1112 mov bl,O intlO movax,1200 move bl,20 intlO int3 movax,f intlO movax,1123 mov bl,O mov di,2B intlO movax,1200 mov bl,20 intlO int3 ;Monochrome alphanumeric mode ;video interrupt call ;character generator BIOS routine ;load 8 by 8 double dot character font ;video interrupt call ;alternate screen routine ;select alternate print screen routine ;video interrupt call ;Monochrome graphic mode ;video interrupt call ;character generator BIOS routine ;load 8 by 8 double dot character font ;43 character rows ;video interrupt call ;alternate screen routine ;alternate print screen routine ;video interrupt call Vertical Interrupt Feature The Enhanced Graphics Adapter can be programmed to create an interrupt each time the vertical display refresh time has ended. An interrupt handler routine must be written by the application to take advantage of this feature. The CRT Vertical interrupt is on IRQ2. The CPU can poll the Enhanced Graphics Adapter Input Status Register 0 (bit 7) to determine whether the CRTC caused the interrupt to occur. The Vertical Retrace End Register (11H) in the CRT controller contains two bits which are used to control the interrupt circuitry. ~ The remaining bits must be output as per the value in the mode table. 72 IBM Enhance,d Graphics Adapter August 2, 1984 Bit 5 Enable Vertical Interrupt-A logical 0 will enable vertical interrupt. Bit 4 Clear Vertical Interrupt-A logical 0 will clear a vertical interrupt. The sequence of events which occur in an interrupt handler are outlined below. 1. Clear IRQ latch and enable driver 2. Enable IRQ latch 3. Wait for vertical interrupt 4. Poll Interrupt Status Register 0 to determine if CRTC has caused the interrupt 5. If CRTC interrupt, then clear IRQ latch; if not, then branch to next interrupt handler. 6. Enable IRQ latch 7. Update Enhanced Graphics Adapter during vertical blanking interval 8. Wait for next vertical interrupt Creating a Split Screen The Enhanced Graphics Adapter hardware supports an alphanumeric mode dual screen display. The top portion of the screen is designated as screen A, and the bottom portion of the screen is designated as screen B as per the following figure. Screen A Screen B Dual Screen Definition The following figure shows the screen mapping for a system containing a 32K byte alphanumeric storage buffer. Note that the Enhanced Graphics Adapter has a 32K byte storage buffer in alphanumeric mode. Information displayed on screen A is August 2, 1984 mM Enhanced Graphics Adapter 73 defined by the start address high and low registers (OCH and ODH) of the CRTC. Information displayed on screen B always begins at address OOOOH. OOOOH r - - - - - - - , Screen B Buffer Storage Area OFFFH 1 - - - - - - - - - 1 1000H Screen A Buffer Storage Area 7FFFH L -_ _ _ _ _- ' Screen Mapping Within the Display Buffer Address Space The Line Compare Register (18H) of the CRT Controller is utilized to perform the split screen function. The CRTC has an internal horizontal scan counter, and logic which compares the horizontal scan counter value to the Line Compare Register value and clears the memory address generator when a compare occurs. The linear address generator then sequentially addresses the display buffer starting at location zero, and each subsequent row address is is determined by the 16 bit addition of the start of line latch and the offset register. ~ Screen B can be smoothly scrolled onto the CRT screen by updating the Line compare in synchronization with the vertical retrace signal. The information on screen B is immune from scrolling operations which utilize the Start Address High and Low registers to scroll through the Screen A address map. Compatibility Issues The CRT Controller on the IBM Enhanced Graphics Adapter is a custom design, and is different than the 6845 controller used on the IBM Monochrome Monitor Adapter and the IBM Color/ Graphics Monitor Adapter. It should be noted that several CRTC register addresses differ between the adapters. The following figure illustrates the registers which do not map directly across the two controllers. 74 mM Enhanced Graphics Adapter August 2, 1984 Register 02H 03H 04H OSH 06H 07H 08H 6485 Function Start Horiz. Retrace End Horiz. Retrace Vertical Total Vertical Total Adjust Vertical Displayed Vertical Sync Position Interlace Mode and Skew EGA CRTC Function Start Horiz. Blanking End Horiz. Blanking Start Horiz. Retrace End Horiz. Retrace Vertical Total Overflow Preset Row Scan Existing applications which utilize the BIOS interface will generally be compatible with the Enhanced Graphics Adapter. Horizontal screen centering was required on the IDM Color/Graphics Monitor Adapter in order to center the screen when generating composite video. This was done through the Horizontal Sync Position Register. Since the Enhanced Graphics Adapter does not support a composite video monitor, programs which do screen centering may cause loss of the screen image if centering is attempted. The Enhanced Graphics Adapter offers a wider variety of displayable monochrome character attributes than the IBM Monochrome Display Adapter. Some attribute values may display differently between the two Adapters. The values listed in the table below, in any combinations with the blink and intensity attributes, will display identically. Background R G B 0 0 0 0 0 0 0 0 0 1 1 1 Foreground RG B 0 0 0 00 1 1 1 1 00 0 Function Non·Display Underline White Character/Black Background Reverse Video ~ Software which explicitly addresses 3D8 (Mode Select Register) or 3D9 (Color Select Register) on the Color Graphics Monitor Adapter may produce different results on the Enhanced Graphics Adapter. For example, blinking which is disabled by writing to 3D8 on the Color Graphics Adapter will not be disabled on the Enhanced Graphics Adapter. August 2, 1984 mM Enhanced Grapbics Adapter 75 Interface Feature Connector The following is a description of the Enhanced Graphics Adapter feature connector. Note that signals coming from the Enhanced Graphics Adapter are labeled "inputs" and the signals coming to the Enhanced Graphics Adapter through the feature connector are labeled "outputs". Signal Description J2 This pin is connected to auxiliary jack 2 on the rear panel of the adapter. R'OUT Secondary red output ATRS/L Attribute shift load. This signal controls the serialization of the video information. The shift ~ register parallel loads at the dot clock leading edge when this signal is low. GOUT Primary green output R' Secondary red input R Primary red input FC1 This signal is input from bit 1 (Feature Control Bit 1) of the Feature Control Register. FCO This signal is input from bit 0 (Feature Control Bit 0) of the Feature control Register. FEAT 0 This signal is output to bit 5 (Feature Code 0) of Input Status Register O. B'/V Secondary blue input/Monochrome video VIN Vertical retrace input 76 mM Enhanced Graphics Adapter August 2, 1984 Internal This signal is output to bit 4 (Disable Internal Video Drivers) of the Miscellaneous Output Register. V OUT Vertical retrace output ~ Jl This pin is connected to auxiliary jack 1 on the rear panel of the adapter. G'OUT Secondary green output B'OUT Secondary blue output BOUT Blue output G Green input B Blue input ROUT Red output BLANK ~ FEAT 1 This is a composite horizontal and vertical blanking signal from the CRTC. This signal is output to bit 6 (Feature Code 1) of Input Status Register O. G'/I Secondary green/Intensity input HIN Horizontal retrace input from the CRTC 14MHZ 14 MHz signal from the system board EXTOSC External dot clock output HOUT Horizontal retrace output August 2, 1984 mM Enhanced Graphics Adapter 77 The following figure shows the layout and pin numbering of the feature connector. Signal Name Gnd +12V Signal Name 1 2 ......... ..... -12V J1 J2 G'OUT R'OUT B'OUT ATRS/L BOUT GOUT G R' B R ROUT FEAT 1 BLANK FEAT 0 FC1 FCO G'/I B'/V HIN VIN 14MHz Internal EXTOSC VOUT HOUT GND 31 32 +5V '" '" Feature Connector Diagram 78 IBM Enhanced Graphics Adapter August 2, 1984 Specifications ~ System Board Switches The following figure shows the proper system board DIP switch settings for the IBM Enhanced Graphics Adapter when used with the Personal Computer and the Personal Computer XT. The switch block locations are illustrated in the Technical Reference Manual "System Board Component Diagram". The Personal Computer has two DIP switch blocks; the switch settings shown pertain to DIP Switch Block 1. The Personal Computer XT has one DIP switch block. 1 234 5 6 7 8 ~DDDD~~DD Switch Block (1 ) Note: The DIP switches must be set as shown whenever the IBM Enhanced Graphics Adapter is installed, regardless of display type. This is true even when a second display adapter is installed in the system. August 2, 1984 mM Enhanced Graphics Adapter 79 Configuration Switches The following diagram shows the location and orientation of the configuration switches on the Enhanced Graphics Adapter. Optional Graphics Memory Expansion Card Off On 80 mM Enhanced Graphics Adapter August 2, 1984 Configuration Switch Settings The configuration switches on the Enhanced Graphics Adapter determine the type of display support the adapter provides, as follows: Swllch SellinIS for Enhanced Graphics Adapler II Primary Dlsplav Adapler COlflgurall.. SWI SW2 SW3 SW4 Enhlced Adapler M'Rlc~rome Adapler On Off Off On Color Display 40x25 Secondary Off Off Off On Color Display 80x25 Secondary On On On Off Enhanced Display Emulation Mode Secondary Off On On Off Enhanced Display Hi Res Mode Secondary On Off On Off Monochrome - Off Off On Off Monochrome - Color/Graphics Adapler - - - - Secondary 40x25 Secondary 80x25 August 2, 1984 mM Enhanced Graphics Adapter 81 S.ltc' S,IIIIII fir E.hllCd Gr.phlcs Ad'pt,r .. S,cIRd.ry Dllpl.y Ad'pt,r SWI SW2 SW3 SW4 E.h··ced Ad'pt,r e,.flIUnU·· M··,ch,.., Ad'pter On On On On Color Display 40x25 Primary Off On On On Color Display 80x25 Primary On Off On On Enhanced Display Emulation Mode Primary Off Off On On Enhanced Display Hi Res Mode Primary On On Off On Monochrome - Off On Off On Monochrome - e,l,r/Gnphlcs Ad'pter - - - - Primary 40x25 Primary 80x25 82 mM Enhanced Graphics Adapter August 2, 1984 Direct Drive Connector 9- Pin Direct Drive Signal Direct Drive Display Signal Name· Description Ground Secondary Red Primary Red Primary Green Primary Blue Secondary Green/Intensity Secondary Blue/Mono Video Horizontal Retrace Vertical Retrace Pin 1 2 3 Enhanced Graphics Adapter 4 5 6 7 8 9 August 2, 1984 mM Enhanced Grapbics Adapter 83 Light Pen Interface P-2 Connector Light Pen Attachment P-2 Connector +Light Pen Input Not used +Light Pen Switch Ground +5 Volts 12 Volts Pin 1 2 Enhanced Graphics Adapter 3 4 5 6 84 IBM Enhanced Graphics Adapter August 2, 1984 Jumper Descriptions Located on the adapter are two jumpers designated PI and P3. Jumper PI changes the function of pin 2 on the direct drive interface. When placed on pins 2 and 3, jumper PI selects ground as the function of direct drive interface, pin 2. This selection is for displays that support five color outputs, such as the mM Color Display. When PI is placed on pins 1 and 2, red prime output is placed on pin 2 of the direct drive interface connector. This supports the mM Enhanced Color Display, which utilizes six color outputs on the direct drive interface. Jumper P3 changes the I/O address port of the Enhanced Graphics Adapter within the system. In its normal position, (pins 1 and 2), all Enhanced Graphics Adapter addresses are in the range 3XX. Moving jumper P3 to pins 2 and 3 changes the addresses to 2XX. Operation of the adapter in the 2XX mode is not supported in BIOS. The following figure shows the location of the jumpers and numbering of the connectors. August 2, 1984 mM Enhanced Graphics Adapter 85 86 mM Enhanced Graphics Adapter August 2, 1984 Logic Diagrams ENHANCED GRAPHICS ADAPTER 1111111111111111 ~--i ~--~ ~--~ ~i;1~2~i~i ; a---4 ~ I!!~d~ ~ ~III I -.. c:I t..: . "~.r", ........J: II) .C..I. ."'1:1 c:( :..'Cs"....I. ..c:J "'1:1 .c.:. .cJ:: W "5 S ~=:;:H:;~ . · II ~ ~"II. W i ~ ~ · ;si : · Ct::- Li'~ 4, , August 2, 1984 IBM Enhanced Graphics Adapter 87 ENHANCED GRAPHICS ADAPTER ~~~~ ~~:;""j~~ ~ ~~ ~a . " c .; ~ ~ ~ ~ '~" ~ II I~ u . .. . ~{ , ,- , ~ ~ , - . ~ H' 3 ~ %~ .-( I~~I~ ~: ::::'::::~~ :;N :; g~ t:'iA Jr ~e ~ BJ: , .. Q u lC ~ . ~ ~i U-.. ~d~~ ! :r/<' .Q QC- 'C" 'C" ;~I~~ fa ~ I~ ~ -- - ~~ :i.:.: . ...... '; N ~i.. i~ ."'CI <C '" :iii Do l!! CI ..1 c:: .c c:: W :t ~I . . ~ ; ~ ~ := ~ ~ ·pt.~ - . .1" !I I; II .a~ ~ d ~~~I~li ·80· ·~ I...i. ~ ~~m ~-~ 88 mM Enhanced Graphics Adapter August 2, 1984 ) t > . ~ .. \C :: g~ ; 3: ttrl ~ ctD . ~ i ~ >tfI} i ~ SHT2 SHT 2 _HUX t1UX SHT 2 SHT 2 5,.T& SHT"i SHT I SHT4 ~. SHT4 SHIT I SHT I CRT/CPU -Ccu< GRAPHICS SREFAOR RESET rI!TiOR ~ (RllOW :g~ BDZ 801 BOO BD~ BOb B07 "HTO LPSTB ) q SID 10 UO; =HAD HA1 ~:~ ~A7 f===<!~i:HA'I2~~~~~ HAil A ) ~ ~ m C C') :=:ct :z: 1 5HT'I.&.11 n ~ JI!' C ~ SHT 4.6.11 .).:.0.. '1AI4 SHT 2 :ma HAl') SHT 2 g_v 10 I. . BAD ttAI MA2 , ZD 17 3D 2Q 3Q ~ BAI BA2 40!fQ A, ~M:A~If I;g;g ~ "i0U22 C;Q '" b MA7 An At::. q 1 ~-- BAI 11'E--1lAO -- BAl --BA> ===:~: 8A7 SHT 4,C),7,11 RSO I I ~ HMAAI'O. m 1,7 ' "10 ~ ' . ')Q I2t> M::i 14 ~Uq ~~ MAl; 1 ~n ~n b ISHT; SHT,) Enhanced Graphics Adapter Sheet 3 of 11 ENHANCED GRAPHICS ADAPTER _ _ !C~ ..... .I.ill, 1.1.~ ~ I~:i~ ii~i---- mii 90 mM Enhanced Graphics Adapter I~ 1~~li~ i i ~i August 2, 1984 ENHANCED GRAPHICS ADAPTER , , ~~~~ ~ ~~~~~:!: I~ II ~ 111111 I ~~~~~2~~ ~ e'R.3~fiij!~:=~d~ .--1- ~ g ~~ III · = g ~r-; I I I . August 2, 1984 ~ gg~g z: E:z:::t: 4444 a~~* ~ i!2 IEi~ I~ ~N ,~ %% % ~~ .. a " % ~ mM Enhanced Graphics Adapter 91 'C ~ ;; SHT I SOD :.:: f SOl I SOl BD' S"" SO, BOb 5HTI BD7 n ~ SHT 2 eN LATCH CI. CRT LATCH fe: n [IJ 1 SHT2 DOTClK S/L WE T (,RAf't-lICSIOW VHEMR(Z) AD > 5HT4 AT t . U'" , 00 4 01 , DZ b 0' , '"7 "" q Db 07 CO 22 (1 21 GPO 12 GPI II 10 GNO ,I GN 40 VOO SHT, AAD AAI f~.. I AAZ A., AA4 AA' AAb SHT 1 AA7 SHTZ RASO t =!lAST SHTZ WE ~ QO 01:1. ) r 1l"lSlf41b IHStt41b Enhanced Graphics Adapter Sheet 6 of 11 ) CO SHT 8 co SH18 GRAPHICS SHI 1,t; m Z ::c CHAIN 5HT4 :to MODO MODI H002 MOD1 1"1004 MOD') HOOf> SHl,>,11 ) I Z n m C CO) :tI 1"1001 SHT'i,11 :to :"':CcI nen :cto :to "'CI -t m :tI M I DO MIDI HI02 H 101 NI04 MI DC; HI Db HI07 SHT 8.11 5HT 8.11 SHT 8.11 SHT 2.8.11 5HT8,II 5HT8,II 5HT8,II 5HT8,11 ) ENHANCED GRAPHICS ADAPTER 1011).73 ............. 1 %::J: X::J: VIlli VI VI .. . ,;--,; IIIIII IIIIII 4 ,......--------.li :o ; 4 -- ,......--------,1 ~ 4 0 !1~i~mrJJ !j,... ,.; ~ Tit ~ N,.. ggSg!i;(~~~~~~ I=I~BM.!) '''-l. :c Do I! c.::I 1.c.. .wcc ~g~~~gg~ ---- a--~ ~~3 :'I Vw gi58;::'~ ~~a II~lillll'l ~-~ IIIIII August 2, 1984 mM Enhanced Graphics Adapter 93 ENHANCED GRAPHICS ADAPTER __. . ~ ~ ~ ~ ",,' ala: ~ ~ J J ~ ~,., ~ I~ ~Q~:;~~ 5·~~ ~E~~ 121g ~!!~::::~~:::~ =!?:!:':N"'II".o 94 IBM Enhanced Graphics Adapter August 2, 1984 ) ) > t..~ .. . ... \C QO sa 3: I fe: fA f \C UIi ~:.u: '"1" >our G'OOT ,'O.UUTT 'OUT SHT 10 HOUT SHY · SH' , """"N"t ...,,' SHY' SHY , 'S'N( · HY · ·,(j'1I I j · '''v W .SHYB ... SHY , I .0.0,' '" SHY , SHY , HIO.". I ....... SHY , ..", ..'".."."... --- ~ 1 1 ,.".....,.. I o;LSO't t> "TO ....Y . ~) US 7ltLS8b ~r-;; 1 "..." ~~ Ilt;~2:A~1 zn" u:~ 1 If tAl UI 18 ,'D.O, elP;~ .' It 10 1 II ::: ::~ le Al ,.... q t=-- ,0.0,2 12 2D lQ't. ,. , ~ :: Ullq ( ~1~IJn~ IQZ 802 710 lOS \-:::fi==::i! '~"D ~!g0;0 :~~2 lOt> '+1.1 II IIQ 1'1 '----I'f 1> I, I' I'1I' I' I' J' .,.2 ...,, ",~ ..-- , .,, , , r~ q PIN [)-TYP£ (C»IN£(TOII , , , '0+<; RPI t> PIN SIP rl'l LSltt7 2~ 5HT 10 SHT 10 SHY , SHY , SHY , "'Y. ff~1 CATJNT STATUS I UVT . I"'''' ~.~10 I 12 ;~ ~ 1r 7 8Dt. itT II eOl " "" ~~ 11 eOI .. II'> 1 I " SHT " ~ATRICA ==============================================================-______J Enhanced Graphics Adapter Sheet 9 of 11 ) Ii IN SHT 10 YIN SHT 10 m z :::c lz> n m CI G) :::a l->a n=en= l> CI l> ~ m :::a FeO SHT 10 Fe t SHT 10 MONO J<lNITOR SHT .. RAM EKABLE SHT " elK SEL 0 SHT.2 elK SEL I SHT.2 INTatNAL SHT 10 PGsEL SHT .. Ii POL SHT II Y POL SHT <) ' :g~ SMT j 90b R07 SHT I LPUI STS SHY 1 \C ~ ;; ~ sf. ~ 1: Il f SHT q FCO SHT q FCI ii .··R. em SHY · BYV SHT I SHr q SHT · ''II1HZ "IN YIN SHT ~ BLAN. SHT 2 AlRsii: +~Y SHT q INTERNAL +12Y -12V .G1H1D> - - [. J2 EXT VIDEO 21 ,. 20 17 I 2. 12 I. "I~ 22 2~ -.n 24 J4 *,,- '·0 2~ 2' ·I. ~2 27 ~ 2 ~I FEATURE CONNECTOR i~ .. NOTE: ...\C QO I GRDUNOS- ONE AT EACH END OF CONNECTOR. Enhanced Graphics Adapter Sheet 10 of 11 ) ) , JI VIDEO JACK m :Z:z: lz> n m FEAT 0 SHT q C FEAT I SHT q EXT OSC SHT 2 R our SHT · ~ ::u GOUT BOUT R'OUT G'our B'our HOUT II l> c:"':1z::1;1: en YOUT SHT · lc> l> ~ m ::u ) ENHANCED GRAPHICS ADAPTER I~ -o .t> ...e.nc . :=l. -=c:( .!'"! ..=c. ~ .~ -.=.. .C.. ..c c W August 2, 1984 ----------"'____ N IBM Enhanced Graphics Adapter 97 -~ Or> 3=: f f') (l) Q. ~ ~ e: f') fI.I f.. { ~ ...~ Or> SHT. "ODD I "DOl "002 "DOl "ODO "DDS "Ollb SHT. "007 SHT ~ "100 I "101 "ID2 "101 "IDO "IO~ "lOb SHT ~ "107 SHT 6 "200 I "201 "202 "201 "20" "20~ "206 SHT 6 PIl07 SHT 7 "100 I "101 "102 "101 "10. "10~ "106 SHT 7 "107 +~V -+ f···+ (1-(16 ·Olf7.. F IO(l1lF:++ IOCIJI.F~++ 10(.1.,:++ .2 OJ <0 1. 17 16 11 27 PI 2H2 · 2 21 20 10 18 I 16 '1"1 II 10 t.'t P.! 61 b2 ~q 0 7 o;e ~~ · 8 7 6 · S 1 ··~I· ~ .·.~e,·1 ~ "' ~2 +yV f;:~21AIA I lA IV n2V 'V 6A U · _ '''LSO'' Graphics Memory Expansion Card Sheet 1 of 5 ) ) rn Z z»% nrn CI c;, AAO SHT ",-; AAI AA2 AAl AA< AA~ I »::rJ -a % nen AA6 AA7 SHT "t,e; » BAD SHT 6,1 BAI BA2 BAl BA. BA~ I »-CaI -rnt ::rJ BAb ".1) BA7 SHT b.1 ACAS I ACAS2 SHT SHT ".1:) ACASl SHT It,e; B CAS I SHT6,7 B CAS 2 5HT 6,7 B CAS 1 SHT 6,7 RAS 0 SHT If RAS I SHT ~ RAS2 SHT b RAS 1 SHT 1 ill WET tin lin SHT If SHT ~ SHT 6 SHT 7 ) ENHANCED GRAPHICS ADAPTER J _r" N · ~ ;~ F' ~1..j~I*I"=m ." JJu .-r" ·+ ~~ " ~1ll"= ~ 0 J -r" N · + ;o~: !! " =m." ~1"i~1~1"1" -r' JJbr · ~ 3~ " ~lj1lr= ." J l' N l' ",I~I · ~ ;m~; · ~ " ~ .~ ;~ !! ." ~1"i~1~r-1"= ~1TI"= ." August 2, 1984 mM Enhanced Graphics Adapter 99 ENHANCED GRAPHICS ADAPTER O_N .... .T .... -Dr 0- -0 -0-0-0-0-0-0 J l' t N~<I~r · , "~ ,; . · S~ · " " -1-1'1<1* .~ - ~1'I~r .g J l' . · "-N~,, " -1~I'I"I'1~ = .... ""~ 1" N4L , · ~~ :;! · " ~1'mr .0 l J ~ · o~ £t; " -1+1<19~- ..... ""::: l N<I~I , · N, ", · " -Itnr- .g -II) CI M i; .'c" CI) ...... ro (.) .CI . ';n r-.... ro 1:1. )( ILl r: CI E :'E" :'u=" 1:1. ro c!i ~~~ ~~~:i~~:;(~~~~~;( 100 IBM Enhanced Graphics Adapter August 2, 1984 ENHANCED GRAPHICS ADAPTER J X'" ~ ~ + · ~f ~ ·n'I'I"I':G.... ..09 .. ~ . -r" ,.<Iel . . ,~ 11'111~= J -1'" ~. ... + · sj '11'149~= ·9 _I" ~.JJ ~ + · !!::R . ,~ J1'1]l .... "'2 J _I" N. ~. ~::! . 'i " ·11'149' : "''''2 --1'" ~. el ~+ · ~::!! .. ,~ J1'lrl~- ." . ~-"~'~''i''~''~...:. c~;;t';frc ~~auli~-~ August 2, 1984 mM Enhanced Graphics Adapter 101 ENHANCED GRAPHICS ADAPTER J J-1> N~ ~ + · 5J · ~n'l~r-I~=z og . -r' N~ d ~ + · S;$ :rnzlr ' g J -r' N~ ~J · IY z 'l'1'I'FI~" 02 _~. N~~br ~ + · e , J~ ~ :fI'I]l= ,, J J-I' N IY ~,J~ · '11'1'1~1' = 02 . -r' N~ el + · ~: 'l~rIJI~= 0 102 IBM Enhanced Graphics Adapter .. August 2, 1984 BIOS Listing ~ Vectors with Special Meanings Interrupt Hex 42 - Reserved When an IBM Enhanced Graphics Adapter is installed, the BIOS routines use interrupt 42 to revector the video pointer. Interrupt Hex 43 - IBM Enhanced Graphics Video Parameters When an IBM Enhanced Graphics Adapter is installed, the BIOS routines use this vector to point to a data region containing the parameters required for the initializing of the IBM Enhanced Graphics Adapter. Note that the format of the table must adhere to the BIOS conventions established in the listing. The power-on ~ routines initialize this vector to point to the parameters contained in the IBM Enhanced Graphics Adapter ROM. Interrupt Hex 44 - Graphics Character Table When an IBM Enhanced Graphics Adapter is installed the BIOS routines use this vector to point to a table of dot patterns that will be used when graphics characters are to be displayed. This table will be used for the first 128 code points in video modes 4,5, and 6. This table will be used for 256 characters in all additional graphics modes. See the appropriate BIOS interface for additional information on setting and using the graphics character table pointer. August 2,1984 mM Enhanced Grapbics Adapter 103 1 PAGE,12O 2 TITLE ENHANCED GRAPHICS ADAPTER 810S 3 4 EXTRN CGHN:NEAR, CGDDOT:NEAR, INT_1F_l:NEAR. CGHN_FDG:NEAR EXTRN EHD_ADDRESS: NEAR 5 ·7 ·9 THE B I as ROUT I NES ARE MEANT TO BE ACCESSED THROUGH SOFTWARE rNT£RRUPTS ONLY. ANY ADDRESSES PRESENT IN THE LISTiNGS ARE INCLUDED ONLY FOR COMPLETENESS, 10 NOT FOR REFERENCE. APPLICATIONS WHICH REFERENCE 11 ABSOLUTE ADDRESSES WITH I Pi THE CODE SEGMENT ,. 12 13 14 " 17 18 19 20 -------V--IO-L-A-T-E---TH-E---S-TR-U-C--TU-R-E---AN-D---D-E-S-IG-N---O-F--B-IO--S-. ---------------- .LIST c c c c c I NGLUDE VFRONT. I Ne 5UBTTL VFRONT. I Ne PAGE a_a. __________ ·____ _ I NT 10 - -- --- - ---------- - -- _____________________ 21 c VIDEO_IO 22 23 2.24 25 c c c c c 27 c TH(SE ROUTINES PROVIDE THE CRT INTERfACE THE FOLLOWING fUNCTIONS ARE PROVIDED: (AH)"=O SET MODE (AL) CONTAINS MODE VALUE AL AD TYPE RES NOTES OF-DIM DISPLAY ..... PGS 26 c 29 c 30 c 31 c 32 c 33 c 34 c 335. c c * 0 B8 * 1 86 2 B8 3 86 4 8. 5 8. 6 66 · 7 80 ALPHA ALPHA ALpHA ALPHA GRPHX GRPHX GRPHX ALPHA 640X200 640X200 640X200 640X200 320X200 320X200 640X200 720X350 40X25 40X25 80X25 80X25 40X25 40X25 80X25 80)(25 COLOR - BW COLOR COLOR - BW COLOR COLOR COLOR - BW COLOR - BW MONOCHROME 37 c 36 39 40 c c c RESERVED RESERVED RESERVED RESERVED - I NTERNAL USE 441. c c RESERVED - I NTERAAL USE 43 c 44 c 445. c c 47 c OM E AD f AO 10 AI) GRPHX GRPHX GRPHX GRPHX 320X200 640)(200 640X350 640X350 40X25 80X25 80X25 80X25 COLOR COLOR MONOCHROME HI RES 4'54016' c c c c NOTE: HIGH BIT AL SET PREVENTS REGEN BUFFER CLEAR ON MODES RUNNING ON THE COMBO VIDEO ADAPTER 52 53 54 c c c *** NOTE Bioi MODES OPERATE SAME AS COLOR MODES, BUT COLOR BURST 15 NOT ENABLED SET CURSOR TYPE 555. c c .,,957 56 .0 6..342 C C C C C C C C (AH)=2 (AHI=3 (CH) = BITS 4-0 '" START LINE FOR CURSOR ** HARDWARE WILL ALWAYS CAUSE BLINK ** SETTING BIT 5 OR 6 WILL CAUSE ERRATIC = (CL) BLINKING OR NO CURSOR AT ALL 81TS 4-0 = END LINE FOR CURSOR SET CURSOR POSITION (DH,DL) == ROW,COLUMN (0,0) IS UPPER LEFT I BH) = PAGE NUMBER READ CURSOR POSITION (BH) == PAGE NUMBER ...6765. C C C C (AH)=4 ON EXIT (DH,DL) == ROW,COLUMN OF CURRENT CURSOR (CH,CL) == CURSOR MODE CURRENTLY SET READ LIGHT PEN POSITION ON EXIT: 69 C (AH) = 0 -- LIGHT PEN SWITCH NOT DOWN/NOT TRIGGERED 70 C {AH} = 1 -- VAll 0 LIGHT PEN VALUE I N REG I sTERS 71 C (DH,DL) '" ROW,COLUMN OF CHARACTER LP POSN 72 C (CHI = RASTER LINE (0-199) 73 C (CX) == RASTER LINE (O-NNN) NEW GRAPHICS MODES 7.74 75 C C C (BX) == PIXEL COLUMN (0-319,639) (AHI=5 SELECT ACTIVE DISPLAY PAGE (ALI = NEW PAGE VALUE, SEE AH=O FOR PAGE INFO 77 C ('\H)=6 SCROLL ACT IVE PAGE UP 76 C (AL) = NUMBER OF LINES, INPUT LINES BLANKED AT BOTTOM "60 C C 61 C 62 C OF WINDOW AL'" 0 MEANS BLANK ENTIRE WINDOW (CH,CL) '" ROW,COLUMN OF UPPER LEFT CORNER OF SCROLL or (DH,OLJ '" ROW,COLUMN OF LOWER RIGHT CORNER SCROLL .643 C C (BH) '" ATTRIBUTE TO BE USED ON BLANK LINE (AH)=7 SCROLL ACT I VE PAGE DOWN 65 C (AL) '" NUMBER OF LINES, INPUT LINES BLANKED AT TOP 6. C OF WINDOW 667. C C AL ::: 0 MEANS BLANK ENT I RE WINDOW (CH,CL) = ROW,COLUMN OF UPPER LEFT CORNER OF SCROLL 69 C (DH,DLI ::: ROW,COLUMN Of LOWER RIGHT CORNER OF SCROLL 90 C (8H) = ATTRIBUTE TO BE USED ON BLANK LINE 91 C 92 C CHARACTER HANOU NG ROUT I NES 93 C 9.94 95 C C C (AH) '" 8 READ ATTRIBUTE/CHARACTER AT CURRENT CURSOR POSITION (BH) = DISPLAY PAGE ON EXIT: 97 C ( AL I = CHAR READ 96 C (AH) '" ATTRIBUTE OF CHARACTER READ (ALPHA MODES ONLY) 99 C (AH) = 9 WRITE ATTRIBUTE/CHARACTER AT CURRENT CURSOR POSITION 100 C (8H) '" DISPLAY PAGE 101 C 102 C (CXI ::: COUNT OF CHARACTERS TO WRITE (AL) = CHAR TO WRITE 103 C (BL) '" ATTRIBUTE OF CHARACTER (ALPHA)/COLOR Of CHAR 104 C (GRAPHICS) 105 C SEE NOTE ON WRITE DOT FOR BIT 1 OF BL '" 1. 10. C 107 C (AH) '" A WRITE CHARACTER ONLY AT CORRENT CURSOR POSITION (BH) = DISPLAY PAGE 108 C (CX) = COUNT OF CHARACTERS TO WRITE 109 C (AL) := CHAR TO WRITE 110 C FOR READ/WRITE CHARACTER INTERFACE WHILE IN GRAPHICS MODE, THE 111 C CHARACTERS ARE fORMEO FROM A CHARACTER GENERATOR IMAGE 112 C MAINTAINED IN THE SYSTEM ROM. ONLY THE 1ST 128 CHARS 113 C ARE CONTAINED THERE. TO READ/WRITE THE SECOND 128 : 1'14 C CHARS, THE USER MUST INITIALIZE THE POINTER AT : 115 C INTERRUPT 1FH (LOCATION 0007CH) TO POINT TO THE lK BYTE : 11. C TABLE CONTAINING THE CODE POINTS FOR THE SECONO : 117 C 128 CHARS (128~255). 116 C 119 C FOR THE NEW GRAPHICS MODES 256 GRAPHICS CHARS ARE 120 C $UPPLI ED I N THE SYSTEM ROM. 121 C 122 C FOR WRITE CHARACTER INTERFACE IN GRAPHICS MODE, THE REPLICATION; 123 C FACTOR CONTAINED IN (CX) ON ENTRY WILL PRODUCE VALID : 124 C RESULTS ONLY fOR CHARACTERS CONTAINED ON THE SAME ROW. : "5 C 12. C CONTINUATION TO SUCCEEDING LINES WILL NOT PRODUCE CORRECTLY. 104 mM Enhanced Graphics Adapter August 2, 1984 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 c c c GRAPHICS INTERFACE I AH) '" B SET COLOR PALETTE c FOR USE IN COMPATI al LI TV MODES c (BH) '" PALETTE COLOR I 0 BE I NG SET 10-127) c (BL) = COLOR VALUE TO BE USED WITH THAT COLOR 10 c NOTE: FOR THE CURRENT COLOR CARD, THIS ENTRY POINT c HAS MEANING ONLY FOR 320><200 GRAPHICS. c COLOR 10'" 0 SELECTS THE BACKGROUND COLOR (0-15) c COLOR 10 '" 1 SELECTS THE PALETTE TO BE USED: c 0'" GREEN(1)fRED{2)/BROWN(3) c , = CYAN(1)!MAGENTA(21/WHITE(3) c IN 40><25 OR 80><25 ALPHA MODES, THE VALUE SET c FOR PALETTE COLOR 0 INDICATES THE c BORDER COLOR TO BE USED (VALUES 0-31. c WHERE 16-31 SELECT THE HIGH INTENSITY c BACKGROUND SET). c (AH) '" C WRITE DOT c c IBH) = PAGE {OX 1 = ROW NUMBER c (ex) = COLUMN NUMBER c (ALl = COLOR VALUE c IF BIT 7 OF AL = 1, THEN THE COLOR VALUE IS c EXCLUSIVE OR'D WITH THE CURRENT CONTENTS OF c THE DOT c (AH) '" 0 READ DOT c (BH) '" PAGE c (OX) '" ROW NUMBER c (CX) '" COLUMN NUMBER c (AL) RETURNS THE DOT READ c c ASCII TELETYPE ROUTINE FOR OUTPUT c c (AH) '" E WRITE TELETYPE TO ACTIVE PAGE c (AL) = CHAR TO WRITE c (BL) '" FOREGROUND COLOR IN GRAPHICS MODE c NOTE -- SCREEN WIDTH IS CONTROLLED BY PREVIOUS MODE SET c c (AH) = F CURRENT VIDEO STATE c RETURNS THE CURRENT VIDEO STATE c (AL) '" MODE CURRENTLY SET (SEE AH",O FOR EXPLANATION) c (AH) = NUMBER OF CHARACTER COLUMNS ON SCREEN c (BH) = CURRENT ACTIVE DISPLAY PAGE c c (AH) = 10 SET PALETTE REGISTERS c c (AL) = 0 SET INDIVIDUAL PALETTE REGISTER c BL = PALETTE REG I STER TO BE SET c BH = VALUE TO SET c c AL '" 1 SET OVERSCAN REG I STER c BH = VALUE TO SET c c AL '" 2 SET ALL PALETTE REG I STERS AND OVERSCAN c ES:DX POINTS TO A 17 BYTE TABLE c c BYTES 0 - 15 ARE THE PALETTE VALUES, RESPECTIVELY BYTE 16 IS THE OVERSCAN VALUE c c AL'" 3 TOGGLE INTENSIFY/BLINKING BIT c BL - 0 ENABLE I NTENS I FY c BL - 1 ENABLE BLINKING c c (AH) = 11 CHARACTER GENERATOR ROUTINE c c NOTE: THIS CALL WILL INITIATE A MODE SET, COMPLETELY : RESETTING THE VIDEO ENVIRONMENT BUT MAINTAINING: .C THE REGEN BUFFER. : c c c c c c c c c c c AL '" 00 USER ALPHA LOAD ES;BP - POINTER TO USER TABLE CX - COUNT TO STORE OX - CHARACTER OFFSET I NTO TABLE BL - BLOCK TO LOAD BH - NUMBER OF BYTES PER CHARACTER AL = 01 ROM MONOCHROME SET BL - BLOCK TO LOAD AL = 02 ROM 8X8 DOUBLE DOT BL - BLOCK TO LOAD c AL = 03 SET BLOCK SPEC I F I ER c c c BL - CHAR GEN BLOCK SPECI F I ER 03-02 ATTR BIT 3 ONE, CHAR GEN 0-3 01-00 ATTR BIT 3 ZERO, CHAR GEN 0-3 c NOTE: WHEN USING AL = 03 A FUNCTION CALL c c c c c c AX = 1000H BX = 0712H I S RECOMMENDED TO SET THE COLOR PLANES RESULTING IN 512 CHARACTERS AND EIGHT CONS I STENT COLORS. c c c c c c c c c c c c c c c c c NOTE THE FOLLOWING INTERFACE (AL=1X) IS SIMILAR IN FUNCTION TO (AL=OX) EXCE PT THAT : - PAGE ZERO MUST BE ACTIVE - PO I NTS (BYTES/CHAR) WI LL BE RECALCULATED - ROWS WILL BE CALCULATED FROM THE FOLLOWING: INT[(200 OR 350) / POINTS) - 1 - CRT_LEN WI LL BE CALCULATED FROM: (ROWS + 1) * CRT_COLS * 2 - THE CRTC WI LL BE REPROGRAMMED AS FOLLOWS: R09H = POINTS - 1 MAX SCAN LINE R09H DONE ONLY I N MODE 7 ROAH = POINTS - 2 CURSOR START ROBH = 0 CURSOR END * R12H = [(ROWS + 1) VERT DISP END POINTS) - 1 R14H = POINTS UNDERLINE LOC c c c c THE ABOVE REGISTER CALCULATIONS MUST BE CLOSE TO THE ORIGINAL TABLE VALUES OR UNDETERMINED RESULTS WILL OCCUR. c c c c c NOTE: THE FOLLOWING INTERFACE IS DESIGNED TO BE CALLED ONLY IMMEDIATELY AFTER A MODE SET HAS BEEN ISSUED. FAILURE TO ADHERE TO THIS PRACTICE MAY CAUSE UNDETERMINED RESULTS. c c c AL = 10 USER ALPHA LOAD ES: BP - PO I NTER TO USER TABLE CX - COUNT TO STORE c OX - CHARACTER OFFSET I NTO TABLE c BL - BLOCK TO LOAD c BH - NUMBER OF BYTES PER CHARACTER c AL = 1 1 ROM MONOCHROME SET c c c c c BL - BLOCK TO LOAD AL = 12 ROM 8X8 DOUBLE DOT BL - BLOCK TO LOAD August 2, 1984 IBM Enhanced Graphics Adapter lOS 0000 0014 0014 0040 0040 007C 007C 0108 0108 aloe Oloe 0410 0410 0410 1777 0449 0449 044A D44e 044E 04~O 7? 1117 1171 1711 08 ( 1111 0460 1111 0462 ?? 2>, C NOTE: THE FOLLOWING INTERFACE IS DESIGNED TO BE 2>. C 2~~ C 2>6 C 2>7 C CALLED ONLY IMMEDIATELY AFTER A MODE SET HAS BEEN ISSUED. FAILURE TO AOHERE TO THIS PRACTICE MAY CAUSE UNDETERM I NED RESULTS. 2>8 C 2,. C 260 C AL ;; 20 USER GRAPHICS CHARS INT elFH (8X8) ES:BP ~ POINTER TO USER TABLE AL;; 21 USER GRAPHICS CHARS 26' C 262 C ES:BP - POINTER TO USER TABLE ex - POINTS (BYTES PER CHARACTER) 26' C 26' C 265 C 266 C BL - ROW SPECIFIER BL -= 0 USER DL - ROWS 261 C 268 e 26. e 270 e 271 e 272 e 273 e 27. e 275 e 276 e 277 e 278 e 27. e 280 e 28' 282 e e 28' 28' 285 e e e 286 e 281 e 288 e Bl'" 1 14 IOfH) BL"" 2 25 (19H) BL ;; 3 43 (28H) AL ;; 22 ROM 8 X 14 SET = BL -ROWSP[CIFIER AL 23 ROM 8 X 8 DOUBLE DOT BL - ROW SPEC I F I ER AL · 30 ex - I NFORHAT ION POINTS DL - ROWS BH -0 RETURN CURRENT I NT 1 FH PTR ES:BP - PTR TO TABLE BH ~ 1 RETURN CURRENT I NT 44H PTR ES: BP - PTR TO TABLE BH -2 RETURN ROM B X 14 PTR ES:BP - PTR TO TABLE BH -3 RETURN ROM DOUBLE DOT PTR ES:BP - PTR TO TABLE BH -4 RETURN ROM DOUBLE DOT PTR (TOP) 28' C 2.0 C 2" 2'2 2" e e e 2" C 2.5 C ES:BP - PTR TO TABLE BH -5 RETURN ROM ALPHA ALTERNATE 9X14 ES: BP - PTR TO TABLE (AH) '" 12 ALTERNATE SELECT BL", 10 RETURN EGA INfORMATION 2.6 C BH '" 0 ~ COLOR MOOE I N EffECT <3><0><)(> 2.1 C 1 - MONOC MODE I N EffECT <3><8><)(> 2'8 C 2" C '00 C ,0' C o BL '" MEMORY VALUE 0 ~ 064K 1 0 - 192K CH '" FEATURE BITS 0 1 ~ 128K 1 1 ~ 256K '02 C CL '" SWITCH SETTING '0' C '0' C '05 C '06 C '01 C BL = 20 SELECT ALTERNATE PRINT SCREEN ROUTINE (AH) '" 13 WRITE STRING ES:BP - POINTER TO STRING TO BE WRITTEN '08 C '3010' C e 31' 312 e e ,,,31' 31. e e e 316 e 317 e 318 e 31. 320 e e 321 e 322 e ' "32' ' "326 327 e e e e e 328 e ,,,32. 330 e e e = AL 0 AL'" 1 = AL 2 AL'" 3 CoXx -- CHARACTER ONLY COUNT POSITION TO BEGIN STRING, IN CURSOR TERMS BH - PAGE NUMBER .. BL ~ AlTR I BUH STR I NG - (CHAR, CHAR, CHAR, ) CURSOR NOT MOVED ... BL ~ ATTRIBUTE STRING - (CHAR, CHAR, CHAR, ) CURSOR IS MOVED STRING - (CHAR, ATTR, CHAR, ATTR, ··· J CURSOR NOT MOVED STRING - CCHAR, ATTR, CHAR, ATTR, CURSOR I S MOVED NOTE: CHAR RET, LINE FEED, BACKSPACE, AND BELL ARE TREATED AS COMMANDS RATHER THAN PRINTABLE CHARACTERS. 332 C 33' e 33. C SRlOAD MACRO SEGREG, VALUE 335 e I FNB <VALUE> 336 C IFIDN <VALUE>,<O> 331 C SUB DX,oX 338 ,.,33. 340 C e C C ,..,,4.23 C C C 345 e ELSE MOV ENOl F ENOl F MOV ENoM ox, VALUE SEGREG, ox 346 C ; ---- LOW MEMORY SEGMENT 341 C '48 C ABSO SEGMENT AT '4, C ORG 005H*4 , PR I NT SCREEN VECTOR 350 C INTS_PTR LABEL OWORD 35' C ORG 010H*4 35' 353 35. 355 C VIDEO e ORG e EXT_PTR e LABEL DWORD 01 fH*4 LABEL DWORD 356 e ORG 042H*4 357 e PLANAR_VIDEO LABEL DWORD 358 e 35. e ORG 043H*4 360 e GRX_SET LABEL DWORO 36' '62 '63 36. 365 e e ORG e EQUI P_LOW ee EQUI P_fLAG 0410H LowABEL BYTE ? 366 '67 368 ...... e e ;----- REUSE RAM fROM PLANAR BIOS e 36. 370 e e 371 e 372 e 373 e DowB ow ow ow ? ? ? ? 8 DUP(?) 314 '15 316 e e c ; V IDEO I/O VECTOR ; GRAPH IC CHARS 128-255 REVECTOREo 10H*4 GRAPH I C CHARS 0-255 311 C CURSOR_MODE OW 318 C ACTIVE_PAGE DB 106 IBM Enhanced Graphics Adapter August 2, 1984 0463 1111 0465 11 0466 11 0472 0472 0484 0484 0485 1111 11 1111 0487 11 0488 11 04A8 04A8 0500 0500 11 0501 = 0061 '" 0040 '" 00C4 '" 00C5 :: 0004 = 00B4 :: 0005 :: Dace ::: OOCA = OOCE :: OOCF '" 00C2 = 00C2 = OOBA =- OODA :: OODA :: OOCO 379 380 38' 382 383 384 385 386 387 388 389 390 39' 392 393 394 395 396 397 398 399 400 40' 402 403 404 405 406 407 408 409 410 411 4'2 413 4'4 4'5 4'6 417 4'8 4'9 420 42' 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 44' 442 443 444 445 446 447 448 449 450 45' 452 453 454 455 456 457 458 459 460 46' 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 48' 482 483 484 485 486 487 488 489 490 49' 492 493 494 495 496 497 498 499 500 50' 502 503 504 ADDR_6845 ow g~~=~~~~i'~~T OB OB ORG RESETJLAG ORG ow ROWS DB POINTS 0472H ow 0484H ? ROWS ON THE SCREEN BYTES PER CHARACTER INFO DB INFO ... 07 - HIGH BIT OF MODE SET, CLEAR/NOT CLEAR REGEN 06 - MEMORY 06 05 = 0 0 - 064K 0 1 - 128K 05·- MEMORY 1 0 - 192K 1 1 - 256K 04 - RESERVED 03 - EGA ACTIVE MONITOR (0), EGA NOT ACTIVE (1) 02'" WAIT FOR DISPLAY ENABLE (1) 01 - EGA HAS A MONOCHROME ATTACHED (1) DO - SET C_TYPE EMULATE ACTIVE {OJ INFO_3 DB INFO 3 - 07-04 03-00 FEATURE BITS SWITCHES 04A8H LABEL DWORD SAVE_PTR SAVE_PTR IS A POINTER TO A TABLE AS DESCRIBED AS FOLLOWS: DWORD_1 DWORD_2 DWORD 3 awORD=:4 g:~g=~ DWORD_7 V IDEO PARAMETER TABLE PO INTER DYNAMIC SAVE AREA POINTER ALPHA MODE AUXILIARY CHAR GEN POINTER GRAPHICS MODE AUXILIARY CHAR GEN POINTER RESERVED RESERVED RESERVED awORD_1 PARAMETER TABLE POINTER INITIALIZED TO BIOS EGA PARAMETER TABLE. THIS VALUE MUST EXIST. PARAMETER SAVE AREA PO INTER INITIALIZED TO 0000:0000, THIS VALUE IS OPTIONAL. WHEN NON-ZERO, THIS POINTER WILL BE USED AS POINTER TO A RAM AREA WHERE CERTAIN DYNAMIC VALUES ARE TO BE SAVED. WHEN IN EGA OPERATION THIS RAM AREA WILL HOLD THE 16 EGA PALETTE REGISTER VALUES PLUS THE OVERSCAN VALUE IN BYTES 0-160 RESPECTIVELY. AT LEAST 256 BYTES MUST BE ALLOCATED FOR TH I S AREA. ALPHA MODE AUXILIARY POINTER INITIALIZED TO 0000:0000, THIS VALUE IS OPTIONAL. WHEN NON-ZERO, THIS POINTER IS USED AS A POINTER TO A TABLES DESCRIBED AS FOLLOWS: BYTE BYTE WORD WORD awORD BYTE BYTE BYTES/CHARACTER BLOCK TO LOAD, SHOULD BE ZERO FOR NORMAL OPERATION COUNT TO STORE, SHOULD BE 2560 FOR NORMAL OPERATION CHARACTER OFFSET, SHOULD BE ZERO FOR NORMAL OPERATION POINTER TO A FONT TABLE 0 I SPLAYABLE ROWS IF 'FF' THE MAXIMUM CALCULATED VALUE WILL BE USED, ELSE THIS VALUE WILL BE USED CONSECUTIVE BYTES OF MODE VALUES FOR WHICH THIS FONT DESCRIPTION IS TO BE USED. THE END OF THIS STREAM IS INDICATED BY A BYTE CODE OF · FF' NOTE: USE OF THIS POINTER MAY CAUSE UNEXPECTED CURSOR TYPE OPERATION. FOR AN EXPLANATION OF CURSOR TYPE SEE AH = 01 I N THE INTERrACE SECTION. GRAPHICS MODE AUXILIARY POINTER INITIALIZED TO 0000:0000, THIS VALUE IS OPTIONAL. WHEN NON-ZERO, THIS POINTER IS USED AS A POINTER TO A TABLES DESCR I BED AS FOLLOWS : BYTE WORD awORD BYTE DISPLAYABLE ROWS BYTES PER CHARACTER POINTER TO A FONT TABLE CONSECUTIVE BYTES OF MODE VALUES FOR WHICH THIS FONT DESCRI PTION IS TO BE USED. THE END OF THIS STREAM IS INDICATED BY A BYTE CODE OF 'FF' DWORD_5 THRU OWORD_7 RESERVED AND SET TO 0000: 0000. ORG STATUS_BYTE ABSO ENDS PORT B TIMER 0500H DB EOU EOU 640'"" ;----- EQUATES FOR CARD PORT ADDRESSES OC4H OC5H OD4H OB4H OD5H OCCH OCAH OCEH OCFH OC2H OC2H OBAH ODAH ODAH OCOH ;----- EQUATES FOR ADDRESS REGISTER VALUES 8255 PORT B ADDR OR OB5H August 2, 1984 mM Enhanced Graphics Adapter 107 0000 0001 0002 0003 0004 :: 0000 :: 0001 :: 0002 = 0003 '" 0004 '" 0005 '" 0006 '" 0007 '" 0008 '" 0009 '=" OOOA 0008 =: OOOC '" 0000 '" OOOE '" OOOF '" 0010 = 0010 '" 0011 '" 0011 '" 0012 '" 0013 '" 0014 '" 0015 '" 0016 '=" 0017 0018 = = = 0000 0001 0002 '" 0003 '=" 0004 0005 '=" 0006 0007 '" 0006 = 0010 '" 0011 '" 0012 = 0013 0000 0000 0000 » 0001 M 0002 20 0003 0003 0005 0009 0026 EB 26 32 34 30 30 36 32 37 37 33 35 36 20 28 43 29 43 4F 50 59 52 49 47 48 54 20 49 42 40 20 31 39 38 34 39 2F 31 33 2F 36 34 0020 0020 002F 0031 0032 0034 0035 0037 0039 86 03 82 OA EC 82 8A EC sBo2 CO 00 EE 003A 28 02 003C BE DA 505 506 507 508 509 >10 511 >12 >13 >1' >15 >16 517 518 519 520 521 522 52' 52. 525 526 527 528 529 530 531 532 533 53' 535 536 537 538 53. 540 541 542 543 54' 545 546 547 548 549 »0 5>1 »2 553 ». »5 »6 5>7 »8 »9 560 561 562 563 56. 565 566 567 568 56. 570 571 572 573 57' 575 576 577 578 57. 580 581 582 583 58. 585 586 587 588 589 590 591 592 59' 59' 595 596 597 598 599 600 601 602 603 60' 605 606 607 608 609 610 611 612 613 61. 615 616 617 618 61. 620 621 622 623 62' 625 626 627 628 629 6'0 C S_RESET EQU OOH C S_CLOCK EQU 01H C C ~:~;N EQU 02H EQU 03H C S_MEM EQU 04H C C C HRZ TOT EQU OOH C C:HRZ:OSP EQU 01H C C STRT HRZ 8LK EQU 02H C C:ENOj:lRZ_BLK EQU O'H C C STRT HRZ SYN EQU 04H C C:ENO_HRZ_SYN EQU O'H C C_VRT_TOT EQU 06H C C_OVERFLOW EQU 07H C C_PRE_ROW EQU 08H C C_MAX_SCAN_LN EQU 09H C C_CRSR_START EQU OAH C C_CRSR_END EQU 08H C C g=~i:i=~~ EQU OCH EQU OOH C C_CRSR_LOC_HGH EQU OEH C C_CRSR_LOC_LOW EQU 0," C C C g=~~~~;~~~;~g~ EQU 10H EQU 10H EQU 11H C C LGHT PEN LOW EQU 11H C C:VRT_OSP_lNO EQU 12H C C_OFFSET EQU 13H C C C C_UNDERLN_LOC EQU "H g:~~~~V~~~B~~K EQU EQU 15H 16H C C_MODE_CNTL EQU 17H C C_LN_COMP EQU 18H C C G_SET_RESET EQU OOH C G_ENBL_SET EQU 01H C G CLR COMP EQU 02H C G::::DATA_ROT EQU 0," C C g:=~~~_MAP EQU O'H EQU OSH C G_MI SC EQU 06H C G_COLOR EQU 07H C G_BI T_MASK EQU 08H C C P_MOOE EQU 10H C P_OVERSC EQU 11H C P_CPLANE EQU 12H C P_HPEL EQU 13H C C SUBTTL ; WRITE ONLY ; READ ONLY ; WRITE ONLY ; READ ONLY ; ----- CODE SEGMENT CODE SEGMENT PUBLIC C INCLUDE VPOST. INC C SUBTTL VPOST. INC C PAGE C C ; ----- POST C C ASSUME CS: CODE, DS:ABSO C ORG OH C DB 055H SIGNATURE C OB OMH BYTES C DB 020H LENGTH INDICATOR C C ; ----- NOTE DO NOT USE THE SIGNATURE BYTES AS A PRESENCE TEST C C PLANAR V IDEO SWI TCH SETT I NGS C C o 0 - UNUSED C 01-40X25COLOR C 10-60X25COLOR C 1 1 - 60 X 25 MONOCHROME C NOTE : 0 0 MUST BE SET WHEN TH I 5 ADAPTER I S INSTALLED. C C V IDEO ADAPTER SW ITCH SETT I NGS C C a 0 0 0 - MONoe PRIMARY, EGA COLOR. 40X25 C C C C C o o 0o o 0a 0 1 1 0 1 1 a 0 1 0 1 0 1 - MONOC MONOC MONOC COLOR COLOR PRIMARY, EGA COLOR. 80X25 PRIMARY, EGA HI RES EMULATE (SAME PRIMARY, EGA H I RES ENHANCED 40 PRIMARY, EGA MONOCHROME 60 PRIMARY, EGA MONOCHROME AS 0001) C C C o 1 1 0 - HONOC SECONDARY, EGA COLOR, 40X25 o 1 1 1 - MONOC SECONDARY, EGA COLOR. 80X25 C 1 0 0 0 - MONOC SECONDARY. EGA H I RES EMULATE (SAME AS 0111) C 1 0 0 1 - MONOC SECONDARY. EGA H I RES ENHANCED C 1 0 1 0 - COLOR 40 SECONDARY, EGA MONOCHROME C 1 0 1 1 - COLOR 80 SECONDARY. EGA MONOCHROME C C C a 1 1 0 0 - RESERVED 1 1 1 - RESERVED C 1 1 1 0 - RESERVED C 11 1 1 - RESERVED C C ;----- SETUP ROUTINE FOR THIS MODULE C C VIDEO_SETUP PROC FAR C JM' SHORT L1 C OB '2400' C DB '6277356 (C)COPVRIGHT IBM 1984' C C C C C DB '9/13/64' C C C ;----- SET UP VIDEO VECTORS C C L1: C MOV DH,3 C MOV CL, INPUT_STATUS C AL,DX C H"OV OL, INPUT_STATUS_B C AL,OX C M"OV DL,ATTR_WRITE C HOV AL,O C OUT OX,AL C C SRLOAO OS,O C> SUB OX, OX C> MOV OS,OX 108 mM Enhanced Graphics Adapter August 2, 1984 ~ ~ ~ 003E 003F 0045 0049 004F 0055 005B 005F 0065 0069 006F 0073 FA C7 06 0040 R OCD7 R 8C DE 0042 R C7 06 0108 R F065 C7 06 OlOA R FOOO C7 06 04A8 R OlOC R BC OE 04AA R C7 06 001C R 0000 E 8C DE 001E R C7 06 OlOC R 0000 E 8C DE alOE R F8 0074 001. 00lC 0080 0083 0081 008B 008E 0091 0091 0092 C6 06 0487 R 04 E8 009B R 88 lE 0488 R E8 OOCE R 08 06 0488 R 8A lE 0488 R E8 00F3 R E9 0244 R 08 0092 0092 0093 0094 0095 0096 0098 009A 009B EE 50 58 EC 24 10 DO E8 C3 009B 009B 0090 009F OOAl B6 03 B2 C2 BO 01 EE 00A2 00A4 00A7 00A9 OOAB OOAO BO 00 E8 0092 R DO E8 DO E8 DO E8 8A 08 OOAF OOBl 00B4 00B6 00B6 BO 09 E8 0092 R DO E6 00 E8 0'\ 08 008A ooae OOBF OOCl 80 05 E8 0092 R 00 E8 OA 08 DOC3 BO 01 00C5 E8 0092 R OOC8 OA 08 OOCA 80 E3 Of OOCO C3 OOCE OOCE OOCE 0000 0002 0004 0005 0007 0008 OODA OOOB DODD OOOF OOEl 00E3 00E5 00E6 00E8 00E9 OOEB OOEC ~OH OOFO OOF2 OOF3 B6 03 82 8A BO 01 EE 82 OA EE B2 C2 EO 24 60 DO E8 8A 08 B2 BA BO 02 EE 82 OA EE 82 C2 EC 24 60 DO EO OA C3 e3 00f3 Don 00F5 00F8 OOFA OOFB OOFO DOFF 0100 0103 0105 0101 2A fF 80 E3 Of 01 E3 52 86 03 8A E6 5A 80 E4 01 FE C4 F6 D4 2E: FF A7 0128 R OlOC 010C alOE 0110 0112 0114 0116 0118 0717 R COOO 0000 0000 0000 0000 0000 631 632 633 63. 635 636 637 638 63' 6'0 6" 6'2 6·· 644 6'5 646 641 648 649 650 651 652 653 654 655 656 651 658 659 660 66' 662 66. 664 665 666 667 668 66. 610 671 612 613 61. 615 616 611 618 61. 680 681 682 68. 68' 685 686 681 688 68' 6'0 691 692 6'3 694 695 696 691 698 699 100 101 702 703 104 105 706 701 108 109 710 111 712 113 71. 715 716 111 718 71. 120 121 122 123 124 125 126 121 128 12, 130 131 132 733 734 735 736 731 738 139 140 14' 142 743 144 745 746 741 148 749 750 75' 152 153 15' 155 156 C CLI C HOV WORD PTR VIDEO, OFFSET COMBO_VIDEO C HOV WORD PTR V I DEO+2. CS 0 HOV WORD PTR PLANAR_VIDEO,Of065H 0 HOV WORD PTR PLANAR_VIDEO+2,OFOOOH 0 HOV WORD PTR SAVE_PTR, OFFSET SAVE_TBl 0 HOV WORD PTR SAVE_PTR+2, CS 0 HOV WORD PTR EXT_PTR, OFFSET INT_1F_l 0 HOV WORD PTR EXT PTR+2, CS 0 HOV WORD PTR GRX:=SET, OFFSET CGDDOT 0 HOV WORD PTR GRX_SET+2, CS 0 STI 0 0 ;----- POST FOR COMBO VIDEO CARD 0 0 MOV INFO,OOOOO100B C CALL RD_SWS C HOV INFO_3,Bl C CALL F_BTS C OR INFO_3,Al C HOV Bl,INFO_3 C e CALL JMP ~~S~NV e SKI P: e RET C V IDEO_SETUP ENDP C e C POR_l PROC NEAR C OUT DX,Al e PUSH AX C POP AX e IN Al,OX e AND AL,010H C SHR AL,l C RET C POR_l ENDP C 0 ;----- READ THE SWITCH SETTINGS ON THE CARD 0 0 RO_SWS PROC NEAR 0 ASSUME DS:ABSO 0 HOV oH,3 0 HOV Dl, Mt SC_OUTPUT 0 HOV Al, , 0 OUT DX,Al 0 0 ;----- COULD BE 0,4,6,C 0 0 HOV Al,ODH 0 CAll POR_' 0 SHR Al,l C SHR Al,1 0 SHR Al,l C HOV Bl,Al C 0 HOV Al,9 0 CAll POR_' C SHR Al,l e SHR Al,l e OR Bl,Al e e HOV Al,5 e CAll POR_l e SHR Al,l e OR Bl,AL e e HOV Al,l e CAll POR_l e OR Bl,Al e e AND Bl,OFH e RET e RD_SWS ENOP C C ;----- OBTAIN THE FEATURE BITS FROM DAUGHTER CARD C C F_8TS PROC NEAR e HOV OH,3 e HOV DL,OBAH 0 HOV AL,' 0 OUT OX,Al 0 HOV Ol,OOAH 0 OUT DX,Al 0 HOV Ol, I N_STAT_O 0 IN AL,OX READ FEATURE BITS 0 AND AL,060H 0 SHR AL,l 0 HOV BL,AL 0 HOV OL,OBAH 0 HOV Al,2 0 OUT OX,AL 0 HOV OL,OOAH 0 OUT DX,Al 0 HOV OL, I N_STAT_O 0 IN AL,OX ; READ FEATURE 8 I TS 0 AND Al,060H 0 SHL AL,l 0 OR Al,Bl 0 RET 0 F_BTS ENOP 0 e ;----- ESTABLISH THE VIDEO ENVIRONMENT. KEYED Off OF THE SWITCHES e e MK_ENV PROC NEAR C ASSUME OS:ABSO e SU8 BH,BH e AND Bl,OFH e SAL BX,l C PUSH OX e MOV OH,3 C HOV AH,DH C POP OX C AND AH,l C INC AH C NOT AH C JHP WORD PTR CS:IBX + OffSET 15) C e SAVE_TBL e ow LABEL awaRD OFFSET VIDEO_MRNS PARMS e e C C C C OW ow OW OowW ow OCOOOH ° ° ° ° ° ; PARMS ; PAL SAVE AREA ; PAL SAVE AREA ; ALPHA TABLES ; ALPHA TABLES ; GRAPHICS TABLES August 2, 1984 IBM Enhanced Graphics Adapter 109 011A onc 011E 0120 0122 0124 0126 0000 0000 0000 0000 0000 0000 0000 0128 0128 012A 012C 012E 0130 0132 0134 0136 0113 R 017E R 017E R 0189 R 0194 R alAS R OlBe R 01e7 R 0138 013A 013C 013E 0140 0142 0144 0146 01C7 R 0102 R 0100 R 01fl R 0204 R 0204 R 0204 R 0204 R 0148 0148 0140 0152 0155 0157 0158 80 26 Otll0 R CF 80 OE Otll0 R 1O 68 0001 CD 10 C3 0158 0158 0150 0162 0165 0167 0168 80 26 0410 R CF 80 DE 0410 R 20 B8 0003 CD 10 C3 0168 0168 0160 0110 0112 0113 80 OE 0410 R 30 B8 0007 CD 10 C3 0113 0173 0177 017A 0170 017E 017E 017E 0182 0185 0188 0189 0189 0180 0190 0193 0194 0194 0196 0198 019A 0196 019D 01Al 01A4 01A7 01AB 01AB 01M OlAC alAE OlAF 01Bl 01B5 01B8 01BB 01BC 01BC 01CO 01C3 01C6 01C7 01C7 01e7 01e8 01eE OlDl 01D2 0102 0106 01D9 01DC 0100 0100 010F 01 El 01 E3 0·lE4 01£6 OlEA OlEO OHO OlFl OlFl OlF3 01f5 01F7 OH8 QlFA OHE 0201 0204 0204 0205 20 26 0487 R E8 0148 R E8 0168 R e3 20 26 0487 R E8 0158 R E8 0168 R e, 20 26 0487 R E8 0158 R [8 0168 R C3 66 03 62 C2 60 00 EE F6 04 08 26 0487 R E8 0168 R E8 0148 R C' B6 03 B2 e2 BO 00 EE f6 D4 08 26 0487 R E8 0168 R E8 0158 R C3 20 26 0487 R E8 0168 R E8 0148 R C3 20 26 0487 R E8 0168 R E8 0158 R e, 20 26 0487 R £8 0168 R E8 0158 R C' 66 03 B2 C2 BO 00 EE F6 04 08 26 0487 R E8 0148 R [8 0168 R C3 B6 03 82 C2 80 00 EE '6 04 08 26 0487 R E8 0158 R E8 0168 R C3 757 756 759 760 761 762 763 764 765 766 767 766 769 770 771 772 773 774 775 776 777 776 779 760 781 782 763 784 785 786 787 788 789 790 791 792 793 794 795 796 797 796 799 600 601 602 603 604 605 606 607 606 609 610 6" 612 6" 614 6" 616 617 616 619 620 621 822 823 824 825 826 827 828 829 830 6" 632 6" 634 835 636 637 636 639 640 641 642 643 844 845 646 847 848 649 850 851 652 653 654 855 856 657 858 859 660 861 662 663 864 865 666 867 866 869 870 871 872 873 874 875 676 877 878 879 860 861 .62 e OW e e OW e OW C OW C OW C OW C OW C C T5 LABEL C OW C OW C OW C OW C OW e ow e ow e ow e e ow C OW C OW C ow e ow C ow C ow C ow C C ENV_X PROC C ANO C OR C HOV C I NT C RET C ENV_X ENDP C C ENV_O PROC C ANO C OR e HOV e INT e RET C ENV_O ENDP e C ENV_3 PROC C OR C HOV C INT C RET C ENV_3 ENoP C C C PST_O: C ANO C CALL C CALL C RET e PST_': e PST_2: e AND e CALL e CALL e RET e PST_3: C AND C CALL C CALL C RET C PST_4: C HOV C HOV C HOV C OUT e NOT C OR C CALL e CALL e RET C PST_5: e HOV e HOV e HOV e OUT e NOT C OR C CALL C CALL C RET C PST_6: C AND C CALL C CALL C RET C PST 7: e PST:8: e AND e CALL e CALL c RET e PST_9: e AND e CALL e CALL e RET C PST_A: C HOV C HOV C HOV C OUT c NOT e OR C CALL C CALL C RET e PST_B: e HOV C HOV e HOV C OUT C NOT C OR C CALL C CALL e PST_OUT: C RET c MK_ENV E!'lOP WORD g~~~g ~~~:~ OFFSET OFFSET OFFSET OFFSET OFFSET OFFSET PST_2 PST_3 PST_4 PST 5 PST-6 PST:7 OffSET OFFSET OFFSET OFFSET OFFSET OFFSET OFFSET OFfSET PST_B PST_9 PST_A PST_B PST_OUT PST OUT PSCOUT PST_OUT NEAR EQUJP_LOW,OCFH EQUIP_LOW,010H AX,lH 10N NEAR EQUIP_LOW,OCFH EQUIP_LOW,020H AX.03H 10N NEAR EQUIP_LOW,030H AX,07H 10N INFO,AH ENV X ENV:3 INFO,AH ENV_O ENV_3 INFO,AH ENV_O ENV_3 DH,3 DL,MISC_OUTPUT AL,O DX,AL AN JNFO,AH ENV_3 ENV_X OH,3 OL. MI SC_OUTPUT AL,O DX,AL AN INFO,AH ENV_3 ENV_O INFO,AH ENV_3 ENV_X INFO,AH ENV_3 ENV_O I NFO,AH ~~~:6 OH,3 DL,MISC_OUTPUT AL,O OX,AL AN INfO,AH ENV_X ENV_3 OH.3 OL,MISC_OUTPUT AL,O OX,AL AN INfO,AH ENV_O ENV_3 110 mM Enhanced Graphics Adapter GRAPHICS TABLES SET 40X25 COLOR ALPHA ; SET 80X25 COLOR ALPHA SET MONOCHROME ALPHA August 2, 1984 0205 0205 0206 0209 020B 020C 020F 0211 0212 0213 0216 0217 0218 021B 0210 021E 0220 0223 0223 0225 0226 0227 0227 022A 022B 022C 53 BB 007F 88 FB 50 £8 022C R 88 FO 58 50 E8 0236 R 58 50 E8 022C R 38 C7 58 7503 E8 05 90 33 CO 5B C3 B8 0001 58 C3 022C 022C 0220 022F 0231 0232 0233 52 68 DO BO OE EE 42 EC 0234 5A 0235 C3 0236 0236 0236 0237 0238 023A 023C 023E 50 52 88 DO B1I DE BO 7F E8 0015 R 0241 5A 0242 58 0243 C3 0244 0244 0244 0247 024C 024E 0251 0254 0257 0259 025C 025C 025E 0260 0260 0263 0266 0269 026B 026E 026E 0270 0270 0271 0274 0277 027A 027C 027F 0281 0283 0285 0287 0289 0289 E6 OCFE R F6 06 0487 R 02 75 12 B8 03B4 E8 0205 R 3D 0001 74 03 E9 0317 R B4 30 E8 10 68 0304 E8 0205 R 3D 0001 74 03 E9 0317 R B4 20 50 BB BOOO BA 03B8 B9 1000 BO 01 80 FC 30 74 08 B7 sa B2 08 85 40 FE C8 EE 028A 8B 2E 0472 R 028E 81 FD 1234 0292 IE C3 883 884 885 880 887 888 889 890 891 892 893 894 895 890 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 91. 917 918 919 920 921 922 923 924 925 92. 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 94. 947 948 949 950 951 952 953 954 955 956 957 958 959 900 901 902 903 904 905 900 907 968 909 970 971 972 973 974 975 970 977 978 979 980 981 982 983 984 985 980 987 988 989 990 991 992 993 994 995 990 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 c c c ~ -THis-ROUTINE-1ESls-THE-cRT-C~RO-i NTERN;L-D~T;-B~S-;NO-jN-~-li;'i 1ED----~ c ; WAY TESTS THE CRTC VIDEO CHIP BY WRITING/READING FROM CURSOR REGISTER: e ; CARRY I S SET I F AN ERROR I S FOUND : i e e REGISTERS BX,SI,ES,DS ARE PRESERVED, e ; REGISTERS AX,CX,DX ARE MOOIFYED, C e bD=;~EsE~e~;T;T-:~OC----NE;~--------------::::-::------------------------ e e MOV BX,07FH INITIAL WORD PATTERN ByTE e MOV Dl,ex c PUSH AX SAVE PORT ADDRESS c CALL RD CURSOR e e MOV POP SI~AX AX SAVE ORIGINAL VALUE RECOVER PORT ADDRESS e PUSH AX SAVE PORT AODRESS e CALL WR_CURSOR WR I TE CURSOR e POP AX RECOVER PORT ADDRESS e e e PUSH CALL CMP AX RD.CURSOR AX,DI e POP AX SAVE PORT ADDRESS READ IT BACK SAME? e JNZ NOT PRESENT EXIT I F NOT EQUAL e e NOT_PRES~~~: TSCEX e XOR AX,AX SET NOT PRESENT e e e POP RET TST_EX: BX e MOV AX,1 SET PRESENT ON EX I T e e POP OX RET RESTORE BX e CD_PRESENCE_TST ENDP c C c ;-MODU~E-N;.ME--~D-~~~;O~-- ------ -- ------------ ------- --------- --- -- e READ CURSOR POSITION [ADDRESS) (FROM CRTC) TO AX e e REGISTER AX IS MODIFIED. ee ~D=~~RS~~-------P~;;C-~E;~------------------------------------------------ e c PUSH MOV OX OX,AX ; SAVE REGS USED e MOV AL, C_CRSR_LOC_HGH e e OUT INC DX,Al OX e IN AL,DX c RETURN WITH CURSOR POS I N AX e RESTORE REGS USED e e OX e ENOP e ee ; -MODuLE-NAAE--w~-~~Rs;;;------------------------------------------------- e WRITE CURSOR POSITION [ADDRESS] (TO CRTC) WITH CONTENTS OF AX e e ALL REGISTERS PRESERVED e e ~R=C;;RS;;R-------PROC-HE;;;- ----------- ------------ ------ -------- ------: e ; SAVE REGS USED e PUSH AX e e PUSH MOV OX OX, AX c c MOV AH, C_CRSR_lOC_HGH MOV AL,07FH ; CURSOR LOCATION HIGH INDEX ; TEST VALUE e c CALL OUT_DX RETURN WITH CURSOR POS I N AX e e e POP OX POP AX e RET RESTORE REGS USED c WR_CURSOR ENDP e e e C ;P-O-S-T-: -------------------------------------------------- INITIALIZE AND START CRT CONTROLLER (6645) c e 1 ~~S~o~~~EgR:~~~;eR~~~ ~~~~~~~ME CARDS e DESCR I PT I ON e e c ; ; RESET THE VIDEO ENABLE SIGNAL. SELECT ALPHANUMERIC MODE, 40 .. 25, 8 8t W. READ/WRITE DATA PATTERNS TO STG. CHECK STG e ADDRESSAS I LI TY. e c ASSUME OS: ASSO, ES:ABSO e CALL DOS e TEST INFO,2 e JHZ COLOR PRESENCE TST e MOV AX,03B4H - C CALL CD_PRESENCE_TST e eMP AX,1 e c JE JMP CONTl POD14 ee CONTl : HOV AH,30H e JMP SHORT OVER e COLOR_ PR ESENCE_TST: e MOV AX,0304H e CALL CO PRESENCE TST e CMP AX~l - e e e e CONT2: JE JMP MOV CONT2 POD14 AH,20H e OVER: c PUSH AX MONOCHROME CARD I NSTALLED ; COLOR GRAPHICS CARD INSTALLED RESAVE VALUE C e MOV MOV BX,oeOOOH DX,3B8H BEG VIDEO RAM AoDR B/W CO MODE CONTROL B/W e C e e e c MOV MOV eMP JE MOV MOV CX,4096 AL,l AH,30H E9 BH,088H DL,OD8H e MOV CH,40H RAM BYTE CNT FOR B/W CD SET MODE FOR BW CARD BjW VIDEO CARD ATTACHED? YES - GO TEST VIDEO STG BEG VIDEO RAM ADDR COLOR CD MODE CONTROL COLOR RAM eYTE CNT FOR COLOR CD C DEC AL SET MODE TO 0 FOR COLOR CD C E9: e c e e e e OUT MeV eMP MOV DX,AL BP, OS: RESET_FLAG BP,1234H ES,BX 6~~!BnD~~D~bG~OR COLOR CD POD INITIALIZED BY KBD RESET POD I NIT lAUD BY KBD RESET? POINT ES TO VIDEO RAM STC August 2, 1984 IBM Enhanced Graphics Adapter 111 0294 74 07 0296 8E DB 0296 E8 02DF R 029B 15 2E 0290 0290 029E 029f 02A2 02A4 02A7 58 50 88 7020 28 FF 89 0028 f3/ AS 02A9 02AA 02A6 02AE 02Bl 02B3 02B5 02B5 02B7 02B7 02B9 02B9 02BA 02BC 02BE 02CO 02e2 02C2 02ClI 02ClI 02C5 02C7 02C9 02CB 02ce 02eE 0201 0203 0203 0205 0207 0209 0209 02DA 58 50 80 FC 30 BA 03BA 74 02 B2 DA Bil 08 2B C9 EC 22 e4 75 04 E2 F9 EB 09 2B C9 EC 22 e4 14 OA E2 F9 BA 0102 E8 06C8 R EB 06 B1 03 02 EC 75 DE 58 EB 38 02DC 02DC 02DF 02DF 02EO 02E2 02E5 02E8 02EA 02Ee 02EC 02EO 02EE 02EE 02FO 02F2 02F2 02f3 02F5 02F7 02F9 02FA 89 4000 FC 88 09 88 AMA BA FF55 28 FF F3/ AA 4F FO 86 F7 86 e6 AC 32 C4 75 lE 8A C2 AA E2 F6 02Fe 02FE 0300 0302 03011 0306 0308 030A 030C 030C 0300 030E 0310 0311 0313 0313 0315 0315 0316 0317 22 E4 74 13 8A EO 86 F2 22 E4 75 04 8A 04 EB EO FC 47 74 DE 4F EB 09 BO 00 FC C3 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1106 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 11 19 1120 1121 1122 1123 1124 1125 1126 1127 ',26 1129 1130 1131 1132 1133 1134 C JE El0 YES .. SKI P VIDEO RAM TEST C MOV OS,BX POINT OS TO VIDEO RAM STG C ASSUME OS: NOTH I HG, ES: NOTH I NG C CALL STGTST_CNT ; GO TEST V IDEO R/W STG C JNE E17 R/W STG FAI LURE - BEEP SPK C C ~ -------SE~~;- ~;DE~-D~~;-~N-S~~EE~ -;~R-V~DE~-L~NE -TES;:: --. -.. --_..; C ; DESCR I PT lON : C ; ENABLE VIDEO SIGNAL AND SET MODE. C ; DISPLAY A HORIZONTAL BAR ON SCREEN. : C ~;o;------------------------------------------------------------C C POP PJl. , GET VIDEO SENSE SWS (AH) C PUSH PJl. ; SAVE IT C HOV AX,7020H ; WRT BLANKS IN REVERSE VIDEO C SUB 01,01 ; SETUP STARTING LOC C MOV CX,40 ; NO. Of BLANKS TO DISPLAY C REP STOSW ; WRITE VIDEO STORAGE C C ;-----~-~RT-iNTE~F~~E-liNE;-;:E;~------ -- ----------------; C DESCRIPTION C SENSE ON/OFF TRANS I TrON Of THE VIDEO ENABLE C AND HORIZONTAL SYNC LINES. ; .. ..------.. C C -------;~;---- ~~-------- --------~Ej-viDE~-;ENSE SW INFO C PUSH PJl. SAVE IT C CMP AH,30H BN CARD ATTACHED? C MOV DX,03BAH SETUP ADDR OF BW STATUS PORT C JE Ell YES - GO TEST LI NES C MOV DL,ODAH COLOR CARD IS ATTACHED C Ell: ; LlNE_TST: C HOV AH,6 C E12: C SUB CX,CX C E13: C IN AL,DX READ CRT STATUS PORT C AN~ AL,AH CHECK VIDEO/HaRZ LINE C JNZ El' C LOOP El3 I TS ON - CHECK I F IT GOES OFF LOOP TILL ON OR TIMEOUT C JHP SHORT E17 GO PR I NT ERROR MSG C E14: C SUB cX,ex C E15: C IN AL,DX READ CRT STATUS PORT C AND AL,AH C JZ ElO CHECK V I DEO/HORZ LINE I is ON - CHECK NEXT LINE C C E17: LOOP '15 LOOP I F Off TILL IT GOES ON CRT_ERR C HOV DX,102H C C CALL JHP ~~~R~Eg8 GO BEEP SPEAkER C E16: NXT LINE C MOV eL,3 GET-NEXT BIT TO CHECK C SMR AH,CL C JHZ E12 GO CHECK HORIZONTAL LINE C E18: C POP AX G~+S~~~OC~~~~: SWS (AH) C JHP SHORT POD14 C C C THIS SUBROUTINE PERFORMS A READ/WRITE STORAGE TEST ON C A 16K BLOCK OF STORAGE. C ENTRY REQUIREMENTS: C ES '" ADDRESS OF STORAGE SEGMENT BE I NG TESTED C OS = ADDRESS Of STORAGE SEGMENT BE I NG TESTED C ~~~NB~~~E~6~~/T STGTST_CNT. CX MUST BE LOADED WITH C C EXIT PARAMETERS: C ZERO FLAG = 0 IF STORAGE ERROR (DATA COMPARE OR PARITY CHECK. C AL = 0 DENOTES A PAR ITY CHECK. ELSE AL=XOR' ED BIT C PATTERN OF THE EXPECTED DATA PATTERN VS THE C ACTUAL DATA REAO. C C -------P-J-l.-, -a-X-,e--X-,D--X-,-D-I-, --AN-D---S-I --AR-E--A--L-L--D-E-S-TR-O--Y-E-O-. ------------------------ C STGTST PRoe NEAR C MOY CX,4000H ; SETUP CNT TO TEST A 16K BLK C STGTST CNT: C - CLD SET DIR FLAG TO INCREMENT C HOV BX,CX SAVE CMT (4K FOR VIDEO OR 16K) C HOV AX,OAAAAH GET DATA PATTERN TO WRlTE C HOV DX,OFF55H SETUP OTHER DATA PATTERNS TO USE C SUB 01,01 C REP STOSB 01 = OFFSET 0 RELATIVE TO ES REG WRITE STORAGE LOCATIONS C C3: C DEC OJ STG01 POINT TO LAST BYTE JUST WRITTEN C STD SET DIR FLAG TO GO BACKWARDS C C4: C HDV SI,OI C MOV cX,ex SETUP BYTE CNT C C5: I "NER TEST LOOP C LODSB READ OLD TEST BYTE (SI]+ C XOR AL,AH DATA READ AS EXPECTED ? C JHE C7 C C C C, MOV STOSB LOOP AL,DL NO - GO TO ERROR ROUT I NE GET NEXT DATA PATTERN TO WRI TE WRITE INTO LOCATION JUST READ DECREMENT COUNT AND LOOP CX C C AHD AH,AH a ENDING PATTERN WRITTEN TO STG? C JZ COX YES - RETURN TO CALLER WITH AL=O C HOV AH,AL SETUP NEW VALUE FOR COMPARE C XCHG DH,DL MOVE NEXT DATA PATTERN TO DL C AHD AH,AH READING ZERO PATTERN THIS PASS? C JHZ CO C HOY DL,AH a CONT I NUE TEST SEQUENCE TI LL 0 ELSE SET FOR END READ PATTERN C JHP C3 AND MAKE fl NAL BACKWARDS PASS C C6: C C C CLD INC JZ C01, SET DIR FLAG TO GO FORWARD SET POINTER TO BEG LOCATION READ/WRITE FORWARD IN SiG C DEC 01 ADJUST POINTER C JHP C3 REAO/WR I TE BACKWARD IN STG C C6X: C HOV AL,OOOH ; AL=O OATA COMPARE OK C C7: C CLD C RET ; SET DIRECTION FLAG BACK TO INC C STGTST ENDP C C ; ---------------------------- --- .. -- _.. -..---------- ------- C EGA CRT ATTACHMENT TEST C C 1. I NIT CRT TO 40X25 - BW ****SET TO MODE*.** C 2. CHECK FOR VERTICAL AND VIDEO ENABLES, AND CHECK C TIMING Of SAME C 3. CHECK VERTICAL INTERRUPT C 4. CHECK RED, SLUE, GREEN, AND INTENSIFY DOTS 112 IBM Enhanced Graphics Adapter August 2, 1984 ~ ~ ~ '" AOAC '" C460 =,. 00C8 8D99 = 8862 " 015E '" 015E = 0043 '" 0040 0317 0317 83 EC OA 031A 8B EC 031C E8 OCFE R 031f 80 30 0321 0323 0325 0321 032C 032E 0331 0336 033B 0340 0342 0344 0346 0349 034B 0340 0340 0350 0353 0355 0357 0359 035B 035E 0363 p366 E6 43 BO 00 E6 40 F6 06 0481 R 02 74 1f E8 0168 R C1 46 02 015E C1 46 04 8099 C7 46 06 8862 82 B4 B4 01 BO 27 E6 0015 R B2 BA EB 2A E8 014B R E8 OE9A R 73 11 B2 04 B4 01 BO 14 E8 0015 R C7 46 02 015E EB 06 90 0366 036B 036s 0370 0375 C7 46 02 OOCS C7 46 04 AOAC C7 46 06 C460 82 DA 0377 0377 OHA 037C B8 0500 CD 10 28 C9 037E 037£ 037F 0381 0383 0385 0387 EC A8 08 7S 01 E2 F9 83 00 E9 0448 R 038A 038A BO 00 038C £6 40 038E 2B DB 0390 0392 0392 0393 0395 0397 0399 039B 33 C9 EC AS 08 74 07 E2 F9 B3 01 £9 0448 R 039E 039E 03AO 03AO 03A1 03A3 03A5 03A7 03M 03A8 03AD 0380 03BO 03B2 0385 03B5 03B7 28 C9 EC A8 01 14 15 A8 OB 75 23 E2 f5 B3 02 E9 0448 R 83 03 E9 0448 R B3 04 E9 0448 R 03BA 03BA A8 08 03BC 75 f2 03SE OlSE 03BF 03C1 03C3 EC A8 01 E1 'B £3 FO 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 " .1163 1164 1165 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1166 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 121.3 1214 1215 1216 1217 121B 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 '260 C C ;--5-. --I -N-IT---TO---4-0-X-2-5--- --C-O-L-O-R-/M-O-N-O---."-.-S--E-T---TO---M-O--D-E-·-·-··----- C C ;----- NOMINAL TIME IS 8286H FOR 60 HZ. C ;----- NOMINAL TIME IS A2F'EH fOR 50 HZ. C C MA'CV£RT.COLOR EOU C OAOACH MAX TIME FOR VERT/VERT (NOMINAL + lOS) C HIN.V£RT.COLOR EOU OC460H MIN T I ME FOR VERT/VERT C (NOMINAL - lOS) C CENA8.PER.FRAME EQU 200 NUM OF ENABLES PER FRAME C MAX.VERT.MONO EOU C 08D99H MAX TIME FOR VERT/VERT (NOMINAL + lOS) C HIN.VERT.MONO EOU OB862H MIN TIME FOR VERT/VERT C (NOMINAL - lOS) C EENAB.PERJRAME EQU 350 ENHANCED ENABLES PER FRAME C HENAB.PER.FRAME EQU 350 NUM OF ENABLES PER FRAME C C TIM CTl EOU 043H ; 8253 T I MER CONTROL PORT C TIMERO EOU 040H ; 8253 TIMER/CNTER 0 PORT C C POD14 PROC NEAR C SUB SP,OAH RESERVE 5 WORDS ON STACK C MOY BP,SP I NIT SCRATCH PAD PO INTER C C ASSUME OS:ABSO, ES:ABSO C CALL DDS C MOY Al,00110000B SET T tHER 0 TO MODE 0 C C C OUT MOY !~~Og~l,AL C OUT TIMERO,AL SEND FIRST BYTE TO TIMER C TEST INFO,2 C JZ COLOR. EGA.V C C CALL MOY ~~D3 PTR{ BPI [2 J, MENAB.PERJRAME SET UP I N MONOCHROME NUM.OF FRAMES fOR MONO C MOY WORD PTR{BP](4J,MA)CVERT.MONO MAX T I ME FOR VERT/VERT C HOY WORD PTR{BPJ[6J,MIN.VERT.MONO MIN TIME fOR VERT/VERT C MOY DL, CRTC.ADDR.B MONO CRTC REG C MOY AH, C.HRZ.DSP HDRtZ. TOTAL 01 PLAY C HOY AL,21H TO 40 COL C CALL OUT.OX C . MaY OL,INPUT.STATUS_B 3BA C JMP SHORT COMMON C COLOR EGA V: C · CALL ENV X SET UP IN 40X25 COLOR C CALL BRST DET ENHANCED MODE C JNC COLoiCv NO,40X25 C MOV DL, CRTC_ADOR BRST MODE ONLY! C HOY AH,l HRZ DSP END C HOY AL,20 ; MODI FY FOR TEST ONLY C C CALL MOY eg~DD~TR[BPJ(2],EENA8.PER_FRAME ; HUM.OF fRAMES FOR COLOR C JMP BRST.COLOR.V C COLOR.V: C C HOY WORD PTR[ BPJl2 J, CENA8]ERJRAME ; NUM.OF fRAMES FOR COLOR C BRST_COLOR.V: C C MOV HOY ~~g ~~~i:~I!~I:~=~~~~=gg~g= ; MAX TIME FOR VERT/VERT ; MIN TIME FOR VERT/VERT C HOY DL, INPUT_STATUS ; SET ADDRESSING TO VIDEO C ; AHR STATUS C COMMON: c MOY AX,0500H ; SET TO VIDEO PAGE 0 C INT 'ON C SUB CX,CX C C ; ---- LOOK FOR VERT ICAL C C POO14.1: C IN AL,OX GET STATUS C TEST AL,OOOO1000B VERT I CAL THERE YET? C JHE POO14.2 CONTINUE IF IT IS C LOOP POO14.1 KEEP LOOK I NG T ILL COUNT C HOY BL,OO EXttAUSTEO C JMP POO14.ERR NO VERT I CAL C C ;----- GOT VERTICAL - START TIMER C C POD14_2: C MOY AL,O C OUT TlMERO,AL SEND 2ND BYTE TO TIMER TO C START IT C SUB BX,BX. HUT. ENABLE COUNTER C ; -~--- WAIT FOR VERT ICAL TO GO AWAY C XOR cX,CX C P0014_25: C IN AL,OX GET STATUS C TEST AL, 00001 0008 VERTICAL STILL THERE C JZ POD14 3 CONTINUE If IT'S GONE C LOOP POD14::::25 KEEP LOOKING TILL COUNT C MOY BL,01H ; EXHAUSTED C JMP POO14.ERR ; VERT I CAL STUCK ON C C ;----- NOW START lOOKING fOR ENABLE TRANSITIONS C C POO14.3: C SUB CX,CX C POD14.4: C IN AL,OX ; GET STATUS C TEST AL,DOOOOO01B ENABLE ON YET? C JE POD14.5 ; GO ON IF IT IS C TEST AL,000010008 ; VERTICAL ON AGAIN? C C JNE LOOP :gg~~:l5 CONTINUE I F IT IS KEEP LOOKING If NOT C HOY BL,02H C JHP POD14.ERR ; ENABLE STUCK OFF C POO14.4A: C MOY BL,03H C JMP POD14.ERR ; VERTICAL STUCK ON C POD14_4B: C MOY BL,04H C JHP POO14.ERR ; ENABLE STUCK ON C C ;----- MAKE SURE VERTICAL WENT OFf WITH ENABLE GOING ON C C PD014.5: C TEST AL,OOOO1000B ; VERT I CAL OFF? C JHZ POD14_4A ; GO ON I F IT IS C ;~---- NOW WAIT fOR ENABLE TO GO OFF ; (ERROR I F NOT» C POO14.6: C IN AL,DX ; GET STATUS C TEST AL,000000018 ; ENABLE OFF YET? E~~~E HA~0~6~~~0. FO~E~E~~ C LOOPE C C ; ---- POD14.6 KEEP LOOK I NG I F NOT BUMP COUNTER AND TEST; VERT I CAL August 2, 1984 IBM Enhanced Graphics Adapter 113 03CS 03C5 43 0306 74 04 03C8 A8 08 03CA 74 02 03CC 03CC 03eE 0300 BO 00 E6 43 3B 5E 02 0303 0305 0307 0309 0309 030B 0300 030E 03EO 03E2 03£3 03E4 03E7 03E9 03EB 03EO 03EO 03FO 03F2 03f4 74 04 B3 05 EB 6F E4 40 8A EO 90 E4 40 86 EO 90 90 3B 46 04 70 04 B3 06 EB 5B 3B 46 06 7E 04 83 07 EB 52 03F6 03F6 B8 090B 03F9 BB OOOF 03FC 03FF 0401 0402 0403 0405 0407 0409 040C 040F 0410 0410 0411 0412 0414 0416 0419 041A 0418 89 0050 CO 10 Ee 52 82 CO 84 OF BO 3F E8 0015 R 88 OOOF 5A 50 52 82 CO 84 32 E8 0015 R 5A 56 28 C9 0410 0410 041E 0420 0422 0424 0426 0428 Ee A8 30 75 09 E2 f9 B3 10 OA DC EB 1E 90 0428 0426 0420 0420 042E 0430 0432 28 C9 Ee A8 30 74 08 E2 F9 0434 83 20 0436 OA DC 0438 EB DE 043A 043A 043C 043F 0441 0444 0446 0446 0448 044B 044E 0451 04,. 0456 0456 045A 045C 0450 045E 0460 0463 FE C4 80 FC 30 74 25 60 CC OF 8A C4 EB C8 B9 0006 BA 0103 E8 06C6 R 63 c4 OA BO 36 E6 43 2' co E6 40 90 90 E6 40 BD 0001 £9 0091 R 0466 0466 0469 046C 046E 0470 0472 0474 0476 0471 0478 047A 0470 0480 £8 OCFE R B8 0500 CD 10 BO 36 E6 43 2A CO E6 40 90 90 E6 40 83 C4 OA BD 0000 0480 04&0 lE 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 , 325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1356 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 un 1373 1374 1375 1376 1371 1378 1379 1380 1381 1382 1383 1384 1,,&3865 C P0014_7: C INC ax BUMP ENABLE COUNTER C JZ P0014_75 I F COUNTER WRAPS, C SOMETHING IS WRONG e TEST Al,OOOO1000B 0'0 ENABLE GO LOW e BECAUSE OF VERT I CAL e JZ POD14_3 I F NOT, LOOK FOR ANOTHER e ENABLE TOGGLE e ;----- HAVE HAD COMPLETE VERTICAL-VERTICAL CYCLE: NOW TEST RESULTS e POO14_75: e MOV e OUT e eMP C e JE e MOV e JMP e P0014_8; AL,OO TIM_CTL,Al BX,WORD PTRIBPJ[2j POO14_8 Bl,05H SHORT P0014_ERR LATCH T I MERO ; NUMBER Of ENABLES BETWEEN ; VERTICALS O. K.? e IH AL, TIMERO e MOV AH,AL e HOP e IH AL, TIMERO e XCHG AH,AL e HOP ; GET T I MER VALUE LOW ; SAVE IT ; GET TIMER HIGH e NOP e eMP e JOE e MOV e JMP e P0014_9: C eMP C JLE AX,WORD PTRIBPj{4] POD14 9 Bl,06H SHORT POD14_ERR AX,WORO PTRIBP1I6) POD14_10 ; MAXIMUM VERTICAL TIMING ; MINIMUM VERTICAL TIMING e MOV BL,07H e JMP SHORT POD14_ERR e e ;----- SEE IF RED, GREEN, BLUE AND INTENSIFY DOTS WORK e e ;----- FIRST, SET A LINE OF REVERSE VIDEO, I NTENSI fl ED BLANKS INTO BUFFER e POO14_10: e MOV AX,090BH ; WRITE CHARS, BLANKS C MOV BX,OOOFH PAGE 0, REVERSE VIDEO, C e NOV cX,ao e INT 10H e IN AL,OX e PUSH OX e MOV Dl,ATTR_WR I TE e MOV AH,OFH e MOV AL,03FH C C CALL MOV ~;o~~ : HIGH INTENSITY ; 80 CHARACTERS SAVE I NPUT STATUS ; ATTR I BUTE ADDRESSS ; PALETTE REG 1Ft ; TEST VALUE ; VIDEO STATUS MUX ; START WITH BLUE OaTS e POP e P0014_13: e PUSH e PUSH e NOV e MOV e CAll C POP C POP OX AX OX Dl,ATTR_WRITE AH,32H OUT_OX OX AX ; SAVE SAVE INPUT STATUS ; ATTR 18UTE ADORESSS · COLOR PLANE ENABLE ; VIDEO STATUS MUX ; RECOVER I NPUT STATUS e SUB eX,ex e ;----- SEE IF DOT COMES ON e POD'4_14~ e I H Al,DX e TEST Al, 00 11 OOOOB e e JNZ LOOP ~gg~~:~~ e MOV Bl,10H e OR Bl,AH e JMP POO14_ERR C ;----- SEE IF DOT GOES Off e POO14_15: e SUB cx,cx e P0014_16: e IH AL,DX e TEST AL,00110000B C JE POD14_17 C LOOP P0014_16 e e MOV BL,20H e OR Sl,AH e JMP SHORT POD14_ERR ; GET STATUS ; DOT THERE? ; LOOK fOR DOT TO TURN Off ; CaNT I NUE TEST FOR ~OT ON ; OR IN ~OT 8EING TESTED ; DOT NOT COM' HG ON GET STATUS I SOOT STI lL ON? GO ON IF DOT OFF ELSE, KEEP WAITING fOR DOT TO GO OFF OR I N DOT BE I NG TESTED e e ;_M __ M ADJUST TO POINT TO NEXT DOT e e POO14_17: e IHC e eNP e JE e OR e NOV e JMP C pOO14_ERR: AN AH,030H 1'0014_18 AH,OFH AL,AH P0014_13 · ALL 3 DOTS DONE? ; GO END MAKE OF,lF,2F GO LOOK FOR ANOTHER DOT e MOV CX,6 e e MOV CAll ~:R~~~~~ e AOO SP,OAH e MOV Al,OOllOl10B e OUT TI M_CTl,AL C SUB AL,Al e OUT TIMERO,Al ONE LONG AND THREE SHORT BALANCE STACK RE-INIT TIMER 0 e HOP e HOP e OUT TIMERO,AL C MOV BP,1 C JMP SKIP C ASSUME DS:ABSO e P0014_'8: e CALL 005 e MOV AX,0500H e I HT 10H e MOV AL,OOl10110B C OUT TIM_CTL,AL e SUB Al,AL e OUT TIMERO,AL e HOP SET TO VIDEO PAGE 0 RE~INIT TIMER 0 e HOP C OUT e ADO e NOV e POOl4 TIMERO,AL SP,OAH SP,O ["lOP REMOVE SCRATCH PAD MAKE SP NON ZERO e e ; ----- TEST STORAGE e e HEM_TEST: e PUSH OS 114 IBM Enhanced Graphics Adapter August 2, 1984 0461 E8 OCFE R ~ ~ ~ 0464 0489 0488 0490 0493 0498 0498 0490 0490 04A2 04A7 04M 04M 04AC 04Ar 04B1 04B4 04B6 04B6 0480 04C2 04C4 04C6 04C9 OIiCC 04CE 0401 0404 0405 0407 0408 040A 0400 04EO 04E3 04E6 04E6 04EB 04EB 04EE 04fl 04F3 04F6 04F6 04F1 04F9 04FC 04FF 0501 0504 0501 0508 050A 050B 0500 0510 0513 0516 051B 051E 0520 0523 0523 0526 0529 052B OS2E 052E o52F 0531 0534 0531 0538 053A 0530 0540 0542 0543 0545 0548 OS4B 0550 0553 0556 0556 0558 0558 OS5E 0561 0563 0566 0566 0561 0569 056C 056F 0571 0574 0511 0518 057A 0578 0570 0580 0583 05sa 0588 056E 0590 0593 0596 0598 0599 059C 059C 0590 059E F6 06 0467 R 02 74 12 60 DE 0410 R 30 86 OOOF 60 DE 0467 R 60 B6 OOOF EB 00 80 26 0410 R Cf 60 OE 0410 R 20 B8 DaDE CO 10 63 EC 06 6B EC B6 MOO 8E 06 6E CO C7 46 02 0000 C7 46 04 0000 86 03 92 C4 86 0201 E6 0015 R 82 CE 86 0400 E8 0015 R >2 82 DA Ee B2 CO B8 3200 E6 0015 R E8 068f R 80 FC 00 74 03 E9 05CO R E8 0509 R 60 FC 00 74 03 E9 05CD R 5' 82 C4 B8 02'02 E8 0015 R B2 CE B8 0401 E8 0015 R 52 B2 oA Ee B2 CO B6 3200 E6 0015 R C1 46 04 0000 E8 066F R 80 FC 00 14 03 E9 OSCO R E6 0509 R 80 FC 00 14 03 E9 OSCO R 5' B2 C4 B6 0204 E8 0015 R 52 82 CE B8 0402 E8 0015 R B2 DA Ee B2 co 88 3200 E8 0015 R C7 46 04 0000 E8 068F R 80 Fe 00 14 03 EB 73 90 E8 0509 R 60 FC 00 14 03 EB 66 90 5' 82 C4 B8 0208 f8 0015 R B2 CE 88 0403 E6 0015 R 52 82 oA Ee 82 CO 86 3200 E8 0015 R C1 46 04 0000 E6 066F R 80 FC 00 15 3D E8 0509 R 60 Fe 00 75 35 55 BD 0000 5E 5E6' OCFE R 05Al 05A5 05A7 05A9 05AA 36: 68 5C 02 B1 06 D3 fB 4B Bl 05 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1396 1399 1400 1401 1402 1403 1404 1405 1406 1407 1406 1409 1410 1411 1412 1413 1414 1415 1416 1417 1416 1419 1420 1421 1422 1423 1424 1425 1426 1421 1428 1429 1430 1431 1432 1433 1434 1435 1436 1431 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1451 14506 1459 1460 1461 1462 1463 1464 1465 1466 1461 1468 1469 1410 1411 1412 1413 1474 1415 1476 1417 1418 1419 1460 1481 1462 1483 1484 1485 1486 1481 1488 1489 1490 1491 1492 1493 1494 1495 1496 1491 1498 1499 1500 1501 1502 1503 1504 1505 1506 1501 1508 1509 1510 1511 1512 CALL DDS ASSUME OS: ABSO TEST INfO,2 JZ O_COLOR_M OR EQU I P_LOW,OlOH MOV AX,OFH OR IHfO,060H MOV AX,OFH JMP SHORT O_OUT_M D_COLOR_M; AND EQUIP_LOW,OCFH OR EQU I P_LOW, 020H MOV AX,OEH D_OUT_M: INT 10M SUB SP,6 MOV BP, SP MOV AX,OAOOOH ASSUME DS:NOTH lNG, ES:NOTH I NG MOV DS,AX MOV ES,AX MOV WORD PTR[BPJ[21 , 0 MOV WORD PTR( 8P J( 4], 0 MOV OH,3 MOV DL, SEQ_ADDR MOV AX,0201H CALL OUT OX MOV OL,GRAPH_AOOR MOV AX,0400H CALL PUSH OUT _ox ox MOV OL, AlTR_REAO AL,OX M"OV OL,ATTR_WRITE MOV AX,3200H CALL OUT_DX CALL HOW BIG eMP AH,O JZ AAl JMP EGA_MEM_ERROR AAl : CALL MEMORY_OK · CMP AH,O JZ AA2 JMP EGA_MEM_ERROR AA2, pop OX MOV DL, SEQ_AooR MOV AX.0202H CALL OUT_OX MOV OL, GRAPH_ADOR MOV AX,0401H CALL OUT_OX PUSH OX MOV Ol.ATlR_REAO IN AL,OX MOV OL,ATTR_WR I TE MOV AX, 3200H e CALL OUT OX e MOV WORD PTR (BPJ[41,O e CALL HOl-CBIG e eHP AH,O e JZ AA3 e JHP EGA_MEM_ERROR e AA3: e CALL MEMORY_OK e eMP AH,O e JZ AA4 e JMP EGA_HEM_ERROR e AA4: e POP OX e HOV Ol, SEQ AoDR e MOV AX,0204H e CALL OUT_OX e PUSH OX e MOV Dl, GRAPH_AoDR e MOV AX, 0402H e CALL OUT_OX e MOV OL,ATTR_REAO e IN AL,DX e MOV DL, ATTR_WR I TE e MOV AX,3200H e CALL OUT_OX e MOV WORD PTR(8P][4),O e CALL HOW_BIG e eHP AH,O e JZ M5 e JMP EGA_HEM_ERROR e M5: e CALL MEMORY_OK e eMP AH,O e JZ AA6 e JMP EGA_HEM_ERROR e AA6: e POP OX e MOV DL,SE~ADDR C MOV AX,0206H e CALL OUT_DX e e MOV MOV ~;g:~;~_ADDR e CALL OUT_OX e PUSH OX C MOV DL,ATTR_REAO e IN AL,oX e MOV DL,ATTR_WRITE e MOV AX,3200H e e CALL MOV ~~DD~TR( 8P)(4),O e CALL HOW BIG e eHP AH,O e c JNZ CALL EGA_HEM_ERROR MEMORY_OK e eMP AH.O e JNZ EGA_MEM_ERROR e PUSH BP C HOV BP,O e EGA_MEM_EX IT: e POP 51 e POP OX e CALL DDS e ASSUME OS:ABSO e MOV BX,WORO PTR SS:ISI1(2) e MOV CL,06H e SHR BX,CL e DEC BX c HOV CL,05H I NTERHAL COLOR MODE T(ST I N COLOR RESERVE 3 WORDS ON STACK SET BP PUT BUFfER ADDRESS IN AX SET UP SEG REGS TO POINT TO BUffER AREA INITIALIZE INITIALIZE ADDRESS READ MAP SELECT SET UP ATTR I 8un ; ATTRI8UTE WRITE ADDRESS ; GO fiNO AMOUNT OF MEMORY GO TEST IT ADDRESS OF READ MAP SET UP ATTRIBUTE ATTRIBUTE WRITE ADDRESS INI TlALIZE GO F I NO AMOUNT OF MEMORY GO TEST IT ADDRESS OF READ MAP SET UP ATTRIBUTE ; ATTRIBUTE WRITE ADDRESS INITIALIZE ; GO FINO AMOUNT Of MEMORY ; GO TEST IT ; ADDRESS Of READ MAP ; SET UP ATTR 18UTE ; ATTRIBUTE WRITE ADDRESS INITIAUZE GO F I NO AMOUNT OF MEMORY GO TEST IT SAVE SCRATCH PAD POINTER RESET BP fOP: XT RESTORE SET DATA SEGMENT GET EGA MEMORY SIZE DIVIDE BY 64 TO GET NUMBER OF 64KB BLOCKS August 2, 1984 IBM Enhanced Graphics Adapter 115 05AC 03 E3 05AE 80 E3 60 0581 80 26 0487 R 9F 0586 08 1E 0487 R 05BA 05Br 05C3 0'06 05C9 OSCA 05CD 05CO 0500 0503 0'04 0507 80 DE 0487 R 04 8A 1E 0488 R E8 OOF3 R 83 C4 06 1F E9 0091 R BA 0103 ,>E8 06C8 R BD 0001 EB C3 0509 0509 05DC 05DE 05EO 05£3 05E5 05E7 05E9 05EC 05EF 05Fl 05F1 05F4 05F7 05FA 05FA 05F8 BS AOOD 8E DB 8E C3 88 46 04 8A E8 2A C9 " 01 E8 05FB R 80 FC 00 75 09 8B 46 04 01 46 02 88 0000 C3 05FB 05F8 05FC 05FO >5 FC 2B FF 05FF 0601 0604 0608 060C 060E 0610 26 CO .,E8 OCFE R 8B 1E 0472 R FB 1234 8C C2 6E DA 74 62 0612 0616 0618 0618 061A 061C 061E 0620 0622 0624 61 FB 4321 74 5C 86 05 614. 05 32 C4 75 40 FE C4 8A C4 75 F2 0626 0628 062. ..20 0630 8B E9 88 AA55 88 08 BA 55M F3/ AS 0632 0633 0634 063> 0637 0639 0639 063A 063C 063E 0640 0641 0643 0645 0646 0647 0648 064A 064A 0648 0640 064F 4F 4' '0 88 f7 68 CD AD 33 C3 75 22 88 C2 A. E2 F6 88 CD Fe 4. 4. 6B FE AD 33 C2 75 11 A8 0650 E2 F8 0652 Fa 0653 4E 0654 0655 0657 0657 0658 065A 065C 065E 0660 0660 0662 0664 4E 8B CD AD OB CO 75 04 E2 F9 E8 11 8B C8 32 E4 OA ED 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1556 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1560 1581 1582 1583 1584 1565 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1626 1629 1630 1631 1632 1633 1634 1635 1636 1637 1638 e SHL BX,CL e AND 8L, 0 11 000008 C ISOLATE 8ITS 5 AND 6 C AND INFO,100111118 C C OR INfO,8L e e OR INFO,OOOO0100B e HOV BL,INFO_3 04H SET 3XX ACT I VE C CALL MK_ENV e ADD SP,6 RESTORE STACK C POP OS C JHP SKI P ; GO TO END e EGA_MEM_ERROR: e MOV DX,OlO3H ONE LONG AND THREE SHORT C CALL ERR_BEEP C PUSH .P SAVE SCRATCH PAD PO I NT ER e MOV BP,l INDICATE ERROR FOR XT C JHP EGA_HEM_EXIT C e :'"'---- THIS ROUTINE FINDS AMOUNT OF MEMORY GOOD e e MEMORY_OK PROC NEAR e MOV BX,OAOOOH ; SET PTR. TO 8UffER SEC C HOV DS,BX ; SET SEG. REG. C HOV ES,BX e HOV AX,WORO PTR[BP]{I.i] SET COUNT FOR 32K WORDS e MOV CH,Al SET AMOUNT OF BUffER e SUB CL, CL TO BE TESTEO e SHL CX,1 MULTIPLY BY TWO e CALL PODSTG C CHP AH,O TEST FOR ERROR e JNZ C MEMOR'COK_EX: C MOV MEMDRY_OK_ERR AX, WORD PTR{ BP , [1+ 1 I F ERROR GO PR I NT IT AMOUNT Of MEMORY fOUND e ADD WORD PTR[8Pl[2],AX AMOUNT OF MEMORY GOOD e MOV AX,O e MEMORY OK ERR: C - RET C MEMORY_OK ENDP C C --------------------------------------------------------------- e ; THIS ROUTINE PERFORMS A READ/WRITE TEST ON A BLOCK OF STORAGE: e ; (MAX. SIZE = 32KW). IF "WARM START", FILL 8LOCK WITH 0000 AND: e ; RETURN. C ; ON ENTRY: C ES = ADDRESS OF STORAGE TO BE TESTED C OS = ADDRESS OF STORAGE TO BE TESTED C C = ex = WORD COUNT at STORAGE BLOCK TO BE TESTED (MAX. 8000H (32K WORDS)) e ON EXIT: e ZERO FLAG = OFF I F STORAGE ERROR e C , ; --A-X-,B--X-,-C-X-,-D-X-,-O-I-,S--I--A-R-E--A-L-L--D-E-S-T-RO--Y-E-D-. - ----- --- -- ------- -------- e POOSTG PROC NEAR C PUSH .P e CLO SET D I R TO INCREMENT e SUB 01,01 SET 01=0000 REL TO START e OF SEGMENT e SUB AX,AX INITIAL DATA PATTERN FOR C OO-FF TEST e CALL DDS C ASSUME DS:ABSO C HOV ex, os: RESET_FLAG e eHP ax, 1234H WARM START? C MOV ox, ES e MOV OS,ox ; RESTORE OS e JE PODSTG_5 ; GO DO FILL WITH 0000 C I F WARM START C CHP BX,4321H DCP WARM START? C JE PODSTG_5 DO FILL IF so e PODSTG_, : e MOV [OJ J,AL ; WRITE TEST DATA C MOV AL, [011 ; GET I T BACK e XOR AL,AH ; COMPARE TO EXPECTED C JNZ PODSTG_ERRO ERROR EXI T IF MI SCOMPARE C INC AH FORM NEW DATA PATTERN C HOV AL.AH e JNZ POOSTG_' LOOP TILL ALL 256 DATA e PATTERNS DONE e MOV 8P,CX SAVE WORD COUNT e MOV AX,OAA55H C HOV OX,AX LOAD DATA PATTERN C MOV DX.055MH LOAD OTHER DATA PATTERN C REP STOSW FILL WORDS FROM LOW TO C' e DEC DI c DEC DI HIGH WITH AAAA PO I NT TO LAST WORD WRI TTEN e STD SET 0 I R FLAG TO GO OOWN e HOV SI,OI SET I MOEX REGS. EQUAL C HOV CX,8P RECOVER WORD COUNT C PODSTG_2: GO FROM HIGH TO LOW C LODSW GET WORD FROM MEMORY e XOR AX,8X EQUAL WHAT S/8 THERE? e JNZ POOSTG_ERRO GO ERROR EX I T I F NOT C MOV AX,OX GET 55 DATA PATTERN AND C STOSW STORE I N LaC JUST READ C LOOP PODSTG_2 LOOP TILL ALL BYTES DONE C HOY CX,8P RECOVER WORD COUNT C CLD BACK TO INCREMENT C INC SI ADJUST PTRS e INC 51 e MOV DI,SI e POOSTG_3 : LOW TO HIGH DO I NG WORDS C LOOSW e XOR AX,OX GET A WORD SHOULD COMPARE TO ox C JNZ PODSTG_ERRO , GO ERROR I F NOT e STOSW ; WRITE 0000 BACK TO lOC e JUST READ C LOOP POOSTG_3 LOOP TILL DONE e e STD ; BACK TO DECREMENT C DEC SI ; ADJUST PO I MTER DOWN TO C ; LAST WORD WRITTEN C DEC 51 e MOV eX,BP ; GET WORD COUNT e POOSTG_4: e LOOSW e OR AX,AX GET WORD ; = TO 0000 e JNZ POOSTG_ERRO C LOOP PODSTG_4 ERROR I F NOT LOOP TILL DONE C JHP SHORT PODSTG_ERR2 C PODSTG_ERRO: e MOV CX,AX SAVE BITS I N ERROR e XOR AH,AH e OR CH,CH HIGH BYTE ERROR? r"'\ r'"\ r"'\ 116 mM Enhanced Graphics Adapter August 2, 1984 ~ 0666 0668 066A 066A 066c 066E 0611 0611 0672 0673 0674 0674 0675 0616 0678 067A 0670 0680 0681 0682 0684 74 02 .. 01 OA C9 1403 80 C4 02 50 fC e, '>02 B6 03 82 C4 B8 020F E8 0015 R ,A ,a F3/ AB E8 OCFE R 0687 068B 0680 068F 89 IE 0472 R 8E DA EB E2 068F 068F 0691 0693 0693 0695 0697 069A 069c 069F 06A1 06A4 06A6 06A8 06AB 06AO 06B1 06B4 06B7 06B9 06BC 06BC 06BF 06Cl O6e1 06C4 06C1 06C7 06C8 8C OA 2B DB 8E C2 28 FF B8 AA55 88 C8 26: 89 05 so OF 26: 88 05 33 Cl 75 14 B9 2000 F3/ AB 81 C2 0400 83 C3 10 80 FE BO 7' DA EB 01 90 8OFEAO 74 06 01 5E 04 B8 0000 e, ~ 06C8 06C8 06C9 06CA 06CB 9C fA 1E E6 OCFE R 06CE 0600 0602 0602 0604 0607 0607 0609 06DB 0600 0600 06DF 06E2 06E2 06E4 06E6 06E8 06E8 06EA 06EA 06EC 06£0 06[[ 06EF OA F6 14 DB 83 06 E8 0020 R E2 FE FE CE 75 f5 B3 01 E8 0020 R E2 FE FE CA 75 F5 E2FE E2 FE '01F e, ~ 06Ef 06EF OEB3 R 06F1 lOEF R 06f3 1151 R 06F5 1186 R 06F1 119D R 06F9 12A4 R 06FB 150£ R 06FD 1580 R 06fF 1102 R 0701 1899 R 0703 1800 R 0105 1A15 R 0701 lBCB R 0109 lC9F R 070B 1001 R 0100 1065 R 010F 10C5 R 0711 lF98 R 0713 20BF R 0715 2118 R "" 0028 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1651 1658 1659 1660 1661 1662 1663 1664 1665 1666 1661 1668 1669 1610 1671 1672 1673 1614 1615 1676 1677 1678 1679 1660 1681 1662 1683 1684 1685 1666 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 1100 1101 1102 1703 1104 1705 1706 1707 1708 1709 1110 17" 1712 1713 1714 1715 1716 1717 1716 1719 1720 1721 1722 1723 1724 1725 1726 1721 1728 1729 1730 1731 1732 1733 1734 1735 1736 1737 1738 1739 1740 1141 1742 1743 1744 1145 1746 1747 1748 1149 1750 1751 1752 1753 1754 1755 1756 1151 1758 1759 1160 1761 1762 1763 1764 C JZ PODSTC_ERR1 C HOV AH,1 SET HIGH BYTE ERROR e PODSTG_ERRl : C OR CL,CL LOW BYTE ERROR? C JZ POoSTG_ERR2 C AOO AH,2 C PODSTG_ERR2 : C pop .P C CLD SET OIR FLAG BACK TO IHC C RET RETURN TO CALLER C POOSTG_5: SIMPLE FILL WITH 0000 ON C WARM~START C PUSH AX SAVE C PUSH OX SAVE VALUE C HDV OH,3 e HDV OL, SE~AOOR SElLAOOR REGISTER e HDV AX,020FH e CALL OUT_OX 00 IT C POP OX RESTORE e POP AX RESTORE e REP STOSW e CALL DDS e ASSUME OS;A8SQ e HOY OS: RESET_FLAG, BX e HOY OS,OX ; RESTORE OS e JHP PODSTG_ERR2 ; AND EXIT e POOSTC ENOP e e ;----- O'ETERMINE SIZE OF BUFFER e e HOW_BIG PROC NEAR e HOV OX,OS ; SET PNTR TO BUFFER LOC C SUB ax,ex ; BAS I C COuNT OF OOK e FILL LOOP: C - MoY ES,I;jX SET SEG. REG e SUB 01,01 e HOY AX,OAA55H TEST PATTERN e HOV ex,AX e HOV ES:(Oll,AX SEND TO MEMORY e HOV AL,OFH PUT SOMETH I NG IN AL e HOV AX,ES: (011 GET PATTERN FROM MEMORY e XOR AX,CX COMPARE PATTERNS e JHZ HOW_B I G_ENl'> GO END 1r NO COMPARE e HOV CX,2000H SET COUNT FOR 6K WORDS e REP c STOSW ADD OX,0400H FILL 8K WORDS POINT TO NEXT 16K BLOCK C ADD BX,16 BUMP COUNT BY 16KB e CHP OH,OBOH C JHZ FILL LOOP AREA VET 11 80000H) e JHP HOW_81 G_END e HOW_BIG_EHD; e eHP OH,OAOH 1ST 16KB OK C JZ c RESUME; HB_ERROR_EX I T e ADD WORD PTR(BPj[41.BX SAVE BUFFER FOUND e HOV AX,O e HB_ERROR_EXIT: e RET e HOW_BIG ENoP --------- --------- e c e C ; ; --S--U-8R--O---U---T-I -N- -ES---FO-R---P-OW---E--R---ON---0-I -AG--N-O-S-T--I -C--S-----,------------------------- C ;THIS PROCEDURE WILL ISSUE ONE LONG TONE (3 SEC) AND OHE OR e ; MORE SHORT TONES (1 SEC) TO I NO I CATE A FA I LURE ON THE PLANAR e ;BOARD ,A BAD RAM MODULE,OR A PROBLEM WITH THE CRT. C :: ENTRY REQU I REMENTS: e OH=NUMBER OF LONG TONES TO BEEP e e ; ; ------ O--L=-N-U-M-B-E-R---O-f--S-H-O-R-T--T-O-N-E-S--T-O--BE-E-P-. ---------- -- --------- - e ERR_BEEP PRoe NEAR e PUSHF SAVE FLAGS C eLi C PUSH os : DISABLE SYSTEM INTS C CALL ODS e ASSUME OS:ABSO e OR OH,DH ; ANY LONG TONES TO BEEP e JZ 0' e Gl: ; NO, DO THE SHORT ONES ; LONG BEEP e MOV BL,6 ; COUNTER FOR BEEPS e CALL eEEP ; DO THE BEEP C G2: C LOOP G2 ; DELAY BETWEEN BEEPS e DEC OH ; ANY MORE TO DO C JHZ 01 ; DO IT e G3: C HOV BL,l ; COUNTER FOR A SHORT BEEP e C 04, CALL BEEP ; 00 IT e LDCP G. DELAY BETWEEN BEEPS e DEC OL DOHE WITH SHORT BEEPS e JHZ G3 DO MORE e G5: e C 06, LOOP 05 DELAY BEFORE RETURN e LOOP G6 e POP OS RESTORE CONTENTS OF OS e POPF RESTORE FLAGS e RET e ERR_BEEP ENOP e e SUBTTL T2 LABEL WORD OW OFFSET AHO OW OFFSET AH1 ow OFfSET AH2 ow OFFSET AH3 ow OfFSET AH. ow ow OFFSET AH5 OFFSET AH. ow OFfSET AH7 ow OFFSET AHa OW OFFSET AH' OowW OFFSET AHA OFFSET AHa OW OffSET AHe ow OfFSET AHO OowW ow ow OFfSET OfFSET OFFSET OFfSET AHE AHF AH10 AHl1 ooww OFFSET AH12 OFFSET AH13 T2L EOU $-T2 MODE SET SET CURSOR TYPE SET CURSOR POSITION READ CURSOR POS IT I ON READ LIGHT PEN POSITION ACT I VE 0 I SPLAY PAGE SCROLL DOWN SCROLL UP READ CHAR/ATTR I BUTE WRITE CHAR/ATTRIBUTE WRITE CHARACTER ONLY SET COLOR PALETTE WRITE DOT READ DOT WRITE TTY CURRENT VIDEO STATE SET PALETTE REGI STERS CHAR GENERATOR ROUT 1NE ALTERNATE SELECT WRiTE STRING August 2, 1984 IBM Enhanced Graphics Adapter 117 0717 '" 0000 0717 0717 28 18 08 07111, 0800 '" 0005 one 071C 08 03 00 03 "" 0004 0720 23 0721 0721 37 27 20 37 31 15 0727 04 11 00 07 06 07 0720 00 00 00 00 El 24 0733 C7 14 08 EO Fa 11,3 0739 FF "" 0019 '" 0023 07311, 07311, 00 01 02 03 all 05 07110 06 01 10 11 12 13 07116 14 15 16 17 08 00 0711C Of 00 '" 0014 '" 0037 074E 074E 00 00 00 00 00 10 0754 DE 00 FF = 0009 = 00110 0757 28 18 08 075A 0800 075C OB 03 00 01 0760 23 0761 0767 0760 0773 0779 37 27 20 37 31 15 04 11 00 07 06 07 00 00 00 00 £1 24 C7 14 08 EO FO 11,3 fF 07711, 0780 0786 078C 00 01 02 03 04 05 06 07 10 11 12 13 14 15 16 17 08 00 OF 00 078E 00 00 00 00 00 10 0794 OE 00 Ff 0797 50 18 08 079A 1000 079C 01 03 00 03 0711,0 23 07Al 07A7 07AO 07Bl 0789 70 IIf 5C 2F 5F 07 04 11 00 07 06 07 00 00 00 00 £1 24 C7 28 08 EO FO A3 fF 07BA 07CO 07C6 07CC 00 01 02 03 04 05 06071011 12 13 111 15 16 17 08 00 OF 00 07CE 00 00 00 00 00 10 01D4 DE 00 fF' 0707 50 18 08 07DA 1000 070e 01 03 00 01 07E0 23 07El 07E7 07EO 07F3 07F9 70 4F 5C 2F 5F 07 04 11 00 07 06 07 00 00 00 00 El 24 C7 28 08 EO Fa 11,3 fF OHA 0800 0606 080C 00 01 02 03. 04 05 06 07 10 11 12 13 14 15 16 17 08 00 Of 00 080E 00 00 00 00 00 10 0614 DE 00 Ff 0817 28 18 08 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 1789 1790 1791 1792 1793 1794 1795 1796 1797 1798 1799 1800 1801 1802 1803 1804 1805 1806 1801 1808 1809 1810 1811 1812 1813 18111 1815 1816 1817 1818 1819 1820 1821 1822 1823 18211 1825 1826 1827 1828 1829 1830 1831 1832 1833 1834 1835 1836 1831 1838 1839 1840 1841 1842 18~3 18114 18115 1846 1847 1848 1849 1850 1851 1852 1853 1854 1855 1856 1857 1858 1859 1860 1861 1862 1863 1864 1865 1866 1867 1868 1869 1870 1871 1872 1873 18711 1875 1876 1877 1878 1879 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890 C INCLUDE YPARMS. IMC C SUBTTL VPARMS. INC C PACE C VIOEO_PARMS LABEL BYTE C C STRUCTURE OF THIS TABLE C C COLUMNS, ROWS, PELS PER CHARACTER C PACiE LENGTH , C SEQUENCER PARAMETERS C MISCELLANEOUS REGISTER C CRTC PARAMETERS C ATTRIBUTE PARAMETERS C GRAPH les PARAMETERS C C BASE 1 EOU $ - Vi OED_PARKS C BASC1_L LABEL BYTE C C ;----- DEFAULT MODES C C ; --0- C DB 400,240,080 C OW 00800H C C TFS_LEN EQU $ - BASE 1 L C C SEQ_PARMS LABEL BYTE C C Ml DB OOBH, 003H,OOOH, 003H EOU $ - SEQ..PARMS C C DB 023H C C CRT_PARMS LABEL BYTE C DB 037H, 027H, 02DH, 03 7H, 031 H, 0 15H C DB 004H, 011H,000H, 007H, 006H, 001H C DB OOOH, OOOH,OOOH, OOOH,OE 1H, 024H C DB OC7H, 014H, 008H, OEOH,OFOH, OA3H C DB OFFH C M" C EOU $-CRT_PARMS C lICIl EOU $ - BASE_l_L C C ATTR_PARMS LABEL BYTE C DB OOOH, 001H, 002H, 003H, 004H, 005H C DB 006H, 001H, 01 OH, 011 H, 012H, 01 3H C DB 014H, 0 15H, 016H,01 7H, 008H,DODH C C .5 DB OOfH,OOOH EOU $-ATTR_PARMS C C LN_2 EOU C GRAPH_PARMS $ - BASE_l_L LABEL BYTE C DB DOOH, OOOH, OOOH, OOOH, OOOH, 01 OH C DB OOEH,OOOH,OFFH C M6 C EOU $-GRAPH PARMS C "'_TBL_LEN EOU $ - BASE_'_L C C ;--1- c DB 400,2110,080 C OW 00800H c C DB 008H, 003H, OOOH, 003H C c DB 023H C c DB 037H, 027H, 020H, 037H, 031 H, 0 15H C DB 004H,011 H, OOOH, 007H, 006H, 007H c DB OOOH, OOOH, OOOH, OOOH, DEl H, 024H C DB OC7H, 014H, 008H, OEOH, OfOH, OA3H C DB OFfH C c DB OOOH, 001 H, 002H, OOlH, 004H, 005H C DB 006H, 007H, 01 OH, 011H, 012H, 013H c DB 014H, 015H, 0 16H, 017H, 008H, OOOH C DB OOFH, OOOH C C DB OOOH, OOOH, OOOH,OOOH, OOOH, 010H C DB c c ;--2- c DB C ow OOEH, OOOH, OFFH 800,240,080 01000H C C DB 001 H, p03H, OOOH, 003H C C DB 023H C C DB 070H, 04fH, 05CH, 02FH, 05FH, 007H C DB 004H, 01 1H,OODH, 007H, 006H,007H C DB OOOH, OOOH, OOOH, OOOH, OE1H, 024H C DB OC7H, 028H, 008H, OEOH, OF'OH, OA1H C DB OFfH C c DB OOOH, DOl H,002H, 003H, 004H, 005H C DB 006H, 007H, 010H, 01 1H, 012H, 013H C DB 01 4H, 01 5H,016H, 017H, 008H, DDOH C DB OOFH,OOOH C C DB OOOH, OOOH, OOOH, OOOH, OOOH, 01 OH C DB OOEH,OOOH,OFfH C C ; --3- C DB 800,240,080 c ow 01000H C C DB 001H,003H, OOOH, 003H C C DB 023H C C DB 070H, 0IlFH,05CH, 02FH, 05FH, 007H C DB 004H,.Jl1H, OOOH. 007H, 006H, 007H C DB OOOH, OOOH, OOOH, OOOH, 0 E1H, 024H C DB OC7H, 028H, 008H, OEOH, OfOH, OA3H C DB OFFH C C DB OOOH, 001H, 002H, 003H, 004H, 005H C DB 006H, 007H,010H, 01 1H, 012H, 013H c DB 01 4H, 015H,O 16H, 017H, 006H,ODOH C DB OOFH,OOOH C C DB OOOH, OOOH, OOOH, OOOH, OOOH, 01 OH C DB OOEH,OOOH,OFfH C c ;--4- c DB 400,240,080 118 IBM Enhanced Graphics Adapter August 2, 1984 ~ ~ ~ 081A 4000 081C DB 03 00 02 0820 23 0821 0827 0820 0833 0839 37 27 20 37 30 14 04 11 00 01 00 00 00 00 00 00 El 24 C7 14 00 EO FO A2 ff 083A 0840 0846 084C 00 13 15 17 02 04 06071011 12 13 14 15 16 17 01 00 03 00 084E 00 00 00 00 00 30 0854 OF 00 FF 0857 28 18 08 085A 4000 085C 08 03 00 02 0860 23 0861 0867 0860 0873 0879 31 27 20 31 30 14 04 11 00 01 00 00 00 00 00 00 El 24 C7 14 00 EO FO A2 ff 087A 0880 0886 088C 00 13 15 11 02 04 06 07 10 11 12 13 14 15 16 17 01 00 03 00 088E 00 00 00 00 00 30 0894 OF 00 FF 0891 50 18 08 089A 4000 089C 01 01 00 06 OBAD 23 08Al 08A7 08AD 0883 08B9 70 4F 59 20 5E 06 04 11 00 01 00 00 00 00 00 00 EO 23 ~~ 28 00 IIf EF C2 088A D8CO 08C6 08ee 00 17 17 17 17 17 171717171717 17 17 17 17 01 00 01 00 08CE 00 00 00 00 00 00 0804 00 00 ff 0807 50 18 DE 080A 1000 08De 00 03 00 03 A. 08EO 08El 08E7 08EO 08F3 08F9 60 4F 56 3A 51 60 70 1f 00 00 DB OC 00 00 00 00 5E 2E 50 28 00 5E 6E A3 ff 08FA 0900 0906 090C 00 08 08 08 08 08 08 08 10 18 18 18 18 18 18 18 OE 00 OF 08 090E 00 00 00 00 00 10 0914 OA 00 FF 0917 28 18 08 091A 4000 091C 00 00 00 03 0920 23 0921 0927 0920 0933 0939 37 27 20 37 31 15 041100070607 00 00 00 00 El 24 C7 14 08 EO fO A3 ff 093A 0940 0946 094C 00 01 02 03 04 05 06071011 12 13 14 15 16 17 08 00 OF 00 094E 00 00 00 00 00 10 0954 OE 00 ff 0957 28 18 08 095A 4000 095C 00 00 00 03 0960 23 0961 0967 0960 0973 0979 37 27 20 37 31 15 041100070607 00 00 00 00 El 24 C7 14 08 EO fa A3 FF 097A 00 01 02 03 04 05 0980 06071011 12 13 0986 14 15 16 17 08 00 Og8e OF 00 1891 1892 1893 1894 1895 1896 1897 1898 1899 1900 1901 1902 1903 1904 1905 1906 1907 1908 1909 1910 1911 1912 1913 1914 1915 1916 1917 1918 1919 1920 1921 1922 1923 1924 1925 1926 1927 1928 1929 1930 1931 1932 1933 1934 1935 1936 1937 1938 1939 1940 1941 1942 1943 1944 1945 1946 1947 1948 1949 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 1970 1971 1972 1973 1974 1975 1976 1977 1978 1979 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2Q09 2010 2011 2012 2013 201" 2015 2016 OW DB DB DB DB DB DB DB DB DB DB DB DB DB ; --5- DB ow DB DB DB DB DB DB DB DB DB DB DB DB DB ; --6- DB ow DB DB DB DB DB DB DB DB DB DB DB DB DB ; --1- 08 ow DB DB DB DB DB DB DB DB 08 DB DB DB DB ;--8- DB ow DB DB DB DB DB DB DB DB DB DB DB DB DB ;--9- DB ow DB DB DB DB DB DB DB DB DB DB DB 04000H OOBH, 003H, OOOH, 002H 023H 037H, 027H, 020H, 037H, 030H, 014H 004H, 01 1H, OOOH, DOl H, OOOH, OOOH OOOH, OOOH, OOOH, OOOH, OEl H, 024H OC7H, 014H, OOOH, OEOH,OFOH, OA2H OFFH OOOH, 013H, 015H, a 17H, 002H, 004H 006H, 007H, 010H, 01 1H, 012H, 013H 014H, 015H, 016H,017H, 001 H, OOOH 003H,000H OOOH, OOOH, OOOH,OOOH, OOOH, 030H OOFH, OOOH, OFFH 400,240, 080 04000H 006H, 003H, OOOH, 002H 023H 037H, 027H, 020H,031H, 030H, 014H 004H, 011 H, OOOH, 001 H, OOOH, OOOH OOOH, OOOH. OOOH, OOOH. 0 E1 H, 024H OC7H, 0 14H, OOOH,OEOH,OFOH, OA2H OFFH OOOH, 013H, 015H, a 17H, 002H, 004H 006H, 001H, 01 OH, a 11 H, 012H,013H 014H, 015H, 0 16H, 017H,001 H, OOOH 003H,000H OOOH, OOOH, OOOH, OOOH, OOOH, 030H OOFH,OOOH,OFFH 800,240,080 04000H 001H, 001 H, OOOH, 006H 023H 010H, 04FH, 059H, 020H, 05EH, 006H 004H, a 11 H. OOOH, 001H, OOOH, OOOH OOOH, OOOH, OOOH, OOOH, OEOH, 02 3H OC1H, 028H, OOOH, OOFH, OErH, OC2H OFfH OOOH, 017H,017H, 017H, 017H,017H 017H, 017H, 017H, 017H, 017H, 017H 017H, 017H, 017H, 017H, 001 H,OOOH 001H,000H OOOH, OOOH, OOOH, OOOH, OOOH, OOOH OOOH,OOOH,OfFH 800,240,140 01000H OOOH, 003H,OOOH,003H 0.0" 060H,04fH. 056H, 03AH, 051H,060H 070H,01 FH, OOOH, OODH, 008H, ooeH OOOH, OOOH, OOOH, OOOH, 05EH, 02EH 050H, 028H, OOoH, 05EH, 06EH,OA3H OfFH OOOH, 008H, 008H. 008H, 008H, 008H 008H, 008H,010H, 018H, 018H, 01SH 018 H, 0 18H, 018H, 01 8H, OOEH, OOOH 00FH,008H OOOH,OOOH ,OOOH, OOOH, OOOH, 010H OOAH, OOOH, OFFH 400,240,080 04000H OOOH, OOOH,OOOH, 003H 023H 037H, 027H ,020H,037H, 031H, 015H 004H, all H, OOOH, 007H, 006H, 007H OOOH,OOOH, OOOH, OOOH, DEl H, 024H OC7H,014H, 008H, OEOH, OFOH, OA3H OFfH OOOH, 001 H, 002H, 003H, 004H, 005H 006H, 007H,010H,011H, 012H, 013H 014H, 015H,016H, 017H, 008H, OOOH OOFH,OOOH OOOH, OOOH,OOOH, OOOH, OOOH, 010H OOEH,OOOH,OfFH 400,240,080 04000H OOOH, OOOH, OOOH, 003H 023H 037H, 027H,020H,037H, 031 H, 015H 004H, 011H,OOOH,007H, 006H, 007H OOOH, OOOH, OOOH,OOOH, OEl H, 024H OC7H, 0 14H, 008H. OEOH, 0 FOH, OA3H OfFH OOOH, 001 H, 002H,003H,004H, 005H 006H, 007H, 01 OH, 011 H, 012H,013H 014H, 015H, 016H, a 17H, 008H,OOOH OOfH,OOO~ August 2, 1984 IBM Enhanced Graphics Adapter 119 098E 00 00 00 00 00 10 0994 DE 00 Ff 0997 28 18 08 099A liOOO 099C 00 00 00 03 09AO 23 09Al 09A7 09AO 09B3 09B9 37 27 20 37 31 15 04 11 00 07 06 07 00 00 00 00 El 24 C7 14 08 EO FO A3 FF 09SA 09CO 09C6 09CC 00 01 02 03 04 05 0607 10 11 12 13 14 15 16 17 08 00 OF 00 09CE 00 00 00 00 00 10 0904 DE 00 Ff 0907 50 18 08 090A 1000 090C 01 04 00 07 09EO 23 09El 09E7 09EO 09f3 09F9 70 4F 5C 2F 5F 07 04 11 00 07 06 07 00 00 00 00 El 24 C7 2B 08 EO FO A3 FF 09FA OACO OA06 OAOC 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 OF 00 OAOE 00 00 00 00 00 00 OA14 04 00 Ff OA17 50 18 DE OA1A 1000 DAle 00 04 00 07 OA20 .0 0A21 OA27 OA2D OA33 OA39 60 4F 56 3A 51 60 70 1F 00 00 OB DC 00 00 00 DOSE 2E 50 2B DOSE 6E A3 FF OA3A OA40 OA46 OA4C 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 DE 00 Of 08 OA4E 00 00 00 00 00 00 OA54 04 00 FF OA57 28 13 08 DASA 2000 OA5C DB OF 00 06 OA60 23 0.0' OA67 OA6D OA13 0A79 37 27 20 37 30 14 04 11 00 00 00 00 00 00 00 00 El 24 C7 14 00 EO FO E3 FF OA7A OA80 OA86 OA8C 00 01 02 03 04 05 06071011 12 13 14 15 16 17 01 00 OF 00 OA8E 00 00 00 00 00 00 OA94 05 or H OA97 50 18 08 OA9A 4000 OA9C 01 OF 00 06 DAAD 23 OAA, DAA7 DAAD OAB3 OAB9 70 4f 59 20 5E 06 04 11 00 00 00 00 00 00 00 00 EO 23 C7 28 DO OF EF E3 FF OABA DACO DAC6 OACC 00 01 02 03 04 05 06 07 10 11 12 13 14 15 16 17 01 00 OF 00 DACE 00 00 00 00 00 00 OAD4 05 OF FF OAD7 50 18 DE DADA 8000 DADC 05 OF 00 00 OAEO A2 OAEl OAE7 OAED OAF3 OAF9 60 4F 56 lA 50 EO 70 1F 00 00 00 00 00 00 00 00 5E 2E 50 14 00 SE 6E 8B FF OAF... 00 oa 00 00 18 18 OBOO 00 00 00 08 00 00 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040 2041 2042 2043 2044 2045 2046 2047 2048 2049 2050 2051 2052 2053 2054 2055 20S6 2057 2058 2059 2060 2061 2062 2063 2064 2065 2066 2067 2068 2069 2070 2071 2072 2073 2074 2075 2076 2017 2078 2079 2080 2081 2082 2083 2084 2085 2036 2087 2088 2089 2090 2091 2092 2093 2094 2095 2096 2097 2098 2099 2100 2101 2102 2103 2104 2105 2106 2107 2108 2109 2110 2111 2112 2113 2114 2115 2116 2117 2118 2119 2120 2121 2122 2123 2124 2125 2126 2127 2128 2129 2130 2131 2132 2133 2134 2135 2136 2137 2138 2139 2140 2141 2142 C C DB C DB C C ; ·-A·· C DB C OW C C DB C c DB C C DB C DB C DB C DB C DB C C OB C OB C OB C DB C C OB C OB C C ;--B- C DB C OW C C OB C C DB C C DB C DB C DB C DB C DB C C DB C DB C DB C DB C C DB C DB C ;--C- c C DB OW C C DB C C OB C C DB C DB C DB C c DB DB C C DB C DB C DB C DB C C DB C DB C ; --0- C DB C OW C c DB C C DB C C DB C DB C DB C DB C DB C C D8 C DB C DB C DB C C DB C 08 C ; --E- C DB C OW C c DB C C DB C C DB C DB C DB c DB C DB C C DB C DB C DB C DB C C DB C DB C ;--F- C DB C DW c C DB C C DB C C D8 C DB C DB C DB C DB C C D. C DB OOOH, OOOH, OOOH,OOOH,OOOH, 01DH DOEH,DOOH,OFFH 400,240,OBO OliOOOH OOOH, OOOH,OOOH,003H 023H 037H,027H,020H, 037H, 031H, 015H 004H, 01 1H,OOOH, 007H, 006H,007H OOOH, OOOH, OOOH,OOOH, DEl H, 024H OC7H, 0 14H .OOBH, OEOH, OFOH, OA3H OFFH 0001'1,0011'1, 002H,003H, 004H,005H 006H, 0071'1, 010H, 011H, 012H, 013H 014H,015H, 0161'1, 017H, DOBH, OOOH OOFH,OOOH OOOH,OOOH, 0001'1, OOOH, OOOH, 0 10H OOEH, OOOH, OFfH BOO,240,08D 01000H 001H, 004H, OOOH, 007H 023H 070H, 04 FH, 05CH, 02FH, 05FH, 007H 004H, 01 1H,OOOH, 007H, 006H, 007H OOOH, OOOH,OOOH, OOOH, DEl H, 024H OC7H, 028H,008H,OEOH, OroH, OA3H OFFH OOOH, OOOH, OOOH, OOOH, OOOH, OOOH OOOH, OOOH, OOOH,OOOH, OOOH, ODOH OOOH, OOOH, OOOH, OOOH, OOOH,OOOH OOFH,OOOH OOOH,OOOH,OOOH, OOOH, OOOH, OOOH 004H,000H,OFfH 800,240,140 01000H OOOH, 004H, OOOH, 007H OA6H 060H,04FH, 056H, 03AH, 051 H, 060H 070H, 01 FH, OOOH, OOOH, OOBH, OOCH OOOH, OOOH. OOOH, OOOH, 05EH, 02EH 050H, 028H. 000H,05EH, 06[H, OA3H OFfH OOOH, OOOH,OOOH, OOOH, OOOH, OOOH OOOH, OOOH, OOOH, OOOH, OOOH, OOOH OOOH, OOOH, OOOH, OOOH, OOEH, OOOH 00FH,008H OOOH,OOOH, OOOH, OOOH, OOOH, OOOH 004H, OOOH, OFFH 400, 240, OBO 02000H OOBH,OOFH, OOOH, 006H 023H 037H, 027H, 020H, 037H, 030H, 014H 004H, 011 H, OOOH,OOOH, OOOH, OOOH OOOH, OOOH, OOOH, OOOH, DEl H,024H OC7H, 014H, OOOH,OEOH, OFOH,OE3H OFFH OOOH, 001H, 002H, 003H, 004H, 005H 006H,007H, 010H, 011H, 012H, 01 31'1 014H, 015H,016H,017H, 001 H, OOOH OOFH,OOOH OOOH, OOOH, OOOH, OOOH, OOOH, OOOH 005H, OOFH, OFFH 800,240,080 04000H 001H, OOFH, OOOH, 006H 023H 070H, 04FH, 059H, 02DH, 05EH, 006H 004H, 01 lH, OOOH, OOOH, OOOH, OOOH OOOH, OOOH,DDOH, OOOH, OEOH, 023H OC7H, 028H, OOOH, OOfH, OEfH, OE3H OFFH OOOH, 001H, 002H, 003H, 004H, 005H 006H, 007H, 010H, 011H, 012H, 013H 014H, 015H, 016H,017H, 001H,000H OOFH,OOOH OOOH, OOOH, OOOH, OOOH, OOOH, OOOH 005H,OOfH,OFFH BOD, 240, 14D oaOOOH 005H, OOFH, OOOH, OOOH OA2H 060H, 04FH, 056H, OlAH, 050H, OEOH 070H,Ol FH, OOOH, OOOH, OOOH, OOOH OOOH, OOOH, OOOH, OOOH, 05EH,02EH OSoH, 014H, OOOH, 05£H, 06EH, 08BH OFFH OOOH, 006H, OOOH,OOOH, 016H, 018H OOOH, OOOH, OOOH, 008H, OOOH, OOOH ~\ 120 IBM Enhanced Graphics Adapter August 2, 1984 ~ oaoo 00 18 00 00 08 00 OBoe 05 00 OaoE 00 00 00 00 00 10 0814 07 OF FF 0617 50 18 DE DB1A 8000 DB1C 05 OF 00 00 0620 A7 OB21 0627 OB20 OB33 0839 58 4F 53 17 50 SA 6C 1F 00 00 00 00 00 00 00 00 5E 28 50 14 Of 5F OA 8B ff OB3A DO 01 00 00 04 07 OB40 00 00 00 01 00 00 0846 04 07 00 00 01 00 OB4C 05 00 084E 00 00 00 00 00 10 0654 07 OF FF '" 0440 ~ 0657 50 18 DE OB5A 8000 OB5C 01 OF 00 06 DB" OB61 OB67 OB60 OB73 0879 A2 60 4F 56 3A 50 60 70 1F 00 00 00 00 00 00 00 00 5E 2E 50 28 00 5E 6E E3 FF OB7A OB80 OB66 OB6C 00 08 00 00 16 16 00 00 00 08 00 00 00 18 00 00 DB 00 05 00 OB6E 00 00 00 00 00 00 OB94 05 OF FF 0897 50 18 DE OB9A 8000 OB9C 01 OF 00 06 .7 0811,0 OBAl OBA7 OBAD OBB3 08B9 5B 4F 53 37 52 00 6C1FOOOOOOOO 00 00 00 00 5E 28 50 28 OF SF Oil, E3 Ff OBBA OBCO 08C6 OSCC 00 01 02 03 04 05 14 07 38 39 311, 3B 3C 3D 3 E 3F 01 00 OF 00 OBCE 00 00 00 00 00 00 OB04 05 OF FF '" 04CO ~ OB07 28 16 DE OBOA 0800 OBoe OB 03 00 03 OBED A7 OB£l OBE7 OB£O OBF3 OBF9 20 27 2B 20 28 60 6C 1 F 00 00 06 07 00 00 00 00 5E 2B 50 14 OF 5E Oil, 11,3 Fe DBFA OCOO DCOO OCOO 00 01 02 03 04 05 14 07 38 39 311, 3B 3C 3D 3E 3 F 08 00 OF 00 OCO£ 00 00 00 00 00 10 OC14 DE 00 FF OC17 28 16 O£ OC1A 0800 OC1C DB 03 00 03 OC20 A7 OC2l OC27 OC2D OCB DC3, 20 27 2B 20 26 60 6c 1F 00 00 06 07 00 00 00 00 5E 28 50 14 OF 5£ OA A3 ff OC· · OC40 OC46 OC4C 00 01 02 03 04 05 14 07 38 39 3A 3B 3C 3D 3E 3F 08 00 OF 00 OC4E 00 00 00 00 00 10 OC54 DE 00 FF OC57 50 18 DE 2143 2144 21452146 2147 2148 2149 2150 2151 2152 2153 2154 2155 2156 2157 2158 2159 2160 2161 2162 2163 2164 2165 2166 2167 2168 2169 2170 2171 2172 2173 2174 2175 2176 2117 2178 2179 2160 2181 2182 2163 2184 2185 2186 2187 2166 2169 2190 2191 2192 2193 2194 2195 2196 2197 2198 2199 2200 2201 2202 2203 2204 2205 2206 2207 2208 2209 2210 2211 2212 2213 2214 2215 2216 2217 2216 2219 2220 2221 2222 2223 2224 2225 2226 2221 2228 2229 2230 2231 2232 2233 2234 2235 2236 2237 2238 2239 2240 2241 2242 2243 2244 2245 2246 22!!7 2248 2249 2250 2251 2252 22S3 2254 2255 2256 2257 2256 2259 2260 2261 2262 2263 2264 2265 2266 2267 2268 0 DB OOOH, 0 18H, OOOH, OOOH, OOBH, OOOH 0 DB 005H,000H 0 0 DB OOOH, OOOH, OOOH, OOOH, OOOH, 0 1OH 0 DB C ; -10- D07H,DOFH,OFfH C c DB 800,240,140 ow 08000H C C DB 005H, OOfH, OOOH. OOOH C C DB OA7H C C DB 05BH,04FH, 053H, 017H, 050H, DBAH C DB 06CH, 01 FH,OOOH, OOOH, OOOH, OOOH C DB OOOH, OOOH, OOOH. OOOH, 05EH, 02BH 0 DB 050H, 014H, OOFH, 05FH. DOAH, 06BH 0 DB OFFH 0 C DB OOOH, 001 H, OOOH, OOOH,004H,001H C DB OOOH. OOOH, OOOH, DOl H. OOOH, OOOH C DB 004H, 007H, OOOH, OOOH, 001 H, OOOH 0 DB 005H,OOOH 0 C DB OOOH, OOOH, OOOH, OOOH, OOOH, 0 1OH C DB 007H.00FH,OHH C C 6ASE_2 EOU S - VIOEO_PARMS C C > 16K MODE VALUES C C ; --F- C DB 600.240,140 C OW 08000H C 0 DB 001H. OOFH,OOOH, 006H 0 C DB OA2H C C DB 060H. 04FH. 056H. 03AH, 050H, 060H C DB 070H,01 FH,OOOH,OOOH, OOOH,OOOH C DB OOOH, OOOH, OOOH, OOOH. 05EH, 02EH 0 c · DB 050H, 028H, OODH. 05EH, 06EH, OE3H DB OFFH C C DB 000H,008H, OOOH, OOOH, 018H, 016H C DB OOOH, OOOH, OOOH, 008H, OOOH, OOOH C DB OOOH, 016H, OOOH, OOOH, OOBH, OOOH C DB 005H,OOOH C C DB OOOH,OOOH. OOOH, OOOH, OOOH,OOOH C DB 005H,OOFH,OFFH C C ; -10- C OB 800,240,140 C OW 06000H C 0 DB 001 H, OOFH,OOOH, 006H 0 0 DB OA7H 0 C DB 05BH, 04 FH, 053H, 037H, 052H, OOOH C DB 06CH ,01 FH, OOOH,OOOH, OOOH,OOOH 0 c DB OOOH, OOOH, OOOH, OOOH, 05EH, 02BH DB 050H, 028H, OOFH, 05FH, OOAH, OE3H C DB OFFH C c OB OOOH,OOl H. 002H, 003H, 004H, 005H C OB 014H,007H, 036H, 039H, 03AH, 038H C DB 03CH,03DH, 03EH, 03 FH, 001 H, OOOH C DB OOFH,OOOH C C DB OOOH,OOOH, OOOH, OOOH, OOOH, OOOH C DB 005H,OOFH,OFFH C C C BASE_3 EOU S - V I OEO_PARMS C 0 ;----- HI RES ALTERNATE VALUES C C ; --0- 0 DB 400,240,140 0 OW 00800H 0 C DB OOBH, 003H, OOOH, 003H C C DB OA7H C C DB 020H, 027H, 02BH,020H, 028H, 060H C DB 06CH, 01 FH, OOOH,OOOH, 006H, 007H C DB OOOH,OOOH, OOOH, OOOH, 05EH, 02BH C DB 050H.014H, OOFH, 05EH, OOAH, OA3H C DB OFFH C C DB OOOH, 00 1H, 002H, 003H, 004H, 005H 0 DB o 14H, 007H, 038H, 039H, 03AH, 03BH C DB 03CH, 030H, 03 EH, 03 FH, 008H, OOOH 0 DB OOFH,OOOH 0 0 DB OOOH, OOOH, OOOH, OOOH, OOOH, 0 1OH 0 DB OOEH, OOOH, OFFH 0 0 ; --1- 0 DB 400,240,140 C OW 00800H C C DB OOBH, 003H, OOOH, 003H C C DB OA7H C C DB 02DH, 027H, 02BH, 020H, 028H, 060H C DB 06CH, 01 FH, OOOH, OOOH, 006H, 007H C DB OOOH, OOOH, OOOH, OOOH, 05EH, 02BH C OB 050H, 014H, OOFH, 05EH. OOAH, OA3H C OB OFFH C 0 DB OOOH, 001 H, 002H, 003H, 004H. 005 H C DB 014H, 007H, 038H, 039H, 03AH, 03BH C DB 03CH, 03DH, 03EH, 03FH, 006H, OOOH C DB OOFH,OOOH C C DB OOOH, OOOH, OOOH, OOOH, OOOH. 0 1OH 0 DB OO£H,OOOH,OFFH 0 C ;--2- C DB 600,240,140 August 2, 1984 IBM Enhanced Graphics Adapter 121 OC5A 1000 OC5C 01 03 00 03 OC60 A7 OC61 OC67 OC60 OC73 OC79 58 4f 53 37 51 58 6C 1f 00 00 06 07 00 00 00 00 5E 28 50 28 OF 5E OA A3 FF DC7A aC80 OC86 OC8e 00 01 02 03 04 05 14 07 38 39 3A 3B 3C 3D 3E 3F 08 00 OF 00 OC8E 00 00 00 00 00 10 DC94 DE 00 FF OC97 50 18 DE OC9A 1000 OC9C 01 03 00 03 OCAO A7 OCAl DCA7 OGAO OCB3 OC89 58 4F 53 37 51 58 6C 1f 00 00 06 07 00 00 00 00 5E 28 50 28 OF 5E OA A3 FF OCBA OCCO OCC6 OCCC 00 01 02 03 04 05 14 07 38 39 3A 38 3C 30 3E 3f 08 00 Of 00 OecE 00 00 00 00 00 10 OC04 DE 00 f f OC07 OCD7 FB ocoa FC " OCD9 OCDA 06 OCDB 1E OCDC 52 OCOO 51 OCOE 53 OCOF 56 OCEO 57 OCEl aCE2 OCE4 OC£6 OCES OCEA OCED OCEr OCFO OCF2 OCFS 50 8A C4 32 E4 01 EO 88 FO 3D 0028 72 06 58 CO 42 E9 219E R OCF5 E8 OCFE R OCF8 58 OCF9 2E: fF A4 06EF R OCFE OCFf OCFF 0001 0003 0004 0005 50 2B CO 8E 08 58 C3 0005 0005 0006 0009 0000 0010 0013 0014 0015 1E E8 OCfE R 8B 16 0"'63 R 80 E2 FO 80 CA OA 1F e3 0015 0015 0017 0018 0019 001B 001C 0010 00lE B6 C4 "42 86 C4 "4A C3 DOlE " OOlE OOlF e3 0020 0020 0020 OD21 0024 0026 0029 OD2C 0020 0030 0032 0035 52 8A 0043 BO B6 E8 DOlE R 88 0533 4A E8 DOlE R 8A C4 E8 ODlE R BA 0061 2269 2270 2271 2272 2273 2274 2275 2276 2211 2278 2279 2280 2281 2282 2283 2284 2285 2286 2287 2288 2289 2290 2291 2292 2293 2294 2295 2296 2297 2298 2299 2300 2301 2302 2303 2304 2305 2306 2307 2308 2309 2310 2311 2312 2313 2314 2315 2316 2317 2318 2319 2320 2321 2322 2323 2324 2325 2326 2327 2328 2329 2330 2331 2332 2333 2334 2335 2336 2337 2338 2339 2340 2341 2342 2343 2344 23"'5 23"'6 23"'7 23"'8 2349 2350 2351 2352 2353 235'" 2355 2356 2357 2358 2359 2360 2361 2362 2363 2364 2365 2366 2367 2368 2369 2370 2371 2372 2373 2314 2375 2376 2377 2378 2379 2380 2381 2382 2383 2384 2385 2386 2387 2388 2389 2390 2391 2392 2393 2394 c C c C C C e C C C c C c e e e e e e C C ; --3- C C C C C e C e C e e C C c C C C e e C e e C OW 01000H DB 001H, 003H, 000H,003H DB OA7H DB 058H, 04FH, 053H,037H, 051 H, 058H DB 06CH, 01 FH,OOOH,OOOH, 006H, 007H 08 OOOH, OOOH,OOOH, OOOH, 05EH, 028H DB 050H, 028H, OOFH, 05EH, DOAH, OA3H DB OFFH DB OOOH, 001H, 002H, D03H, 004H, 005H DB 014H, 007H, 038H,039H, 03AH, 038H 08 03CH, 030H, 0 3EH, 03 rH, 008H, OOOH DB OOFH,OOOH DB OOOH, OOOH, OOOH, OOOH, OOOH, 010H DB OOEH, OOOH, OFFH DB 800,240,140 OW 01000H DB 001 H, 003H, OOOH, 003H DB 047H DB 05BH, 04FH, 053H, 037H, 051H, 058H DB 06CH, 01 FH, OOOH, OOOH, 006H, 007H DB OOOH, OOOH, OOOH,OOOH, 05EH, 02BH DB 050H, 026H, OOfH, 05EH, OOAH, OAlH DB OfFH DB OOOH, 001H, 002H, 003H, 004H, 005H 08 014H, 007H, 038H, 039H, 03AH,03BH 08 03CH, 03DH, 03EH, 03 fH, 008H,OOOH DB OOfH,OOOH DB OOOH, OOOH, OOOH, OOOH, OOOH, 01 OH 08 OOEH,OOOH,OffH SUBTTL ; ----- VECTOR INTO <AH> SPEC I f I ED FUNCT I ON COMBO_VIDEO STI CLO PUSH PUSH PUSH PUSH PUSH PUSH PUSH PUSH PROC 8P ES OS OX ex ax SI 01 NEAR PUSH HOV AX AL,AH XOR AH,AH SAL AX,l HOY SI,AX CHP IJJ<., T2L JB H2 POP AX INT 42. JHP V_RET M2: ASSUME OS:ABSO CALL ODS POP JHP AX WORD PTR CS:[SI + OFFSET T2] ; ----- UTI LI TV ROUTI NES ;----- SET OS TO THE DATA SEGMENT ODS PROC NEAR PUSH AX SUB AX,AX HOY OS,AX POP AX RET ODS ENOP WHAT_BASE ASSUME PUSH CALL HOY AND OR POP RET WHAT_BASE PROC NEAR OS:ABSO OS ODS OX,ADDR_6845 OL,orOH OL,OAH OS ENDP OUT_OX OUT_OX PRoe XCHG OUT INC XCHG OUT DEC RET ENDP NEAR AL,AH OX,AL OX AL,AH OX,AL OX ; ----- ROUT I NE TO SOUND BEEPER 8P_' BP_l PROC OUT RET ENDP NEAR OX,AL BEEP PROC PUSH MOY HOY CALL HOY DEC CALL HOY CALL MOV NEAR OX OX, TIMER+3 AL,10110110B BP_' AX,S33H OX BP_l AL,AH BP 1 OX-:-PORT_B INTERRUPTS ON SET DIRECTION fORWARD SAVE THE REG I STER SET SAVE AX VALUE GET I NTO LOW BYTE *ZERO TO HIGH BYTE 2 FOR TABLE LOOKUP PUT INTO SI FOR BRANCH TEST FOR WITH I N RANGE BRANCH AROUND BRANCH RECOVER REG I STER PASS UNRECOGN IZED CALL RETURN TO CALLER RECOVER JMP TO AH=O THRU AH=XX SAVE REGISTER RESTORE REGISTER SAVE OATA SEGMENT GET LOW MEMORY SEGMENT GET CRTC ADDRESS STR I P OFF LOW NIBBLE SET TO STATUS REGISTER AH= INDEX. AL"'OATA, OX'" PORT GET I NDEX VALUE SET I NOEX REG SET OX TO DATA REG GET DATA VALUE SET DATA REG SET OX BACK TO INDEX ; SEL TIM 2, LSB,MS8,BlNARY ; WRITE THE TIMER MODE REG ; DIVISOR FOR 1000 HZ ; WRITE TIMER 2 CNT - LSB ; WRITE TIMER 2 CNT - MS8 ...-.., 122 IBM Enhanced Graphics Adapter August 2, 1984 0038 0039 0038 0030 0040 0042 0042 0044 0046 0048 OD4A OD4D ODIIE ODIIF ,e 8A EO OC 03 E8 DOlE R 2B C9 E2 FE FE CB 75 FA 8A C4 E8 DOlE R 5A e3 ~ OQ4F 004F 0052 0056 0059 005A E8 ocn R C4 1E 04A8 R 26: C4 1 F e3 005A 005A 0058 005C OD5F 0063 0068 51 52 E8 OD4F R 8A 26 0449 R F6 06 0487 R 60 74 18 OD6A 0060 006F 0073 0076 0076 0079 0078 DOH 0082 0082 0085 80 FC OF 75 07 81 C3 0440 EB 33 90 80 Fe 10 75 07 81 Cl 0480 EB 27 90 80 FC Ol 77 14 0087 008A 008e 008' 0090 0092 OD94 AD 0488 R 24 OF 3C Ol 74 07 lC 09 74 Ol EB 05 90 ~ 0097 0097 009B 0098 009F OOAl 81 C3 04CO 8A OE 0449 R 2A ED E3 05 00A3 00A3 00A6 ODAS 00A8 OOAB 00A9 OOM OoAB 83 C3 40 £2 FB 5A 5' e3 00A8 ~ 00A8 OOAE OOBl OOBl 0065 00.. ODB9 OOBC OOBF OOCl 00C4 00C4 00C6 00C7 OooOeCoA 0000 E8 005A R 83 Cl 05 B6 03 B2 e4 88 0001 FA E8 0015 R 26: 8A 07 F£ C4 E8 0015 R FE C4 43 26: 8A 07 E8 0015 R 80 FC 05 72 F2 0002 0005 0006 0008 0009 OODB OOOE OOEl 26: 8A 07 43 82 C2 "82 C4 B8 0003 E8 0015 R FB 00E2 00E6 ODE8 ODEll ODEB OOEE DOH OOFt 8B 16 0463 R 2A E4 26: 8A 07 E8 0015 R 43 FEC4 80 Fe 19 2395 2396 2397 2398 2399 2400 2401 2402 2403 2404 2405 21106 2407 2408 2409 2410 2411 2412 2413 2414 2415 24.16 2417 2418 2419 2420 2421 2422 2423 2424 2425 2426 2427 2428 2429 2430 2431 2432 2433 2434 2435 2436 2437 2438 2439 2440 2441 2442 2443 2444 2445 2446 2447 2448 2449 2450 2451 2452 2453 2454 2455 2456 2457 2458 2459 2460 2461 2462 2463 2464 2465 2466 2467 2468 2469 2470 2471 2472 2473 2474 2475 2416 2471 2418 2479 2480 248' 2482 248l 2484 2485 2486 2487 2488 2489 2490 2491 2492 2493 2494 2495 2496 2497 2498 2499 2500 2501 2502 250l 2504 2505 2506 2507 2508 2509 2510 25'1 2512 2513 2514 2515 2516 2517 2518 2519 2520 G7: BEEP IH MOV OR CALL SUB LOOP D,e JHZ MOV CALL POP RET [NDP AL,OX AH,AL AL,03 BP 1 CX~CX G7 BL G7 AL,AH BP_l OX GET SETT I NG OF PORT SAVE THAT SETTING TURN SPEAI4:ER ON SET CNT TO WAIT 500 MS DELAY BEFORE TURN I NG OFF OELAY CNT EXPIRED? NO-CONTINUE BEEPING SPK RECOVER VALUE Of PORT RETURN TO CALLER ;---- fiND THE PARAMETER TABLE VECTOR IN THE SAVE TABLE SET_BASE ASSUME CALL L'S L'S RET SET_BASE PRDC NEAR OS:ABSO DDS BX, SAVE_PTR BX,OWORD PTR ES: [ax} EHOP GET PTR TP PTR TABLE GET PARAMETER PTR ;----- ESTABLISH ADDRESSING TO THE CORRECT MODE TABLE ENTRY MAKE_BASE ASSUME PUSH PUSH CALL MDV T[ST JZ PRDC NEAR OS:ABSO ex ox SET_BASE AH,CRT MODE INFO,060H B_M_l ; GET PARM TBL PTR ; TEST fOR BASE CARD ; MIN MEMORY ;----- WE HAVE A MEMORY EXPANSION OPTION HERE B_M_2: B_M_l : eMP JH' ADD JM. eM' JH' ADD JMP eMP JA AH,OFH B_"_2 BX, BASE_2 - BASE_' B_M_OUT AH,OtOH B_M_1 ex, BASE_2 + M_TBL_LEN - BASE_, B_M_OUT AH,OlH B_M_l SK I P ENHANCED PORT ION :----- CHECK THE SWITCH SETTING FOR ENHANCEMENT MOV AND eMP J' eMP J' JMP AL,INFO_l AL,OFH AL,03H BRS AL,09H BRS 8_M_3 SECONDARY EMULATE SETT I NG PRIMARY EMULATE SETTING :----- WE WILL PERFORM ENHANCEMENT 8RS: B_M_l: ADO MOV SUB Jexz BX, 8ASE_l - BASE_' CL,CRT_MODE CH,CH B_M_4 ; VECTOR TO ENHANCEMENT TBL ; .---~ TH I S LOOP WI LL MOVE THE PTR TO THE INDIVIDUAL MODE ENTRY B_M_5: ADO LOOP 8_"'_4: B_M_OUT: POP POP RET MAt<E_BASE BX, M_TBL_LEN B_"'_5 ox ex ENDP ; LENGTH OF ONE MODE ENTRY ;----- PROCRAM THE EGA REGISTERS FROM THE PARAMETER TABLE SET_REGS PROC NEAR ASSUME OS:A8S0, ES: NOTH I HG ;---~- PROGRAM THE SEQUENCER CALL MAKE_BASE ADO BX, TFS_LEN MOV OH,l MOV oL, SE~AODR MDV AX,OOOlH eLi CALL OUT ox MOV AL,ES:[BX) INC AM CALL OUT_OX 01 : INC AM INC BX MOV AL, ES: [BX} CALL OUT OX eMP AH,Ml+1 JB 01 ; GET TABLE PTR ; MODE TO sEQUENCER PARMS ; RESET SEQUENCER ; 0 I SABLE INTERRUPTS ; GET SEQUENCER VALUE ; NEXT INDEX ; SET IT ; NEXT INDEX REGISTER ; NEXT TABLE ENTRY MOV INc MOV OUT MOV MOV CALL S1I AL, ES: (BXI BX DL, MI SC_OUTPUT aX,AL DL, SEQ_AODR AX,OOOlH OUT_OX START SEQUENCER ENABLE INTERRUPTS ; ---- PROGRAM THE CRT CONTROLLER MOV OX,AODR_6845 SUB AH,AH Xl: MOV AL, ES: [BX] CALL OUT_OX INC BX INC AN eMP AH,M4 ; CRTC INDEX REGISTER ; COUNTER ; GET VALUE FROM TABLE : SET CRTC REG I STER j NEXT TABLE ENTRY ; NEXT I NOE)( VALUE ; TEST REGISTER COUNT August 2, 1984 IBM Enhanced Graphics Adapter 123 OOf4 OOF6 OOFA OOFC 72 f2 26: 88 47 Fl 86 EO A3 0460 R OOFF OEOl OE04 OE05 OE07 OE09 OE09 OEOC OEOE OEOF DEll OE12 OE13 OE15 OE18 88 f3 E8 0005 R EC B2 CO 2A E4 26: 8A 07 86 EO EE 86 EO EE 43 FE C4 80 FC 14 72 EF OElA SO 00 DElC EE 0[10 DElE OE1F OE23 OE27 OE29 OE28 IE O. C4 JE 04A8 R 26: C4 70 04 8C CO 08 C7 74 09 OE20 OE2E OE2F OE32 OE34 OE35 OE36 OE36 OE37 IF 1E B9 0010 F3/ A4 4. A4 07 IF OEJ8 OE3A OE3C OEJD OEJF OE41 OE42 OE44 OE46 OE46 OE49 OE4C OE4o OE4F 0£52 OE54 OE55 B2 CC BO 00 EE B2 CA BO 01 EE 82 CE 2A E4 26: 8A 07 E8 0015 R '3 FE C4 BO FC 09 72 f2 C3 OE55 OE55 OE58 OE5A OE5C OE5F OE62 OE64 OE66 OE69 OE6B OE60 DE70 0£70 OE73 0E75 OE77 0E79 o0En7D8 AO 0487 R . . BO 75 39 BA B800 AO 0449 R 3C 06 76 OA BA BODO 3C 07 74 03 BA ADOO BB 0720 3C 04 72 06 3C 07 74 02 28 08 0E70 OE7F OE83 OE85 OE88 OE88 OE80 OE8F OE8F OE91 OE93 OE95 OE95 OE96 8E C2 8B DE 044C R E3 10 89 8000 80 FE AO 74 02 85 40 8B C3 2B FF F3/ AB C3 OE96 OE96 OE99 OE9A E8 10B7 R C3 OE9A OE9A OE98 OE9C OE9F OEA2 OEA3 OEA5 OEA7 OEA9 OEAB 50 1E E8 OCFE R AD 0488 R If 24 OF 3C 03 74 07 3C 09 74 03 2521 2522 2523 2524 2525 2526 2527 2528 2529 2530 2531 2532 2533 2534 2535 2536 2537 2538 2539 2540 2541 2542 2543 2544 2545 2546 2547 2548 2549 2550 2551 2552 2553 2554 2555 2556 2557 2558 2559 2560 2561 2562 2563 2564 2565 2566 2567 2568 2569 2570 2571 2572 2573 2574 2575 2576 2577 2578 2579 2580 2581 2582 2583 2584 2585 2586 2587 2588 2589 2590 2591 2592 2593 2594 2595 2596 2597 2598 2599 2600 2601 2602 2603 2604 2605 2606 2607 2608 2609 2610 2611 2612 2613 2614 2615 2616 2617 2618 2619 2620 2621 2622 2623 2624 2625 2626 2627 2628 2629 2630 2631 2632 2633 2634 2635 2636 2637 2638 2639 2640 2641 2642 2643 2644 2645 2646 JB HOV XCHG HOV Xl AX, ES: (8X) (-OFH) AH,AL CURSOR_MOOE,AX ; DO THE REST ; GET CURSOR MODE ; SET LOW RAM VALUE ;----- PROGRAM THE ATTRI8UTE CHIP HOV SI,BX CALL WHAT_BASE IN AL,DX HOV DL,ATTR_WRITE SUB AH,AH 03: HOV AL,ES:IBX) XCHG AH,AL OUT OX,AL XCHG AH,AL OUT OX,AL INC BX INC AN CMP AH,M5 JB 03 : I NOEX COUNTER ; GET DATA VALUE NEXT DATA VALUE NEXT I NDEX VALUE TEST REG I STER COUNT 00 THE REST HOV AL,O OUT OX,AL ;----- CHECK I F PALETTE REG I STER VALUES ARE TO BE SAVED PUSH PUSH LES LES MOV OR JZ OS ES 01, SAVE_PTR ol,oWORO PTR E5:1011l4] AX,ES AX,D' SAVE_OUT GET TABLE PTR GET PALETTE PTR I F ZERO, NO SAVE OCCURS ;----- STORE AWAY THE PALETTE VALUES IN RAM SAVE AREA POP OS PUSH OS HOV CX,160 REP MOVSB INC SI MOVSB SAVE_OUT: POP ES POP OS ---- ; PROGRAM THE GRAPH I CS CH I PS HOV HOV OUT HOV MOV OUT MOV SUB 04: MOV CALL INC INC CMP JB RET SET _REGS OL,GRAPH_l_POS AL,O DX,AL DL,GRAPH_2_POS AL,l OX,AL oL, GRAPH_AOOR AH,AH AL, ES: (BX1 OUT_OX BX AN D'AH,M6 ENDP SAVE THE PALETTE REGS SAVE THE OVERSCAN REG PARAMETER BVTE SET IT NEXT BYTE NEXT REGISTER ; CONT I NUE ; ----- MODE SET REGEN CLEAR ROUT I NE BLANK CGO: WWl: N_BA: OUT_l: BLANK PROC ASSUME MOV TEST JNZ MOV MOV CHP JBE MOV CMP JE MOV NEAR OS: A8S0, ES: NOTH I NG AL, INFO AL,080H OUT 1 OX,OB800H AL,CRT_MOoE AL,6 CCO oX,08000H AL,7 CGO OX,OADOOH MOV CMP JB CMP JE SUB 8x,0720H AL.4 WIll AL,7 WIll 8X,8X SRLOAO MOV MOV JCXZ MOV CMP JE MOV ES ES,OX CX,CRT_LEN OUT_l CX,08000H OH,OAOH N BA CH,040H MOV AX,BX SUB 01.01 REP STOSW RET ENOP ; F ILL REGEN WITH 8LANKS SEE I F BLANK I S TO OCCUR ; MODE SET HIGH BIT ; SK I P BLANK fOR REGEN ; COLOR MODE REGEN ADDRESS ; CURRENT MODE SET : 0-6 ARE COLOR MODES ; MONOCHROME REGEN ADDRESS ; MONOCHROME MODE ; REMAINING MODES ; ALPHA BLANK VALUE ; ALPHAMOOES 0- 3 ; ALPHA MOOE ; GRAPH I CS BLANK VALUE ;, SET THE REGEN SEGMENT BLANK VALUE CLEAR POINTER CLEAR THE PAGE RETURN TO CALLER PH_5 PH_5 PROC CALL RET ENOP NEAR PAL_ON ; ----- SEE 1F WE ARE TO SUPPORT 640 X 350 ON A 640 X 200 MODE BRST _DET ASSUME PUSH PUSH CALL MOV POP ANO CMP JE CMP JE PROC NEAR OS:A8S0 AX OS OOS AL,INFO_3 OS AL,OfH AL,03H 8_YES AL,09H B_YES EMULATE MODE EMULATE MODE '" 124 IBM Enhanced Graphics Adapter August 2, 1984 OEAD 5. OEAE F. OEAF e3 OEBO OEBO 58 OEBl F9 OEB2 e3 OEB3 ~ OEB3 OEB3 OEB4 OEeA OEBE OEBF FA C7 06 010C R 0000 E 8C OE OlOE R FB 80 26 0487 R F3 OEC4 OEC5 OECA OECC OECF OEDl OED3 50 F6 06 0487 R 02 74 2C Al 0410 R 24 30 3C 30 74 48 OED5 OEOA OHO OEEl OEE6 OH8 OEEA OEEC OEEE OH3 OEF3 OH5 C6 06 0484 R 18 C7 06 0485 R 0008 58 80 OE 0487 R 08 3C 01 76 09 3C 04 73 05 80 OE 0487 R 04 CD 42 E9 219E R OH8 OH8 OEFB OHD OEFF Al 0410 R 24 30 3C 30 75 40 OFOl OF06 OFOC OFOD OFOF OF15 OF1A C6 06 0464 R 16 C7 06 0485 ROODE 5. CO 42 C7· 06 0460 R OBOC 60 DE 0487 R 08 E9 219E R ~ OF1D OFlO OF1E OF1F OF21 OF23 OF26 OF2C OF2D OF2F OF31 OF33 0F35 OF35 0F38 OF3A OF3E 5. 50 B6 03 24 60 80 26 0467 R 7F 08 06 0487 R 58 24 7F 3C OF 74 02 so 01 A2 0449 R B2 .. 89 16 0463 R EB 1C 90 OF41 OF41 OF42 OF43 OF45 OF47 OF4C OF50 OF51 OF53 OF56 OF58 OF5C OF5C OF62 58 50 B6 03 24 80 60 26 0467 R 7F 08 06 0467 R 5. 24 7F A2 0449 R B2 04 69 16 0463 R C7 06 044E R 0000 C6 06 0462 R 00 OF67 OF6A OF6D OF6E OF6F 0F71 B9 0006 BF 0450 R 1E 01 2B CO F3/ AB 0F73 E6 OD5A R 0F76 26: 6A 07 0F79 2A E4 OF7B A3 044A R OF7E 26: 6A 47 01 OF62 A2 0484 R OF65 26: 6A 47 02 ".-..., OF69 2A E4 OF8B A3 0465 R OF6E 26: 6B 47 03 OF92 A3 044C R OF95 OF97 OF99 OF9D OFAD 2B DB BO 01 SA 26 0449 R 60 FC 07 74 OC 2647 2648 2649 2650 2651 2652 2653 2654 2655 2656 2657 2658 2659 2660 2661 2662 2663 2664 2665 2666 2667 2668 2669 2670 2671 2672 2673 2674 2675 2676 2677 2678 2679 2680 2681 2682 2683 2684 2685 2686 2687 2688 2689 2690 2691 2692 2693 2694 2695 2696 2697 2698 2699 2700 2701 2702 2703 2704 2705 2706 2707 2708 2709 2710 2711 2712 2713 2714 2715 2716 2717 2716 2719 2720 2721 2722 2723 2724 2725 2726 2727 2728 2729 2730 2731 2732 2733 2734 2735 2736 2737 2736 2739 2740 2741 2742 2743 2744 2745 2746 2747 2748 2749 2750 2751 2752 2753 2754 2755 2756 2757 2756 2759 2760 2761 2762 2763 2764 2765 2766 2767 2768 2769 2770 2771 2772 POP eLe RET B_YES: POP STe RET BRST_DET A)( A)( ENDP ; ---- MODE SET AHO: ASSUME eLi MOV MOV STI ANO PUSH TEST JZ MOV AND eMP JE DS:ABSO WORD PTR GRX_SET, OFFSET CGODOT WORD PTR GRX_SET+2, CS INFO, 11110011B AX INFO,2 ST_1 AX, EQU t PJLAG AL,030H AL,030H ST_2 TURN OFF RETRACE BI T EGA ACTIVE BIT SAVE THERE I S NO MONOCHROME THERE t S A MONOCHROME ; CHECK THE EQU I PMENT FLAG : FOR MONOCHROME CALL IT I S A MONOCHROME CALL FALL THROUGH => REGULAR COLOR CARD SETUP ST_7: MOV MOV POP OR eMP JBE eMP JAE OR INT JMP ROWS, 0240 POINTS,8 AX INFO,00001000B AL,l ST_7 AL,4 ST 1 INfo, 00000 1OOB .2H V_RET RECOVER EGA NOT ACT I VE ; WAI T FOR RETRACE ON ; MODES 2,3 ONLY ; DO RETRACE ; OTHER ADAPTER MODE CALL : BACK TO CALLER ;----- AT THIS POINT THERE IS NO MONOCHROME ATTACHED TO THE ADAPTER ST_1 : MOV AND eMP JNE AX, EQU I P_FLAG AL,030H AL,030H ST_3 TEST THE EQU I PMENT FLAG ; TO SEE IF THIS IS A ; MONOCHROME SETUP CALL ; MUST BE COLOR TO CARD ;----- FALL THROUGH => REGULAR MONOCHROME CARD SETUP MOV MOV POP INT MOV OR JMP ROWS, 0240 POINTS,014D AX '2H CURSOR_MODE,OBOCH INFO,6 V_RET RECOVER OTHER ADAPTER MODE CALL F I X PLANAR VALUE THE EGA I S NOT ACT I VE BACK TO CALLER ; ---- MONOCHROME SETUP TO THE ADAPTER ST_2: ST_2A: POP PUSH MOV AND AND OR POP AND eMP JE MOV MOV MOV MOV JMP AX AX DH,3 AL,060H INFO,07FH tNFO,AL AX AL,07FH AL,OFH ST_2A AL,7 CRT_MODE,AL DL, CRTC_AODR_B ADDR_6845, OX 001 RECOVER SAVE f>ICK OFF THE CLEAR BIT MASK OFF THE OTHER BITS SAVE REGEN CLEAR B J T RECOVER TRUE CALL VALUE ALREADY DEALT WITH 07 A MONOCHROME MODE DO THIS MODE REGULAR MONOCHROME SAVE MODE VALUE IT IS 3-B-X ; SAVE CRTC ADDRESS ; CaNT I NUE THE MODE SET ; ---- COLOR SETUP TO THE ADAPTER ST_3: QQ1: POP PUSH MOV AND AND OR POP AND MOV MOV MOV AX AX OH,3 AL,060H INFO,07FH INFO,AL AX AL,07FH CRT_MODE,AL DL, CRTC_ADDR ADDR_6645, OX MOV MOV ASSUME MOV MOV PUSH POP SUB REP CRT _START, 0 ACT I VE_PAGE, 0 ES:NOTHING CX,6 01, OFFSET CURSOR_POSN OS ES AX,AX STOSW RECOVER PARAMETER VALUE SAVE IT I SaLAH REGEN CLEAR BI T PREPARE I NFO BYTE SET IT, OR NOT RECOVER TRUE MODE CALL DONE WITH 07 SAVE TH I S MODE 3-D-X SAVE CRTC ADDRESS SAVE START ADDRESS RESET PAGE VALUE TO ZERO 8 PAGES OF CURSOR VALUES OFFSET ESTABLISH ADDRESS I NG o THOSE CURSOR LOCA T IONS CLEAR OUT SAVED VALUES CALL MAKE_BASE MOV SUB MOV MOV MOV MOV SUB MOV MOV MOV AL, ES: (BX) AH,AH CRT_COLs,AX AL, ES: (BXlll) ROWS,AL AL,ES:(BXII2) AH,AH POINTS,AX AX,ES:)BXII3) CRT_LEN,AX ; GET COLUMN COUNT ; ZERO HIGH BYTE : STORE COLUMN VALUE ; GET ROW VALUE : STORE ROW VALUE ; GET THE BYTES/CHAR ; ZERO HIGH BYTE : STORE BYTES/CHAR ; GET PAGE SIZE ; STORE PAGE LENGTH SUB HOV HOV eMP JE BX,BX AL,l AH, CRT_MODE AH,7 ENTRY_2 ; ZERO ; MONOCHROME ALPHA CHAR GEN ; GET CURRENT MODE I SIT MONOCHROME ; 9X14 FONT August 2, 1984 IBM Enhanced Graphics Adapter 125 OFA2 80 FC 03 OFA5 77 35 OFA7 E8 OE9A R OFAA 72 02 OFAC OFAE OFAE OFBl OFB4 OFB8 OFBB OFBD Orco OFCO OFC3 OFC6 OFC6 OFC7 OFC8 OFCC OFCE OFOO OF03 OF04 Of07 OroA OfOC OfOC OFOF OFE2 BO 02 E8 lEAE R E8 OCFE R 811, 26 0449 R 80 FC 01 74 03 E8 10 90 BO 0000 E BB OEOO O07E 26: 8B 56 00 DB 02 74 DC B9 0001 45 E8 1 EF6 R 83 C5 DE EB EA E8 OOAB R E8 OE55 R E8 OE96 R OFE5 OFE8 OFED OFEF OFF5 OFF5 OFFA OFFC OFFE 1003 1005 1005 1009 100C 100F lOll 1013 1015 1018 1018 101B 1010 lOlF 1023 1025 1026 1028 1028 1029 102C 102E 1031 1035 1038 103C 103F 1043 1046 1047 1047 1049 1049 1040 1050 1053 1055 1057 1059 105C 105C 105F 1061 1063 1067 1069 106,0, 106C 106C 106F 1073 1077 107B 107F 1083 1084 1086 1089 108B 108C 1090 1092 1094 1096 E8 OCfE I( 80 3£ 0~49 R Of 72 06 C7 06 010C R 0000 E 80 3E 0449 R 01 77 09 74 4B 80 3E 0449 R 03 76 44 C4 lE 04A8 R 83 C3 OC 26: C4 1F 8C CO DB C3 74 32 BE 0007 26: SA 00 3C FF 74 7,0, 3,0, 06 0449 R 74 03 46 EB FO fA 26: 8A 07 FE C8 A2 0484 R 26: 8B 47 01 A3 0485 R 26: 8B 47 03 ,0,3 OlOC R 26: 8B 47 05 ,0,3 OlOE R fB E8 50 C4 1E 04A8 R 83 C3 08 26: C4 l r Be CO OB C3 74 40 BE OOOB 26: 8,0, 00 3C FF 74 36 3,0, 06 0449 R 74 03 46 E8 FO 26: 8,0, 27 26: SA 41 01 26: 8B 4f 02 26: 8B 57 04 26: 8B "iF 06 26: 8E 47 08 53 8B 08 B8 1110 CD 10 5B 26: 8A 47 OA 3C FF 74 05 FE C8 A2 0484 R 1099 1099 109C 10,0,1 10A3 1011.6 10,0,9 10AB 1011,0 lOBO 10B3 10B5 10BA 10BC lOBE lOBE E8 OCFE R 80 3E 0449 R 07 77 1E 88 10C8 R AO 0449 R 2,0, E4 03 08 2E: 8,0, 07 ,0,2 0465 R BO 30 80 3E 0449 R 06 75 02 BO 3f ,0,2 0466 R 2773 2774 2775 2776 2177 2778 2779 2180 2181 2182 2183 2184 2785 2786 '2787 2788 2789 2790 2791 2792 2793 2794 2795 2796 2797 2798 2799 2800 2801 2802 2803 2804 2805 2806 2807 2808 2809 2810 2811 2812 2813 2814 2815 2816 2617 2816 2619 2620 2821 2822 2823 2824 2825 2826 2827 2828 2829 2830 2831 2832 2833 2834 2835 2836 2837 2838 2839 2840 2841 2842 2843 2844 2845 2846 2847 2848 2849 2850 2851 2852 2853 2854 2855 2856 2851 2858 2859 2860 2861 2862 2863 2864 2865 2866 2867 2868 2869 2870 2871 2872 2873 2874 2875 2876 2877 2878 2879 2880 2881 2882 2883 2884 2885 2886 2887 2888 2889 2890 2891 2892 2893 2894 2895 2896 2897 2898 CM' JA AH,03H ENTRY_, CALL JC BRST DEl ENTRY_2 MOV ENTRY_2: CALL CALL MOV CM' JE JM' FOG_ IT: MOV FOG: MOV PUSH M'0OV' OR JZ MOV INC CALL AOO JM' ENTRY_ 1: CALL CALL CALL AL,2 CH GEN DOS AH, CRT_MODE AH,7 FOG IT ENTRY_l BP, OFFSET CGMN_FoG BX,OEOOH CS ES OX,ES:[BP] OX,OX ENTRV_l CX,l B' 00_MAP2 BP,0140 FOG SET_REGS BLANK PH_5 ; COLOR ALPHA CHAR GEN ; LOAD ALPHA CHAR GEN ; GET CURRENT MODE I S IT MONOCHROME ; 9X14 FONT TABLE POINTER 14 BYTES PER CHAR GET THE ROM SEGMENT INTO ES GET THE CHAR HEX CODE ZERO'" NO MORE CHARS NO MORE 00 ONE CHAR AT A TIME MOVE TO fiRST CODE POI NT STORE THE CODE POINT ADJUST BP TO NExT CODE DO ANOTHER CLEAR OUT THE BUFFER ASSUME CALL CM' JB MOV HS_' : CM' JA JE CM' JBE SAVE_GRPH: LES AOO LES MOV OR JZ MOV SG_l: MOV CM' JE CM' JE INC JM' SG_2: Cli MOV OEC MOV MOV MOV MOV MOV MOV J4J: MOV STI JM' SAVE_ALPH: LES ADO LES MOV OR JZ MOV SA_' : MOV eM' JE CM' JE INC JM' SA_2: MOV MOV MOV MOV MOV MOV PUSH MOV MOV INT '0' MOV CM' JE OEC MOV OS:ABSO 005 CRT_MOOE,OFH MS 1 WORD PTR GRX_SET , OFFSET CGMN CRT_MODE,7 SAVE GRPH SAVCALPH CRT_MOOE,3 SAVE_ALPH 8X, SAVE_PTR 8X,OCH 8X,OWORO PTR ES:(BX) AX,ES AX,BX J4J SI,07H AL,ES:[BXJ[SII AL,OFFH AHO_DONE AL,CRT_MODE SG_2 51 SG_l AL,BYTE PTR ES:IBX] Al ROWS,AL AX,WORD PTR ES:IBX]ll] POINTS,AX AX,WORO PTR ES:[BXlI3] WORD PTR GRX_SET, AX AX,WORD PTR ES:IBXlI5] WORD PTR GRX_SET + 2, AX SHORT AHO_DONE BX, SAVE_PTR eX,08H BX,DWORD PTR ES:(BX] AX, ES AX,BX AHO DONE SI,OSH AL,ES:(BXIISI] Al,OHH AHO_OONE AL, CRT_MODE SA_2 51 SA_l AH,ES:[BX] AL,ES:[BX]['] CX,ES:IBX][2] ox, ES: [BX] [4] BP,ES:IBXJ[6) ES,ES:(BX][8] BX BX,AX AX,1110H 10H BX AL,ES:(BX][OAtf] AL,OFfH AHO_DONE Al ROWS,AL JMP AHO_DONE ;----- SET THE lOW RAM VALUES fOR COMPATIBILITY (308 AND 309 SAVE BYTES) AHO_OONE: CALL CM' JA MOV MOV SUB AOO MOV MOV MOV CM' JNE MOV DO_PAL: MOV 005 CRT_MODE,7 DNDes BX,OFFSET COMPAT_MODE AL, CRT _MODE AH,AH BX,AX AL,CS: (BX] CRT_MODE_SET, AL AL,030H CRT_MODE,6 DO_PAL AL,03FH CRT_PALETTE,AL r--... ~ 126 IBM Enhanced Graphics Adapter August 2, 1984 10Cl 10Cl tB OE 0460 R 10C5 EB 28 90 10C8 10C8 2C 28 20 29 2A 2E lOCE lE 29 1000 1000 1003 1005 1007 1009 1009 10DB 10DF 10El 10E3 10E3 10[4 10E6 10E9 10EA 10EC 10EE 10££ 10H 80 FO 00 75 04 FE Cl EB OA FE Cl 3A OE 0465 R 72 02 2A C9 51 2A CD 80 F9 10 59 75 02 FE Cl C3 '" 0004 10H 10EF 10Fl lOF5 10FA 64 OA 89 O£ 0460 R F6 06 0487 R 08 75 33 10FC lOfE 1100 1102 1104 1107 8A C5 24 60 3C 20 75 05 B9 lEOO EB 26 1109 1109 110E 1110 11T5 1117 l11A ll1C ll1F 1121 1124 1124 1127 "29 '12C 1l2C 112F 112F 1132 F6 06 0487 R 01 75 lF 80 3E 0449 R 03 77 15 E8 0£9A R 73 10 80 FO 04 7603 80 C5 05 80 F9 04 7603 60 Cl 05 E8 1000 R E8 1135 R E9 219E R 1135 1135 1139 1136 T13E 1140 1142 1145 88 16 0463 R 8A C5 £80015 R FE C4 8A Cl E8 0015 R e3 1146 1146 1147 1149 1146 114F 1151 1153 1155 1156 1157 53 8606 8A e4 F6 26 044A R 32 FF 03 e3 01 EO 58 e3 1157 1157 £6 1150 R 2899 2900 2901 2902 2903 2904 2905 2906 2907 2908 2909 2910 2911 2912 2913 2914 2915 2916 2917 2918 2919 2920 2921 2922 2923 2924 2925 2926 2927 2928 2929 2930 2931 2932 2933 2934 2935 2936 2937 2938 2939 2940 2941 2942 2943 2944 2945 2946 2947 2948 2949 2950 2951 2952 2953 2954 2955 2956 2957 2958 2959 2960 2961 2962 2963 2964 2965 2966 2967 2968 2969 2970 2971 2972 2973 2974 2975 2976 2977 2978 2979 2980 2981 2982 2983 2984 2985 2986 2987 2988 2989 2990 2991 2992 2993 2994 2995 2996 2997 2998 2999 3000 3001 3002 3003 3004 3005 3006 3007 3008 3009 3010 3011 3012 3013 3014 3015 3016 3017 3016 3019 3020 3021 3022 3023 3024 DNDCS: MOV JMP ex, CURSOR MODE AH1 COM PAT MODE - OB OB LABEL BYTE 02CH, 028H, 02DH, 029H, 02AH. 02EH 01EH,029H INCLUDE Vl-5.INC SUBTTL Vl-5.INC PAGE CALC CURSOR - ASSUME eMP JNE IMe JMP PROC NEAR DS:ABSO CH,O CC_' eL SHORT CALC_OUT CHECK FOR fULL HE I GHT NORMAL CHECK ADJUST END VALUE INC eMP JB SUB CALC_OUT: PUSH SUB eMP POP JME IMe eL CL,BYTE PTR POINTS CALC OUT CL,C[ ex CL,CH CL,010H ex COMP_4 eL ADJUST fOR EGA REGISTERS WILL IT WRAP NO, ITS 01( EGA METHOD fOR CURSOR END SAVE CURSOR TYPE VALUE END - START LOW NIBBLE EQUAL RESTORE ADD 1 FOR CORRECT CURSOR ENoP ; BACK TO CALLER i-SET=~T~ PE-----sET- ~u~so~- T~PE--------- -------- ------ ---------- ; THIS ROUTINE SETS THE CURSOR VALUE ; INPUT ; (CX) HAS CURSOR VALUE CH-START LINE, CL-STOP LINE ; OUTPUT ;; ------ -NcUOTNE=Off--- ------[QU-----;;------- -------- ------- -____ R ___ _ AHl : ASSUME MOV MOV TEST JMZ DS:A8S0 AH, C_CRSR_START CURSOR MODE,CX INFO,8- DO_SET CRTC REG FOR CURSOR SET SAVE IN DATA AREA EGA ACTIVE BIT O=EGA, 1"'OLD CARDS ;----- THIS SECTION WILL EMULATE CURSOR Off ON THE EGA MOV AMO eMP JME MOV JMP AL,CH AL,060H AL,020H AHl A CX,OlEOOH SHORT DO_SET GET START VALUE TURN OF r CURSOR ? TEST THE BITS SK I P CURSOR OF F EMULATE CURSOR Off ;----- THIS SECTION ADJUST THE CURSOR AND TEST FOR ENHANCED OPERATION TEST JNl CMP JA CALL JNC CMP JBE ADD INFO,' DO SET CRT_MODE,3 AHl S BRST_DEl AH1_S CH,CUT_OFF AHl B CH,5 CURSOR EMULATE BIT O=.EMULATE, ''''VALUE AS-IS POSSIBLE EMULATION NO, SET THE CURSOR TYPE SEE I F EMULATE MODE NOT EMULAT I NG TEST START SKI P ADJUST ADJUST eMP JBE AOO CL,CUT_OFF AHl S CL,5 TEST END SKIP ADJUST CALL CALC_CURSOR ADJUST ENO REGISTER OUTPUT CX REG RETURN TO CALLER ;----- THIS ROUTINE OUTPUTS THE CX REGISTER TO THE CRTC REGS NAMED IN AH M16: MOV MOV CALL INC MOV CALL RET OX, ADOR_6845 AL,CH OUT OX AH - AL,CL OUT_OX AOORESS REGI STER DATA OUTPUT THE VALUE NEXT REGISTER SECOND DATA VALUE OUTPUT THE VALUE ALL DONE POSITION THIS SERVICE ROUTINE CALCULATES THE REGEN BUFFER ; I NPUT ADDRESS OF A CHARACTER I N THE ALPHA MODE ; AX =. ROW, COLUMN POSITION ; OUTPUT ; AX == OFFSET OF CHAR POSITION IN REGEN BUFFER : ~o;iT7o~--------PRO~----NEAR------------------------------------- PUSH MOV MOV MUL XOR ADD SAL POP RET POSITION BX BX,AX AL,AH BYTE PTR CRT COLS BH, BH - AX, BX AX, 1 BX ENDP ; SAVE REGISTER ROWS TO AL OETERM I NE BYTES TO ROW ZERO OUT *ADD IN COLUMN VALUE 2 FOR ATTA I BUTE BYTES RESTORE REG I STER SET_CP~~ I S Roui~~EC~~~~RT~~S6~~~~NT CURSOR POS IT I ON TO THE NEW X-Y VALUES PASSED : INPUT OX _ ROW,COLUMN OF NEW CURSOR ; BH - 0 I SPLAY PAGE OF CURSOR ; OUTPUT ; CURSOR IS SET AT CRTC IF DISPLAY PAGE IS CURRENT ; 01 SPLAY i~;7------------------"------------------"'----------------------- August 2, 1984 IBM Enhanced Graphics Adapter 127 115A E9 219E R 1150 1150 115F 1161 1163 1165 1169 116D 116F 1171 1174 1174 8A Cf 32 ED 01 £1 86 F1 89 94 0450 R 38 3E 0462 R 75 05 8B C2 E8 1175 R C3 1175 1175 1178 117A E8 1146 R 88 C8 03 OE 044E R 117E 1180 1182 1185 1186 D1 F9 640E £81135 R C3 1186 1186 1188 118A 118C 1190 1194 1195 1196 1197 1198 1199 119A 119B 119C 8A OF 32 FF D1 £3 8B 97 0450 R 8B O£ 0460 R 5F 5£ 56 58 58 lF 07 50 CF 1190 1190 11AO l1A2 AO 0449 R 3C 07 77 37 11A4 F6 06 0487 R 02 llA9 7407 11AB 3C 07 llAD 742C 11AF E6 05 90 11B2 11B2 11B4 11B6 l1B6 l1B8 11B9 11BA 11BO 11BE 11 BF 11CO 3C 06 76 25 CD42 5f 5E 83 C4 06 lF 07 50 CF 11C1 11Cl 11C7 11CO 1103 1109 060607070505 04 05 00 00 00 00 00050604 04 04 04 06 06 04 07 04 07 04 110B 11 DB 11DF 11£2 11£3 11£5 11£7 11E9 8B 16 0463 R 83 C2 06 EC A8 04 B400 74 03 E9 1291 R l1[C l1EC A8 02 3025 3026 3027 3028 3029 3030 3031 3032 3033 3034 3035 3036 3037 3038 3039 3040 3041 3042 3043 3044 3045 3046 3047 3048 3049 3050 3051 3052 3053 3054 3055 3056 3057 3058 3059 3060 3061 3062 3063 3064 3065 3066 3067 3068 3069 3070 3071 3072 3073 3074 3075 3076 3077 3078 3079 30ao 3081 3082 3083 3084 3085 3086 3087 3086 3089 3090 3091 3092 3093 3094 3095 3096 3097 3098 3099 3100 3101 3102 3103 3104 3105 3106 3107 3108 3109 3110 3111 3112 3113 3114 3115 3116 3117 3118 3119 3120 3121 3122 3123 3124 3125 3126 3127 3128 3129 3130 3131 3132 3133 3134 3135 3136 3137 3138 3139 ]140 3141 3142 3143 3144 3145 ]146 3147 3148 3149 3150 e e JMP e SET_CPOS: e e e e e e MOV CL,BH XOR CH,CH SAL CX,l MOV SI,CX MOV [S I+OFfSET CURSOR_POSH J, OX eMP ACT I VE_PAGE, BH ESTABLISH LOOP COUNT WORD OFFSET USE INDEX REGISTER SAVE THE POI NTER e e e ee M17: e JHZ MOV CALL RET M17 AX,OX M18 SET CPOS RETURN GET-ROW/COLUMN TO AX CURSOR SET SET_CPOS_RETURN e e ; ----- SET CURSOR POS IT ION, AX HAS ROW/COLUMN FOR CURSOR e M18 e e e e e PROC CALL MOV ADD SAR HEAR POSITION CX,AX CX,CRT_START CX,l ; OETERM I NE LOC I N REGEN ; ADD IN THE START ADDR FOR TH I S PAGE / 2 FOR CHAR ONLY COUNT e MOV AH,C_CRSR_LOC_HGH e e CALL M16 RET REG I STER NUMBER FOR CURSO~ SET VALUE TO CRTC C M18 EHDP e e e READ CURSOR e - TH I S ROUT I NE READS THE CURRENT CURSOR VALUE FROM e MEMORY AND SENDS I T BACK TO THE CALLER e INPUT e BH - PAGE OF CURSOR e OUTPUT e OX - ROW, COLUMN OF THE CURRENT CURSOR POSITION e CX - CURRENT CURSOR MODE e e iH3~-----------·------------------------------------------------- e MDV BL,6H PAGE VALUE e XDR BH,BH ZERO UPPER BYTE e SAL BX,l WORD OFFSET e MDV DX.IBX + OFFSET CURSOR_POSNI GET CURSOR FOR TH I S PAGE e MOY CX, CURSOR_MODE GET THE CURSOR MODE e POP 01 e POP 51 e POP OX e POP AX DISCARD CX e POP AX DISCARD OX e POP OS e POP ES e POP BP e I RET e e ;----- READ LIGHT PEN POSITION e e AH4: e MOV AL, CRT _MODE e eMP AL,07H e JA READ_LPEN e e TEST I NFO,2 e JZ EGA_I S_COLOR e e ;----- MONOCHROME HERE (MONOC BIT 1) e e eMP AL.07H e e JE REAO_LPEN JMP OLD_LP e e ;----- EGA IS COLOR HERE (MONOC BIT 0) e ee EGA_IS_cg~~R: e JBE e AL,06H REAO_LPEN e e lNT 42" POP 01 CALL EXISTING CODE e POP 51 e ADO SP,6 e e POP OS POP ES DISCARD SAVEO eX,CX,DX e POP BP e IRET e e c LIGHT PEN c THIS ROUTINE TESTS THE LIGHT PEN SWITCH AND THE LIGHT e PEN TRIGGER. IF BOTH ARE SET, THE LOCATION OF THE LIGHT e PEN IS DETERMINED. OTHERWISE, A RETURN WITH NO e INFORMATION IS MADE. c ON [XI T e (AH) __ 0 If NO LIGHT PEN INfORMATION IS AVAILABLE e BX, CX. OX ARE OESTROVED e (AH) == 1 IF LIGHT PEN IS AVAILABLE e (DH,DL) '" ROW,COLUMN OF CURRENT LIGHT PEN e POSITION e (CH) '" RASTER POSITION (OLD MODES) e (CX) '" RASTER POSITION (NEW MODES) · - e e e · ; -------------- ---(B--X-) --'" -B-E-S--T--G-U-E-S-S--A-T--P-I-X-E-L-H--O-R-IZ-O--N-T-A-L--P-O-S. -IT I-O-N- : ASSUME CS: CODE, OS: ABSO e ;----- SUBTRACT_TABLE c Vl LABEL BYTE e DB 006H,006H,007H, 007H. 005H, 005H 0-5 e DB 004H,005H, OOOH, OOOH, OOOH, OOOH 6-B e DB 000H,005H, 006H, 004H. 004H, 004H C-11 c DB 004H,006H, 006H, 004H, 007H, 004H 12-17 e OB 007H,004H 18-19 e e PROC NEAR e ee ;~---- WAIT FOR LIGHT PEN TO BE DEPRESSED e MOV OX,AOOR_6845 GET BASE ADDRESS OF 6845 c ADO DX,6 POINT TO STATUS REGISTER e IN AL,DX GET STATUS REGISTER e e TEST MOV AL,4 AH,O TEST LIGHT PEN SWITCH SET NO LI GHT PEN RETURN e JZ V9 CODE e e JMP V6 NOT SET, RETURN e ;----- NOW TEST FOR LIGHT PEN TRIGGER e cC v9: TEST AL,2 TEST LIGHT PEN TRIGGER 128 IBM Enhanced Graphics Adapter August 2, 1984 ~ 11EE 75 03 11f0 E9 129B R 11f3 11F3 B4 10 11f5 11f9 11fB 11fC 11fD 11fE 11fF 1201 1202 1203 1205 1207 1208 1209 120A 8B 16 0463 R 8A C4 EE 42 50 EC 8A E8 5B 4A FE C4 8A C4 EE 42 EC 8A E5 120C 1210 1212 1217 1219 1210 121f 1221 1223 8A 1E 0449 R 2A FF 2E: 8A 9f 11C1 R 2B C3 8B 1 E 044E R 01 EB 2B C3 79 02 2B CO 1225 1225 1227 122C 122E 1233 B1 03 80 3E 0449 R 04 72 40 80 3E 0449 R 07 74 46 1235 123A 123C 123E 80 3E 0449 R 06 77 28 75 02 01 EB 1240 1240 B2 28 1242 f6 f2 ~ 1244 1246 1248 124A 124C 1251 1253 1255 1257 1257 8A E8 02 EO 8A DC 2A FF 80 3E 0449 R 06 75 04 B1 04 DO E4 03 E3 1259 125B 1250 125f 1261 1264 SA 04 8A FO DO EE 00 EE EB 2C 90 1264 99 1265 F7 36 044A R 1269 8B DA 126B 03 E3 1260 8B C8 126F 52 1270 99 1271 F7 36 0485 R " 1275 5A 1276 8A FO 1278 EB 15 90 ~ 127B 127B 127f 1281 1283 1285 1287 1289 1280 128F 128F 1291 1291 f6 36 044A R SA FO 8A 04 8A DC 32 FF 03 E3 F6 26 0485 R 8B C8 B4 01 52 1292 8B 16 0463 R 1296 83 C2 07 1299 EE 129A 129B 129B 129C 1290 12AO 12A1 12A2 12A3 12M 5A 5F 5E 83 C4 06 1F 07 50 CF 3151 3152 3153 3154 3155 3156 3157 315B 3159 3160 3161 3162 3163 3164 3165 3166 3167 3168 3169 3170 3171 3172 3173 3174 3175 3176 3177 3178 3179 3180 3181 3182 3183 3184 3185 3186 3187 3188 3189 3190 3191 3192 3193 3194 3195 3196 3197 3198 3199 3200 3201 3202 3203 3204 3205 3206 3207 3208 3209 3210 3211 3212 3213 3214 3215 3216 3217 3218 3219 3220 3221 3222 3223 3224 3225 3226 3227 3228 3229 3230 3231 3232 3233 3234 3235 3236 3237 3238 3239 3240 3241 3242 3243 3244 3245 3246 3247 3248 3249 3250 3251 3252 3253 3254 3255 3256 3257 3258 3259 3260 3261 3262 3263 3264 3265 3266 3267 3268 3269 3270 3271 3272 3273 3274 3275 3276 JNZ JMP V7A V7 RETURN WITHOUT RESETT I NG TRIGGER EXIT LIGHT PEN ROUTINE ; ----- TR I GGER HAS BEEN SET, READ THE VALUE IN V7A: MOV AH,16 ; LIGHT PEN REG I STERS INPUT REGS POINTED TO BY AH, AND CONVERT TO ROW COLUMN IN ox MOV MOV OUT INC PUSH IN MOV POP OEC INC MOV OUT INC IN MOV DX,ADDR_6845 AL,AH DX,AL OX AX AL,DX CH,AL AX OX AH AL,AH DX,AL OX AL,DX AH,CH ADDRESS REG I STER REGISTER TO READ SET IT UP DATA REGISTER GET THE VALUE SAVE IN CX ADDRESS REG I STER SECOND DATA REGISTER POINT TO DATA REGISTER GET THE 2ND DATA VALUE AX HAS INPUT VALUE ; ----- AX HAS THE VALUE READ I N FROM THE 6845 MOV SUB MOV SUB MOV SH' SUB JNS SUB 8L,CRT_MODE 8H,BH BL,CS:V1[BX] AX,BX BX,CRT_START BX,1 AX,BX V2 AX,AX MODE VALUE TO BX AMOUNT TO SUBTRACT TAKE I T AWAY SCREEN ADDRESS DIVIDE BY 2 ADJUST TO ZERO START If POSITIVE, GET MODE <0 PLAYS AS 0 ;----- DETERMINE MODE OF OPERATION V2: MOV CL,3 CMP CRT_MODE,4 JB V4 CMP CRT_MODE,7 JE V4 DETERMINE_MODE SET 01-8 SH I fT COUNT GRAPHICS OR ALPHA ALPHA_PEN ALPHA_PEN CMP JA JNE SH' CRT_MODE,06H VB VBX AX,1 ;----- OLD GRAPHICS MODES V8X: MOV OIV DL,40 OL ;----- DETERMINE GRAPHIC ROW POSITION DIVISOR fOR GRAPHICS ROW(AL) AND COLUMN(AH) AL RANGE 0-99, AH RANGE 0-39 MOV CH,AL AOO CH,CH MOV SUB BL,AH BH,BH CMP CRT_MODE,6 JNE MOV SAL V3 CL,4 AH,1 V3: SHL BX,CL SAVE ROW VALUE INCH 01-2 fOR EVEN/ODD FIELD COLUMN VALUE TO BX 01-8 fOR MED I UM RES MEDIUM OR HIGH RES NOT HIGH RES SHIFT VALUE FOR HIGH RES COLUMN VALUE *2 fOR HIGH RES NOT_HIGH_RES *16 FOR HIGH RES ;----- DETERMINE ALPHA CHAR POSITION V8: MOV MOV SH' SH' JMP DL,AH DH,AL DH,1 DH,1 V5 ; COLUMN VALUE FOR RETURN ; ROW VALUE DIVIDE BY 4 fOR VALUE IN 0-24 RANGE LIGHT_PEN_RETURN_SET ;----- NEW GRAPHICS MODES CWO OIV MOV SAL MOV PUSH CWO OIV POP MOV JMP CRT_COLS BX,DX BX,CL CX,AX OX POINTS OX DH,AL V5 PREPARE TO DIVIDE AX " ROW, OX '" COLUMN SAVE REMAINDER PEL COLUMN PEL ROW SAVE FROM DIVIDE PREPARE TO DIVIDE oI V I DE BY BYTES/CHAR RECOVER CHARACTER ROW ;----- ALPHA MODE ON LIGHT PEN V4: OIV MOV MOV MOV XO' SAL MUL MOV V5: MOV V6: PUSH "OV AOO OUT POP V7: POP POP AOO POP POP POP IRET REAO_LPEN BYTE PTR CRT_COLS DH,AL DL,AH BL,AH BH,BH BX,CL BYTE PTR PO I NTS CX,AX AH,1 DX,ADDR_6845 DX,7 DX,AL OX 01 SI SP,6 OS ES BP ENOP ; ALPHA_PEN ROW,COLUMN VALUE ; ROWS TO DH ; COLS TO DL ; COLUMN VALUE ; TO BX L I GHT_PEN_RETURN_SET INDICATE EVERTHING SET LIGHT_PEN_RETURN SAVE RETURN VALUE (IN CASE) GET BASE ADDRESS PO I NT TO RESET PARM ADDRESS, NOT DATA, IS !MPORTANT RECOVER VALUE RETURN_NO_RESET DISCARD SAVED BX, ex, OX August 2, 1984 IBM Enhanced Graphics Adapter 129 12A4 12M A2 0462 R 12A7 88 DE 044C R 12AB 9B 12AC 50 12AD F7 E1 12M A3 044E R 12B2 12B4 12B6 12BB 12BO 12BO 12BF 12BF 12Cl 12C4 12C5 12C7 12CB 12CE 8B C8 8A 1E 0449 R 80 FB 07 77 02 01 f9 B4 DC E8 1135 R 5B 01 E3 88 87 0450 R E8 1175 R E9 219E R 1201 1201 1202 1204 1206 1208 120A 120B 1200 120F 120F 12EO 50 8A E6 2A E5 FE C4 3A EO 5B 75 02 2A CO e3 12EO 12EO 53 12El 12E2 12E5 12E9 12EA 12EA 12EB 12EO 12EF 12FO 12Fl 12F3 12F4 12F5 12F7 12F9 12FA 12FC 12FD 12FE 1E E8 OCfE R 8B 1E 044A R 1F 51 6A CA 2A ED 56 57 F3/ A4 51 5E 03 F3 03 FB "E2 EE 5B e3 12FE 12FE 53 12FF 1300 1303 1307 1308 1308 1309 130B 1300 130E 130F 1311 1312 1313 1315 1317 1318 131A 131B 131C 1E E8 OCFE R B8 1E 044A R 11 51 8A CA 2A [0 5. 57 F3/ A4 5f 5E 2B F3 2B FB 59 E2 EE 5B e3 131C 131C 1310 131F 1321 1324 1327 1328 132A 132C 132E 132f 1331 1332' 1334 1335 1337 1339 133B 133E 133f 1341 1343 1344 52 B6 03 B2 C4 8B 020F E8 0015 R 5A 28 CO 8A CA 2A ED 57 F3/ AA 5f 8A C6 52 B6 03 82 e4 B4 02 E8 0015 R 5A 80 fF 8A CA 57 F3/ AA 3211 3278 3279 3280 3281 3282 3283 3284 3285 3286 3287 3288 3269 3290 3291 3292 3293 3294 3295 3296 3297 3298 3299 3300 3301 3302 3303 3304 3305 3306 3307 3308 3309 3110 3111 3112 3313 3314 3315 3316 3317 3118 3319 3320 3321 3322 3323 3324 3325 3326 3327 3328 3329 3330 3331 3332 3333 3334 3335 3336 3337 3338 3339 3340 3341 3342 3343 3344 3345 3346 3347 3348 3349 3350 3351 3352 3353 3354 3355 3356 3357 335B 3359 3360 3361 3362 3363 3364 3365 3366 3367 3368 3369 3370 3371 3372 3373 3374 3375 3376 3377 3376 3379 3380 3381 3382 3383 3384 3365 3366 3387 3388 3389 3390 3391 ]]9<:' ]]93 3394 3395 3396 3397 3398 3399 3400 3401 3402 ; ._---------_.------------------------------------------------- ; ACT_DISP_PAGE SELECT ACTIVE DISPLAY PAGE ; THIS ROUTINE SETS THE ACTIVE DISPLAY PAGE, ALLOWING ; fOR MULTIPLE PAGES Of DISPLAYED VIDEO. ; INPUT AL HAS THE NEW ACTIVE DISPLAY PAGE ; OUTPUT ----------._----- ; --------T-H-E- C-R-T-C---IS---R-ES-E-T--T-O- ---- - DISPLAY --- -T-H-A-T-- PAGE -- -- AH5: MOV ACTIVE_PAGE,AL SAVE ACTIVE PAGE VALUE MOV CX,CRT_LEN GET SAVED LENGTH Of REGEN BUFFER caw CONVERT AL TO WORD PUSH AX SAVE PAGE VALUE MUL ex DISPLAY PAGE TIMES REGEN LENGTH HOV CRT_START,AX SAVE START ADDRESS FOR LATER REQU I REMENTS MOV CX,AX START ADDRESS TO ex MOV BL, CRT_MODE eMP BL,7 00 NOT DIVIDE BY TWO JA AOP_1 ADP . 2 : CX,1 I 2 FOR CRTC HANDLI NG ADP_' : MOV AH, C_STRT_HGH REG fOR START ADDRESS CALL Ml. POP BX RECOVER PAGE VALUE SAL eX,1 *2 FOR WORD OFFSET MOV AX, r BX + OFFSET CURSOR.POSN I GET CURSOR FOR TH I S PAGE CAU M1B SET THE CURSOR POS 1T I ON JMP V.RET SUBTTL INCLUDE VSCROLl. INC SUBTTl VSCROLL. I NC PAGE FLTA LTA: FLTA PROC PUSH MOV SUB lNe eMP POP JHE SUB RET ENOP NEAR AX AH,OH AH,CH AM AH,AL AX LTA AL,AL CHECK FOR SCROLL COUNT LOWER ROW UPPER ROW NUMBER TO SCROLL SAME AS REQUESTED YES, SET TO 0 FOR BLANK CRANK PROC NEAR PUSH BX ASSUME DS:ABSO PUSH OS CALL 005 MOV BX,CRT_COLS POP OS CRANK_A: PUSH ex C MOV CL,DL e SUB CH,CH e PUSH 51 e PUSH 01 C REP MOVSB e POP 01 e POP 51 C AOO SI,8X e AOO DI,BX e POP ex e LOOP CRANK.A e POP BX c RET e CRANK ENOP e e CRANK_4 PROC NEAR e PUSH BX e ASSUME OS: ASSO e PUSH OS e CALL 005 c MOV BX, CRT_COLS e POP OS e CRANK~B; C PUSH ex C MOV CL,OL e SUB CH.CH e PUSH 51 e PUSH 01 e REP MOVSB C POP 01 e POP 51 C SUB SI,BX e SUB OI,BX e POP ex e LOOP CRANK.B e POP BX c RET e CRANK_4 ENDP C C PART_l PROC NEAR C PUSH ox e MOV OH,3 e MOV OL, SE~AOOR e MOV AX,020FH e CALL OUT_OX e POP ox C SUB AX,AX C MOV CL,oL e SUB CH,CH C PUSH 01 c REP STOSB e POP 01 c MOV AL,DH e PUSH ox e MOV OH,3 e MOV DL.SEQ_ADDR e MOV AH,02H e CALL OUT.OX C POP ox C MOV AL,OFFH C MOV CL,OL e PUSH 01 c REP STOSB MOVE ROWS OF PELS UP SAVE DATA SEGMENT SET DATA SEGMENT SAvE MOVE COUtH COLUMN COUNT , CLEAR HIGH BYTE ; SAVE PO INTERS ; MOVE THAT ROW ; RECOVER PO INTERS NEXT ROW NEXT ROW RECOVER ROW COUNT DO MORE RETURN TO CALLER ; MOVE ROWS Of PELS DOWN SAVE DATA SEGMENT SET OATA SEGMENT SAVE MOVE COUNT , COLUMN COUNT ; CLEAR HIGH BYTE ; SAVE PO INTERS ; MOVE THAT ROW ; RECOVER PO INTERS NEXT ROW NEXT ROW RECOVER ROW COUNT DO MORE RETURN TO CALLER fiLL ROW AFTER SCROLL ; SEQUENCER ; MAP MASK ; ALL MAPS ON ; ZERO ; COLUMN COUNT SAVE PO I NT£R CLEAR ONE ROW OF PELS RECOVER PO INTER GET COLOR VALUE SEQUENCER ; MAP MASK ; SET THE COLOR ; ALL BITS ON ; COLUMN COUNT I. SAVE PO INTER ; TURN ON THOSE 81 TS 130 IBM Enhanced Graphics Adapter August 2, 1984 1346 5F 1347 C3 1348 1348 1348 134A 134C 134F 1352 1353 86 03 B2 C4 B8 020F E8 0015 R C3 1353 1353 1 E 1354 1357 1359 135B 135C 1350 135F 1363 1365 1366 E8 OCFE R 8A F7 2A FF 50 52 8B C3 F7 26 0485 R 8B 08 5A 58 1367 1F 1368 1368 E8 131C R 136B 136c 136F 1373 1374 1375 1377 137A 137B 1E E8 ocrE R 03 3[ 044A R 1F 4B 75 Fl E8 1348 R C3 1378 1378 1E 137C 137r 1381 1383 1384 1385 1387 138B 1380 138E [8 OCFE R SA F7 2A FF 50 52 8B C3 F7 26 0485 R 8B 08 5A 58 138F 1 F 1390 1390 E8 131C R 1393 1394 1397 139B 139C 1390 139F 13A2 13A3 lE E8 OCFE R 2B 3E 044A R 1F 4B 75 Fl E8 1348 R C3 13A3 13A3 13A5 13A8 13AB 13AD 13BO 13B2 13B5 1385 13B6 13B8 13BB 1380 138F 13Cl 13C3 13C3 13C6 13C8 13CA 13CC 13CE 13CE 13CF 1301 1301 1304 1306 1308 13DA 1300\ 1300 13E2 13EII 13E7 13EA 13E8 13E8 8A 08 E8 16EB R 80 FC 04 72 08 80 fC 07 74 03 E9 1474 R 53 8B Cl E8 13F2 R 74 31 03 FO 8A E6 2A E3 E8 1432 R 03 F5 03 FO FE CC 75 F5 58 BO 20 E8 143B R 03 fD FE CB 75 F7 E8 OCFE R 80 3E 0449 R 07 74 07 AD 0465 R BA 0308 EE E9 219E R 3403 31104 3405 3406 3407 3408 3409 3410 3411 3412 3413 3414 3415 3416 3417 3418 3419 3420 3421 3422 3423 3424 3425 3426 3427 3428 3429 3430 3431 3432 3433 3434 3435 3436 3437 3438 3439 34110 3441 3442 3443 3444 3445 3446 3447 3448 3449 3450 3451 3452 3453 3454 3455 3456 3457 3458 3459 3460 3461 3462 3463 3464 3465 3466 3467 3466 3469 3470 3471 3472 3473 3474 3475 3476 3477 3478 3479 3460 3461 3482 3483 3484 3485 3486 3487 3488 3489 3490 3491 3492 3493 3494 3495 3496 3497 3498 3499 3500 3501 3502 3503 3504 3505 3506 3507 3506 3509 3510 3511 3512 3513 3514 3515 3516 3517 3518 3519 3520 3521 3522 3523 3524 3525 3526 3527 3528 c ENABLED PLANES c POP 01 RECOVER PO I NT ER c RET RETURN TO CALLER c c ENOP c c PROC MOV NEAR OH,3 c MOV OL, SEQ_AoOR ; SEQUENCER c c c MOV CALL RET AX,020FH OUT_OX I MAP MASK, ALL MAPS : ENABLE THE HAPS ; RETURN TO CALLER cc PART~2 ENDP c c PROC PUSH NEAR OS ; BLANK FOR SCROLL UP ; SAVE DATA SEGMENT c ASSUME DS:ABSO c CALL ODS GET LOW MEMORY SEGMENT c MOV DH,BH ATTRIBUTE FOR BLANK LINE c SUB BH,BH CLEAR HIGH BYTE c PUSH AX SAVE c PUSH OX SAVE BECAUSE OF MULTI PLY c MOV AX,BX ROW COUNT c MUL PO I NTS CHARACTER HE I GHT c MOV BX,AX NET VALUE TO BX c POP OX RECOVER c POP AX c c POP OS c ASSUME DS:NOTHING c S13: c CALL PART_ 1 BLANK OUT ROW I.' I TH COLOR c ASSUME DS:ABSO c PUSH OS SAVE SEGMENT c CALL ODS LOW MEMORY SEGMENT c ADO 01, CRT_COLS NEXT ROW c POP OS RECOVER c c c DEC JNZ CALL BX 513 PART_2 NEXT DO MORE c c RET ENoP RETURN TO CALLER c c 8LN K~ 4 ,PROC c PUSH NEAR OS BLANK FOR SCROLL DOWN SAVE DATA SEGMENT c ASSUME OS:ABSO c CALL ODS GET LOW MEMORY SEGMENT c MOV OH, BH ATTRIBUTE FOR BLANK liNE c SUB BH, BH CLEAR HIGH BYTE c PUSH AX SAVE c PUSH OX SAVE BECAUSE Of MULT I PLY c MOV AX,BX ROW COUNT c MUL PO I NTS CHARACTER HE I GHT c MOV BX,AX NET VALUE TO BX c POP OX RECOVER c POP AX c c POP OS c ASSUME OS: NOTH I NG c c c CALL ASSUME ~~~!B~O BLANK OUT ROW WI TH COLOR c PUSH OS SAVE SEGMENT c CALL ODS LOW MEMORY SEGMENT c c SUB POP g~,CRT_COLS NEXT ROW RECOVER c DEC BX NEXT c c JNZ CALL SP1A3RT"_2 DO MORE c RET RETURN TO CALLER c ENDP c c c SCROLL UP c THIS ROUTINE MOVES A BLOCK OF CHARACTERS UP c ON THE SCREEN c INPUT c (AH) '" CURRENT CRT MODE c (AL) '" NUMBER OF ROWS TO SCROLL c (CX) '" ROW/COLUMN OF UPPER LEfT CORNER C (OX) '" ROW/COLUMN Of LOWER RIGHT CORNER C (BH) '" ATTRI8UTE TO BE USED ON BLANKED LINE C (OS) '" DATA SEGMENT C , (ESI '" REGEN BUffER SEGMENT C ; OUTPUT - C ; C ; --- --N-O-NE------TH-E-R-E-G-E-N--B-U--FF-E-R---IS---H-O-D-I-F-IE--D------------ C ASSUME CS: COOE, DS:ABSO, ES: NOTH I NG C SCROLL_UP PROC NEAR C MOV BL,AL ; SAVE LI NE COUNT IN BL C CALL MK_ES C CMP AH,4 TEST FOR GRAPH ICS MOOE C C JB CMP "AH,7 C C J' JMP "GRAPH I CS_UP HANDLE SEPERATELY TEST FOR BW CARD C Hl: C PUSH BX ~v~O~TL~U!TTR IN BH C MOV AX,CX UPPER LEFT POSITION C CALL ~~ROLL_POS I T ION DO SETUP FOR SCROLL C JZ C ADO SI,AX ~~~=KA~6~~~s C MOV AH,DH # ROWS I N BLOCK C SUB AH,8L # ROWS TO BE MOVED C HZ: ROW.LOOP C CALL N10 MOVE ONE ROW C ADO SI,8P C ADO DI,BP NEXT II NE I N BLOCK C DEC AN COUNT Of LINES TO MOVE C JNZ N2 ROW LOOP C N3: CLEAR. ENTRY C POP AX RECOVER ATTRIBUTE IN AH C MeV AL, · FILL WI TH BLANKS C N4: CLEAR LOOP C C CALL ADO '"ol,BP CLEAR-THE ROW POINT TO NEXT LINE C C C N5: DEC JNZ NBL' II NES TO SCROLL CLEAR LOOP SCROLL_END C CALL ODS C CMP ~~T_MODE, 7 C JE · IS THIS THE B/W CARD ; SK I P THE MODE RESET C MOV AL,CRT.MODE_SET ; GET THE MODE SET C MOV OX,030BH ; ALWAYS SET COLOR CARD C OUT DX,AL C N6: ; VIDEO_RET_HERE C JHP V.RET August 2, 1984 IBM Enhanced Graphics Adapter 131 13EE 13EE 13FO 13F2 8A DE E8 DC 13F2 13F2 F6 06 0487 R 04 13F7 74 12 13F9 13FA 13FC 13FE 13FF 13fF 1400 1402 1404 1406 lu08 1409 140A 1406 140B 140E 1412 1414 1416 1418 141A 141C 141E 1422 1424 1426 142A 142C 1420 142E 1431 1432 52 86 03 82 DA 50 EC AS 08 14 FB BO 25 B2 08 [[ 58 5A E8 1146 R 03 06 044E R 86 f8 86 fO 2601 fE C6 FE C2 32 ED 8B 2E 044A R 03 ED 8A C3 F6 26 044A R 03 CO 06 lF 60 FB 00 C3 1432 1432 1434 1435 1436 1438 1439 143A 1438 8A CA 56 57 f3/ A5 5F 5E C3 1438 143B 1430 143E 1440 1441 1442 6A CA 57 f3/ A6 5f C3 1442 1442 1443 1445 1448 1449 1446 144E 1450 1452 1454 1456 1456 1459 145B 1450 145F 1461 1461 1462 1464 1464 1467 1469 1466 1460 1470 1470 1472 1474 FD 8A 08 E8 16E6 R 53 8B C2 E8 13F2 R 74 20 26 FO 8A E6 2A E3 E8 1432 R 28 F5 2B fD FE CC 75 F5 58 80 20 E8 1438 R 26 FO FE C6 75 F7 E9 13DA R 8A DE E6 ED 3529 3530 3531 3532 3533 3534 3535 3536 3537 3538 3539 3540 3541 3542 3543 3544 3545 3546 3547 3548 3549 3550 3551 3552 3553 3554 3555 3556 3557 3558 3559 3560 3561 3562 3563 3564 3565 3566 3567 3568 3569 3570 3571 3572 3573 3574 3575 3576 3577 3578 3579 3580 3581 3582 3583 3584 3585 3586 3587 3588 3589 3590 3591 3592 3593 3594 3595 3596 3597 3596 3599 3600 3601 3602 3603 3604 3605 3606 3607 3608 3609 3610 3611 3612 3613 3614 3615 3616 3617 3618 3619 3620 3621 3622 3623 3624 3625 3626 3627 3628 3629 3630 3631 3632 3633 3634 3635 3636 3637 3638 3639 3640 3641 3642 3643 3644 3645 3646 3647 3648 3649 3650 3651 3652 3653 3654 C N7: C C C BL,OH N3 ENOP BLANK FI ELO GET ROW COUNT GO CLEAR THAT AREA C C ; ----- HANDLE COMMON SCROLL SET UP HERE C C SCROLL pas I T I ON PROC NEAR C - TEST INFO,4 C JZ N9 C C ; ----- 80X25 COLOR CARD SCROLL C C PUSH OX C MOV DH,3 C MOV DL,OOAH ; COLOR CARD HERE C PUSH AX C N8: ; WAIT_OISP_ENABLE C IN AL,DX C C TEST JZ N.AL,8 WAI T FOR VERT RETRACE WA I T_D I SP_ENABLE C MOV AL,25H C MOV DL, 008H DX=308 C OUT DX,AL TURN OFF VIDEO C POP AX OUR I NG VERT I CAL RETRACE C POP OX C N9: C CALL POSITION CONVERT TO REGEN PO INTER C AOO AX,CRT_START OfFSET OF ACTIVE PAGE C MOV DI,AX TO ADDRESS FOR SCROLL C MOV SI,AX FROM ADDRESS FOR SCROLL C SUR DX,CX OX = DROWS, HCOLS C INC OH C INC Ol INCREMENT fOR 0 ORIGIN C XOR CH,CH ZERO HIGH 6YTE OF COUNT C MOV BP, CRT _COLS NUM OF COLS IN 0 I SPLAY C AOO 8P,BP C MOV AL,BL TIMES 2 FOR ATTR BYTE GET LINE COUNT C MUl BYTE PTR CRT_COLS OFFSET TO FROM ADDRESS C AOO AX,AX *2 fOR ATTRIBUTE BYTE C PUSH ES [STABL I SH ADDRESS I NG C POP OS C CMP BL,O C RET fOR BOTH PO INTERS a MEANS BLANK FIELD RETURN WITH fLAGS S£T C SCROLL_POSITION ENOP C C C C N10 PROC NEAR C MOV CL,DL GET , Of COLS TO MOVE C PUSH 51 C PUSH 01 SAVE START ADDRESS C REP MOVSW MOVE THAT LINE ON SCREEN C POP 01 C POP 51 C RET ; RECOVER ADDRESSES C Nl0 ENDP C C C C N11 C PROC MOV NEAR CL,OL GET 1/ COLUMNS TO CLEAR C PUSH 01 C REP STOSW STORE THE FILL CHARACTER C POP 01 C RET C ENOP C C C SCROLL DOWN C THIS ROUTINE MOVES THE CHARACTERS WITHIN A C DEFINED BLOCK DOWN ON THE SCREEN, FILLING THE C TOP LINES WITH A DEFINED CHARACTER C INPUT C {AH} = CURRENT CRT MODE C C I~~l ~ ~~~~~R L~~T L~~~~E~OO~=~~fON C (OX) ::::: LOWER RIGHT CORNER OF REGION C (BH ) FILL CHARACTER C (DS) ::::: DATA SEGMENT C (ES) '" REGEN SEGMENT C OUTPUT --- C C -- -----N-O-N-E-- -----SCRE-E-N---I-S--S-CR-O--LL-E-D----------- -------- ---- C SCROLL DOWN C - STD PROC NEAR SCROLL DOWN C MOV BL,AL LINE COUNT TO BL C CALL MK ES C PUSH RX SAVE ATTRIBUTE IN BH C MOV AX,DX C CALL SCROLL pas I T I ON C Jl N16 LOWER RIGHT CORNER GET REGEN LOCAT I ON C SUR SI,AX C MOV AH, DH C SUR AH,BL SI IS FROM ADDRESS GET TOTAL 1/ ROWS COUNT TO MOVE I N SCROLL C N13: C CAll .,0 ; MOVE ONE ROW C SUR SI, BP C SUR DI, BP C C OEC JNZ A.,H3 c N14: C POP AX C MOV AL, · ; RECOVER ATTRIBUTE IN AH C N15: C CALL Nl1 CLEAR ONE ROW C SUR DI,BP GO TO NEXT ROW C DEC Rl C JNZ N15 C JMP N5 C N16: C C MOV JMP .,.BL,DH C SCROLL_DOWN [NOP C C C SCROLL UP C THIS ROUTINE SCROLLS UP THE INFORMATION ON THE CRT C ENTRY C CH,CL ::::: UPPER LEFT CORNER OF REGION TO SCROLL C DH,DL", LOWER RIGHT CORNER OF REGION TO SCROLL C C = BOTH OF THE ABOVE ARE IN CHARACTER POSITIONS BH FILL VALUE FOR BLANKED II NES C AL :: , LINES TO SCROLL (AL='O MEANS BLANK THE ENT I RE C FI ELO) C OS = DATA SEGMENT 132 IBM Enhanced Graphics Adapter August 2, 1984 1474 1474 8A 08 1476 88 Cl 1478 E8 16A7 R 147B 8B F8 ~ 1470 147F 1483 2B 01 81 C2 0101 DO E6 1485 DO [6 1487 80 3E 0449 R 06 148C 73 04 148E DO [2 1490 01 E1 1492 1492 1493 1494 1496 1498 149A 149C 149E 14AO 14A2 14A4 14A6 14A8 06 1F 2A ED DO E3 DO E3 74 20 8A C3 B4 50 F6 E4 8B F7 03 FO 8A E6 2A E3 14M 14AA 14AD 14B1 1485 14B7 E8 14CO R 81 EE 1 FBO 81 EF 1 FaD FE CC 75 Fl 14B9 14B9 14BB ~ ~~~i 14C4 14C6 14C9 14C9 8A C7 ;1 ~!E~F:O 75 F5 E9 219E R 8A DE 14CB E8 EC 14CO t4CO t4CO 14CF 1400 1401 1403 1404 1405 1409 1400 140E 140F 14El 14E3 14E4 14E5 14E6 8A CA 56 57 F3/ A4 SF 5E 81 C6 2000 81 C7 2000 56 57 8A CA F3/ A4 SF 5E C3 14E6 14E6 14E8 14E9 14EB 14EC 14FO 14F1 14F3 14F5 14F6 14f7 8A CA 57 F3/ AA SF 81 C7 2000 57 8A CA F3/ AA SF C3 14F7 14F7 ~~t~~ 1500 1503 1504 1505 1507 1508 1509 1509 150A 50 i! ~~F~4:7 R 80 E4 60 1F 58 74 02 F9 C3 F8 C3 3655 3656 3657 3658 3659 3660 3661 3662 3663 3664 3665 3666 3667 3668 3669 3670 3671 3672 3673 3674 3675 3676 3677 3678 3679 3680 3681 3682 3683 3684 3685 3686 3687 3688 3689 3690 3691 3692 3693 3694 3695 3696 3697 3698 3699 3700 3701 3702 3703 3704 3705 3706 3707 3708 3709 3710 3711 3712 3713 3714 3715 3716 3717 3718 3719 3720 3721 3722 3723 3724 3725 3726 3727 3728 3729 3730 3731 3732 3733 3734 3735 3736 3737 3738 3739 3740 314t 3742 3743 3744 3745 3146 3747 3748 3749 3750 3751 3752 3753 3754 3155 3756 3757 3758 3759 3760 3761 3762 3763 3764 3765 3766 3767 3768 3769 3770 3771 3772 3773 3774 3775 3776 3777 3778 3779 3180 e ES = REGEN SEGMENT e e ; EXIT NOTHING, THE SCREEN IS SCROLLED ee bAAP~~~S-U;-----;R;;C----~EAR------------------------------------- e MOV BL, AL · SAVE LINE COUNT IN BL e MOV AX, CX ; GET UPPER LEFT pas iliON e ; INTO AX REG e e ;----- USE CHARACTER SUBROUTINE FOR POSITIONING e ; ---- ADDRESS RETURNED IS MULTI PL I ED BY 2 FROM CORRECT VALUE e e CALL e MOY SAVE RESULT AS e DESTINATION ADDRESS e e ;----- DETERMINE SIZE OF WIN~OW e e SUB Ox, ex e AOO OX,101H ADJUST YALUES e SAL OH,l MULTIPLY # ROWS BY 4 e SINCE 8 VERT DOTS/CHAR e SAL DH,1 AND EVEN/ODD ROWS c c ;----- DETERMINE CRT MODE c c eMP TEST FOR MEDIUM RES c JNe F I NO_SOURCE c e ;----- MEDIUM RES UP c c SAL OL,l · 2 c SAL 01,1 SINCE 2 BYTES/CHAR c c ;----- DETERMINE THE SOURCE ADDRESS IN THE BUFFER c C R7: , f I NO_SOURCE e PUSH ES ; GET SEGMENTS BOTH e POP OS · POINTING TO REGEN e SUB CH,CH ; 0 TO HIGH OF COUNT REG e SAL BL,l ; NUMBER OF LI NES *4 e SAL BL,l e e e JZ MOY MOY Rll AL, BL AH,80 IF 0, BLANK ENTIRE FIELD NUMBER OF LINES IN AL 80 BYTES/ROW e MUl AH OFFSET TO SOURCE e MOY SI,OI SET UP SOURCE e AOO SI,AX ADO I N OFFSET TO IT e MOY AH,OH NUMBER OF ROWS IN FIELD e e SUB AH,BL DETERMINE NUMBER TO MOVE ee ;----- LOOP THROUGH, MOVING ONE ROW AT A TIME, BOTH EVEN AND ODD FIELDS C R8: e CALL R17 e e e c SUB S I, 2000H-80 SUB OI,2000H-80 OEC AH JNZ R8 c c ;----- fiLL IN THE VACATED UNE(S) e NUMBER OF ROWS TO MOVE CONTINUE TILL ALL MOVED C R9: CLEAR_ENTRY RlO: MOY AL,BH ; ATTRIBUTE TO FILL WITH CALL R18 ; CLEAR THAT ROW SUB 0 I ,2000H-80 POINT TO NEXT LINE DEC BL NUMBER OF LINES TO FILL JNZ Rl0 CLEAR_LOOP JHP V_RET Rll: BLANK FIELD MOV BL,OH SET BLANK COUNT TO ; EVERYTHING IN FIELD JMP GRAPH ICS_UP R9 ENOP ; CLEAR THE F I ELO ;----- ROUTINE TO MOVE ONE ROW OF INFORMATION R17 PROC NEAR MOV CL,OL PUSH SI PUSH 0 I REP MOYSB POP 01 POP SI ADD S I, 2000H ADD 0 I ,2000H PUSH S I PUSH 0 I MOV CL,OL REP MOYSB POP 01 POP 51 RET R17 ENDP ; NUM OF BYTES I N THE ROW ; SAVE POINTERS ; MOVE THE EVEN F I ELO ; POINT TO THE ODD FIELD ; SAVE THE PO INTERS ; COUNT BACK ; MOVE THE ODD FIELD , POINTERS BACK ; RETURN TO CALLER ; ---- CLEAR A SINGLE ROW R,8 PROC NEAR MOV CL,OL PUSH 0 I REP STOSB POP 01 ADD 0 I ,2000H PUSH 01 HOV CL,DL REP STOSB POP 01 RET R18 ENDP NUMBER OF BYTES IN FIELD SAVE PO I NTfR STORE THE NEW YALUE PO INTER BACK POINT TO 000 FIELD FILL THE ODD FIELD RETURN TO CALLER MEM_DET PROC ASSUME PUSH PUSH CALL MOY ANO POP POP JZ 51e RET MIN: ele RET NEAR OS:ABSO AX OS DDS AH, INFO AH,060H OS AX MI. August 2, 1984 IBM Enhanced Graphics Adapter 133 150B 1508 1508 E9 13A3 R 150E 150E 1511 1515 1518 151A 1510 151F E8 1201 R 8A 26 0449 R 80 FC 07 76 F1 80 FC 00 13 11 E9 219E R 1522 1522 1525 1528 1528 1520 1530 1532 1535 1535 1536 SA AOOO BD 0511 80 FC OF 12 06 E8 14f1 R 13 03 BD 0501 C3 1536 1536 52 1537 E8 1522 R 153A 153C 1530 153F 1541 1542 1546 1549 154A 154C 154E 1552 1554 1556 1557 1558 155F 1561 6E C2 5A 8A 08 8B Cl 53 8A 3E 0462 R E8 16C6 R 5B 8B F8 28 01 81 C2 0101 2A E4 SA C3 52 F7 26 0485 R F7 26 044A R 88 F7 03 FO 1563 1564 1565 1566 1568 15M 156C 156E 06 1f 5A OA DB 74 3F 8A CE 2A CB 2A ED 1570 1571 1574 1575 1576 1578 157C 157E 157F 1580 1E E8 OCFE R 50 52 88 C1 F7 26 0485 R 88 C8 5A " 1f 1581 1582 1584 1586 1588 158B 158D 1590 1593 1594 52 8B C5 B6 03 B2 CE E8 OD15 R B2 C4 B8 020F E8 OD15 R 5' [8 12EO R 1597 1598 1599 1598 1590 159F 15A2 15A3 '5A3 15A6 15A9 15A9 15AB 15AD 52 40 88 C5 86 03 82 CE E8 0015 R 5A E8 1353 R E9 219E R 6A DE EB F6 1SAO 15AD [9 1442 R 15BO 15BO 15B3 15B7 15BA 15BC 15BF E8 1201 R 8A 26 0449 R 80 FC 03 76 Fl 80 FC 07 74 EC 15Cl 15C4 15C6 15C9 15CB 15CD 15CF 15CF 80 FC 00 13 OC 80 FC 06 77 04 84 07 CO 42 E9 219E R 1502 1502 FO 3781 3782 3783 3784 3785 3786 3787 3788 3789 3790 3191 3192 3193 3794 3795 3796 3797 3196 3199 3600 3801 3602 3603 3604 3605 3806 3807 3808 3809 3810 3611 3612 3613 3614 3815 3616 3811 3818 3819 3820 3821 3822 3823 3824 3825 3626 3627 3628 3829 3630 3831 3832 3833 3834 3835 3836 3837 3838 3839 3840 3841 3842 3843 3844 3845 3846 3847 3848 3849 3650 3851 3652 3653 3854 3855 3656 3657 3858 3859 3860 3861 3862 3863 3864 3865 3866 3667 3868 3869 3870 3871 3872 3873 3874 3875 3876 3877 3878 3879 3880 3881 3882 3883 3884 3885 3666 3887 3888 3889 3890 3891 3892 3893 3694 3895 3896 3697 3898 3899 3900 3901 3902 3903 3904 3905 3906 C MEM_DEl ENDP C C ;----- SCROll ACTIVE PAGE UP C C SC_2: C JMP SCROl~UP C C AH6: C ASSUME OS:ABSO C CAll FlTA C MOV AH,CRT_MODE C CMP AH,01H C JBE SC 2 C CMP AH--;-OOH C JAE GRAPHICS_UP_2 C JMP V_R£T C C GR_ST_1 PROC NEAR C MOV OX,OAOOOH C MOV BP,0511H C CMP AH,OFH C JB VVl C CAll MEM_OET e JNC Wl C MOV BP,0501H C VVl : C RET C GR_ST_l ENOP C C GRAPHICS UP 2 PROC NEAR e ASSUME DS:ABSO C PUSH OX C CAll GR_ST_l C SRlOAO ES C_ MOV ES,DX C POP OX e MOV 8l,Al C MOV AX,CX e PUSH BX e MOV BH,ACTIVE_PAGE C CALL GRX_PSN C POP BX C MOV DI,AX e SUB DX,CX C ADD OX,0101H C SUB AH,AH C MOV AL,BL C PUSH OX C MUL PO I NTS C MUL CRT COLS C MOV 51,01 C ADD SI,AX C ASSUME OS:NOTHING e PUSH ES e POP OS C POP OX C OR BL, BL C JZ AR9 C MOV Cl,OH C SUB CL, BL C SUB CH,CH C e ASSUME DS:ABSO e PUSH OS C CALL ODS C PUSH AX C PUSH OX C MOV AX,CX e MUL POINTS e MOV CX,AX e POP OX C POP AX e ASSUME OS:NOTHING C POP OS e e PUSH OX C MOV AX,BP C MOV OH,3 e MOV DL,GRAPH_ADDR C CALL OUT_DX C MOV OL,SEQ_ADOR C MOV AX,020FH C CALL OUT _DX e POP OX e CALL CRANK C C PUSH OX C DEC BP C MOV AX,BP C MOV DH,3 C MOV DL, GRAPH_ADOR C CALL OUT_DX C POP OX C ARlO: e CALL 8LNK_3 C JMP V_RET e AR9: C MOV BL,DH e JMP C GRAPH I CS_UP_2 ARlO [NDP e e ;~--.- SCROLL ACTIVE DISPLAY PAGE DOWN e e SC_3: e J"P SCROLL_DOWN C e AH7: C ASSUME OS:ABSO C CALL FLTA c MOV AH,CRT_MODE C eMP AH,03H e JBE SC_3 C eMP AH,07H C JE SC_3 e C CMP AH,OOH e JAE GRAPH I CS_ON_2 C eMP AH,06H C JA M_O e e e M_O: MOV 'NT AH,07H 4," e JMP V_RET e sro- C GRAPH I CS DN 2 e PROC NEAR ; GET CURRENT MODE ; ANY OF THE OLD MODES ; NEW GRAPH ICS MODES ; NOT A RECOGNIZED MODE ; REGEN BUFFER ; GRAPH I CS WR I TE MODE ; GRAPHICS WRITE MODE ,.-...... SET SEGMENT, WR I TE MODE SET REGEN NUMBER OF LINES UPPER LEFT CORNER ; ACTIVE PAGE FOR SCROLL ; ADDRESS I N REGEN ; SET PO INTER ; DETERMINE WINDOW ; ADJUST ; ZERO HIGH BYTE ; LINE COUNT ; BYTES PER CHARACTER ; COLUMNS ; SET UP SOURCE INDEX ; ADJUST L I HE COUNT ; lOW MEMORY SEGMENT ; BYTES PER CHAR ; SET THE COUNT GRAPH ICS SEQUENCER ENABLE ALL MAPS SCROLL THE SCREEN 8LANK ENTIRE WINDOW ; OLD COLOR ALPHA MONOCHROME ALPHA NEW GRAPH ICS MODES OLD GRAPH I CS MODES DIRECTION TO DECREMENT 134 IBM Enhanced Graphics Adapter August 2, 1984 1503 8A 08 1505 52 1506 £8 1522 R 1509 1506 150C 150[ 15EO 15E1 15E5 15E6 15E9 15EO 15Ef 15Fl 15F5 15F7 15F9 15FA 15FE 1602 1604 8E C2 5A 88 C2 FE C4 53 8A 3£ 0462 R £8 16c6 R 5B 28 06 044A R BS Fe 28 01 81 C2 0101 2A E4 SA C3 52 F7 26 0485 R F7 26 044A R 88 F7 2S fO 1606 1607 1608 1609 160B 1600 160F 1611 06 1 F 5A OA DB 74 40 8A C£ 2A CD 2A ED 1613 1614 1617 1618 1619 1618 161F 1621 1622 1 E £8 OCFE R 50 52 88 Cl f7 26 0485 R 8B C8 5A 58 1623 1 F 1624 1625 1627 1629 162B 162E 1630 1633 1636 1637 52 8B C5 B6 03 82 CE E8 0015 R B2 C4 B8 020f E8 0015 R 5A E8 12FE R 163A. 163B 163C 163E 1640 1642 1645 1646 1646 1649 16ilA, 1640 1640 16qF 1651 52 40 8B C5 86 03 B2 CE E8 0015 R 5A E8 137B R FC E9 219E R BA DE EB F5 1651 1651 1653 1655 1657 1659 1650 165F 1661 1661 1665 1667 1667 166A. 166C 1660 SA CF 32 ED 88 f1 01 E6 8B 84 0450 R 33 DB E3 06 03 lE Oq4C R E2 FA E8 1146 R 03 DB C3 1660 1660 1670 1672 1673 1676 1676 1678 167A 80 £3 03 8A C3 51 89 0003 DO EO DO OA oEOs 167C 167E 1680 1681 1682 E2 F8 8A fa 59 C3 3907 3908 3909 3910 3911 3912 3913 3914 3915 3916 3917 3916 3919 3920 3921 3922 3923 3924 3925 3926 3927 3928 3929 3930 3931 3932 3933 393q 3935 3936 3937 3938 3939 3940 3941 3942 3943 3944 3945 3946 3947 3948 3949 3950 3951 3952 3953 3954 3955 3956 3957 3956 3959 3960 3961 3962 3963 3964 3965 3966 3967 3968 3969 3970 3971 3972 3973 3974 3975 3976 3977 3978 3979 3980 3961 3962 3963 3964 3985 3966 3987 3988 3989 3990 3991 3992 3993 3994 3995 3996 3997 3996 3999 4000 4001 4002 4003 4004 4005 4006 4007 4008 4009 4010 4011 4012 4013 4014 4015 4016 4017 4018 4019 4020 4021 4022 4023 4024 4025 4026 4027 il028 4029 4030 4031 4032 MOV PUSH CALL SRLOAD c+ MOV c POP c MOV c INC c PUSH c c MOV CALL c pop c c SUB MOV c SUB C AOO c SUB c MOV c c c c c PUSH MUL MUL MOV SUB c ASSUME c PUSH c POP c POP C OR c c c JZ MOV SUB c SUB C c ASSUME c PUSH c CALL C PUSH c PUSH c MOV C MUL C MOV C POP C POP C ASSUME C POP C C PUSH C MOV C MOV C MOV C CALL C MOV C MOY C CALL C POP C CALL C C PUSH C OEC C MOV C MOV C MOV C CALL C POP C DXR10: C CALL C CLO C JMP C OXR9: c MOV c JMP c GRAPHICS_Ofe2 c c SUBTTl BL,AL OX ~~_ST_l ES,OX OX AX,OX AH BX BH, ACT I VE_PAGE GRX PSN BX AX,CRT_COLS OI,AX OX,CX OX,0101H AH,AH AL,BL OX PO f NTS CRT_GOLS SI,OI SI,AX DS:NOTH~NG ES OS OX BL, Bl OXR9 el,OH CL,BL CH,CH DS:ABSO OS OOS AX OX AX,CX PO I NTS CX,AX OX AX DS;NOTHING OS OX AX,SP OH,3 DL, GRAPH_ADOR OUT.OX Ol, SEQ.AODR AX,020FH OUT.OX OX CRANK.4 OX BP AX,BP DH,3 g~;- G~~PH_ADDR OX BLNK.il V.RET BL,OH OXR10 ENOP II NE COUNT SAVE LOWER R I CHT SET REGEN SEGMENT ; MOV CHAR ROW UP BY ONE ; ADDRESS IN RECEN ; ONE SCAN OVERSHOOT CALCULATE WINDOW ADJUST COUNT BYTES PER CHAR BYTES PER ROW SET OS TO THE REGEN SEGMENT SCROLL COUNT BLANK [NT I RE WINDOW ; BYTES PER CHAR GRAPHICS SEQUENCER ENABLE ALL MAPS SCROLL THE SCREEN ; BLAN~ ENT I RE WINDOW c c INCLUDE VGRW.INC SUBTTL VCRW. INC c PAGE c c ASSUME DS:ABSO c FINO_POSITION PROG NEAR c MOV CL,BH oI SPLAY PAGE TO ex C XOR CH,CH C MeV SI,CX MOVE TO SI FOR INDEX C SAL SI,l * 2 fOR WORD OFFSET C MOV AX, [S I+ OFfSET CURSOR.POSN I ROW/COLUMN OF THAT PAGE C XOR BX,BX SET START ADDRESS TO 0 C C P4: C C JC><Z AOD LOOP . P5 BX,CRT_LEN NO_PAGE PAGE LOOP LENGTH OF BUFFER C P5: NO_PAGE C CALL POSITION OETERMINE LOC IN REGEN C AOO BX,AX C RET ADD TO START OF REGEN C FIND_POSITION ENOP C C : ----------------------------------------------.-------- C EXPAND_MED.COLOR C TH I S ROUTI NE EXPANDS THE LOW 2 BI15 IN BL TO C FILL THE ENTIRE BX REGISTER C ENTRY C BL = COLOR TO BE USED ( LOW 2 BITS ) C EXIT C ; C r~Lg~L~~TIO)BE USED' 6 REPLICATIONS Of THE : C ~~9-----PR~~~---NE;;'R------------------------------------- C C C A_ND BL,3 ~~ ISOLATE THE COLOR BITS w"m~ C PUSH CX SAVE REGISTER C MOV CX,3 NUMBER OF TIMES C S20: C SAL AL,l C SAL AL,1 LEfT SHI fT BY 2 C OR BL,AL ANOTHER COLOR VERSION C INTO BL C LOOP S20 fiLL All Of 6L C MOV BH,BL C POP cx fiLL UPPER PORTION REGI STER BACK C RET ALL DOPiE - - -: - -::-:::::::--- C 819 £HOP C C C ~,' -EX;;;'ND;=~~E~~~~~:: ~::~: ~:~ ~~: ~:-:: C ALL Of THE BITS, TURNING THE 8 BITS INTO August 2, 1984 IBM Enhanced Graphics Adapter 135 1662 1682 1683 1684 1685 1687 168A 16M 168C 168E 1690 1692 1694 1696 1698 1691.. 52 51 53 2B 02 B9 0001 8B 08 23 09 OB 03 01 EO 01 E1 8B 08 23 09 OB 03 01 E1 169C 13 EC 169E 16M 161..1 16"'2. 161..3 16A4 8B C2 5B 59 51.. C3 161..4 16A4 16M 16A1 161..8 16M 1Me 1680 1682 16B4 16B6 1688 1689 1681.. 1..1 0450 R 53 8B 08 81.. C4 F6 26 0441.. R 01 EO 01 EO 2A FF 03 C3 58 C3 1681.. 16BA 16BB 1680 16BF 16C1 16C5 53 81.. OF 21.. FF 01 E3 8B 87 0450 R 5B 16C6 16C6 16C7 16C8 16C9 16CB 16CD 16CF 16D1 16D5 16D9 160B 160D 16E1 16E3 16E3 16[5 16E7 16E7 16E8 16E9 16EA 16E8 53 51 52 2A ED 8A CF 8B 08 81.. C4 F6 26 04.41.. R F7 26 0485 R 21.. FF 03 C3 8B 1E 044C R E3 04 03 C3 E2 FC 51.. 59 58 C3 16EB 16EB 16EE 1M2 16F6 16F9 16fB 16FE 16fE 1700 BE 8800 BB 3E 0410 R 81 E7 0030 83 FF 30 75 03 BE BOOO BE C6 C3 1701 1701 1704 1707 E8 16E8 R E8 1651 R 8B F3 1709 88 16 0463 R 1700 63 C2 06 1710 F6 06 0487 R 04 4033 40" 4035 4036 4037 4038 4039 4040 4041 4042 4043 4044 401t5 4046 4047 4048 4049 4050 4051 4052 4053 4054 4055 4056 4057 4058 4059 4060 4061 4062 4063 4064 4065 4066 4067 4068 4069 4070 4071 4072 4073 4014 4075 4076 4077 4078 4079 4080 4081 4082 4083 4084 4085 4086 4087 4088 4089 4090 4091 4092 4093 4094 4095 4096 4097 4098 4099 4100 4101 4102 4103 4104 4105 4106 4107 4108 4109 4110 4111 4112 4113 4114 4115 4116 4117 4118 4119 4120 4121 4122 4123 4124 4125 4126 4127 4128 4129 4130 4131 4132 4133 4134 4135 4136 4137 4138 4139 4140 4141 4142 4143 4144 4145 4146 4147 4148 4149 4150 4151 4152 4153 4154 4155 4156 4157 4156 c c c 16 BITS. THE RESULT IS LEFT IN AX ~2~-----;ROC----~~A.R------------------------------------- c c PUSH OX PUSH ex SAVE REG I STERS c PUSH BX c SUB DX,OX RESULT REGISTER c MOV c S22: CX,1 MASK REGISTER c c c c MDV BX,AX AND BX,CX OR DX,BX SHL AX,1 BASE I NTO TEMP USE MASK TO EXTRACT BIT PUT I NTO RESULT REG I 5TER c SHL CX,1 5H I FT BASE AND MASK BY 1 c MOV BX,AX BASE TO TEMP c c c c AND BX,ex OR DX,BX SHL CX,1 c JHe S22 EXTRACT THE SAME BIT PUT I NTO RESULT SHIFT ONLY MASK NOW, MOVING TO NEXT BASE USE MASK BIT COMING OUT c TO TERMINATE c MOV AX,OX RESULT TO PARM REG I STER c c POP BX POP ex RECOVER REGISTERS c c POP ox RET ALL DONE C S21 [NDP C C S26 PRoe NEAR C MOV AA, CURSOR_POSN GET CURRENT CURSOR e GRAPH_POSN LABEL NEAR e PUSH BX SAVE REG I STER c MOV BX,AX c MOV AL,AH SAVE A COPY OF CURSOR GET ROWS TO AL c MUL BYT£ PTR CRT eOLS MULTI PLY BY BYTES/COLUMN c SHL AX,1 - *4 SINCE 4 ROWS/BYTE c c c SHL SUB ADD AX,' BH,BH AX,BX I SOLATE COLUMN VALUE OETERMINE OFF5ET c c PDP BX RET RECOVER PO INTER ALL DONE e S26 ENDP c c e GR_CUR c ENTRY c c BH '" 0 I SPLAY PAGE EXIT c AX:: CURSOR POSITION FOR REQUESTED PAGE c c c ASSUME os: ABSO e PUSH BX SAVE REG I STER c MOV aL,BH ; GET TO LOW BYTE c SUB BH,BH ZERO HIGH BYTE c SAL BX,1 *2 FOR WORD COUNT c MOV AX, [ax + OffSET CURSOR_POSN I CURSOR, REQUESTED PAGE c POP BX RECOVER REG I STER c c GRX PSN c ENTRY c AX '" CURSOR POSITION IN DESIRED PAGE c 8H :: DES I RED PAGE c EXIT g C GRX:;;N- APXRO'"; ------- --- BYTE OffSET INTO ----NE~R R-E-C-E-N- ------- --------.-- ------ ----- C PUSH C PUSH C PUSH C SUB C MOV C MOV C MOV C MUL C MUL C SUB C ADD C MOV C JCXZ C C ADO C LOOP C C POP POP POP RET GRX_PSN ENOP BX CX OX CH,CH CL, BH BX,AX AL,AH BYTE PTR CRT_COLS POINTS BH,BH AX, BX BX, CRT _LEN GP_2 AX,BX GP_3 OX CX BX SAVE SAVE SAVE ZERO PAGE NUMBER ROW, COLUMN ROW * ROW COLUMNS/ROW BYTES PER ROW ZERO TO LEAVE COL VALUE ADD I N COLUMN PAGE LENGTH NO PAGE OFFSET AOD I N THE PAGE LENGTH DO FOR NUMBER OF PAGES RECOVER RECOVER RECOVER MOV SI,OB800H MOV 01, EQUI P_FLAG C AND DI,030H C CNP DI,030H C JHE P6 A e MOV 51-:-0BOOOH C P6_A: C MOV C RET ES, SI C C ;-READ:;C=C~~R~~T- --. -------~~-- ---~------ --------.---- -~ C C THIS ROUTINE READS THE ATTRIBUTE AND CHARACTER : C AT THE CURRENT CURSOR POSITION AND RETURNS THEM: c , TO THE CALLER e ; INPUT C (AH) :. CURRENT CRT MODE C (BH) = DISPLAY PAGE ( ALPHA MODES ONLY) c (OS) = DATA SEGMENT e (ES) = RECEN SEGMENT = e e :,:OUTPUT (AL) CHAR READ e (AH) = ATTRIBUTE READ C C ASSUME CS: CODE, OS: ABSO, ES: NOTH I NG C READ_AC_CURRENT PROC NEAR C e c CALL :~L HK ES ~:~~;:t0SITI0N c e NOV OX, ADDR_6845 ; ADDRESSING IN 51 GET BASE ADDRESS C ADD DX,6 c POINT AT STATUS PORT C c TEST INFO,4 136 mM Enhanced Graphics Adapter August 2, 1984 1715 06 1716 1F 1717 74 08 1719 1719 171A 171C 171E 171F 171 F 1720 1722 1724 1724 172' 1728 EC AS 01 75 F8 FA EC A8 01 74 FB AD E9 219E R 1728 1728 172A 1720 8A 24 8A 44 01 89 COOO 1730 1732 1732 1734 82 00 85 Cl F8 1735 1737 1738 1738 173A 1He 74 01 F9 DO 02 01 E9 01 E9 173E 73 F2 17"'0 1743 1744 1745 88 56 00 45 C3 1745 1745 1748 174B 1740 E8 16EB R E8 16A4 R 8B fO 83 EC 08 1750 8B EC 1752 1757 1758 1759 80 3E 0449 R 06 06 1F 72 1A 175B 1750 1750 17SF 1762 1763 1767 176A 176B 176E 1770 1772 B6 04 8A 04 88 46 00 45 8A 84 2000 88 46 00 45 83 C6 50 FE CE 75 EB E8 17 90 1775 1775 1177 1779 1779 01 E6 B6 04 E8 1728 R 171C 1780 1783 1187 1789 81 C6 2000 E8 1728 R 81 EE HBO fE CE 75 EE 178B 178B l78C 178F 1793 1794 1E E8 OCFE R C4 3E 010C R 1 F 83 ED 08 1791 1799 179A 179C 179C 1790 179E HAl l7Al HAl 68 F5 fC 80 00 16 H 6A 0060 56 57 4159 4160 4161 4162 4163 4164 4165 4166 4167 4166 4169 4170 4171 4172 4173 4174 4175 4176 4177 4118 4179 4180 4181 4182 4183 4184 4185 4166 4167 4188 4189 4190 4191 4192 4193 4194 4195 4196 4197 4198 4199 4200 4201 4202 4203 4204 4205 4206 4207 4208 4209 4210 4211 4212 4213 4214 4215 4216 4217 4218 4219 4220 4221 4222 4223 4224 4225 4226 4227 4228 4229 4230 4231 4232 4233 4234 4235 4236 4237 4238 4239 4240 4241 4242 4243 4244 4245 4246 4247 4248 4249 4250 4251 4252 4253 4254 4255 4256 4257 4258 4259 4260 4261 4262 4263 4264 4265 4266 4267 4268 4269 4270 4271 4272 4273 4274 4275 4276 4277 4276 4279 4280 4281 4282 4283 4284 c PUSH ES C POP OS SEGMENT FOR QUICK ACCESS C C JZ PlA C C ;-----'WAIT FOR HORIZONTAL RETRACE C C P2: WA I T FOR RETRACE LOW C C C C C P3: IN TEST JNZ CLI AL,DJ:< AL,1 P2 GET STATUS I S HaRZ RETRACE LOW WAIT UNTIL IT IS NO MORE INTERRUPTS WAIT FOR RETRACE HIGH C IN AL,DX C TEST AL,1 C JZ· P3 GET STATUS IS IT HIGH WAIT UNTIL IT IS C P3A: C LODSW ; GET THE CHAR/ATTR C JMP V RET C READ_AC_CURRENT EiiDP C C C ;-MED=RE~~~~~~~:~::~-:: ::-~:::-:-::~::-::::-~:~-:~:~:--- C C BUFFER, COMPARE AGAINST THE CURRENT FOREGROUND C COLOR, AND PLACE THE CORRESPONDING ON/OFF BIT C PATTERN INTO THE CURRENT POSITION IN THE SAVE C AREA C ENTRY C S I, os == PO I NTER TO REGEN AREA OF INTEREST C BX == EXPANDED fOREGROUND COLOR C BP "" PO I NTER TO SAVE AREA C EXIT g {;;; C ep I S I NCREMENT -----PROC----N~AR--- -AF-T-E-R- -SA-VE---- ----------- -- --- g =g~ :~:1~:111 g~i ~~~g~DB~~iE C C C C S24: e C C g MOV MOV TEST CLC ~~C eX,DeOOOH DL,D AX, CX S25 2 BIT MASK TO TEST THE ENTRIES RESULT REGISTER 15TH I S BACKGROUND? CLEAR CARRY I N HOPES THAT IT IS ~rs~r T! Ts6Ss~~C~~:~~ND c S25: C RCL DL,1 MOVE THAT BIT INTO THE C SHR CX,' C SHR CX,1 C C JNC S24 C C MOV (BP I. DL C INC BP RESULT MOVE THE MASK TO THE RIGHT BY 2 BITS DO IT AGAI N I F MASK DIDN'T FALL OUT STORE RESULT I N SAVE ADJUST POINTER C C S23 C RET ENDP ALL DONE C C GRAPHICS READ C CALL C CALL PROC MK ES 52. NEAR ; CONVERTED TO OFFSET C MOV SI,AX SAVE IN SI C SUB SP,8 ALLOCATE SPACE TO SAVE C THE READ CODE POINT C MOV SP, SP PO I NTER TO SAVE AREA C C ;----- DETERMINE GRAPHICS MODES C C CMP CRT_MO[)E,6 C PUSH ES C POP OS POINT TO REGEN SEGMENT C JC S13P MED I UM RESOLUT 1ON C C ;----- HIGH RESOLUTION READ C C ;----- GET VALUES FROM REGEN BUFFER AND CONVERT TO CODE POINT C C MOV OH,4 C S12P: C MOV AL,(SI J C MOV (BP],AL C INC BP C MOV AL, (S I+2000H I C MOV IBPJ.AL C INC BP C ADD 51,80 C OEC OH C JNZ S12P C JMP S15P C C C ; ---- MED I UM RESOLUT I ON READ C C S13P: C SAL SI,1 C MOV C S14P: DH,4 C CALL 523 C C ADD SI,2aaaH C CALL 523 C SUB S I ,2000H-BO C DEC DH C JNZ S14P C C ;----- SAVE AREA HAS CHARACTER IN IT, MATCH IT C C S15P: C PUSH OS C CALL DOS C LES 01, GRX_SET C POP OS C SUB BP,8 C C MOV SI, BP C CLO C MOV AL,O C S16P: C PUSH 55 C POP OS C MOV DX,128 C S17P: C PUSH 51 C PUSH 01 l NUMBER OF PASSES GET FIRST BYTE SAVE I N STORAGE AREA NEXT LOCATION GET LOWER REGION BYTE ADJ UST AND STORE POINTER INTO REGEN LOOP CONTROL DO IT SOME MORE GO MATCH THE SAVED CODE POINTS MED_RES_READ OFFSET*2, 2 BYTES/CHAR NUMBER OF PASSES GET PA I R BYTES INTO SINGLE SAVE GO TO LOWER REGION GET THIS PAIR INTO SAVE ADJUST POINTER BACK INTO UPPER KEEP GOING UNTIL 8 DONE ESTABLISH ADDRESSING ; ADJUST POINTER TO ; BEG I NN I NG OF SAVE AREA ENSURE 0 I RECT I ON CURRENT CODE PO I NT BE I Ne. MATCHED ADDRESS I HG TO STACK FOR THE STR I NG COMPARE NUMBER TO TEST AGA I NST SAVE SAVE AREA PO INTER SAVE CODE POINTER August 2, 1984 IBM Enhanced Graphics Adapter 137 17A3 17M 17AB 17A9 17M 89 0008 F3/ A6 5F 5E 74 10 17AC HAE 1781 17B2 FE CO 83 C7 08 4A 75 EO 17B'" 3C 00 17B6 74 11 1768 17BB 17BF 17C1 17C3 17C5 17C7 E8 DCFE R C4 3E 007C R 8C CO DB C7 74 04 BO 80 EB 03 17C9 17C9 83 C4 08 17CC E9 219E R 17CF 17CF 17CF E9 1701 R 1702 1702 1706 1709 170B 170E 17EO 17E3 17E5 17E8 17E8 17EB 17ED 17FO 17F2 17F4 17F7 17f9 17FB 8A 26 0449 R 80 FC 07 74 F4 80 FC 03 76 EF 80 FC 06 77 03 E9 1745 R 80 FC OF 72 52 E8 14F7 R 72 40 EB OA 80 FC 00 73 46 BO 00 E9 219E R 17FE 17FE 1801 1603 1806 1808 180C SA ACOO 8E C2 E8 16BA R 8B fO 88 1E 0485 R 2B E3 180E 8B EC 1810 1811 1813 1815 1817 1819 181B 1810 181F 1822 1825 1828 1626 1828 1820 1630 1831 1835 1836 1638 1839 183C 183f 53 24 01 SA C8 BO 05 02 EO B4 07 B6 03 B2 CE E8 0015 R B8 0518 E8 0015 R 26: 8A 04 f6 DO 68 46 00 45 03 36 044A R 'B 75 FO 5B B8 0510 EB 32 90 183F 183F 1842 1844 1847 1649 1840 BA AOOO 8E C2 E8 16BA R 8B fO 8B 1E 0485 R 2B E3 184f 8B EC 1651 1653 1855 1858 185B 185C 185C 165F 1861 1864 1865 1869 186A B6 03 B2 CE B8 0508 E8 0015 R 53 26: 8A 04 f6 DO 86 46 00 4, 03 36 044A R .B 75 FO 4285 4286 4287 4288 4289 4290 4291 4292 4293 4294 4295 4296 "'297 4298 "'299 "'300 4301 4302 4303 4304 4305 4306 4307 4308 4309 4310 4311 4312 4313 4314 4315 4316 4317 4318 4319 4320 4321 4322 4323 4324 4325 4326 4327 4328 4329 4330 4331 4332 4333 4334 4335 4336 4337 4338 4339 4340 4341 4342 4343 4344 4345 4346 4347 4348 4349 4350 4351 4352 4353 4354 4355 4356 4357 4358 4359 4360 4361 4362 4363 4364 4365 4366 4367 4368 4369 4370 4371 4372 4373 4374 4375 4376 4377 4378 4319 4380 4381 4382 4383 4384 4385 4366 4387 4388 4389 4390 4391 4392 4393 4394 4395 4396 4397 4396 4399 4400 4401 4402 4403 4404 4405 4406 4407 4408 4409 4410 C MOV CX,8 C REPE CMPSB C POP 01 C POP 51 C JZ S18P C C INC AL C ADD 01,8 C C DEC JNZ sOXnp C NUMBER OF BYTES TO MATCH COMPARE THE 8 BYTES RECOVER THE PO INTERS IF ZERO FLAG SET, THEN HATCH OCCURRED NO MATCH, MOVE TO NEXT NEXT CODE PO I NT LOOP CONTROL 00 ALL OF THEM C ;----- CHAR NOT HATCHED, MIGHT BE I N USER SUPPL I ED SECOND HALF C C CMP AL,O AL <> 0 IF ONLY 1ST C c JE Slap HALF SCANNED IF '" 0, THEN ALL HAS C BEEN SCANNED C ASSUME OS:ABSO C CALL DDS C LES 01, EXT_PTR GET POINTER C MOV AX,ES SEE I F THE PNTR EXISTS C OR AX,OI IF ALL 0, DOESN'T EXIST C JZ S18P NO SENSE LOOK I NG C MOV AL,128 ORIGIN FOR SECOND HALF C JMP S16P GO BACK AND TRY FOR IT C C j ---- CHARACTER I S FOUND ( AU=O I F NOT FOUND I C C S18P: C ADD SP,8 READJUST THE STACK, C ; THROW AWAY SAVE C JMP V RET ; ALL DONE C GRAPH ICS_READ ENOP C C C ;ft ____ READ CHARACTER/ATTRIBUTE AT CURRENT CURSOR POSITION C C AH8S: C JMP READ_AC_CURRENT C C AHa: C C C ASSUME OS:ABSO MOV AH,CRT_MODE CMP AH,07H ; GET THE CURRENT MODE C JE AH8S C CMP AH,03H C JBE AH8S C CMP AH,06H C C JA JMP ~R!PH I CS_REAO C l_l : C CMP AH,OfH C JB GRX_R02 C CALL MEM_OET C JC GRX_R02 C JMP SHORT GRX_R01 C CMP AH,OOH C JAE GRX_RD2 C MOV AL,O C JMP V_RET C C GRX_RDl PROC NEAR C ASSUME DS;ABSO RANGE TEST FOUR MAP READ C SRLDAD [S,OADOOH C_ MOV DX,DAOOOH C_ MOV ES,DX C CALL GR CUR C MOV SI~AX C MOV BX, POI NTS REGEN SEGEHNT BYTE OFFSET INTO REGEN SAVE IN SI BYTES PER CHARACTER C SUB SP,BX ALLOCATE SPACE TO SAVE C THE READ CODE POINT C HOV BP, SP POINTER TO SAVE AREA C C ;--~-- GET VALUES fROM REGEN BUffER AND CONVERT TO CODE POINT C C PUSH ox SAVE BYTES PER CHARACTER C AND AL,1 ; ODD OR EVEN BYTE C MOV CL,AL ; USE FOR SHIFT C MOV AL,5 COLOR COMP VALUE (CO-C2) C SHL AL,CL tCl-C3) I F ~OD BYTE C MOV AH, G_COLOR ; COLOR COMPARE REG I STER C MOV DH,3 C MOV C CALL C MOV C CALL C S12_': C MOV C NOT C MOV C INC C ADO C DEC C JNZ C POP C MOV C JMP C GRX_R01 ENOP C C GRX_RD2 PROC OL,GRAPH_AODR OUT_OX AX,516H OUT_OX AL,ES:(SI] AL SS:(BPJ,AL BP SI,CRT_COLS BX 512_1 BX AX,510H GRX_RECG NEAR SET GRAPHICS CHIP ; READ MODE ; SET GRAPHICS CHIP GET FIRST BYTE SAVE I N STORAGE AREA NEXT LOCATION POtNTER INTO REGEN LOOP CONTROL DO I T SOME MORE RECOVER BYTES PER CHAR UNDO READ MODE CHAR REGONT I ON ROUT I NE C ASSUME DS:ABSO C SRLOAD ES,OAOOOH REGEN SEGMENT C MOV OX,OAOOOH C MOV ES,OX C CALL GR_CUR BYTE OfFSET I NTO REGEN C MOV 51 ,AX SAVE IN SI C MOV ex, POINTS BYTES PER CHARACTER C SUB SP,BX ALLOCATE SPACE TO SAVE C THE READ CODE PO I NT C MOV BP, SP POINTER TO SAVE AREA C C j----- GET VALUES FROM REGEN 8UFFER AND CONVERT TO CODE POINT C C C C C C C S12: MOV MOV HOV CALL PUSH DH,3 OL, GRAPH_AD DR AX,508H OUT_OX BX GRAPHICS CHIP COLOR COMPARE SET THE REG! STER SAVE BYTES PER CHARACTER C MOV AL, ES: (51] C NOT AL C MOV SS:IBP1,AL C INC B' C ADD SI,CRT_COLS C DEC BX C JHZ S12 GET COLOR COMPARED BYTE ADJUST SAVE I N STORAGE AREA NEXT LOCAT ION POINTER INTO REGEN LOOP CONTROL DO IT SOME MORE ~ r"'., ~ 138 mM Enhanced Graphics Adapter August 2, 1984 186C 5B 1860 B8 0500 1870 1670 1"870 E8 0015 R 1873 C4 3E OlOC R 1877 2B E8 1879 187B 187C 167E 167F 1880 1883 1883 1884 1685 1887 1889 188A 188B 8B F5 FC BO 00 16 1F BA 0100 56 57 8B CB F3/ A6 5f 5E 74 07 1880 188F 1891 1892 1694 1894 1896 FE CO 03 FB 4A 75 EF 03 E3 E9 219E R 1899 1899 E6 OCFE R l89C 8A 26 0449 R 16AO 18A3 18A5 18AB 18AA 18AD 1SAD 16BO 18B2 1683 18B4 18B1 18B9 16BA 1688 168F 80 Fe 04 72 08 60 Fe 07 14 03 EB 74 90 E6 16EB R SA E3 50 51 E8 1651 R 6B FB 59 58 68 16 0463 R 83 C2 06 18C2 18C2 18C7 18C9 18C9 18CA 18ce 18CE l8CF 18CF 1800 1802 1804 1804 1806 1807 1808 18DA F6 06 0487 R 04 14 08 EC AS 01 15 FB FA EC A8 01 74 FB 8B C3 AB FB E2 E8 E9 219E R 1800 1800 E8 OCH R 18EO 8A 26 0449 R 18E4 18E1 18E9 18EC 60 FC 04 72 08 80 Fe 07 14 03 18EE EB 30 90 18fl 18f1 E8 16E8 R 4411 4412 4413 4414 4415 4416 4417 4418 4419 4420 41421 4422 4423 4424 4425 4426 4427 4426 4429 4430 4431 4432 4433 4434 4435 4436 4431 4436 4439 4440 4441 4442 4443 4444 4445 4446 4441 4448 4449 4450 4451 4452 4453 4454 4455 4456 4457 4458 4459 4460 4461 4462 4463 4464 4465 4466 4467 4466 4469 4470 4471 4472 4473 4474 4475 4476 4417 4478 4479 4480 4481 4482 4483 4464 4485 4486 4481 4466 4469 4490 4491 4492 4493 4494 4495 4496 4491 4498 4499 4500 4501 4502 4503 4504 4505 4506 4507 4506 4509 4510 4511 4512 4513 4514 4515 4516 4517 4518 4519 4520 4521 4522 4523 4524 4525 4526 4527 4528 4529 4530 4531 4532 4533 4534 4535 4536 C POP BX C MOV AX,500H RECOVER BYTES PER CHAR UNDO READ MOOE C CRX_R02 ENOP C C e e ;----- SAVE AREA HAS CHARACTER IN tT, MATCH IT e e CAll OUT_OX e LES OI,GRX_SET e SUB BP, BX C C e MOV SI, BP CLD C MOV Al,D C PUSH 55 C e PDP MOV 05 ox, 2560 e e PUSH 51 e PUSH 01 e MOV CX,8X e REPE CMPS8 e POP 01 SET READ MODE BACK CET fONT DEFINITIONS ADJUST POINTER TO BEGINNING OF SAVE AREA ENSURE 0 I RECT I ON CODE PO I NT BE I NG MATCHED ADDRESS I NG TO STACK FOR THE STRING COMPARE NUMBER TO TEST ACA r"1ST SAVE SAVE AREA POINTER SAVE CODE POINTER NUMBER Of BYTES TO MATCH COMPARE THE 8 BYTES RECOVER THE PO INTERS C POP 51 C e JZ S18_5 e INC AL e ADD DI,BX C DEC OX e e J" S17_5 If ZFl SET, THEN MATCH OCCURRED NO MATCH, ON TO NEXT NEXT CODE PO I NT lOOP CO~TROl 00 All Of THEM Al=CHAR, 0 I f NOT FOUND C ADD READJUST THE STACI( e JMP j----- e e WRITE CHARACTER/ATTRIBUTE AT CURRENT CURSOR POSITION C C C e C WRITE_~T~U=~5~iNE WRITES THE ATTRIBUTE AND CHARACTER AT THE CURRENT CURSOR C POSITION e I ~PUT, e (AH) '" CURRENT CRT MOOE e (BH) '" DISPLAY PAGE e (CX) '" COUNT OF CHARACTERS TO WRITE e (All'" CHAR TO WRITE c (Bl) '" ATTRIBUTE Of CHAR TO WRITE e (DSI = DATA SECMENT C (E5) '" REGEN SEGMENT e OUTPUT e C e -------N-O--NE------------------------------------- AH9: e ASSUME OS: ABSO e CAll DDS e MOV AH, CRT_MODE e e e eMP Je P.AH,4 IS THIS GRAPHICS e C eMP JE P.AH,7 IS THIS BW CARD C JMP GRAPH I CS_WR ITE C P6: C CALL MK_ES j WR ITE.AC_CONTI NUE C HOV AH,Bl GET ATTRIBUTE TO AH C PUSH AX e c PUSH CAll ex F I NO_PoS I T I ON c HOV DI,ex e POP CX e POP BX e MOV OX, AODR_664 5 SAVE ON STACI( SAVE WR ITE COUNT ADDRESS TO 01 REGISTER WRITE COUNT CHARACTER I ~ BX REG GET BASE ADDRESS C e ADD DX,. POI NT AT STATUS PORT C ;----- WAIT FOR HORIZONTAL RETRACE C C P1: e TEST INFO,4 C JZ P9A C P8: e e e e IN TEST J" eLi Al,oX Al,l PB GET STATUS IS IT lOW WAIT UNTil IT IS NO MORE INTERRUPTS C P9: C IN AL,DX e C P, TEST JZ Al,1 GET STATUS IS IT HIGH WAIT UNTIL IT IS C P9A: C HOV AX,BX RECOVER THE CHAR/ATTR C STOSW PUT THE CHAR/ATTR c STI ; INTERRUPTS BACI( ON e lOOP AS MANY TIMES e JMP e e ;----- WRITE CHARACTER ONLY AT CURRENT CURSOR POSITION e C C ; WR I TE_C_CURRENT C THIS ROUTINE WRITES THE CHARACTER AT C THE CURRENT CURSOR POSITION, ATTRIBUTE C UNCHANGED C INPUT C (AH) = CURRENT CRT MODE e (BH) = DISPLAY PAGE e (CX) = COUNT OF CHARACTERS TO WRITE e (Al) = CHAR TO WRITE c (OS) '" DATA SEGMENT e (ES) '" REGEN SEGMENT C OUTPUT C NONE C i~~~--------------------------------------------C C ASSUME DS:ABSO C e CALL HOV DDS AH,CRT_MODE e e eMP AH,4 e Je PlO e eMP AH,1 e JE PlD IS THIS GRAPHICS IS THIS BW CARD C C JHP GRAPHICS_WRITE C P10: C CALL MleES August 2, 1984 IBM Enhanced Graphics Adapter 139 18F4 18f5 18f6 18F9 l8FB lsre 50 51 E8 1651 R 8B fB 59 5B 18-fD 1901 1904 1904 1909 1908 190B 190C 190E 1910 1911 1911 1912 1914 1916 1916 1918 1919 191A 191B 1910 8-B 16 0463 R 83 C2 06 f6 06 0487 R 04 74 OB EC A8 01 75 fB fA EC A8 01 74 fB SA C3 AA FB 47 E2 E7 E9 219E R 1920 1920 1923 1925 1928 1928 1928 1920 8-0 rc 07 72 03 E9 1907 R E8- 16E8 R B4 00 50 192E E8 16A4 R 1931 8B f8 1933 58 1934 3C 80 1936 73 06 1938 C5 36 010C R 193C EB 06 193E 193E 2C 80 1940 C5 36 007C R 1944 1944 1946 1948 194A 194C 1940 1950 1955 1956 01 EO 01 EO 01 EO 03 fO 1E E8 ocrE R 80 3E 0449 R 06 1r 72 2C 1956 1958 1959 195A 195C 195C 1950 1960 1962 1963 1964 1964 1969 196C 196E 1970 57 56 B6 04 AC f6 C3 80 75 16 AA AC 26: 8885 83 C7 4f FE CE 75 EC 5E 1FfF 4537 4538 4539 4540 4541 4542 4543 4544 4545 4546 "5"7 45484549 4550 4551 4552 4553 4554 4555 4556 4557 4558 4559 4560 4561 4562 4563 4564 4565 4566 4567 4568 4569 4570 4571 4572 4573 4574 4575 4576 4577 4578 4579 4580 458-1 4582 4583 458-4 4585 4586 4587 458-8458-9 4590 4591 4592 4593 4594 4595 4596 4597 45984599 4600 4601 4602 4603 4604 4605 4606 4607 46084609 4610 4611 4612 4613 4614 4615 4616 4617 4618 4619 4620 4621 4622 4623 4624 4625 4626 4627 4628 4629 4630 4631 4632 4633 4634 4635 4636 4637 46384639 4640 4641 4642 4643 4644 4645 4646 4647 46484649 4650 4651 4652 4653 4654 4655 4656 4657 4658 4659 4660 4661 4662 PUSH PUSH CALL MOV POP POP AX ex fiND_POSITION DI,BX cx BX ;----- WAIT FOR HORIZONTAL RETRACE P1 1: P12: P13: P13A: MOV AOO TEST JZ IN TEST JNZ CLI IN TEST JZ MOV STOSB ST' INC LOOP JMP OX, AODR 6845 DX,6 - INfO,4 P13A AL,DX AL,l P12 AL,OX AL,l P13 AL,BL SAVE ON STACK SAVE WRI TE COUNT ADDRESS TO DI WRITE COUNT BL HAS CHAR TO WR I T E GET BASE ADDRESS POINT AT STATUS PORT GET STATUS IS IT LOW WAIT UNTIL IT IS NO MORE INTERRUPTS GET STATUS I SIT HIGH WAIT UNTIL IT IS RECOVER CHAR PUT THE CHAR/ATlR I NTERRUPTS BACK ON BUMP POI NTER PAST AlTR AS REQUESTED GRAPHICS WRITE THIS ROUTINE WRITES THE ASCII CHARACTER TO THE CURRENT POSITION ON THE SCRrEN. ENTRY AL = CHARACTER TO WR I TE BL = COLOR ATTRIBUTE TO BE USED rOR fOREGROUND COLOR If BIT 7 IS SET, THE CHAR IS XOR'D INTO THE REGEN BUffER (0 '5 USED fOR THE BACKGROUND COLOR I = CX = NUMBER Of CHARS TO WR I TE OS DATA SEGMENT ES = REGEN SEGMENT EXIT NOTH I NG I S RETURNED GRAPHICS READ TH I S ROUT I NE READS THE ASC 1 I CHARACTER AT THE CURRENT CURSOR POSITION ON THE SCREEN BY MATCHING THE DOTS ON THE SCREEN TO THE CHARACTER GENERATOR CODE POINTS ENTRY NONE (0 IS ASSUMED AS THE BAGKGROUND COLOR) EX1T AL = CHARACTER READ AT THAT POSITION (0 RETURNED IF NONE FOUND) fOR COMPATIBILITY ROUTINES, THE IMAGES USED TO FORM CHARS ARE: CONTAINED IN ROM FOR THE 1ST 128 CHARS. TO ACCESS CHARS IN THE SECONO HALf, THE USER MUST INITIALIZE THE VECTOR AT INTERRUPT lFH (LOCATION 0007CH) TO POINT TO THE USER SUPPLIED TABLE Of GRAPHIC IMAGES (8X8 BOXES). ; -------------- --- fAILURE TO DO SO WILL ~----- -C-A-U-S-E---IN---S-T-R-A-N-G-E--R-E-S-U LT-S----------------- ASSUME CS:CODE, OS: ABSO, ES: NOTH I NG GRAPHICS WRITE PROC NEAR CMP AH,7 JB 51 A JMP GRX.WRT CALL MOV PUSH MK ES AH-:-O AX o TO HIGH Of COOE POINT SAVE COOE PO I NT VALUE ;----- DETERMINE POSITION IN REGEN BUFFER TO PUT CODE POINTS CALL MOV S26 DI,AX LOC I N REGEN BUf fER REGEN POINTER IN 01 ;----- OETERMINE REGION TO GET CODE POINTS fROM POP CMP JAE AX AL.80H S1 RECOVER CODE POI NT IS IT IN SECOND HALf YES IMAGE IS IN fiRST HALf, CONTAINED IN ROM LOS JMP ; ----- I MAGE IS I N SECOND HALF, I N USER RAM 51: SUB AL.80H LOS SI, EXT_PTR oEXTEND CHAR OR I GIN fOR SECOND HALF ;----- DETERMINE GRAPHICS MODE IN OPERATION S2: SAL AX,1 SAL AX,1 SAL AX,1 ADD 51 ,AX PUSH OS CALL ODS CMP CRT MODE,6 POP OS JC S7 OETERM I NE.MODE MULTI PLY CODE PO I NT VALUE BY 8 51 HAS OffSET or DESIRES CODES TEST fOR MEDIUM RES MODE ;----- HIGH RESOLUTION MODE S3: PUSH 01 PUSH 51 MOV DH,4 S4: LODSB TEST BL,80H JNZ S6 STOSB LODSB S5: MOV ES: [01 +2000H-1 I, AL ADO 01,79 OEC OH JNZ POP SS4, ~!~~-~~~~N PO INTER SAVE CODE POI NTER NUMBER OF TIMES THROUGH LOOP GET BYTE fROM CODE PO I NT SHOULD WE USE THE fUNCT ION TO PUT CHAR IN STORE IN REGEN BurrER STORE IN SECONO HALF MOVE TO NEXT ROW I N REGEN DONE WITH LOOP 140 IBM Enhanced Graphics Adapter August 2, 1984 1971 1972 1973 1975 1978 1978 197B 197C 1970 1982 5f 47 E2 E3 E9 219E R 26: 32 05 AA At; 26: 3285 lFFF EB EO ~ 1984 1964 1986 1988 1966 1986 198C 1980 198F 196F 1990 1993 8A 03 01 E7 E. 1660 R 57 56 B6 04 AC E. 1682 R 23 C3 1995 1996 199A 1990 19A1 19A1 19A4 19A8 19A9 19AC 19AE 19B1 1983 1986 19Bo 1980 19C2 19C7 19CA 19CC 19CE 19CF 1900 1901 1902 1904 1907 F6 C2 80 74 07 26: 32 25 26: 32 45 01 26: 88 25 26: 88 45 01 AC E. 1682 R 23 c3 f6 C2 80 74 OA 26: 32 A5 2000 26: 32 65 2001 26: 88 AS 2000 26: 88 85 2001 83 C7 50 FE C[ 75 C1 5E 5f 47 "'E2 87 E9 219E R ~ ~ 1907 1901 19DA 19DC 190f 19E1 19E4 19E6 19E8 19EA 19EA 19EC 19fO 19F1 19F4 19F6 80 FC Of 72 OE £8 14F7 R 72 09 80 £3 85 8A E3 00 E4 OA DC 2A £4 F7 26 0485 R 50 E8 168A R 88 f8 88 2E 0485 R 19fA 19FD 19FF lA03 lA04 lA06 lA08 lA08 lA08 lAOD lAOF TA12 111.15 lA16 lA18 lA19 lA18 lA1E lA21 lA>' 1A24 lA>6 lA27 1A2A lA2A 1A28 lA2f lA30 1Al2 lA33 lA34 1A35 1A35 lA37 1A39 1A38 lA3E lA3f lA40 lA41 lA43 lA44 BA AOOO BE C2 C5 36 OlOC R 5. 0' FO B6 03 F6 C3 80 74 DB 82 CE B8 0318 E8 0015 R ED lE 90 57 B2 C4 B8 020f f8 oD15 R 28 CO 51 86 CD 1E £8 OCFE R AA 03 3E 044A R "'E2 F. 1F 59 SF 82 C4 B4 02 8A C3 E8 0015 R 57 53 51 8B DO 1E E8 OCfE R lA47 88 OE 044A R 1A48 1F lAIlC 4663 4664 4665 4666 4667 4668 4669 4670 4671 4672 4673 4674 4675 4676 4677 4678 4679 4680 4681 4682 4683 4684 4685 4686 4687 4688 4689 4690 4691 4692 4693 4694 4695 4696 4697 4698 4699 4700 4701 4702 4703 4704 4705 4706 4707 4708 4709 4710 4711 4712 4713 4714 4715 4716 4717 4718 4719 4720 4721 4722 4123 4724 4725 4726 4727 4728 4729 4730 4731 4732 4733 4734 4735 4736 4737 4738 4739 4740 4741 4742 4743 4744 4745 4746 4747 4748 4749 4750 4751 4752 4753 4754 4755 4756 4757 4758 4759 4760 4761 4762 4763 4764 4765 4766 4767 4768 4769 4710 4771 4772 4773 ~774 ~775 4776 4177 4778 4779 4780 4781 4782 4783 4784 4785 ~786 11787 4788 0 POP 01 0 INO 01 C LOOP S' C JMP V_RET RECOVER REGEN POINTER PO I NT TO NEXT CHAR POS HORE CHARS TO WR ITE C 56: C C 0 0 C c XOR STOSB LODSB XOR JMP AL,ES:{OIJ AL, ES: [01 +2000H~1 ] 55 XOR WI TH CURRENT STORE THE CODE POINT AGAIN fOR ODD FI ELO BACK TO MAINSTREAM C ; ---~~ MED I UM RESOLUT ION WR I TE C C S7 : C C C C 58: c C C c S9: C C C C MOV SAL CALL PUSH PUSH MOV LODSB CALL AND DL,BL 01,1 51' 01 51 DH,4 521 AX,ex MED_RES_WR I TE SAVE HIGH COLOR 81T OFFSET"2, 2 BYTES/CHAR EXPAND BL TO fULL WORD OF COLOR SAVE REGEN PO INTER SAVE THE CODE PO INTER NUM6ER OF LOOPS GET CODE POINT DOUBLE UP ALL THE e I TS CONVERT THEM TO FORE~ GROUND COLOR (0 BACK) C TEST DL,80H C JZ 510 C XOR AH,ES:[ol} IS THIS XOR fUNCTION NO, STORE IT IN AS IT IS DO FUNCTION WITH HALf C XOR AL,ES:[DI+1] AND WI TH OTHER HALF C 510; C MOV ES: (OII,AH C MOV ES: (ol+lJ,AL 0 Loosa STORE FIRST BYTE STORE SECOND BYTE GET CODE PO I NT C CALL 521 C AND AX,BX CONVERT TO COLOR 0 TEST DL,80H IS THIS XOR fUNCTION 0 JZ 511 NO, JUST STORE THE VALUE C XOR AH, ES: [01 +2000H] FUNCT I ON WI TH FIRST HALf 0 XOR AL, ES; I 0 I +2001 HJ AND WITH SECOND HALF C S11 : 0 NOV ES:(01+2000H],AH 0 MOV ES: [01+2000H+1 ],AL STORE IN SECOND PORTION C ADO DI,80 POINT TO NEXT LOCATION C DEO DH 0 JNZ S' 0 POP 51 KEEP GOING RECOVER CODE PONTER C POP 01 RECOVER REGEN POINTER 0 INO 01 PO I NT TO NEXT CHAR e INC 01 e LOOP 58 ; MORE TO WR I TE e JMP V_RET C GRAPHICS_WRITE [NOP - -- - - -- e 0 ; ~~------ ~~~---~-- --~-~-~---~----- -----~~~~--- -----~---- 0 ENTRY C AL '" CHAR TO WRITE 0 8H '" DISPLAY PAGE e 0 = BL '" AlTR 18UTE/COLOR CX COUNT Of CHARS TO WR I TE C -~~~------------------------------~~~~--~------~~-------------~- C GR)CWRT PROC NEAR C ASSUME DS:ABSO, ES:NOTHING 0 eMP AH,OfH 640X350 GRAPH I CS 0 J8 NO_ADJl C CALL HEM DET BASE CARD 0 c JO AND NO_ADJ1 BL,100001018 85H, XOR C2 CO MASK C MOV AH,BL C SHL AH,l EXPAND CO TO Cl, C2 TO C3 0 OR BL,AH BUILD ?(80H) + (O,3,C, F) C NO_ADJl : c SUB AH,AH ZERO 0 MUL POI NTS OFFSET fONT TABLE BASE C PUSH AX FONT TA8LE DISPLACEMENT 0 CALL GR_CUR 0 MOV OI,AX GET OFFSET INTO REGErt !NTO DESTINATION e MOV BP, POINTS BYTES PER CHAR C c. c. SRLOAD ES,OAOOOH MOV DX,DAOOOH MOV ES,DX REGEN SEGEMNT C LOS SI,GRX_SET ; ADDRESS I NG TO FONTS 0 POP AX RECOVER OFFSET 0 ADD SI,AX CHARACTER IN TABLE C MOV DH,3 0 S20A: 0 TEST Bl.08DH TEST FOR XOR C JZ NO_XOR NO XOR e MOV DL, GRAPH_ADDR 0 MOV AX,0316H GRAPH I CS CH I P XOR C e CALL JMP ~~~_DX SET REG J STER SKI P BLANK C NO_XOR: BLANK BOX FOR GHAR C PUSH 01 SAVE REGEN PO INTER 0 MOV DL,SEQ_AoDR 0 MOV AX,020FH ENA8LE ALL MAPS 0 CALL OUT_OX e SUB AX,AX STORE ZERO 0 PUSH OX SAVE CHARACTER COUNT C MOV CX,BP GET BYTE COUNT C PUSH OS 0 CALL DDS C SUA: C STOSB ZERO REGEN BYTE 0 ADD DI,CRT_COLS NEXT BYTE Of BOX e DEO 01 ADJUST C LOOP S13A NEXT BYTE C POP OS C POP CX RECOVER CHARACTER COUNT C POP 01 RECOVER REGEN POI NTER C F_2: 0 MOV DL, SEQ_ADDR C MOV AH,02H SET MAP MASK 0 MOV AL,8L fOR COLOR 0 CALL OUT_OX SET THE CHIP 0 PUSH 01 SAVE OFFSET ! N REGEN C PUSH OX C PUSH OX SAVE COLOR VALUE SAVE CHACTER COUNT C MOV BX,BP LOOP CONTROL, 8YTES/CHAR e PUSH OS SAVE FONT SEGMENT 0 CALL DDS 0 ASSUME oS;ABSO SET LOW RAM SEGMENT 0 MOV CX,CRT_eOLS C POP OS GET COLUMN COUNT RESTORE FONT SEGMENT e ASSUME oS:NOTHING C SlK: ; WRITE OUT THE CHARACTER August 2, 1984 IBM Enhanced Graphics Adapter 141 lA4C lA4E 1A51 lA54 lA55 lA57 lA58 8A 04 26: 8A 25 26: 88 05 46 03 F9 4B 75 F2 lA5A lA5B lA5c lA5E 1A5F 1A60 59 5B 28 F5 Sf 47 E2 A6 1M2 1A64 1A67 lA6A 1A6C lA6F 1AI2 lA75 B2 CE 88 0300 E8 0015 R 82 C4 B8 020F E8 0015 R E9 219E R lA75 lA75 lA7A lA7C lA81 lA83 lAB5 lA85 lA88 lA88 1 ABA lABC 1A90 lA93 lA96 lA98 lA9A lA9C lA90 lA9D lMO 1M2 80 3E 0463 R B4 74 09 F6 06 0487 R 02 74 05 CO 42 E9 219E R 28 CO 8B E8 C4 3E 04A8 R 83 C7 04 26; C4 3D 8C CO DB C7 74 01 45 E8 lOCO R OA rr 75 65 lM4 lM6 lAA9 1MB lME lABO lAB3 1A85 lAB8 lABA lABC lABf lACl lAC4 lAC6 lAC8 lACB lACE eA FB AD 0466 R 24 EO 80 E3 1 f OA C3 A2 0466 R 8A Of 80 E7 08 DO E7 8A (8 80 E5 Ef OA ED 80 E3 Of 8A fB DO E3 80 E3 10 80 E7 07 OA Of tAOO AO 0449 R lAD3 3C 03 lA05 76 DE lA07 B4 00 1A09 8A C3 lADB E8 lD9F R lADE OB EO lAEO 74 03 lAE2 26: 88 10 lAE5 lA£5 lAEA lAEC lA[f lAfl lAfl 1Ar3 lAf5 lAf8 lAf8 lAfA 1AFC lBOO lBOO lB02 lB05 1807 80 3E 0449 R 03 77 05 E8 OE9A R 72 07 B4 11 8A C3 E8 lD9F R OB ED 74 04 26: aa 50 10 aA 00 80 E3 20 B1 05 02 EB 4789 4790 4791 4792 4793 4794 4795 4796 4797 4798 4799 4800 4801 4802 4803 4804 4805 4806 4807 4808 4809 4810 4811 4812 4813 4814 4815 4816 4817 4818 4819 48'20 4821 4822 4823 4824 4825 4826 4827 4828 4829 4830 4831 4832 4833 4834 4835 4836 4837 4838 4839 4840 11841 48112 4843 4844 11845 4846 4847 4848 4849 4850 4851 4852 4853 4854 4855 4856 4857 4858 4859 4860 4861 4862 4863 4864 4865 4866 4867 4868 4869 4870 4871 4872 4873 4874 4875 4876 4877 4878 4879 4880 4881 4882 4883 4884 4885 4886 4887 4888 4889 4890 4891 4a92 4893 4894 4895 4896 4897 4898 4899 4900 4901 4902 4903 11904 4905 4906 4907 4908 4909 4910 4911 4912 4913 4914 MOV MOV :~:~~~I~:I MOV ES:[DIJ.Al INC 51 AOO ol,CX OEC BX JNZ SlK CODE POINT LATCH DATA WR I TE ONE BYTE OF fONT NEXT FONT POI NT ONE ROW BELOW LAST PO I NT BYTES PER CHAR COUNTER DO NEXT ROW OF CHARACTER POP POP SUB POP INC LOOP CX BX SI, BP 01 01 S20A ; CHARACTER COUNT ; COLOR VALUE ; ADJUST PTR TO FONT TABLE ; REGEN POINTER ; NEXT CHAR POSN I N REGEN ; WRITE ANOTHER CHARACTER MOV MOV CAll MOV MOV CALL JMP GRX_WRT ENDP Ol,GRAPH_ADOR AX,0300H OUT OX OL, SEQ_AODR AX,020FH OUT OX V_RET NORMAL WRI TE, NO ROTATE SET THE CHI P ENABLE ALL HAPS SET THE CHI P ~ SUSTTl ;----- SET COLOR PALETTE AHB: A&SUHE CM' JE TEST JZ INT M21 _B: JMP M21_A: SUB MOV LES AOO LES MOV OR JZ INC NOT4AHB: CALL OR JNZ DS:ABSO BYTE PTR AODR_6845, OB4H M21 B INfO,2 M21_A 42H V_RET AX,AX BP,AX 01, SAVE_PTR 01,4 OI,OWORO PTR AX, ES AX,DI NOT4AHB BP ES; [01] PAl_INIT SH, BH H2O ; CALL VALID ONLY fOR COLOR ; SEE IF I TS THE OLD COLOR CARD ; If NOT. HANDLE IT HERE OLD CODE CALL BACK TO CALLER ; ----- HANDLE BH '" 0 HERE ALPHA MODES => Bl '" OVERSCAN COLOR GRAPHIGS => Bl = OVERSCAN AND BACKGROUND COLOR ;----- MOVE INTENSITY BIT fROM 03 TO 04 FOR COMPATIBiliTY MOV MOV AND ANO OR MOV MOV AND SHL MOV AND OR AND MOV SHL AND AND OR BH,Bl Al,CRT_PAlETTE Al,OEOH Bl, 01 fH Al,BL CRT_PAlETTE,Al BL,BH BH,08H 8H, 1 CH,Al CH,OEfH CH,CH Bl,OfH BH, Bl Bl,l BL,010H BH,07H Sl,BH MOV CMP JBE Al, CRT_MODE Al,3 M21 j----- GRAPHICS MODE DONE HERE (SET PALETTE 0 AND OVERSCAN) HOV HOV CALL AH,O AL,Bl PAL_SET OR JZ HOV BP,BP M21 Es:IOlj,Bl ;----- ALPHA MODE DONE HERE (SET OVERSCAN REGISTER) HZl : CM' JA CAll JC SET_OVRSC: MOV MOV CAll SKI P_OVRSC: OR JZ M21Y: MOV MOV AND MOV SHR CRT_MODE, 3 SET_OVRSC BRST_OET SKI P_OVRSC AH,Ol1H AL,Bl PAL_SET BP, BP H21Y ES:(DIJ(160j,Bl Bl,CH BL,020H Cl,5 BL,CL j----- HANDLE BH '" 1 HERE ALPHA HODES => NO EFFECT GRAPHICS => lOW BIT Of BL =- 0 PALETTE 0 = BACKGROUND PALETTE 1 '" GREEN PALETTE 2 '" RED PALETTE 3 '" BROWN => lOW 81 T OF 8l =- 1 PALETTE 0 '" BACKGROUND PALETTE 1 = CYAN PALETTE 2 '" MAGENTA PALETTE -3 '" WH I TE CHECK fOR AN ENHANCED MODE NO CHANCE SEE I f WE ARE ENHANCED THERE I S NO BORDER OVERSCAN REG I STER SET THE BORDER 142 IBM Enhanced Graphics Adapter August 2, 1984 lB09 1809 80 3E 0449 R 03 lBOE 76 4A lBl0 lB13 1815 lB18 181A 181C lB1C lBlF lB21 1B23 1B25 1827 lB29 AO 0466 R 24 OF 80 E3 01 74 02 OC 20 A2 0466 R 24 10 OC 02 OA 08 84 01 8A C3 E8 109F R lB2C lB2E lB30 1B34 OB ED 74 04 26: 66 50 01 lB34 lB36 lB38 lB3A lB3C fE C3 FE C3 B4 02 8A C3 E8 109F R lB3F lB41 1B43 lB47 OB ED 74 04 26: 68 50 02 lB47 1B49 1B4B lB40 lB4F FE C3 FE C3 B4 03 8A C3 E8 lD9F R 1B52 OB ED lB54 74 04 lB56 26: 88 5003 lB5A lB5A E8 10B7 R lB5D E9 219E R lB60 1860 1864 1865 1867 1869 F7 26 044A R 51 01 E9 01 E9 01 E9 1868 1860 186F 1871 , 873 lB77 lB19 lB79 187B 1870 1870 187E 1880 1863 lB85 1 B87 lB88 03 Cl 8A OF 2A FF 88 C8 8B 1£ 044C R E3 04 03 C3 E2 FC 59 8B 08 80 E1 01 BO 80 02 E8 C3 lB88 lB66 53 lB69 50 1 B8A 186C 1880 1890 80 28 52 80 E2 fE F6 E2 1B92 1893 lB96 1898 lB9B lB9B 1 B9D lB9E 5A F6 C2 01 74 03 05 2000 8B Fa 58 88 01 4915 4916 4917 4918 4919 4920 4921 4922 4923 4924 4925 4926 4927 4928 4929 4930 4931 4932 4933 4934 4935 4936 4937 4938 4939 4940 4941 4942 4943 4944 4945 4946 4947 4948 4949 4950 4951 4952 4953 4954 4955 4956 4957 4958 4959 4960 4961 4962 4963 4964 4965 4966 4967 4968 4969 4970 4971 4972 4973 4974 4975 4976 4977 4978 4979 4980 4981 4982 4983 4984 4985 4986 4987 4988 4989 4990 4991 4992 4993 4994 4995 4996 4997 4998 4999 5000 5001 5002 5003 5004 5005 5006 5007 5008 5009 5010 5011 5012 5013 5014 5015 5016 5017 5018 5019 5020 5021 5022 5023 5024 5025 5026 5027 5028 5029 5030 5031 5032 5033 5034 5035 5036 5037 5038 5039 5040 M20: CMP JBE CRT_MODE,3 M80 M22: MOV AND AND Jl OR MOV AND OR OR MOV MOV CALL AL, CRT_PALETTE AL,ODFH BL,l M22 AL,020H CRT PALETTE,Al Al,OlOH AL,2 Bl,Al AH,l AL,8l PAL-SET M22Y: OR Jl MOV BP,BP M22Y E5:[Dlllll,BL INC INC MOV MOV CAll BL BL AH,2 AL,BL PAL_SET M27Y: OR JZ MOV BP,BP M27Y [S:{DI Jl2],BL INC tNC MOV MOV CALL BL BL AH,3 AL,BL PAL_SET OR JZ MOV BP,BP M80 ES:(DI][3),Bl MBO: CALL JMP PAL_ON V.RET C INCLUDE VDOT. INC C SUBTTL VDOT. I Ne c PAGE C c ENTRY c OX '" ROW c ex '" COLUMN C BH '" PAGE C C BX = OFfSET I NTO REGEN C ; AL '" BIT MASK fOR COLUMN BYTE C b~T~SUP~~-------;~O~----N~;R--------------------C * C C ; ----- OffSET = PAGE OFFSET + ROW BYTES/ROW + COlUMN/8 C C MUL ~~RD PTR CRT_cOlS C PUSH C SHR eX,l C SHR CX,l C SHR CX,l C C ADD AX,CX C HOV BL, BH C SUB BH, BH C MOV CX,BX C C MOV JCXZ ~~~~RT_LEN C * ROW BYTES/ROW SAVE COLUMN VALUE DIVIDE BY EIGHT TO DETERMINE THE BYH THAT THIS DOT IS IN (8 BITS/BYTE) BYH OfFSET INTO PAGE GET PAGE INTO Bl ZERO COUNT VALUE LENGTH Of ONE PAGE PAGE ZERO C ADD AX,BX C LOOP DS_3 C C pop ex C MOV BX,AX C AND CL,07H C MOV AL,080H C SHR AL,CL C RET BUMP TO NEXT PAGE 00 fOR THE REST RECOVER COLUMN VALUE REGEN OFFSET SH I FT COUNT FOR BIT MASK MASK BIT POSITION MASK BIT C DOT_SUP_l ENDP C C C THIS SUBROUTINE OETERMINES THE REGEN BYTE LOCATION C c OF THE INDICATED ROW COLUMN VALUE IN CRAPHICS MODE. ENTRY·· e OX '" ROW VALUE (0-199) e CX", COLUMN VALUE (0-639) c EXI T - c 51 '" OFFSET INTO REGEN BUfFER FOR BYTE OF INTEREST c AH '" MASK TO STR I P OFF THE B ITS Of INTEREST c CL'" BITS TO SHifT TO RIGHT JUSTIFY THE MASK IN AH c c c DH '" # BITS IN RESULT k3~-~-·-;~~~----N~;R------------------------------------- c PUSH 8X SAVE BX DURING OPERATION e PUSH AX WI LL SAVE Al DURING OPERATION e c ;----- DETERMINE 1ST BYTE IN IDICATED ROW BY MULTIPLYING ROW VALUE BY 40 c ; --._- ( LOW BIT Of ROW DETERM I Nrs EVEN/ODD. 80 BYTES/ROW c e MOV AL,40 e e c PUSH AND MUL OX DL,OFEH DL c e POP OX e TEST OL,l e JZ R4 c ADD AX,2000H SAVE ROW VALUE STRIP OFF ODD/EVEN BIT AX HAS ADDRESS Of 1ST BYTE Of INDICATED ROW RECOVER IT TEST FOR EVEN/OOO JUMP I F EVEN ROW OFfSET TO LOCATION OF ODD ROWS C R4: EVEN_ROW C HOV SI,AX MOVE PO I NTER TO S I C e e POP HDV AX DX,CX RECOVER AL VALUE COLUMN VALUE TO OX c ;----- DETERMINE GRAPHICS MODE CURRENTLY IN EFfECT c C c ~ -S~T-~;-T~E-REG~ STE;;S-;'C~ORD~NG-TO-THE-MODE-- ---------- ------- - e CH '" MASK FOR LOW Of COLUMN ADDRESS ( 1/3 fOR HI CH/MEO RES) August 2, 1984 mM Enhanced Graphics Adapter 143 lBAO lBA3 1 BA6 lBAB lBAO 1 BBO BB 02CO 99 0302 60 3E 0449 R 06 12 06 BB 0180 69 0103 lBB3 lBB3 22 [A lBB5 03 EA lBB7 03 F2 1BB9 6.1. f1 lBBB 2A C9 lB80 18BO DO C8 l8BF 02 CO lBel FE CF lBC3 15 F8 lBC5 lBC7 1 BC9 lBCA 18C8 8.1. E3 02 EC 58 C3 1 BCB 80 3[ 0449 R 07 lBOO 17 2.1. 1802 1802 52 lBD3 1606 1608 1609 lBOA 180B 180E 18EO 18[2 1BE5 1BE6 lBE9 lB[B lBED lBEF lBFl 18Fl 18F4 lSF5 18F6 lBF8 lBFA 18fC 9A B800 8E C2 SA 50 50 [8 lB88 R 02 [8 22 C4 26: 8A OC 58 F6 C3 80 15 00 f6 04 22 ec 0.1. Cl 26: 88 04 58 E9 219E R 32 Cl [8 F5 lBFC 18FC lCOl lC03 lC06 lC08 lCOA lCOC lCOE lCl0 lCl0 lCll lC13 lC16 le18 lC1A lC1C 1C1F 80 3E 0449 R OF 12 00 E8 14f1 R 12 08 24 85 8.1. EO DO E4 OA C4 50 88 C2 E8 1860 R 86 03 82 CE 84 08 E8 0015 R 52 lC20 1C23 1C25 lC26 1C27 lC29 lC2C 1C2E lC30 lC32 lC35 lC38 lC38 lC3A le3e lClE 8.1. AOOO SE C2 5.1. 58 6A E8 F6 C5 SO 74 0.1. 94 03 60 18 [8 0015 R EB 12 90 82 C4 94 02 BO fF E8 0015 R 5041 5042 5043 5044 5045 5046 5047 5048 5049 5050 5051 5052 5053 5054 5055 5056 5057 5056 5059 5060 5061 5062 5063 5064 5065 5066 5067 5068 5069 5070 5071 5072 5073 5074 5015 5016 5077 5078 5079 5080 5081 5082 5083 5064 5085 5066 5061 5068 5089 5090 5091 5092 5093 5094 5095 5096 5097 5098 5099 5100 5101 5102 5103 5104 5105 5106 5107 5108 5109 5110 5111 5112 5113 5114 5115 5116 5117 5118 5119 5120 5121 5122 5123 5124 5125 5126 5127 5128 5129 5130 5131 5132 5133 5134 5135 5136 5137 5138 5139 5140 5141 5142 5143 5144 5145 5146 5147 5148 5149 5150 5151 5152 5153 5154 5155 5156 5157 5158 5159 5160 5161 5162 5163 5164 5165 5166 : =. - - --: e e e e ; CL '" # OF ADDRESS BITS IN COLUMN VALUE ( 3/2 FOR H/M) ; BL '" MASK TO SELECT 81TS FROM POINTED BYTE (80H/COH FOR H/M) --~~. ~~~~~~-~~-~~~~~-~~~~ ~~.!~~~~~~-~~~~-~ ~ ~~. ~~~-~~~!--- e e MOV ax,2COH e e e e MOV eMP JC MOV CX,302H CRT_MOOE,6 R' BX,180H SET PARMS FOR MED RES HANDLE IF MEO ARES e e MOV CX,703H SET PARMS FOR HIGH RES C ;----- DETERMINE BtT OFFSET IN BYTE FROM COLUMN MASK e C R5: e c AND CH,DL ; ADDRESS OF PEL WITHIN BYTE TO CH cc ;----- DETERMINE BYTE OffSET FOR THIS LOCATION IN COLUMN e SHR OX,CL ; SH I FT BY CORRECT AMOUNT C ADD SI,DX C MOV OH, BH e INCREMENT THE POINTER ; GET THE # OF BITS I N RESULT TO OH cC ;----- MULTIPLY BH (VALID BITS IN BYTE) BY CH (BIT OFfSET) e SUB CL,CL ZERO INTO STORAGE LOCATION eC R6: e e e e ROR ADD DEC JNZ AL,1 CL,CH BH R6 LEFT JUST I FY THE VALUE IN AL (FOR WRITE) ADD I N THE 81 T OFFSET VALUE LOOP CONTROL ON EXIT, CL HAS SHIFT COUNT C TO RESTORE BITS C HOV AH,BL GET MASK TO AH e SHR AH, CL MOVE THE MASK TO CORRECT LOCA T t ON e POP BX RECOVER REG ---------- -.---------- ------------------ C e c e e e RET R' [NOP RETURN WI TH EVERYTH I NG SET UP ; ------------ ------- - --- READ DOT -- WRITE DOT THESE ROUTINES WILL WRITE A DOT, OR READ THE DOT AT e THE INDICATED LOCATION e ENTRY - C C ex '" OX -::: ROW (0-199) (THE ACTUAL VALUE DEPENDS ON THE MODE) COLUMN ( 0-639) ( THE VALUES ARE NOT RANGE CHECKED 1 C AL'" DOT VALUE TO WRITE (1,2 OR 4 81TS DEPENDING ON MODE. C REQ'O FOR WRITE DOT ONLY, RIGHT JUSTIFIED) C BIT 1 OF AL=l INDICATES XOR THE VALUE INTO THE LOCATION C OS = DATA SEGMENT e ES '" REGEN SEGMENT e e EXIT -.---------- ee e ; ---- ----AL---::: DOT VALUE R--E-A-D-,--R-IG-H-T---J-U-S-T--if-iE-D--,--RE-A--D-O--N-L-Y------ --- C ; ----- WRlTE DOT C C AHC: C ASSUME OS: A8S0 C eMP CRT.MOOE,1 C c JA WRlTE.DOT.2 e WRITE.DOT e ASSUME e PUSH c SRLOAD e+ MOV e+ MOV e POP c PUSH c PUSH PROC NEAR OS: ABSO, ES: NOTH I NG OX [S,08800H OX,OBSDOH ES,DX OX AX AX SAVE DOT VALUE TWICE e C CALL SHR R3 AL,CL e e e c AND MOV POP TEST AL,AH CL,ES: (SI J BX BL,80H e JNZ R2 e NOT AH DETERMINE BYTE POSITION OF THE OOT SH I FT TO SET UP THE 81 TS FOR OUTPUT STR I P Off THE OTHER BITS GET THE CURRENT BYTE RECOVER ><OR FLAG IS IT ON YES, XOR THE DOT SET THE MASK TO REMOVE THE C AND CL,AH INDICATED BITS C OR AL,CL OR IN THE NEW VALUE OF THOSE BITS C Rl; e MOV ES:[SI1,AL FINISH DOT RESTORE THE BYTE I N MEMORY C POP AX c JMP V.RET C R2: e e XOR JMP e WRITE.OOT e e WRITE DOT 2 AL,CL R, ENOP PROC NEAR XOR_DOT EXCLUS I VE OR THE DOTS FINISH UP THE WRITING C - CMP CRT.MOOE,OfH c JB NO AOJ2 C CALL MEM.OET 8ASE CARD C Je NO AOJ2 C AND AL-:-10000101B 85H, XOR C2 CO MASK C MOV AH,AL C SHL AH,l EXPAND CO TO Cl, C2 TO C3 C OR e NO.ADJ2: e PUSH e MOV e CALL e c MOV MOV e MOV AL,AH AX AX,OX DOT SUP 1 OH,3 OL, GRAPH_AODR AH,G_8IT_MASK BUILD ?(80Hj + (O,3,C,F) ROW VALUE BX=OFfSET, AL"'B I T MASK GRAPHICS CHIP BIT MASK REGISTER C CALL OUT OX C PUSH OX SET BIT MASK C SRLOAO ES,OAOOOH REGEN SEGMENT C+ HOV OX,OAOOOH e+ HOV ES,OX c e POP OX PDP AX e MOV CH,AL c e e TEST JZ MOV CH,080H ~~7~_DAT A_ROT RECOVER COLOR SAVE COLOR SEE IF XOR NO XOR DO XOR C MOV AL,018H XOR FUNCTION C CALL OUT OX SET THE REGISTER C JMP WO_B SK I P THE BLANK C WD.A: BLANK THE DOT C MOV OL, SEQ_ADDR SEQUENCER C MOV AH, S_MAP e MOV AL,OFfH e CALL OUT_OX MAP MASK ENABLE ALL MAPS SET THE REG I STER 144 IBM Enhanced Graphics Adapter August 2, 1984 lC41 lC44 lC46 lC49 lC49 lC4B lC4D lC4F lCSl lC54 lC57 lC59 26: 8A 07 2A CO 26: 88 07 82 C4 84 02 8A C5 24 OF E8 0015 R 26: 8A 07 BO FF 26: 88 07 lC5C lC5F lC61 lC63 lC65 lC68 lC6A lC6C lC6F lC72 lcn E8 0015 R 82 CE B4 03 2A CO E8 0015 R B4 06 BO FF E8 0015 R E9 219£ R lC72 50 lC73 52 lC74 lC77 1C79 lC7A lC7B lC70 lC80 lC82 lC84 lC66 lC88 lC89 SA ADOO 8E C2 5A 58 8B C2 £8 1660 R B5 07 2A £9 2B 02 BO 00 C3 lC89 lC89 lC8B lC8D lC8E lC90 lCn lC95 lC96 lC99 lC9B 1C9E 1C9F 8A CO 84 04 52 86 03 82 CE E8 0015 R 5A 26: 8A 27 02 EC 80 £4 01 C3 lC9F lC9F 80 3E 0449 R 07 lCA4 77 18 lCA6 lCA6 52 lCA7 lCAA lCAC lCAD lCBO leB3 lCS5 lCB7 lCB9 lCBB lCBE SA B800 8E C2 5A E8 1B88 R 26: SA 04 22 C4 02 EO 8A CE 02 CO E9 219E R lCBE lCBE lCC3 lCC5 lCC8 80 3E 0449 R OF 72 25 E8 14F7 R 72 20 lCCA lCCA lCCO lCDO lC02 lCD4 lC06 lC08 lCOB lCOO lCDF lCE1 lCE3 lCES tCE7 lCEA E8 1C72 R E8 1C89 R OA 04 00 E4 OA 04 BO 02 E8 lC89 R DO E4 00 £4 OA 04 DO E4 OA 04 8A C2 E9 219E R lCEA 1CEA tCEO lCEO tCFO lCF2 lCF4 lCF6 lCF8 lCFA lCFC lCFE 'DO' E8 1C72 R E8 lC89 R 8A C8 02 E4 OA 04 FE CO 3C 03 76 F1 8A C2 E9 219E R 5167 5168 5169 5170 5171 5172 5173 5174 5175 5176 5177 5178 5179 5180 5181 5182 5183 5184 5185 5186 5187 5188 5189 5190 5191 5192 5193 5194 5195 5196 5197 5198 5199 5200 5201 5202 5203 5204 5205 5206 5207 5208 5209 5210 5211 5212 5213 5214 5215 5216 5217 5218 5219 5220 5221 5222 5223 5224 5225 5226 5227 5228 5229 5230 5231 5232 5233 5234 5235 5236 5237 5238 5239 5240 5241 5242 5243 5244 5245 5246 5247 5248 5249 5250 5251 5252 5253 5254 5255 5256 5257 5258 5259 5260 5261 5262 5263 5264 5265 5266 5267 5268 5269 5270 5271 5272 5273 5274 5275 5276 5277 5278 5219 5280 5281 5282 5283 5284 5285 5286 5287 5288 5289 5290 5291 5292 C MOV Al,ES:[BXJ C SUB AL,AL C MOV ES: {8XI,AL C WD_B: e C MOV MOV Dl,SEQ AODR AH, S_MAP e e MOV ANO AL,eH AL,OFH e CALL OUT OX e e MOV MOV AL,ES:18X] AL,OFFH e MOV ES:[BXj,AL C C ;----- NORMALIZE THE ENVIRONMErH e e CALL OUT ox e MOV DL, GRAPH_AOOR C MOV AH,G_DATA_ROT e SUB Al,AL e e CALL MOV OUT_OX AH,G_BIT_MASK e MOV AL,OHH C CAll e e JMP WRITE_DOT_2 OUT_OX V_RET ENOP C e PROC NEAR e ASSUME DS:ABSO e PUSH AX e PUSH OX e SRLOAO ES,OAOOOH e+ MOV OX, DAOOOH e+ MOV ES,DX e POP OX C POP AX e MOV AX,OX C CALL OOT_SUP_1 e HOV CH,7 C SUB CH,CL e C SUB MOV OX,OX AL,O e RET e e ENOP e C e PROC MOV MOV NEAR CL,CH AH,4 e e e PUSH MOV MOV OX OH,3 Ol, GRAPH AOOR C CALL OUT_OX - e POP OX C MOV AH, ES: [BX} C SHR AH,CL C AHa AH,l e e e RET ENDP e ;----- READ DOT e e AHD: e ASSUME OS:A8S0 C eMP CRT_MOOE,7 C C JA "-' C READ_DOT PROC HEAR C ASSUME OS:ABSO, ES: HOTH I NG C PUSH OX C SRlOAO ES,OB800H C+ MOV OX,OB800H C+ MOV ES,OX C POP OX C CAll R3 C MOV AL,ES:ISI] C AND AL,AH C SHL AL,CL C MOV CL,OH C ROL AL,CL g C JMP REAO_D~T V REl ENOP LATCH DATA ZERO BLANK THE OOT SET THE COLOR MAP MASI< SEQUENCER MAP MASK REG ISTER COLOR VALUE VALUES 0-15 SET IT LATCH DATA WRI TE VALUE SET THE DOT ALL MAPS ON GRAPH I CS CH t PS XOR R£GISTER NORMAL WRITES SET IT BIT MASK ALL BITS ON SET IT WR I TE DOT DONE DETERMINE BYTE POSITION OF DOT GET THE BYTE MASI< OFF THE oTHER B ITS I N THE BYTE LEFT JUSTI FY THE VALUE GET NUMBER OF BITS IN RESULT RIGHT JUSTIFY THE RESULT e e eMP CRT _MODE, OFH e e e J' CALL JC READ_OOT_2 HEM_DEl REAO_DOT_2 e C READ DOT 1 PROC NEAR e - ASSUME DS:ABSO, ES:NOTHING ; 2 MAPS e C CALL CALL .0 5 RO-1S C e e OR SHL OR OL;AH AH,l OL,AH C MOV AL,2 e CALL RO_1S C SHL AH,l C SHL e e OR SHL e e OR MOV C JMP e READ_DOT_l AH,1 OL,AH AH,l OL,AH AL,OL V RET ENOP C e READ DOT 2 PROC NEAR e - ASSUME DS:ABSO, ES:NOTHING e CALL RD_S ; lj MAPS C C CALL RO_1S C MOV CL,AL e e SHL OR AH,CL DL,AH C 'He AL e C eMP JBE AL,3 RD 2A C MOV AL;OL C JMP VREl eC REAO_OOT_2 e ENOP C WRITE TTY WRITE TELETYPE 10 ACTIVE PAGE e -THIS INTERFACE PROVIDES A TELETYPE LIKE INTERFACE TO THE VIDEO e e e CARD. THE INPUT CHARACTER IS WRITTEN TO THE CURRENT CURSOR POSITION, AND THE CURSOR IS MOVED TO THE NEXT POSITION, If THE CURSOR LEAVES THE LAST COLUMN OF THE FIELD, THE COLUMN I S SET August 2, 1984 IBM Enhanced Graphics Adapter 145 1001 1001 1002 1006 '007 1009 1006 1 DOD 1011 50 6A 3E 0462 R 53 SA OF ]2 FF 01 £3 88 97 0450 R 58 1012 1014 1016 1018 lOlA lOlC lOlE 1020 3C 00 74 5C 3C OA 74 5C 3C 08 74 4C 3C 07 74 5C 1022 84 OA 1024 89 0001 1027 CD 10 1029 1028 lOU lD31 1033 1037 FE C2 3A 16 044A R 75 35 2A 02 3A 36 0484 R 75 28 1039 1039 £8 1150 R lOle lDlF 1041 1043 1045 1047 1049 1049 104B 1040 lD4F 104f 1052 1054 lD58 l05e l05E l05E 1060 1060 1061 1064 1064 1066 1066 1068 AD 0449 R 3C 04 72 06 2A FF 3C 07 75 06 B4 08 CO 10 8A Fe B8 0601 2B C9 SA 36 0484 R SA 16 044A R FE CA CD 10 58 E9 219E R FE e6 84 02 fB F4 l06A l06A '06C lD6E 1070 DA 02 74 Fe FE CA EB F4 1072 1072 2A 02 1074 EB fO 1076 1016 l07A l07C lA 36 0484 R 75 E8 EB BB lOlE lOlE 1080 1083 B3 02 E8 0020 R EB DB 1085 1085 1089 1080 1090 1092 6A 26 044A R SA 3E 0462 R AD 0487 R 24 80 OA 06 0449 R 5293 5294 5295 5296 5297 5298 5299 5300 5301 5302 5303 5304 5305 5306 5301 5308 5309 5310 5311 5312 5313 5314 5315 5316 5317 5318 5319 5320 5321 5322 5323 5324 5325 5326 5327 5328 5329 5330 5331 5332 5333 5334 5335 5336 5331 5338 5339 5340 5341 5342 5343 5344 5345 5346 5347 5348 5349 5350 5351 5352 5353 5354 5355 5356 5357 5358 5359 5360 5361 5362 5363 5364 5365 5366 5361 5368 5369 5310 5311 5372 5313 5374 5315 5376 5377 5378 5379 5380 5381 5382 5383 5384 5385 5386 5387 5388 5389 5390 5391 5392 5393 5394 5395 5396 5391 5398 5399 5400 5401 5402 5403 5404 5405 5406 5401 5408 5409 5410 5411 5412 5413 5414 5415 5416 5417 5418 C TO ZERO, AND THE ROW VALUE IS I NCREMUHED. IF THE ROW VALUE C LEAVES THE FIELD, THE CURSOR IS PLACED ON THE LAST ROW, FIRST C COLUMN, AND THE ENTIRE SCREEN IS SCROLLED UP ONE LINE. WHEN C THE SCREEN IS SCROLLED UP, THE ATTRIBUTE FOR FILLING THE NEWLY C BLANKED LINE IS READ FROM THE CURSOR POSITION ON THE PREVIOUS C LI HE BEFORE THE SCROLL, ! N CHARACTER MODL I N GRAPH I CS MODE, C THE 0 COLOR I S USED. C ENTRY C (AH) = CURRENT CRT MODE C (AL) = CHARACTER TO BE WRITTEN C NOTE THAT BACK SPACE, CAR RET, BELL AND LINE FEED ARE HANDLED C AS COMMANDS RATHER THAN AS DISPLAYABLE GRAPHICS C (BL) " FOREGROUND COLOR FOR CHAR WR I TE I F CURRENTLY I N A C GRAPH I CS MODE C EXIT C ; ALL REG J STERS SAVED : C iHE;~----------------------------~--------~------------------------------ C C ASSUME CS: CODE, os: ABSO C PUSH AX SAVE REG I STERS C MOV BH.ACTIVE_PAGE GET THE ACT I VE PAGE C PUSH BX SAVE C MOV BL,BH GET PAGE TO BL C XOR BH,BH CLEAR HIGH BYTE C C SAL eX,l MOV ox, rax + OF FSET CURSOR_POSN I *2 fOR WORD OFfSET CURSOR, ACT I VE PAGE C POP BX C RECOVER C ; ----- OX HOW HAS THE CURRENT CURSOR PaS I T I ON C e eMP AL,ODH I SIT CARR! AGE RETURN C JE U9 e eMP AL,OAH e e JE CMP Ul0 AL,08H CAR_RET IS 11 A LINE FEED LINE_FEED I SIT A BACKSPACE C JE U8 e eMP AL,07H e JE Ull BACK SPACE IS IT A BELL BELL C eC ;----- WRITE THE CHAR TO THE SCREEN C MOV AH,10 WR I TE CHAR ONLY C e MOV INT eX,1 ION ONLY ONE CHAR WRITE THE CHAR C C ;----- POSITION THE CURSOR FOR NEXT CHAR e e INC OL C CMP DL,BYTE PTR CRT~COLS e JNZ U7 TEST FOR COLUMN OVERFLOW SET_CURSOR C SUB DL,DL e e c CMP JNZ DH, ROWS U6 e ;----- SCROLL REQUIRED e COLUMN FOR CURSOR SET_CURSOR~INC C U1: C e CALL ; SET THE CURSOR e ;~---- DETERMINE VALUE TO FILL WITH DURING SCROLL e e MOV AL, CRT MODE GET THE CURRENT MODE e CMP AL,4 ~ C JB U2 READ-CURSOR C e e C U2: SUB CMP JNE SH,BH AL,7 U3 FILL WITH BACKGROUND SCROLL-UP READ-CURSOR C HOV AH,8 C I NT 10M READ CHAR(ATTR C C U3: e C HOV SH,AH MOV SUB AexX,,c6x01H STORE IN BH SCROLL-UP SCROLL ON ELI NE UPPER LEFT CORNER C MOV OH, ROWS LOWER RIGHT ROW C C C U4: MOV OEC DL, BYTE PTR CRT~COLS OL LOWER RIGHT COLUMN V I DED-CALL-RETURN C I NT 10M C U5: e POP e JMP SCROLL UP THE SCREEN TTY-RETURN RESTORE THE CHARACTER RETURN TO CALLER C U6: SET-CURSOR-INC C INC NEXT ROW C U7: SET-CURSOR C MOV AH.2 e e JMP U4 e ; ----- BACK SPACE FOUND e [STABl! SH THE NEW CURSOR C U8: C OR DL,DL ALREADY AT END OF LI NE C JZ U7 SET CURSOR C OEC DL e e JMP U7 NO -- JUST MOVE I T BACK SET_CURSOR C ; ----- CARRI AGE RETURN FOUND e eC U9: SUB DL,DL c JHP U7 c MOVE TO FIRST COLUMN SET~CURSOR C ; ----- LINE FEED FOUND C e Ul0: C , CMP DH, ROWS e JHE U6 BOTTOM OF SCREEN YES, SCROLL THE SCREEN C JMP Ul e NO, JUST SET THE CURSOR C e e U11 : BELL FOUND C MOV SL,2 e CALL BEEP SET UP COUNT FOR BEEP SOUND THE POD BELL C JMP U5 e e TTY_RETURN C ; ----- CURRENT VIDEO STATE C e AHF: e ASSUME OS:ABSO C MOV AH, BYTE PTR CRT~COLS GET NUMBER Of COLUMNS C MOV BH,ACTIVCPAGE e e HOV AND AL, INFO AL,080H C OR AL, CRT~MODE 146 IBM Enhanced Graphics Adapter August 2, 1984 1096 5F 1097 5E 1098 59 1099 59 109A 5' lD9B IF 109C 07 1090 50 lD9E CF ~ 109f 109f 10AO lOA3 10A4 10A4 lOA5 10A7 10A9 10M lOAC 10AE lOAF 10Bl 1082 1054 10B5 10B6 10B7 50 E8 OD05 R fA EC AS 08 74 fB 58 82 CO 86 C4 EE 86 C4 EE BO 20 EE fB C3 10B7 lOB7 1 DBA lOBC lOBE 10BF lOCO E8 lOCO R B2 CO 80 20 EE C3 lOCO lOCO lDC3 lDC4 lOC5 E8 0005 R EC C3 lOC5 lOC5 F6 06 0487 R 02 lDCA 75 07 10CC 1001 1003 1003 1005 1007 80 3E 0"63 R B4 74 33 8A EO OA E4 75 30 ~ 1009 100B 100f 10E2 10E5 lOE7 10E9 lOEB lOEC 28 ED C4 3E 04A8 R 83 C7 04 26: C4 3D 8C CO DB C7 74 01 45 lOEC 1DEF 10fl 10F3 lDF6 10F9 10FB 10m tDff 1£01 lE03 lE06 1£06 E8 lOCO R 8A E3 8A C7 E8 1D9F R E8 10B7 R OB ED 74 09 8A C7 2A FF 03 fB 26: 88 05 E9 219E R 1£09 1£09 FE CC lEOB 75 20 lEaD lEaF 1El 3 lE16 lE19 lE18 1 E1D lEH lE20 28 ED C4 3E 04A8 R 83 C7 04 26: C4 30 8C co OB C7 74 01 45 ~ H2O 1[23 1E25 1 E27 lE2A E8 lOCO R B4 11 8A C1 £8 109F R E8 10B7 R lE20 1£2F lE31 lE34 08 ED 74 05 83 C7 11 26: 88 3D lE37 £9 219E R lE3A lE3A FE CC lE3C 75 40 1ElE IE lE3f DO 5419 5420 5421 5422 5423 5424 5425 5426 5427 5428 5429 5430 5431 5432 5433 5434 5435 5436 5437 5438 5439 5440 5441 5442 5443 5444 5445 5446 5447 5448 5449 5450 5451 5452 5453 5454 5455 5456 5457 5458 5459 5460 5461 5462 5463 5464 5465 5466 5467 5468 5469 5470 5471 5472 5473 547" 5475 5476 5477 5476 5479 5480 5481 5482 5483 5484 5485 5486 5487 5488 5489 5490 5491 5492 5493 5494 5495 5496 5497 5498 5499 5500 5501 5502 5503 5504 5505 5506 5507 5508 5509 5510 5511 5512 5513 5514 5515 5516 5517 5518 5519 5520 5521 5522 5523 5524 5525 5526 5527 5528 5529 5530 5531 5532 5533 5534 5535 5536 5537 5536 5539 5540 5541 5542 5543 5544 POP 01 POP S! POP CX POP CX POP ox POP OS POP ES pOP BP IRET SUBTTL ; DISCARD BX PAL_SET PROC PUSH CALL CLI V'R; IN TEST JZ POP MOV XCHG OUT XCHG OUT MOV OUT STI RET PAL_SET ENDP NEAR AX WHAT_BASE AL,OX AL,08H VR AX DL,ATTR_WRITE AL,AH OX,AL AL,AH OX,AL AL,OZOH OX,AL ; VERT I CAL RETRACE PAL_ON PAL_ON PROC CALL MOV MOV OUT RET ENOP NEAR PAL INIT OL,ATTR_WRITE AL,020H OX,AL PAL_INIT CALL IN RET PAL..1NIT PROC NEAR WHAT BASE AL,DX ENDP ; ---- SET PALETTE REGI STERS AH10: ASSUME DS:ABSO TEST INfO,2 JNZ BM_Of< ; I N MONOCHROME MODE ;----- HERE THE EGA IS IN A COLOR MODE 8M_OK: GNP JE MOV OR JNZ BYTE PTR ADOR_6845,OB4H BM_OUT AH,AL AH,AH BM_1 ; ---- SET INDIVIDUAL REGISTER TLO_' : SUB LES ADD LES HOV OR JZ INC BP,BP OI,SAVE.PTR 01,4 OI,OWORD PTR ES:[OI] AX,ES AX,DI TLO_l 8P BM_OUT: CALL MOV MOV CAll CALL OR JZ MOV SUB ADD MOV JMP PAL I NI T AH,BL AL,BH PAL SET PAL::::ON BP.BP B",-OUT AL,BH BH, BH OI,BX ES:[OI J,AL V_RET BM_l: DEC JHZ AH BM_2 TLO_2: SU8 LES ADD LES HOV OR JZ INC BP,BP DI, SAVE.PTR 01,4 Ot,OWORO PTR ES:[OI J AX,ES AX,OI TLO_2 SP ; .--- SET OVERSCAN REG I STER CALL HOV MOV CALL CALL PAL INtT AH,Ol1H AL,BH PAL_SET PAL_ON DR JZ ADD MOV BP, BP 8M.OUT OI,011H ES:[OIJ,BH JMP V_RET BM_2: DEC JNZ AN BM_3 ;----- SET 16 PALETTE REGISTERS AND OVERSCAN REGISTER PUSH OS PUSH ES August 2, 1984 IBM Enhanced Graphics Adapter 147 1E40 1£44 1£47 1£4A 1£4C 1£4£ C4 3E 04A8 R 83 C7 0-4 26: c4 30 8C CO OB C7 7409 1E50 1£51 1E52 1£54 1E57 1f 1E 88 F2 890011 F3t A4 lE59 1£59 07 1£5A 1 F lE5B 1 £50 1£60 1[62 1 £62 1£65 1 E68 lE6A lE6B lE6E lE70 1£72 1£75 1£78 1 E7B 88 OA £8 lOCO R 2A E4 26: 8A 07 E8 lD9F R F£ C4 43 M FC 10 72 F2 FE C4 26: 6A 07 £8 lD9F R E8 lDB7 R E9 219E R 1 E7E lE7E FE CC lE60 75 29 1£82 1 E83 1E86 1£89 lE8C 53 E8 D05A R 83 C3 33 26: 8A 07 5B lE80 OA DB lE8F 75 OA 1 E91 lE96 lE98 lE98 lE98 lE90 80 26 0465 R OF 24 F7 EB OC 90 FE CB 75 07 1 E9F 1£A4 lEA6 lEA6 lEA8 lEA8 lEAB 80 DE 0465 R 20 DC 08 84 10 E8 109F R E9 219E R lEAE lEAE 50 lEAF 55 lEBO 53 lEBl 51 1EB2 52 1 E83 06 1 EB4 1 EB7 lEBA lEBB lEBO 1E8F lEC4 lEC6 1 EC6 lEeB 1 ECB 1 EC£ lEOl 1 E02 E8 OCFE R AO 0449 R 50 3C 07 74 07 C6 06 0449 EB 05 R DB C6 06 0449 R OC E6 OOA8 R £8 OCFE R 58 A2 0449 R 1E05 07 1£06 5A 1E07 59 1E08 5B 1E09 5D 1EOA 58 lEOB lEOO 1 EOF lHO lEEl 1£E3 1 EE6 lE£8 1HA 1 £EC lEEF lEFt lEFt 1 EF3 OA CO 74 17 OE 07 2802 B9 0100 FE C8 75 07 87 DE BO 0000 E E805 B7 08 BO 0000 E 5545 5546 5547 5548 5549 5550 5551 5552 5553 5554 5555 5556 5557 5558 5559 5560 5561 5562 5563 5564 5565 5566 5567 5568 5569 5570 5571 5572 5573 5574 5575 5576 5577 5578 5579 5580 5581 5582 5583 5584 5585 5586 5587 5588 5589 5590 5591 5592 5593 5594 5595 5596 5597 5598 5599 5600 5601 5602 5603 5604 5605 5606 5607 5608 5609 5610 5611 5612 5613 5614 5615 5616 5617 5618 5619 5620 5621 5622 5623 5624 5625 5626 5627 5628 5629 5630 5631 5632 5633 5634 5635 5636 5637 5638 5639 5640 5641 5642 5643 5644 5645 5646 5647 5648 5649 5650 5651 5652 5653 5654 5655 5656 5657 5658 5659 5660 5661 5662 5663 5664 5665 5666 5667 5668 5669 5670 LES ADD LES MDV DR JZ PDP PUSH MOV MOV MOVSB 01, SAVE_PTR D! ,4 OI,DWORD PTR ES:IOII AX,ES AX,DI TlO_3 OS OS SI,DX ex,170 ES:DI PTR TO PAL SAVE AREA PARAMETER ES PARAMETER OffSET POP POP MOV CALL SUB MOV CALL INC INC CMf JB INC MOV CALL CALL JMP ES OS BX,OX ~~~A~NIT AL, ES: 1BX] PAL_SET AH BX AH,010H BM 2A AH AL,ES:[BX] PAL SET PAL::::ON V_RET DEC JNZ AH 8M_4 ; ----- TOGGLE I NTENS I FYtBL I NK I NG BI T PUSH CALL ADO MOV POP 8X MexA,K0C1B0AHSE+ LN_4 AL, ES: [8X] 8X OR JNZ BL,8L BM_6 ; ----- ENABLE 'MTENS' FY AND AND JMP CRT MODE SET,1'0'1111B AL,OF7H BM_7 DEC JNZ BL BM_7 ; ----- ENABLE BL I NK OR CRT_MODE_SET, 020H OR AL,08H MOV CALL JMP AH, P_MODE PAL_SET V_RET INCLUDE SU8TTL PAGE VCHGEN. 'NC VCHGEN. INC ENTRY AL '" 0 USER SPEC I FI ED FONT 1 8 X 14 FONT 2 8 X 8 DOUBLE DOT ; BL = BLOCK TO LOAD : b~:~~~7~~---------------------------------------- PUSH AX PUSH BP PUSH BX PUSH ex PUSH OX PUSH ES ; SAVE THE I NVOLV£D REGS H14: H15: ASSUME CALL MOV PUSH eMP JE "OV JMP OS:ABSO DOS AL, CRT_MODE AX AL,7 H14 CRT _MOOE,DBH SHORT H15 MOV CRT_MODE,OCH CALL CALL POP MOV SET_REGS DOS AX CRT_MODE,AL SET DATA SEGMENT GET THE CURRENT MODE SAVE IT IS TH I S MONOCHROME ; MONOCHROME VALUES COLOR VALUES SKI P ; MONOCHROME VALUES RESET THE DATA SEGM£NT RECOVER OLD MODE VALUE RETURN TO LOW MEMORY POP ES POP ox POP CX POP 8X POP BP POP AX RESTORE REGS THAT WERE USED BY THE MODE SET ROUTINES OR AL,AL JZ DO_MAP2 PUSH CS POP ES SUB ox, OX MOV CX,02560 DEC AL JNZ H7 MOV 8H,0140 MOY BP, OffSET CGMN JMP SHORT DO_MAP2 H7: MOV 8H,8 MOV SP, OffSET CGDOOT SET flAGS USER SPEC I F I EO FONT SET SEGMENT TO TH I S MODULE ZERO OUT START OFFSET CHAR COUNT (FULL SET) WH I CH PARAMETER MUST BE ONE BYTES PER CHARACTER 8 X 14 TABLE OFFSET STORE IT 8 x 6 FONT ROM 6 X 8 DOUBLE DOT -~ ~~;~~-~HAR~cjiR-GiNER;joR-~OAD-·--------------· 148 IBM Enhanced Graphics Adapter August 2, 1984 ~ ~ lEF6 1Ef6 1Ef7 lEF8 1 EF9 lEfC lEFE 1Eff 1FOO H02 H04 1f05 H01 H09 H09 HOD HOF 1Fll 1Fll H13 H15 1F11 H19 H1B H1B H1C 1 F1E H2O 1 F22 H25 H26 H28 H28 00 1F " BA ACOO 8E C2 5A 51 B1 05 03 E2 59 OA DB 711 08 81 C2 4000 FE CB 15 F8 8A C7 2A E4 88 FA 8B F5 E3 00 51 88 C8 F3/ A4 2B fa 83 C7 20 >9 E2 F3 e3 1 F29 H29 H2C 1 F2F lF33 H38 1F3A 1F3C H3F 1 F3F H41 1 F43 H46 E8 OCFE R A3 0485 R 88 16 0463 R 80 3E 0449 R 07 75 05 84 14 E8 0015 R FE C8 B4 09 E8 0015 R FE C8 1F48 H4A H4C 1 F4E H50 8A [8 8A C8 FE Cl B4 01 CO 10 H52 H56 H59 H5C 1f5E H61 H63 1 F66 1f66 H61 1F6B H6C 1F6f 1f11 1F13 H77 H18 H7C H1E H81 H84 H86 1F8A 1F8C H8F 1F92 1F95 8A lE 0449 R 88 015E 80 FB 03 77 08 E8 OE9A R 72 03 B8 00C8 99 4.F1 36 0485 R A2 0484 R FE CO 2A E4 F1 26 0485 R 48 88 16 0463 R 84 12 E8 0015 R AD 0484 R FE co F6 26 044A R 01 EO 05 0100 A3 OljljC R E8 OE96 R E9 219E R H98 1F98 3C 10 1F9A 13 37 H9C lF9E HAD HA3 lfA6 HA9 HAC HBO HB2 HB4 3C 03 13 17 E8 lEAE R E8 ODA8 R E8 OE96 R E8 OCFE R 8B DE 0460 R BII 01 CO 10 E9 219E R ~ HB1 1f81 lf89 lFBB 75 11 B6 03 B2 c4 HBD B8 000 1 lFCO E8 0015 R HC3 B4 03 HC') 8A C3 1FC1 £8 OD15 R 5611 5612 5613 56111 5615 5616 5611 5618 5679 5680 5681 5682 5683 5684 5685 5686 5681 5688 5689 5690 5691 5692 5693 5694 5695 5696 5691 5698 5699 5100 5101 5102 5103 5704 5105 5706 5701 5108 5109 5110 5111 5712 5113 5714 5115 5116 5111 5118 5119 5120 5121 5122 5123 5724 5725 5126 5121 5128 5129 5130 5131 5132 5133 5134 5135 5136 5137 5138 5139 5140 5141 5142 5143 5144 5145 5146 5141 5148 5149 5150 5151 5152 5153 5154 5155 5156 5151 5158 5159 5160 5761 5162 5163 5164 5165 5166 5161 5168 5169 5110 5111 5112 5713 511lj 5115 5716 5111 5118 5719 5180 5181 5182 5183 5784 5185 5786 5181 5788 5189 5190 5191 5192 5193 5194 5195 5196 e e ENTRY e ES:BP - POINTER TO TABLE e ex - COUNT OF CHARS e ox - CHAR COUNT OFFSET INTO MAP 2 e BH - BYTES PER CHARACTER e e --------B-L------ --M-A-P-2---B-LO-C--K--T-O--lO-A-D-------------- e OO_MAP2: e PUSH ES FONT TABLE SEGMENT e POP os ; ADDRESSING TO TABLE e PUSH DX ; SAVE REG I STER e SRLOAO ES,OAOOOH ; ADDRESSING TO MAP 2 e+ MOV OX,OAOOOH e+ HOV ES,OX e POP ox ; RECOVER REGISTER e PUSH ex ; MULTI PLY BY 020H SINCE e HOV CL,5 MAXIMUM BYTES PER C SHL OX,CL ; CHARACTER IS 32D"'020H C POP ex ; RECOVER e OR BL,BL ; WH I CH 16K BLOCK TO LOAD e JZ H3 ; BLOCK ZERO C H4: e ADD OX,04000H I NCREMENT TO NEXT 8LOCK e DEC BL ; ANY MORE e JHZ H4 ; 00 ANOTHER e H3: C HOV AL,eH BYTES PER CHARACTER e SUB AH,AH ZERO e MOV OI,DX OFFSET INTO MAP e MOV SI,BP OffSET INTO TABLE e JeXl LO_OVER CHARACTER COUNT e e PUSH ex SAVE CHARACTER COUNT e MOV CX,AX ; ONE ENT I RE CHARACTER e REP MOVSB AT A TIME e SUB OI,AX ; ADJUST OffSET e ADD DI,020H NEXT CHARACTER POS I T I ON C POP ex RECOVER CHARACTER COUNT e LOOP LD DO THE REST C LD_OVER: e RET e e BRK_1 : e ASSUME OS:ABSO e CALL DDS SET LOW MEMORY SEGMENT e MOV POINTS,AX GET BYTES/CHARACTER C MOV OX,ADOR_6845 CRTC REG I STER e eMP CRT_MODE,7 C JHE HllA C MOV AH, C_UNOERLN_LOC R14H e CALL OUT_OX SET THE UNDERLINE LOC e Hl1A: e DEC AL POINTS - 1 e MOV AH, C_MAX_SCAN_lN R09H e CALL OUT_OX SET THE CHARACTER HEIGHT e DEC AL POINTS - 2 e C MOV CH,AL CURSOR START e MOV CL,AL ; CURSOR END C IHC CL ; ADJUST END e HOV AH,l ; SET C_TYPE BIOS CALL e IHT lOH ; SET THE CURSOR e e HOV Bl, CRT_MODE ; GET THE CURRENT MODE C MOV AX,350D MAX SCANS ON SCREEN C eMP 8L,3 640X200 ALPHA MODES e JA H11 MUST BE 350 C CALL 8RST_DET e Je H11 e MOV AX,200D SET FOR 200 e Hl1 : e Cwo PREPARE TO DIVIDE e DIV POINTS MAX ROWS ON SCREEN e DEC AX ADJUST e MOV ROWS,AL SAVE ROWS e IHe AL READJUST e SUB AH,AH CLEAR e MUL POINTS ROWS*BYTES/CHAR e DEC AX ADJUST C MOV ox, ADDR_6845 CRTC ADDRESS C HOV AH, C_VRT_DSP_END SCANS DISPLAYED e CALL OUT_OX SET IT e MOV AL, ROWS GET CHARACTER ROWS e IHe AL ADJUST e MUL BYTE PTR CRT_COLS ROWS*COLUMNS e SHL AX,l *2 FOR ALPHA MODE e ADO AX, 2560 SPACE BETWEEN PAGES C MOV CRT_LEN,AX BYTES PER PAGE C CALL PH_5 VIDEO ON e JMP V_RET RETURN TO CALLER C e i----- LOADABLE CHARACTER GENERATOR ROUTINES e e AHl1: e eMP AL,010H ; CHECK PARAMETER e JAE AHll_ALPHAl ; NEXT STAGE C e ; ---- ALPHA MODE ACT I V I TV HERE e e eMP AL,03H RANGE CHECK e JAE H1 NEXT STAGE e e CALL CALL ~~TG~~GS e CALL PH "5 SET THE CHAR GrN ; VIDEO ON e . ASSUME DS:ABSO e CALL DDS c MOV ex, CURSOR_MODE ; SET THE DATA SEGMENT ; GET THE MODE e MOV AH,l ; SET C_ TYPE e IHT 10H EMULATE CORRECT CURSOR e JMP V_RET ; RETURN TO CALLER e e ; ---- SET THE CHARACTER GENERATOR BLOCK SELECT REG I STER e e H1: e JHE H2 NOT I N RANGE e MOV OH,3 C HOV OL, SEILADDR SEQUENCER e e MOV AX,l AH:::S_RESET, AL:::1 e CALL OUT_OX C e MOV AH, S_CGEN CHAR BLOCK REGI STER e MOV AL,BL GET THE VALUE e CALL OUT_OX SET IT e August 2, 1984 IBM Enhanced Graphics Adapter 149 lFCA HCO lFOO lFOO B8 0003 E8 0015 R E9 219E R lFD3 lFD3 3C 20 lFD5 73 26 lF07 lF09 HOB lFDD HOE HOF lFE2 lFE5 lFE6 lFE7 lFE9 lFEB 1 FED lFEF lrFl lFF4 lFF6 lFF8 lFF8 lFFA 2C 10 3C 02 77 F3 50 53 E8 lEAE R E8 OOAS R 5B 58 8A EO OA £4 8A C7 7tI 09 BO 08 80 Fe 01 75 02 BO OE 2A E4 E9 lF29 R lFFO lFFO 1 fFf 2001 2003 3C 30 73 6A 2C 20 75 11 2005 2007 2009 200A lOOE 2012 2013 2013 2016 2B 02 8E DA FA 89 2E D07C R 8C 06 007E R FB E9 219E R 2016 52 2017 2019 201B 201C 201E 2020 2022 2024 2025 2026 2028 202A 2020 2030 2032 2032 2035 2038 2038 2039 2030 2041 2B Ol 8E OA 5A 3C 03 77 F3 FE C8 74 14 OE 07 FE e8 75 08 B9 OOOE BO 0000 E E8 06 B9 0006 80 0000 E FA 89 2E OlOC R 8C 06 OlOE R FB 2042 2045 2049 204B 204E 2050 2052 2054 2057 2057 2059 2058 2050 2050 205F 205f 2061 2064 E8 OCFE R 69 DE 0485 R 8A C3 B8 2067 R OA eo 75 05 SA C2 Ea 09 90 3C 03 76 02 BO 02 2E: 07 FE C6 A2 0481.i R E9 219E R 2067 2067 00 DE 19 28 2068 2068 2060 206F 206F 2072 2072 2076 207A 2070 207F 2082 3C 30 74 03 E9 219E R 88 DE 0485 R 6A 16 0-481.i R 80 FF 07 77 FO 80 Ff 01 77 18 2084 2085 2087 2069 52 28 02 BE OA 5A 5797 5798 5799 5800 5801 5802 5803 5804 5805 5806 5807 5808 5809 5810 5811 5812 5813 5814 5815 5816 5817 5818 5819 5820 5821 5822 5823 5824 5825 5826 5827 5828 5829 5830 5831 5832 5833 5834 5835 5836 5837 5838 5839 5840 5841 5842 5843 581.i4 581.i5 5846 5847 5848 5849 5850 5851 5852 5853 5854 5855 5856 5857 5658 5659 5860 5661 5662 5863 5664 5865 5866 5867 5868 5869 5870 5871 5872 5873 5874 5875 5876 5877 5878 5879 5880 5881 5882 5883 5884 5885 5886 5887 5888 5889 5890 5891 5892 5893 5894 5895 5896 5897 5898 5899 5900 5901 5902 5903 5904 5905 5906 5907 5908 5909 5910 5911 5912 5913 5914 5915 5916 5917 5918 5919 5920 5921 5922 e MOY AX.3 e CALL OUT_OX ; AH:oS_RESET, AL:03 e H2: e JMP V_RET e ; RETURN TO CALLER e AH11_ALPHAl : e ASSUME DS:ABSO e eMP AL,020H e JAE AH11_GRAPHICS e e ;----- ALPHA MODE ACTIVITY HERE e e SUB AL,010H e eMP AL,02H e JA H2 ; AQJUST TO 0 - N ; RANGE CHECK I NVAL 10 CALL e PUSH AX ; SAVE e PUSH BX e CALL CH_GEN LOAD THE CHAR GEN e CALL SET_REGS e POP BX e POP AX ; RESTORE e MOY AH,AL ; CALLI NG PARAMETER e OR AH,AH ; USER MODE e MOY AL,SH e JZ H13 ; DO NOT SET BYTES/CHAR e MOY AL,8 ; 8 X 8 FONT e eMP AH,l I S THE CALL FOR MONoe e JNE H13 ; NO, LEAVE IT AT 8 e e H13 : MOY AL,14D ; MONoe SET e SUB AH,AH ; CLEAR UPPER BYTE e JMP SRK_1 ; CONTINUE e e ;----- GRAPHICS MODE ACTIVITY HERE e e AH1 l_GRAPH I CS: e ASSUME DS:ABSO e eMP AL,030H e JAE AHll INFORM e SUB AL,020H C JNZ flO C C ;----- COMPATIBILITY, UPPER HALF GRAPHICS CHARACTER SET C C ASSUME DS:ASSQ e SRLOAO OS,O e+ SUB OX,OX C+ MOY OS,OX e eLi e MOY WORD PTR EXT_PTR , BP C MOY WORD PTR EXT _PTR + 2 , ES C STI e Fll : C JMP V_RET C flO; e C ox ASSUME OS:ABSO PUSH e SRLOAO 05,0 e+ SUB OX,OX C+ MOY OS,OX C POP ox C CMP AL,03H ; RANGE CHECK C JA F11 e DEC AL C JZ fl9 e PUSH es C POP ES e DEC AL C JNZ [13 C MOV CX,14D C MOY SP,OFFSET CGMN ROM 8 X 14 CHARACTER SET C JMP SHORT f19 C f13: e MOY CX.8 C MOY SP,OFFSET eGOOOT ROM 8 X 6 DOUBLE DOT C F19: C CLI e MOY WORD PTR GRX_SET , BP C MOV WORD PTR GRX_SET + 2 , ES C STI C ASSUME DS:ABSO C CALL DDS C MOY POINTS,CX e MOY AL,BL e MOY eX,OFFSET RT e OR AL,AL C JNZ DR_3 C MOY AL,OL C C DR_3: JMP DR_' e eMP AL,3 C JBE OR_2 C MOY AL,2 e OR_2: C XCAT CS: RT C OR_l : C DEC AL C MOY ROWS,AL C JMP V_RET C C LABEL BYTE e DB 000,140,250,430 C C C INFORMATION RETURN -DONE HERE C C AHll _INFORM: C ASSUME oS;ABSO C CMP AL,030H C JE F6 C f5: C JMP V_RET e F6: C MOY eX,POINTS e HOY OL.ROWS C eMP BH,7 C JA f5 C CMP BH,l C JA f7 C e e ASSUME OS: ASSO PUSH ox e SRLOAO OS,O c+ SUB Ox, OX c+ MOY OS,OX C POP OX r"\ 150 IBM Enhanced Graphics Adapter August 2, 1984 ~ ~ ~ 208A 208C 208E 2092 2095 2095 2099 OA rr 75 07 C4 2E 007C R EB 1A 90 C4 2E 010C R £B 13 90 209C 209C 209F 20Al 20A3 20A5 20A9 20AC 20AD 80 Ef 02 8A Of 2A ff 01 £3 81 C3 20B7 R 2E: 8B 2F DE 07 20AE 20AE 5F 20AF 5£ ,. 20BO 5B 20Bl 5B 20B2 2083 1F 2084 5. 2085 5' 20B6 eF 20B7 20B7 20B9 2088 20BO 0000 E 0000 E 0000 E 0000 E 2QBF 208F 20C2 20C4 20C6 2QC9 20CB 20CE 80 f6 10 72 51 74 1B 80 fB 20 74 03 E9 219E R 20CE 2000 2002 2003 2009 2000 20DE 20El 20£1 20E5 20E8 26 02 8E OA FA C7 06 0014 R 21A7 R 8C DE 0016 R FB E9 219E R 8A 3E 0481 R 80 E7 02 OOH 20EA 20£0 20EF 20Fl 20F3 AD 0487 R 24 60 81 05 02 E8 8A 08 20F5 20f9 20FB 20rE 2100 2102 210~ 2106 8A OE 0488 R SA E9 80 E1 OF 00 £0 00 EO 00 ED DO EO 80 E5 OF 2109 210A 210B 210C 2100 210E 210f 2110 211' 2112 2112 2115 2115 2115 5F 5E 5A 5A SA 1F 07 50 CF [9 219E R E9 219E R 2118 2118 211A 211C 211E 211f 2121 2123 2125 2129 212A 3C 04 73 F9 E3 F1 53 8A OF 2A FF 01 £3 8B B7 0450 R 5. 56 2128 212C 212F 2131 2132 2132 2133 2134 2135 2137 2136 213C 213E 2140 2142 2144 5D B8 0200 co 10 5' 51 53 50 86 EO 26: 8A 46 00 45 3C 00 14 30 3C OA 74 39 3C 08 5923 5924 5925 5926 5927 5928 5929 5930 5931 5932 5933 5934 5935 5936 5937 5938 5939 5940 5941 5942 5943 5944 5945 5946 5947 5948 5949 5950 5951 5952 5953 595'-1 5955 5956 5957 5958 5959 5960 5961 5962 5963 5964 5965 5966 5967 5968 5969 5970 5971 5972 5973 5974 5975 5976 5977 5978 5979 5980 5981 5982 5983 5981l 5985 5986 5987 5988 5989 5990 5991 5992 5993 599-4 5995 5996 5991 5998 5999 6000 6001 6002 6003 600-4 6005 6006 6001 6008 6009 6010 6011 6012 6013 6014 6015 6016 6011 6018 6019 6020 6021 6022 6023 6024 6025 6026 6027 6028 6029 6030 6031 6032 6033 6034 6035 6036 6037 6036 6039 6040 6041 6042 6043 6044 6045 6046 6041 6048 C OR BH, BH C J"Z F9 C LES BP,EXT_PTR C JMP INfORM_OUT c f9: C lES BP,GRX_SET C JMP INFORM_OUT C C ; ---- HANDLE BH "" 2 THRU 8H '" 5 HERE RETURN ROM TABLE POINTERS C C F7: C ASSUME DS:ABSO e SUB BH,2 e MOV BL, BH e SUB BH, BH C SAL BX,1 C ADO BX,OffSET TBL_5 c MOV BP,CS:jBXj e PUSH es e POP £S e e INfORM_OUT: C POP 01 C POP 51 C POP BX C POP AX O'SCARD SAVED CX C POP AX D! SCARO SAVED OX e POP OS e POP AX e POP AX DISCARD SAVED ES DISCARD SAVED BP e IRET e c ; ---- TABLE OF CHARACTER GENERATOR OFFSETS e C TBL_5 lABEL WORD e OW OffSET CGMN e OW OFFSET CGOOOT e OW OFfSET INT_1 F_l e OW OFFSET CGMN_FDG e e SU8TTL ; ---- AL TERNAH SELECT AH12: ACT_2: ACT_3: ASSUME eMP JB JE eMP JE JMP SRLOAD SUB MOV ell MOV MOV STI JMP OS:ABSO BL,010H ACT 1 ACT-3 8L,020H ACT 2 V_RET 05,0 OX,OX OS,OX RETURN ACT I VE CALL ALTERNATE PRINT SCREEN I NVAL I 0 CALL NEW PRINT SCREEN WORD PTR INT5_PTR, OFfSET PRINT_SCREEN WORD PTR 1NT5_PTR+2. CS V_RET MOV AND SH' 8H, INFO 8H,2 8H,l LOOK I NG FOR MONOC 8 I T ISOLATE ADJUST MDV AND MDV SHR MOV AL,INfO AL,01100000B CL,5 AL,CL BL,AL LOOK I NG FOR MEMORY MEMORY al TS 5HI fT COUNT ADJUST MEM VALUE RETURN REGISTER MOY MOV A"D SHR SHR SHR SH' AND CL,INFO_3 CH,CL CL,OFH CH.l CH,1 CH,1 CH.1 CH,OFH FEATURE/SWITCH DUPLICATE IN CH MASK Off SW I TCH VALUE MOVE FEATURE VALUE MASK IT POP POP POP PDP POP PDP PDP POP , RET AH12_X: JMP ACT 1: STR::::OUTZ: JHP 01 51 OX OX OX OS ES BP V_RET V_RET DISCARD ex 01 SCARD CX RETURN TO CALLER RETURN TO CALLER ;----- WRITE STRING AH13: CMP JAE Jexz PUSH MOV SUB SAL MOY POP PUSH AL,04 STR_OUTZ STR_OUTZ BX 8L,BH 8H,SH BX,l S I, I ex + OfFSET CURSOR_POSN I BX 51 RANGE CHECK I NVAL' 0 PARAMETER SAVE REGISTER GET PAGE TO LOW BYTE ; *2 fOR WORD OFFSET ; GET CURSOR POSITION RESTORE ; CURRENT VALUE ON STACK STR_l : PUSH HOV INT POP PUSH PUSH PUSH XCHG MOV ,"e eM' J' eMP JE eMP AX AX.0200H 10H AX ex BX AX AH,AL AL,ES: IBP] BP AL,OOH STR_CR_Lf AL,OAH STR_CR_LF AL,08H ; SET THE CURSOR POS I TI ON ; GET THE CHAR TO 14R' TE CARRIAGE RETURN 1I ME FEED BACKSPACE August 2, 1984 IBM Enhanced Graphics Adapter 151 21"6 2146 214A. 214C 214F 2152 2154 2158 2159 2159 2158 2150 215F 2163 2165 2169 216B 216E 2110 2112 2172 2174 2176 2176 2119 2118 2170 2170 211F 2181 2183 2185 2187 2188 2188 218C 2180 218E 14 35 3C -01 74 31 89 0001 60 FC 02 72 05 26: 6A 5E 00 45 84 09 CO 10 FE C2 3A 16 044A R 72 11 3A 36 0481j R 75 07 B8 OEOA CD 10 FE CE fE C6 2A 02 88 0200 CD 10 E8 OE 84 OE CO 10 8A OF 2A FF 01 E3 88 97 0450 R 58 56 59 £2 A2 2190 SA 2191 2193 2195 2191 2199 219C 219E 3C 01 74 09 3C 03 74 05 88 0200 CD 10 219E 219E SF 219F 5E 21AO 58 21A1 59 21A2 5A 21A3 1F 21All 07 21AS 50 21A6 CF 21A7 21A7 21A7 21A7 21A8 21A9 21AA 21AB 21AC 21AO 21BO 21B5 2187 218C 216E F6 1E 50 53 51 52 fa OCFE R 80 lE 0500 R 01 74 63 C6 06 0500 R 01 84 OF CD 10 21CO 21C2 21C6 21C8 21CB 21CC 21CE 2100 2101 2102 8A CC 8A 2E 0484 R FE C5 E8 2220 R 51 84 03 CO 10 59 52 II 02 2104 2104 2106 2108 21DA 21DC B4 02 CD 10 84 08 CD 10 OA Co 6049 6050 6051 6052 6053 6054 6055 6056 6051 6058 6059 6060 6061 6062 6063 6064 6065 6066 6061 6066 6069 6070 6071 6072 6073 6074 6075 6076 6077 6078 6079 6080 6081 6082 6083 6084 6085 6086 6087 6088 6089 6090 6091 6092 6093 60911 6095 6096 6091 6098 6u99 6100 6101 6102 6103 6104 6105 6106 6107 6108 6109 6110 6111 6112 6113 6114 6115 6116 6111 6118 6119 6120 6121 6122 6123 612'-1 6125 6126 6127 6128 6129 6130 6131 6132 6133 613'-1 6135 6136 6137 6138 6139 6140 6141 6142 6143 6144 6145 6146 6147 6148 6149 6150 6151 6152 6153 6~54 6155 6156 6157 6158 6159 6160 6161 6162 6163 6164 6165 6166 6167 6168 6169 6170 6171 6172 6173 6174 JE CHP JE MOV CHP JB HOV '"C HOV 'NT 'NC CHP JB CMP JNE HOV , NT DEC INC SUB HOV 'NT JHP STR~CR_Lr: HOV 'NT HOV SUB SAL HOV POP POP POP LOOP POP CHP JE CHP JE MOV 'NT STR_OUT: ~~;O~~_Lf STR_CR_Lf CX,l AH,2 DO STR SL-:-ES: [BP] BP AH,09H 10M DL OL, BYTE PTR CRT _COLS STR_2 DH,ROWS ~~;O~OAH 10M OM OM OL,DL AX,0200H 10M SHORT STR_4 AH,OEH 10M BL,8H BH,SH BX,1 OX, (BX + OffSET CURSOR_POSN I AX BX CX STR_1 OX AL,1 STR OUT AL,3 STR our AX,0200H 10M BELL COUNT OF CHARACTERS CHECK WHERE ATTR IS NOT IN THE STRING GET THE ATTRIBUTE NEXT ITEM IN STRING ; WRITE THE CHAR/ATTR NEXT CURSOR POSITION COLUMN OVERFLOW NOT YET NEXT ROW COLUMN ZERO ; SET THE CURSOR ; GET PACE TO LOW BYTE *2 fOR WORD OFFSET ; CE' CURSOR POSITION RECOVER CURSOR POSI T I ON fROM I!'USH S I ABOVE SET CURSOR pas I TI ON ALLOW FALL THROUGH V_RET V_RET PROC POP POP POP POP POP POP POP POP IRET ENDP NEAR 01 SI BX CX OX OS ES BP ; VIDEO BIOS RETURN COMBO_VIDEO ENOl' e INCLUDE VPRSC. INC C SUBTTL VPRSC.INC e PAGE e C ; --- - - ------------------- - ------ -- ---------------------- - --------- INTERRUPT 5 e THIS LOGIC WILL BE INVOKED BY INTERRUPT 05H TO PRINT THE e SCREEN. THE CURSOR POSITION AT THE TIME THIS ROUTINE IS INVOKED e WILL BE SAVED AND RESTORED UPON COMPLETION. THE ROUTINE IS e INTENDED TO RUN WITH INTERRUPTS ENABLED. IF A SUBSEQUENT e 'PRINT SCREEN' KEY IS DEPRESSED DURING THE TIME THIS ROUTINE C IS PRINTING IT WILL BE IGNORED. C ADDRESS 50:0 CONTAINS THE STATUS OF THE PRINT SCREEN: c e 50:0 =0 EITHER PRINT SCREEN HAS NOT BEEN CALLED e OR UPON RETURN fROM A CALL THIS INDICATES e A SUCCESSFUL OPERAT I ON. C =1 PR I NT SCREEN I S I Ii PROGRESS ------------------- C C ; ---- ------- --"-'-255---- -ER-RO-R---EN--C-O-UN-TER-E-D---O-U-R-I-N-C-PR--INT I NG C ASSUME CS: CODE, OS: ABSO C PRINT_SCREEN pROC FAR e ST' C e PUSH OS PUSH AX MUST RUN WI TH I NTS ENABLED MUST USE 50:0 FOR DATA AREA STORAGE C PUSH BX C PUSH ex USE THIS LATER FOR CURSOR LIMITS C PUSH OX WI LL HOLD CURRENT CURSOR pas C CALL ODS e eMP STATUS_BYTE, 1 SEE IF pR I NT ALREAOY I N PROGRESS C e JZ EXIT MOV STATUS BYTE, 1 JUMP If PRINT IN PROGRESS INDICATE PRINT NOW IN PROGRESS C HOV AH,15 - WI LL REQUEST THE CURRENT MODE C 'NT 10M [AL)=MOOE (NOT USED) C [AH ]=NUMBER COLUMNS/L I NE C [BHj=VISUAL PAGE e e AT THIS POINT WE KNOW THE COLUMNS/LINE ARE IN C , [AX] AND THE PACE If APPLICABLE IS IN IBH). THE STACK -------- ------- ---- C C ; ; - - -- HAS -- ----- OS,AX,BX.CX,OX PUSHED. [AL] --H-A-S--V-ID-E-O--M-O-D-E---- - --- C MOV CL,AH ; WILL MAKE USE OF [CX] REG TO C HOY CH,ROWS e INC CH e CALL CRLF e PUSH CX CONTROL ROW At COLUMNS ADJUST CAR RETURN LINE FEED ROUT I NE SAVE SCREEN BOUNDS C HOV AH,3 WILL NOW REAO THE CURSOR. C INT 10H AND PRESERVE THE POSITION C POP CX RECALL SCREEN BOUNDS C PUSH OX RECALL I BH I=V I SUAL PAGE e C -------X-O-R------D--X-,O-X-----------------------S-E-T--C-U-RS-O-R---P-O-S-I-T-IO--N--T-O (0,0) e THE LOOP FROM PRI10 TO THE INSTRUCTION PRIOR TO PRI20 e I S THE LOOP TO READ EACH CURSOR pas I T ION FROM THE C SCREEN AND pR I NT. eC ~R~10~----------------------------------------------------------- c HOV AH.2 TO INDICATE CURSOR SET REQUEST , NT 10M NEW CURSOR POS ESTABLISHED MOV , NT AH,8 10M TO INDICATE REAO CHARACTER CHARACTER NOW I N I AL I OR AL,AL SEE IF VALID CHAR 152 IBM Enhanced Graphics Adapter August 2, 1984 210E 2HO 2H2 2H2 2H3 21E5 21 E7 21 E9 21EA 21EO 21EF 21Fl 21F3 21 F5 21 F7 21 f9 21 fA 21 fD 21FE 2200 2202 75 02 BO 20 52 33 02 32 E4 CO 17 5A f6 C4 29 7521 FE C2 3A CA 75 Of 32 02 8A [2 52 E8 2220 R SA f[ C6 3A [E 75 00 2204 2205 2207 2209 220E 2210 2210 2211 2213 2215 221A 221A 221B 221C 2210 221 E 221f 2220 SA 84 02 CO 10 C6 06 0500 R 00 EB OA 5A B402 CO 10 C6 06 0500 R FF SA 59 58 58 1f Cf 2220 2220 2222 33 02 32 £4 2224 2226 2228 222A 222C 222E 222F BO 00 CO 17 32 [4 BO OA CO 17 C3 222F 0000 0000 0000 0008 OOOE 0016 OOlC 0024 002A 0032 0038 0040 0046 004E 0054 005C 0062 006A 0070 0078 007E 0086 008C 0094 009A 00A2 00A8 OOBO 00B6 OOBE 00C4 ooce 0002 OOOA OOED 00E8 OOH 00F6 OOfC 0104 010A 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 7£ 81 AS 81 61 BO 99 81 7E 00 00 00 00 00 7E FF DB FF fF C3 £7 Ff 7E 00 00 00 00 00 00 6C FE FE FE FE 7C 38 10 00 00 00 00 00 00 10 38 7C FE 7C 38 10 00 00 00 00 00 00 18 3C 3C E7 E7E7 18 18 3C 00 00 00 00 00 18 3C 7E Ff FF 1E 18 18 3C 00 00 00 00 00 00 00 00 18 3C 3C 18 00 00 00 00 00 FF fF FF Ff Ff E7 C3 C3 E7 Ff FF FF FF Ff 00 00 00 00 3C 66 42 42 66 3C 00 00 00 00 FF FF FF ff C3 99 80 80 99 C3 FF ff ff FF 00 DOlE DE 1A 32 78 CC CC CC 78 00 00 00 00 00 3C 66 66 66 3c 18 1E 18 18 00 00 00 00 00 3f 33 3F 30 30 30 70 FO EO 00 00 00 00 00 7F 63 7F 63 63 63 61 E7 E6 CO 00 00 00 00 18 18 DB 3C E7 3C DB 18 18 00 00 00 00 00 80 co EO F8 fE F8 EO CO 80 00 00 00 00 00 02 06 DE 3E FE l [ DE 06 02 00 00 00 00 00 18 3C 7E 18 18 18 7E 3C 18 00 00 00 00 00 66 66 66 66 6175 6176 6177 6178 6179 6180 6181 6182 6183 6184 6185 6166 6187 6186 6189 6190 6191 6192 6193 6194 619S 6196 6191 6198 6199 6200 6201 6202 6203 6204 6205 6206 6201 6206 6209 6210 6211 6212 6213 6214 6215 6216 6217 6218 6219 6220 6221 6222 6223 6224 6225 6226 6227 6228 6229 6230 6231 6232 6233 , , 2 3 5 6 7 8· '0 "'2 13 ,.1'"5 '6 17 '8 20 2' 22 2'23 25 26 2.27 28 30 31 32 33 '3"5 36 3.37 38 "'.0,' ""'"6"'' ,"'8.' 50 5' 52 53 '5""6 57 558. .60 6' 62 63 65 e e JNZ PRI1S MOV AL, I JUMP I F VAL I D CHAR MAKE A BLANK C PR115: e PUSH e XOR e XOR e lNT e POP e TEST e JNZ e e 'Ne eNP e JNZ e XOR e MOV e PUSH e CALL e POP e e 'Ne eNP e JNZ e OX OX,OX AH,AH 17H OX AH,029H ERR10 OL CL,OL PRll0 DL,DL AH,DL OX CRLf OX OH CH,OH PRll0 SAVE CURSOR POSITION INDICATE PRINTER 1 TO INDICATE PRINT CHAR IN PR 1NT THE CHARACTER RECALl CURSOR POS j T I ON TEST FOR PR r NTER ERROR JUMP r F ERROR DETECTED ADVANCE TO NEXT COLUMN SEE I F AT END Of llN[ I F NOT PROCEED BACK TO COLUMN 0 [AHI"'O SAVE NEW CURSOR POS tTl ON LI NE fEED CARR I AGE RETURN RECALL CURSOR PQS I T rON ADVANCE TO NEXT II NE FIN I SHED? I F NOT CONTI NUE [ALI e POP OX RECALL CURSOR POS I T ION e NOV e , NT c MOV c JMP e ERR10: e e POP NOV e INT e NOV e EXIT; AH,2 'OH STATUS_BYTE,O SHORT EXIT OX AH,2 'OH STATUSrBYTE,OFFH TO I NOICATE CURSOR SET REQUEST CURSOR POSlT ION RESTORED INDICATE FINISHED EXIT THE ROUTINE GET CURSOR POSITION TO REQUEST CURSOR SET CURSOR POSITION RESTORED I NO I CA TE ERROR e POP c POP e POP e POP e POP e e I RET PR I NT_SCREEN e OX ex 8X AX OS ENDP RESTORE ALL THE REG I STERS USED e ; ------ CAR~ I AGE RETURN, LINE fEED SUBROUT I NE e e CRLf PROC NEAR e XOR OX, OX PRINTER 0 e XOR AH,AH WILL NOW SEND INITIAL CR, If e TO PRINTER e e e MOV AL,ODH 'NT 17H XOR AH,AH eR SEND THE LI HE fEED NOW FOR THE CR e MOV AL,OAH LF e I NT 17H SEND THE CARRIAGE RETURN e RET e CRLf ENDP e e SUBTTL CODE ENDS ENO CODE CGMN PAGE, 120 SUBTTL MONOCHROME CHARACTER CENERA TOR SECMENT PUBLI C PUBLIC CCMN LABEL BYTE OB OOOH, OOOH, OOOH, OOOH, OOOH, OOOH,OOOH, OOOH ; ~~p~~!~F~ri6TTERN OB OOOH,OOOH,OOOH,OOOH,OOOH,OOOH ; BOTTOM HALf 00 OB 000H,000H,07EH,OB1H,OA5H,081H,061H,OBDH TH_01 OB 099H,081H,07EH,000H,000H,000H , BT 01 DB 000H,OOOH.07£H,OFfH,OOBH,OHH,OfFH,OC3H ; TH::::02 OB 0£7H,OFFH,07EH,000H,000H,000H , BT_02 08 000H,000H,OOOH,06CH,OFEH,OFEH,OFEH,OfEH ; TH_03 DB 07CH.036H,OlOH,OOOH,OOOH,OOOH ; BT 03 DB 000H,000H,OOOH,010H,038H,07CH,OfEH,01CH ; TH=04 DB 036H,010H,000H,000H,000H,000H BT 04 DB OOOH, OOOH, 018H, 03CH, 03CH, O£7H, onH, OE7H ; TH::::05 08 018H,016H,03CH,000H,000H,000H , Bl_05 OB OOOH, OOOH,016H, 03CH, 07EH, OFfH,OffH, 01EH ; TH_06 DB 018H,018H,03CH,OOOH,000H,OOOH , 6T 06 OB OOOH,000H,OOOH,OOOH,000H,018H,03CH,03CH ; TH::::07 OB 016H,000H,000H,000H,000H,000H 8T 01 DB OFFH,OffH,OFFH,OFFH,OFFH,OE7H,OC3H,OC3H ; TH=08 DB OE:7H,OFfH,OFfH,OfFH,OfFH,OFFH · 81 08 OB OOOH,OOOH,000H,000H,03CH.066H,042H,042H ; TH=09 DB 066H,03CH,000H,000H,000H,000H 8T 09 06 OfFH,OfFH,OfFH, OFFH,OC3H, 099H, OBOH, OBOH TH,=,OA 06 099H,OC3H,OFFH,OFFH,OffH,OfFH BT OA DB OOOH,OOOH, 01 EH, OOEH, 01AH, 032H, 078H, OCCH TH::::OB DB OCCH, aCCH, 078H, OOOH, OOOH, OOOH ; BT_OB DB 000H,000H,03CH,066H,066H,066H,03CH,018H ; TH_OC DB 07EH,018H,016H,000H,000H,OOOH , BT DC DB OOOH,000H,03FH,033H,03fH,030H,030H,030H ; TH=OD DB 010H,OFOH,OEOH,000H,000H,OOOH 6T 00 DB OOOH, OOOH, 07FH, 063H, 07FH, 063H, 063H, 063H TH::::OE DB 067H,OE7H,OE6H,OCOH,OOOH,000H , BT_OE 08 000H,000H,016H,018H,00BH,03CH,OE7H,03CH ; TH_Of OB 008H, 018H,018H, OOOH, OOOH, OOOH 000H,OOOH,080H,OCOH,OEOH,OF8H,OfEH.Of6H; TH_10 DB OEOH,OCQH,080H,000H,OOOH,OOOH 8T 10 DB OOOH,OOOH, 002H, 006H, OOEH, 03£H, OF[H, 03EH TH::::11 DB OOEH, 006H, 002H,000H, OOOH,OOOH , BT _11 DB 000H,000H,018H,03CH,07EH,01SH,016H,018H ; TH_12 DB 07EH,03CH,01SH,OOOH,000H,000H ; BT_'2 DB 000H,000H,066H,066H,066H,066H,066H,066H ; TH-13 August 2, 1984 IBM Enhanced Graphics Adapter 153 0112 0118 0120 0126 012E 0134 013C 0142 014A 0150 0158 015E 0166 016c 0114 OHA 0182 0188 0190 0196 019E 01A4 01AC 01B2 alBA 66 66 00 66 66 00 00 00 0000 7F DB DB DB 78 lB lB 16 lB 00 00 00 00 7C C6 60 38 6C c6 C6 6C 38 OC C6 1C 00 00 00 00 00 00 00 00 00 FE FE FE 00 00 00 00 00 18 3C 7E 18 18 18 7E 3C 18 7E 00 00 00 00 18 3C 7E 18 18 18 16 18 18 00 00 00 00 00 18 18 18 18 18 18 7E 3C 18 00 00 00 00 00 00 00 18 OC FE OC 18 00 00 00 00 00 00 00 00 00 30 60 FE 60 30 00 00 00 00 00 00 00 00 00 00 CO CO CO FE 00 00 00 00 00 00 00 00 00 28 6C FE 6C 28 00 00 00 00 00 00 00 00 10 38 38 7C 7C FE FE 00 00 00 00 00 00 00 FE FE 7C 7C 38 38 10 00 00 00 00 01GO 01CS OlCE 0106 010C 01E4 OlEA 01F2 01F8 0200 0206 020E 0214 021C 02"22 02?A 02]0 0238 023E 0246 024C 0254 025A 0262 0268 0210 0276 027E 0284 028C 0292 029A 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 18 3C 3C 3C 18 18 00 18 18 00 00 00 00 66 66 66 24 00 00 00 000000000000 00 00 6C 6C FE 6C 6C 6C FE 6C 6C 00 00 00 1818 1C C6 C2 CO 7C 06 86 C6 7C 18 18 00 00 00 00 00 C2 C6 ac 18 30 66 C6 00 00 00 00 00 38 6C 6C 38 76 DC CC CC 76 00 00 00 00 30 30 30 60 00 00 00 00 00 00 00 00 00 00 00 OC 18 30 30 30 30 30 18 OC 00 00 00 00 00 30 18 OC OC OC DC OC 18 30 00 00 00 00 00 00 00 66 3C H 3C 66 00 00 00 00 00 00 00 00 00 18 18 7E 18 18 00 00 00 00 00 00 00 00 00 00 00 00 00 18 18 18 30 00 00 00 00 00 00 00 00 FE 00 00 00 00 00 00 00 00 00 00 UO 00 00 00 00 00 18 18 00 00 00 00 00 02 06 OC 18 30 60 CO 80 00 00 00 00 O2AO 02A8 02AE 0286 028C 02C4 02GA 0202 0208 02EO 02E6 02EE 02F4 02FC 0302 030A 0310 0318 031E 0326 onc 0334 OBA 0342 0348 00 00 7C C6 CE DE F6 E6 C6 C6 7C 00 00 00 00 00 18 38 78 18 18 18 18 18 7[ 00 00 00 00 00 7C C6 06 OC 18 30 60 c6 FE 00 00 00 00 00 7C C6 06 06 3C 06 06 C6 7C 00 00 00 00 00 oc lC 3C 6C CC FE OC OC 1E 00 00 00 00 00 FE CO CO CO FC 06 06 C6 7C 00 00 00 00 00 38 60 CO CO FC C6 C6 C6 7C 00 00 00 00 00 FE C6 06 DC 18 30 30 30 30 00 00 00 0000 7C C6 C6 C6 7C C6 c6 C6 7C 00 00 00 0000 7C C6 C6 C6 7E 06 06 OC 78 00 00 00 00 00 00 18 18 00 00 00 18 18 00 00 00 00 00 00 00 18 18 00 00 00 18 18 30 00 00 00 00 00 06 OC 18 30 60 30 66 67 68 69 70 71 72 H 74 75 76 77 78 79 80 81 82 83 8a4s 86 87 88 89 90 9' 92 "94 95 96 97 98 99 100 10' 102 103 '04 '05 '06 107 108 ,,,109 110 112 113 114 115 ,,,116 117 119 '20 '21 122 123 124 125 '26 '27 '28 129 11330' 132 133 134 135 1m36 138 1'43.9 '41 '42 '43 144 ,"5 146 147 148 '49 150 151 152 ,,,153 154 156 157 158 159 16. 16' '62 163 164 165 16. '".87 ~69 170 171 172 173 174 175 17' 177 178 179 18. 181 182 183 184 185 18' 187 188 189 19. 191 DB 000H,066H,066H,OOOH,OOOH,OOOH , BT_'3 DB 000H,OOOH,07FH,OOBH,OOBH,OOBH,07BH,01BH ; TH_14 DB 01 BH, 01 BH, 01BH, OOOH, OOOH, OOOH BT_li1 DB OOOH, 07CH, OC6H, 060H, 038H, 06CH, OC6H, OC6H TH_'5 DB 06CH,038H,00CH,OC6H,07CH,000H , BT_1S DB OOOH,OOOH,OOOH,OOOH,OOOH,OOOH,OOOH,OOOH ; TH_16 DB OFEH,OFEH,OFEH,OOOH,OOOH,OOOH BT 16 DB OOOH, OOOH, 018H, 03CH, 07EH ,018H, 018H, 018H TH=,7 DB 07EH,03CH,018H,07[H,000H,000H , 8T_17 DB 000H,000H,018H,03CH,07EH,018H,018H,018H ; TH_18 DB 018H,018H,018H,OOOH,OOOH,OOOH , aT 18 DB OOOH,OOOH,018H,018H,018H,018H,018H,018H ; TH='9 DB 07EH, 03CH, 018H, OOOH,OOOH, OOOH BT_19 08 OOOH, OOOH, OOOH, 000H,018H, OOCH, OFEH, OOCH TH_' A DB 018H,OOOH,000H,OOOH,000H,OOOH ; BT_1A DB 000H,OOOH,000H,000H,030H,060H,OFEH,060H ; TH_18 08 DB g~g~:ggg~: ggg~: ggg~; ggg~:ggg~, OCOH, OCOH ~~=~~ 08 OFEH,OOOH,OOOH,OOOH,OOOH,OOOH ; 8T_1C 08 000H,OOOH,000H,OOOH,028H,06CH,OFEH,06CH i TH_1D 08 DB g5~~:ggg~: ggg~:g~g~: g~g~: g~~~, 07CH, 07CH ~ ~~=~~ DB OFEH, 0 FEH, OOOH, OOOH, OOOH, OOOH 8T_1 E DB OOOH, OOOH,OOOH, OFEH, OFEH, 07CH, 07CH, 038H TH_1 F DB 038H, 010H, OOOH,OOOH, OOOH, OOOH 6T_, F DB OOOH,OOOH, OOOH,OOOH, OOOH, OOOH, OOOH, OOOH ; TH_20 SP DB OOOH,OOOH,OOOH,OOOH,OOOH,OOOH BT_20 SP DB OOOH, OOOH, 01 8H, 03CH,03CH, 03CH, 018H, 01 8H TH_21 1 DB 000H,018H,018H,OOOH,000H,OOOH ; 8T_21 ! DB 000H,066H,066H,066H,024H,OOOH,OOOH,OOOH ; TH_22 " DB DB ggg~: ggg~: ggg~: g~g~: gn~: g~g~, 06CH, 06CH ~ ~~=~~ ; DB 08 g~~~:g~~~:g~g~;gg~~:ggg~:ggg~~07CH,006H ; ~~=~t ~ DB DB ggg~:gg~~:g~g~:gbg~:g~~~:gg~~,OOCH,0'8H ; ~~=~~ fs' 08 030H,066H,OC6H,OOOH,OOOH,OOOH 8T 25 '%' DB OOOH, OOOH, 038H, 06CH, 06CH, 038H, 076H, ODCH TH=26 &: DB OCCH,OCCH,076H,OOUH,000H,000H ; BT 26 iii: 08 OOOH, 030H, 030H,030K, 060H, OOOH, OOOH, OOOH ; TH=27 I DB OOOH, OOOH, OOOH,OOOH, OOOH. OOOH BT 27 08 OOOH,OOOH,OOCH,018H,030H,030H,030H,030H TH_28 ( DB 08 g~g~; 86g~: ggg~: g~g~: ggg~: ggg~, OOCH, OOCH ; ~~=~~ ~ i DB DB ggg~; gbg~: g~g~:ggg~: g~~~;g~g~. OF FH, 03CH ~~=~: l DB 066H,OOOH,OOOH,OOOH,OOOH,000H , BT_2A * DB 000H,OOOH,OOOH,OOOH,018H,018H,07EH,018H ; TH_2B + DB 018H,OOOH,OOOH,OOOH,OOOH,OOOH , BT_28 + DB OOOH,OOOH,OOOH,OOOH,OOOH,OOOH,OOOH,OOOH ; TH_2C DB 018H,018H,018H,030H,OOOH,000H IH 2C , DB OOOH,OOOH,OOOH,OOOH,OOOH,OOOH,OFEH,OOOH TH=20 08 OOOH,OOOH,OOOH,OOOH,OOOH,OOOH ; 8T_20 DB OOOH,OOOH,OooH,OOOH,OOOH,OOOH,OOOH,OOOH ; TH_2E · DB 000H,018H,018H,OOOH,000H,OOOH ; BT_2E · DB OOOH,OOOH,002H.006H,OOCH,018H.030H,060H ; TH_2F / DB OCOH, 080H, OOOH, OOOH, OOOH, OOOH DB 000H,OOOH,07CH,OC6H,OCEH,OOEH,OF6H,OE6H ; TH_30 0 DB OC6H, OC6H, 07CH,OOOH, OOOH, OOOH ; 8T_30 0 DB 000H,000H,018H,038H,078H,018H,018H,018H ; TH_31 1 08 018H,018H,07[H,OOOH,000H,OOOH 8T_31 1 08 000H,OOOH,07CH,OC6H,006H,OOCH,018H,030H TH_32 2 DB DB ggg~; gg~~: g;~~:gg~~: gg~~:gg~~, 03CH, 006H ; n=~~ ~ DB 006H,OC6H,07CH,OOOH,OOOH,OOOH 8T_33 3 08 OOOH,OOOH,OOCH,01CH,03CH,06CH,OCCH,OfEH TH_344 08 DB ggg~:ggg~;g~~~;ggg~:ggg~;ggg~,OFCH,006H ~ ~~=i~ ~ DB 006H,OC6H,01CH,OOOH,OOOH,OOOH ; 8T_35 5 DB OOOH,000H,038H.060H,OCOH,OCOH.OFCH,OC6H ; TH_36 6 08 OC6H,OC6H,07CH,OOOH,OOOH,OOQH ; 8T_36 6 08 000H,OOOH,OFEH,OC6H,006H.00CH,018H,030H ; TH_37 7 DB DB g~g~:g~~~:g~g~:gg~~:gg~~:gg~~,07CH,OC6H i ~~3~ J 08 DB gg~~: gg~~: gig~; gg~~:gg~~: gg~~, 07EH, 006H ; ~~=i~ ~ DB 006H,OOCH,078H,OOOH,000H,OOOH , BT_39 9 08 000H,000H,OOOH,018H,018H,OOOH,000H,000H ; TH_3A : DB 018H,018H,OOOH,OOOH,OOOH,OOOH , 8T 3A : DB 000H,OOOH,OOOH,018H,018H,OOOH,OOOH,000H ; TH=38 ; DB 018H,018H,030H,OOOH,000H,000H ; 8T_3B , DB OOOH,OOOH,006H,OOCH,018H,030H,060H,030H ; TH_3C < .r"'\ 154 IBM Enhanced Graphics Adapter August 2, 1984 ~ ~ ~ 0350 0356 035E 0364 036C 0372 037A 18 DC 06 00 00 00 00 00 00 00 00 7E 00 00 7£ 00 00 00 00 00 00 00 60 30 18 DC 06 OC 18 30 60 00 00 00 00 00 7C C6 C6 DC 18 18 00 18 18 00 00 00 0380 0388 038E 0396 039C 03A4 03M 0382 0388 03CO 03C6 03CE 0304 a30C 03E2 03EA 03fO 03F8 03FE 0406 040C 0414 041A 0422 0428 0430 0436 043E 0444 044C 0452 045A 00 00 7C C6 C6 DE DE OE DC CO 7C 00 00 00 00 00 10 38 6C C6 C6 FE c6 c6 c6 00 00 00 00 00 FC 66 66 66 7C 66 66 66 FC 00 00 00 00 00 3C 66 C2 CO CO CO C2 66 3C 00 00 00 00 00 F8 6C 66 66 66 66 66 6c F8 DO DO 00 00 00 FE666266 78 68 62 66 FE 00 00 00 00 00 FE 66 62 68 78 68 60 60 fO 00 00 00 00 00 3C 66 C2 co CO DE c6 66 3A 00 00 00 00 00 C6 C6 C6 C6 ,.FE C6 C6 c6 C6 00 00 00 00 00 3C 16 18 18 18 18 18 3C 00 00 00 00 00 lEOCOCOC DC DC CC CC 78 00 00 00 00 00 E6 66 6C 6c 78 6C 6C 66 E6 00 00 00 00 00 fO 60 60 60 60 60 62 66 FE 00 00 00 00 00 C6 H FE FE 06 c6 C6 C6 C6 00 00 00 00 00 c6 E6 F6 FE DE CE C6 C6 C6 00 00 00 00 00 38 6C C6 C6 C6 C6 C6 6C 38 00 00 00 0460 0468 046E 0476 047C 0484 048A 0492 0498 04AO 04A6 04AE 0484 04BC 04C2 04CA 0400 0408 04DE 04E6 04EC 04F4 04FA 0502 0508 0510 0516 051 E 0524 052C 0532 053A 00 00 FC 66 66 66 7C 60 60 60 FO 00 00 00 00 00 7e C6 C6 C6 C6 06 DE 7C DC DE 00 00 00 00 Fe 66 66 66 7C 6C 66 66 E6 00 00 00 ,.00 00 7C C6 C6 60 38 DC C6 c6 7C 00 00 00 00 00 7E 7E 5A 18 1B 18 18 3C 00 00 00 00 00 C6 C6 C6 C6 C6 C6 C6 C6 7C 00 00 00 00 00 C6 C6 G6 C6 C6 C6 6C 38 10000000 00 00 C6 C6 C6 C6 06 06 FE 7C 6c 00 00 00 00 00 C6 C6 6C 38 38 38 ,. 6C C6 C6 00 00 00 00 00 66 66 66 66 3C 16 18 18 3C 00 00 00 00 00 FE C6 8C 30 60 C2 C6 FE 00 00 00 00 00 3C 30 30 30 30 30 30 30 3C 00 00 00 00 00 80 CO EO 70 3. 1C DE 06 02 00 00 00 00 00 3C DC OC DC DC DC DC DC 3C 00 00 00 10 38 6C C6 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF 00 0540 0548 054E OSS6 OSSC 0564 056A 0572 0578 0580 0586 30 30 18000000 00 00 00 00 00 00 00 00 00 00 00 00 00 78 ac 7C CC CC 76 00 00 00 00 00 EO 60 60 78 6C 66 66 66 7C 00 00 00 00 00 00 00 00 7C C6 CO co C6 7C 00 00 00 00 00 lC DC DC 3C 6C CC CC CC 76 00 00 00 00 00 00 00 00 7C C6 F£ 192 193 19. 195 196 197 198 199 200 201 202 203 20' 205 206 207 208 209 210 211 212 213 214 215 216 217 21B 219 220 221 222 223 22' 225 226 227 228 229 230 231 232 233 234 235 236 237 23B 239 2.0 2" 2'2 243 2" 245 2.6 2.7 2'B 2'9 250 251 252 253 254 255 256 257 25B 259 260 261 262 263 26. 265 266 267 26. 269 270 271 272 273 27' 275 276 277 27B 279 2BO 281 282 283 28. 265 286 287 28B 289 290 291 292 293 29' 295 296 297 298 299 300 301 302 303 3D' 305 306 307 308 309 310 311 312 313 31' 315 316 311 DB 01BH, OOCH, 006H,OOOH, OOOH, OOOH 8T 3C <: DB OOOH, OOOH, OOOH, OOOH, ODOH, 07EH, OOOH, OOOH TH::::30 '" DB 07EH, OOOH, OOOH. OOOH, OOOH, OOOH ST 30 "" DB OOOH,OOOH, 060H, 030H,018H, OOCH, 006H, OOCH TH=3E > 08 018H, 030H, 060H, OOOH, OOOH, OOOH 8T 3E > 08 OOOH, OOOH, 07CH, OC6H, OC6H, OOCH, OlBH, 018H ; TH=3F ? DB OOOH, 018H, 018H, OOOH, OOOH, OOOH BT_3F ? DB OOOH, OOOH, 07CH, OC6H, OC6H, ODEH,OO[H,OOEH ; TH_40 @ DB OOCH, OCOH, 07CH, OOOH, OOOH, OOOH BT 40 @ DB OOOH, OOOH, 01 OH, 038H, 06CH, OC6H, OC6H, OFEH TH=41 A DB OC6H, OC6H, OC6H, OOOH, OOOH, OOOH ; 8T 41 A DB ooaH, OOOH, OFCH, 066H. 066H, 066H, 07CH, 066H ; TH=42 8 DB 066H. 066H, OFCH, OOOH, OOOH, OOOH ; ST_42 B DB OOOH, OOOH, a3CH, 066H, OC2H, OCOH, OCOH, OCOH TH_43 C DB OC2H, 066H, 03CH, OOOH, OOOH, OOOH BT_43 C DB OOOH, OOOH, OF8H, 06CH. 066H, 066H, 066H, 066H ; TH .·44 0 DB 066H, 06CH, OF8H, OOOH, OOOH, OOOH 6T 44 0 OB aOOH, OOOH, OfEH, 066H, 062H, 068H, 078H, 068H TH::45 E DB 062H, 066H, OFEH, OOOH, OOOH. OOOH 8T_45 E DB OOOH, OOOH, OFEH, 066H, 062H, 068H, 078H, 068H TH_46 F DB 060H, 060H, OfOH, OOOH, OOOH, aOOH BT 46 F DB OOOH, OOOH, 03CH, 066H, OC2H, OCOH, OCOH,ODEH TH::::47 G DB OC6H, 066H, 03AH, OOOH, OOOH, OOOH 8T 47 G DB OOOH, OOOH, OC6H, OC6H, OC6H, OC6H. OFEH, OC6H TH::::48 H DB OC6H, OC6H, OC6H. OOOH, OOOH, OOOH 6T_48 H DB OOOH, OOOH, 03CH, 018H, 018H, 018H, 018H, 018H TH_49 I DB 016H, 018H, 03CH, OOOH, OOOH, OOOH 8T 49 I DB OOOH, OOOH, 01 EH, OOCH, OOCH, OOCH, OOCH, OOCH TH::::4A J DB OCCH, OCCH, 078H, OOOH, OOOH, OOOH BT 4A J DB OOOH, OOOH, OE6H, 066H, 06CH, 06CH, 078H, 06CH TH::::4B K DB 06CH, 066H, OE6H, OOOH, OOOH, OOOH BT_4B K DB OOOH, OOOH, OfOH, 060H, 060H, 060H, 060H, 060H TH_4C L DB 062H, 066H, OFEH,OOOH, OOOH, aOOH BT_4C L DB OOOH, OOOH, OC6H, OEEH, OFEH, OFEH, 006H, OC6H TH_4D M DB OC6H, OC6H, OC6H, OOOH, OOOH, OOOH BT 40 M DB OOOH, OOOH, OC6H, OE6H, OF6H, OFEH, OOEH, OCEH TH::::4E N DB OC6H, OC6H, OC6H, OOOH, OOOH, OOOH 8T 4E N DB OOOH, OOOH, 038H, 06CH, OC6H, OC6H. OC6H, OC6H TH::::4f 0 DB OC6H, 06CH, 038H, OOOH, OOOH, OOOH 8T_4F 0 DB OOOH, OOOH, OFCH, 066H, 066H, 066H, 07CH, 060H ; TH_50 p DB 060H, 060H, OFOH, OOOH, OOOH, OOOH 8T 50 P DB OOOH, OOOH, 07CH, OC6H, OC6H, OC6H, OC6H, 006H TH-51 Q DB OOEH, 07CH, OOCH, OOEH, OOOH, OOOH BT_51 Q DB OOOH, OOOH, OFCH, 066H, 066H, 066H, 07CH, 06CH TH_52 R DB 066H, 066H, OE6H, OOOH, OOOH, OOOH 8T_52 R DB OOOH,OOOH, 07CH, OC6H, OC6H, 060H, 038H, OOCH TH_53 5 DB OC6H, OC6H, 07CH. OOOH, OOOH, OOOH 6T 53 S DB OOOH, OOOH, 07EH, 07EH,05AH, 0 18H, 018H, 018H TH::::54 T DB 018H, 018H, 03CH,OOOH, OOOH, OOOH BT _54 T DB OOOH, OOOH, OC6H, OC6H, OC6H, OC6H, OC6H, OC6H TH_55 U DB OC6H, OC6H, 07CH, OOOH, OOOH, OOOH 8T_55 U DB OOOH, OOOH, OC6H, OC6H, OC6H, OC6H, OC6H, OC6H TH_56 V DB 06CH, 038H, 010H, OOOH, OOOH, OOOH 8T _56 V 08 OOOH, OOOH, OC6H, OC6H, OC6H, OC6H, OD6H, 006H TH ·.57 W DB OFEH, 07CH, 06CH,000H, OOOH, OOOH BT_57 W DB OOOH, OOOH, OC6H,OC6t-1, 06CH, 038H,038H, 038H TH_58 X DB 06CH, OC6H, OC6H, OOOH, OOOH, OOOH 8T_58 X DB OOOH, OOOH, 066H, 066H, 066H, 066H, 03CH, 018H TH_59 Y DB 018H, 018H, 03CH, OOOH, OOOH, OOOH ; 8T 59 Y DB OOOH, OOOH, OFEH, OC6H, 08CH, 018H, 030H, 060H ; TH::::SA Z DB OC2H, OC6H, OFEH,OOOH, OOOH, OOOH B1 _SA Z DB OOOH, OOOH, 03CH,030H, 030H, 030H, 030H, 030H TH_5B [ DB 030H, 030H, 03CH, OOOH, OOOH, OOOH BT_5B [ DB OOOH, OOOH, oaOH, OCOH, OEOH, 070H,038H, 01eH TH_5C DB OOEH, 006H, 002H, OOOH, OOOH, OOOH BT_SC DB OOOH, OOOH, 03CH, OOCH, OOCH, OOCH, OOCH, OOCH TH_5D DB OOCH, OOCH, 03CH,000H, OOOH, OOOH ; BT_SO DB 010H, 038H, 06CH,OC6H, OOOH, OOOH, OOOH, OOOH TH_SE DB OOOH, OOOH, OOOH, OOOH, OOOH, OOOH 8T_5E DB OOOH, OOOH, OOOH, OOOH ,OOOH, OOOH,OOOH, aOOH TH_5f _ DB OOOH, OOOH, OOOH. OOOH,OFFH, OOOH 8T_SF DB 030H, 030H, 018H. OOOH, OOOH, ooaH. OOOH, OOOH ; TH_60 08 OOOH, OOOH, OOOH, OOOH, OOOH, aOOH 8T_60 DB OOOH, OOOH, OOOH, OOOH, OOOH, 078H,oaCH, 07CH TH_61 LOWER_CASE A DB OCCH, OCCH, 076H,OOOH, OOOH, OOOH 8T_61 LOWER_CASE A DB OOOH, OOOH, OEOH,060H, 060H, 078H, 06CH, 066H TH_62 L.C. 8 DB 066H, 066H, 07CH, OOOH, OOOH, OOOH BT 62 L.C. DB OOOH, OOOH, OOOH, OOOH, OOOH, 07CH, OC6H, OCOH TH=63 L.C. DB OCOH, OC6H, 07CH, aOOH, OOOH, OOOH 8T_6.3 L.C. DB OOOH, OOOH, 01 CH, OOCH, OOCH, 03CH. 06CH, OCCH TH_64 L.C. DB OCCH, OCCH, 076H,OOOH, OOOH, OOOH 8T_64 L.C. DB OOOH, OOOH, OOOH, OOOH, OOOH, 07CH, OC6H, OF EH TH_65 L.C. August 2, 1984 IBM Enhanced Graphics Adapter 155 058E 0594 059C 05A2 05AA 05BO 0588 058E 05C6 05CC 0504 05DA 05E2 05E8 05fO 05f6 05H 0604 060C 0612 061A CO C6 7C 00 00 00 00 00 38 6c 64 60 fO 60 60 60 fO 00 00 00 00 00 00 00 00 76 CC CC CC 7C OC CC 78 00 00 00 EO 60 60 6C 76 66 66 66 E6 00 00 00 00 00 18 18 00 38 18 18 18 18 3C 00 00 00 00 00 06 06 00 DE 06 06 06 06 66 66 3C 00 00 00 EO 60 60 66 6C 78 6C 66 E6 00 00 00 00 00 38 18 18 18 18 18 18 18 3C 00 00 00 00 00 00 00 00 EC "06 06 06 C6 00 00 00 00 00 00 00 00 DC 66 66 66 66 66 00 00 00 00 00 00 00 00 7C c6 C6 C6 C6 7C 00 00 00 0620 0628 062E 0636 063C 0644 064A 0652 0658 0660 0666 066E 06711 067C 0682 068A 0690 0698 069E 06A6 06AC 06B4 06BA 06C2 06C8 0600 0606 060E 06E4 06EC 06F2 06FA 00 00 00 00 00 DC 66 66 66 7C 60 60 FO 00 00 00 00 00 00 76 CC CC CC 7C DC DC 1E 00 00 00 00 00 00 DC 76 66 60 60 fO 00 00 00 00 00 00 00 00 7C C6 70 1C C6 7C 00 00 00 00 00 10 30 30 fC 30 30 30 36 lC 00 00 00 00 00 00 00 00 CC CC CC CC CC 76 00 00 00 00 00 00 00 00 66 66 66 66 3C 18 00 00 00 00 00 00 00 00 C6 C6 06 06 F[ 6C 00 00 00 00 00 00 00 00 C6 6c 38 38 6c C6 00 00 00 00 00 00 00 00 C6 C6 c6 C6 7E 06 DC f8 00 00 00 00 00 00 F[ CC 18 30 66 FE 00 00 00 00 00 DE 18 18 18 70 18 18 18 DE 00 00 00 00 00 18 18 18 18 00 18 18 18 18 00 00 00 00 00 70 18 18 18 O[ 18 18 18 70 00 00 00 00 00 76 DC 00 00 00 00 00 00 00 00 00 00 00 00 00 00 10 38 6C C6 C6 FE 00 00 00 00 0700 0708 070E 0716 071C 0724 D72A 0732 0738 0740 0746 074E 0754 075C 0762 076A 0770 0778 077E 0786 078C 0794 079A 07A2 07A8 07BO 0786 07BE 07C4 07CC 00 00 3C 66 C2 CO CO C2 66 3C DC 06 7C 00 00 00 CC Cc 00 CC CC cc CC CC 76 00 00 00 00 DC 18 30 00 7C C6 FE CO C6 7C 00 00 00 00 10 38 6C 00 78 OC 7C CC cc 76 00 00 00 00 00 CC CC 00 78 DC 7C CC CC 7f, 00 00 00 00 60 30 18 00 78 DC 7C CC CC 76 00 00 00 00 38 6C 38 00 78 DC 7C cc CC 76 00 00 DO 00 00 00 00 3C 66 60 66 3C DC 06 3C 00 00 00 10 38 6C 00 7C c6 F[ CO C6 7C 00 00 00 00 00 CC CC 00 7C C6 FE co C6 7C 00 00 00 00 60 30 18 00 7C C6 f E co C6 7C 00 00 00 00 00 66 66 00 38 18 18 18 18 3C 00 00 00 00 18 3C 66 00 38 18 18 18 18 3C 00 00 00 00 60 30 18 00 38 18 18 18 18 3C 00 00 00 00 C6 C6 10 38 6C C6 C6 f E C6 C6 00 00 00 31. 319 320 321 322 323 324 325 326 327 32. 329 330 331 332 333 334 335 336 337 33' 339 340 341 342 343 344 3115 346 347 34. 349 350 351 35< 353 354 355 356 357 356 359 360 361 362 363 364 365 366 367 366 369 370 371 372 373 374 375 376 377 376 379 360 361 362 363 364 365 366 367 366 369 390 391 392 393 394 395 396 397 39' 399 400 401 402 403 404 405 406 1107 406 409 410 411 412 413 414 415 416 417 41' 1119 420 421 422 423 424 425 426 427 428 429 430 431 1132 433 434 435 436 437 43. 439 440 441 442 1143 06 06 06 06 DB DB DB DB DB DB DB DB D0B. 00.. D0B. 06 06 00.. 000... 0. 0. DB DB 0. 00.. 0000.... 0. DB 00.. DB 0. DB DB 0.DB 0. DB DB DB DB DB 0D0B.. D. DB DB DB DB DB DB 0DB. D. DB DB DB DB DB DB 0. DB DB DB DB D. DB DB DB DB D. D. OCOH,OC6H,07CH,000H,000H,000H OOOH, OOOH, 038H, 06CH, 064H, 060H, OfOH, 060H 8T 65 l.C. E TH=66 L.C. f 060H,060H,OfOH,000H,OOOH,000H BT_66 l.C. f OOOH,000H,000H,000H,OOOH,076H,OCCH,OCCH ; TH_67 L.C. a OCCH,07CH,00CH,OCCH,078H,000H OOOH,OOOH, OEOH, 060H, 060H, 06CH, 076H, 066H BT_67 L.C. TH_68 L. C. 066H,066H,0[6H,000H,000H,000H OOOH, 000H,01-8H, 018H, OOOH, 038H, 018H, 018H 8T_68 L.C. TH_69 L. C. 018H,018H,03CH,OOOH,OOOH,OOOH · 8T_69 l.C. I 000H,OOOH,006H,006H,000H,OOEH,006H,006H ; TH_6A l.C. J 006H,006H,066H,066H,03CH,000H · BT_6A l.C. J 000H,OOOH,OEOH,060H,060H,066H,06CH.078H ; TH_6B L.C. K 06CH,066H,OE6H,000H,000H,OOOH OOOH, OOOH, 038H, 018H, 018H, 018H,O 18H, 018H 8T_6B L.C. TH_6C L. C. 018H,018H,03CH,000H,OOOH,000H OOOH, OOOH, OOOH, OOOH, OOOH, OECH, 0 FEH, OD6H BT_6C L.C. TH_60 L. C. OD6H,OD6H,OC6H,OOOH,OOOH,OOOH OOOH, OOOH, OOOH. OOOH,OOOH, 00CH,066H,066H 8T_60 L.C, TH_6E L. C. 066H,066H,066H,000H,OOOH,000H , BT_6E L.C. 000H,OOOH,OOOH,OOOH,OOOH,07CH,OC6H,OC6H ; TH_6f L.C. OC6H, OC6H, 07CH, OOOH, OOOH,OOOH 000H,000H,OOOH,OOOH,000H,ODCH,066H,066H ; TH_70 L,C. P 066H,07CH,060H,060H,OFOH,OOOH OOOH, OOOH, OOOH, OOOH, OOOH, 076H, OCCH, OCCH BT_70 L.C. TH_71 L. C. OCCH,07CH,OOCH,OOCH.01[H,OOOH OOOH, OOOH, OOOH,OOOH, OOOH, OOCH, 076H,066H BT_71 L.C. TH_72 L. C. 060H,060H,OFOH,OOOH,OOOH,000H ; 8T_72 L.C. 000H,OOOH,OOOH.000H,OOOH,07CH,OC6H,070H ; TH_73 L.C. 01CH,OC6H,07CH,OOOH,000H,OOOH OOOH, OOOH, 01 OH, 030H, 030H, OfCH, 030H, 030H 8T_73 L.C. TH_14 L. C. 030H,036H,OlCH,OOOH,OOOH,OOOH OOOH, OOOH, OOOH, OOOH, OOOH, OCCH, OCCH, OCCH 8T_74 l.C. TH_75 L. C. OCCH,OCCH,076H,000H,OOOH,OOOH OOOH, OOOH, OOOH, OOOH,OOOH, 066H, 066H,066H 8T_75 L.C, TH." 76 L. C. 066H,03CH,018H.000H,OOOH,OOOH ; BT_76 L.C. V 000H,OOOH,OOOH,OOOH,OOOH,OC6H,OC6H,006H ; TH_77 L.C, W OD6H,OFEH,06CH,OOOH,OOOH,OOOH ; BT_77 L.C. OOOH,OOOH, OOOH, OOOH, OOOH, OC6H, 06CH, 038H TH_78 L. C. 038H,06CH,OC6H,000H,OOOH,OOOH OOOH, OOOH,OOOH, OOOH, OOOH, OC6H, OC6H,oc6H BT_78 L.C. TH_79 l. C. OC6H,07EH,006H.OOCH,Of8H,000H ; 8T_79 L,C. Y OOOH,OOOH,OOOH,OOOH,OOOH,OFEH,OCCH,018H ; TH_7A L.C. Z ggg~:ggg~:g~~~:g~g~:g~~~:g~~~,070H,018H i ~~3: t'~RA~ 018H,018H,OOEH,OOOH,OOOH,OOOH 000H,000H,018H,018H,018H,018H,000H,018H BT 78 L BRAK TH=7C, 018H,018H,018H,000H,OOOH,OOOH · BT 1c I 000H,OOOH,070H,018H,018H,018H,OO[H,018H ; TH=70 R BRAK 018H,018H,070H,OOOH,OOOH,OOOH , BT_70 R BRAK 000H,OOOH,076H,ODCH,OOOH,OOOH,OOOH,OOOH ; TH_7E TILDE OOOH,OOOH,OOOH,OOOH,OOOH,OOOH ; BT 7[ TILDE 000H,OOOH,OOOH,OOOH,OlOH,038H,06CH,OC6H ; TH=7F DELTA OC6H, OF[H, OOOH. OOOH,OOOH, OOOH 000H,000H,03CH,066H,OC2H,OCOH,OCOH,OC2H ; TH_80 066H,03CH,00CH,006H,07CH,OOOH , BT_80 OOOH,OOOH,OCCH,OCCH,OOOH,OCCH,OCCH,OCCH ; TH_81 OCCH,OCCH,076H,OOOH,OOOH,OOOH ; BT 81 000H,OOCH,018H,030H,OOOH,07CH,OC6H,OfEH ; TH=82 OCOH,OC6H,07CH,OOOH,OOOH,OOOH ; 8T_82 000H,010H,038H,06CH,OOOH,078H,OOCH.07CH ; TH_83 OCCH,OCCH,076H,OOOH,OOOH,OOOH OOOH, OOOH, OCCH, OCCH, 000H,078H, OOCH, 07CH 6T 83 TH:84 OCCH, OCCH,076H, OOOH, OOOH, OOOH OOOH, 060H,030H, 0 18H, OOOH,078H, OOCH, 07CH 6T_84 TH_85 OCCH,OCCH,016H,OOOH,000H,OOOH , BT_85 000H,038H,06CH,038H.000H,078H,OOCH,07CH ; TH_86 ggg~:ggg~:gb~~:ggg~:g~g~:g~g~,060H,066H ~ ~~=~~ 03CH, OOCH, 006H, 03CH,OOOH, OOOH OOOH, 01 OH,038H, 06CH, oaOH, 07CH,OC6H, OfEH BT_87 TH_88 OCOH, OC6H, 07CH, OOOH. OOOH,OOOH OOOH, OOOH, OCCH, OCCH, OOOH, 07CH,OC6H, OF[H BT_88 TH_89 OCOH,OC6H,07CH,OOOH,OOOH,000H ; 8T 89 000H,060H,030H,018H,OOOH,07CH,OC6H,OfEH ; TH::::8A ggg~: ggg~: g~~~;ggg~:ggg~: g~~~,018H.018H ~~=~: 018H,018H,03CH,OOOH.OOOH,OOOH ; BT_8B 000H,018H,03CH,066H,OOOH,038H,018H,018H ; TH_BC o1SH, 018H, 03CH, OOOH, OOOH, OOOH OOOH, 060H, 030H, 018H, 000H,038H,OlBH, 018H BT_8C TH_80 g6g~: g~~~:g~~: g~g~: g~~~: g~g~,OC6H, OC6H ~~=g~ OfEH, OC6H, OC6H,OOOH,OOOH, OOOH 6T _8E 156 IBM Enhanced Graphics Adapter August 2, 1984 OTD2 38 6C 38 00 38 5C 444 C6 C6 445 07DA FE C6 C6 00 00 00 440 447 on:o 18 30 60 00 FE 66 448 60 7C 449 07(8 60 66 FE 00 00 00 450 07EE 00 00 00 00 CC 76 451 36 7E: 452 07F6 08 08 6E 00 00 00 453 07FC 00 00 3[ 6C ce CC 454 FE CC 455 0804 CC CC CE 00 00 00 456 08DA 00 10 38 6C 00 7C 457 C6 e6 458 0812 e6 C6 7e 00 00 00 459 0818 00 00 C6 C6 00 7e 460 c6 C6 461 0820 C6 C6 7C 00 00 00 462 0826 00 60 30 18 00 7C 463 C6 C6 464 082E C6 C6 7e 00 00 00 465 0834 00 30 78 ee 00 CC 466 ce cc 467 D83C CC CC 76 00 00 00 468 0842 00 50 30 18 00 CC 469 cc ee 470 084A cc CC 76 00 00 00 471 0850 00 00 C6 C6 00 C6 472 c6 C6 473 0858 C6 7E 06 DC 78 00 474 085E 00 C6 C6 38 6C C6 475 C6 C6 476 0866 c6 6C 38 00 00 00 477 086C 00 C6 e6 00 C6 C6 47. C6 C6 419 0874 C6 C6 7C 00 00 00 480 D87A 00 18 18 3C 66 60 481 60 66 482 0882 3e 18 18 00 00 00 483 0888 00 38 6C 64 60 FO 484 60 60 48' 0890 60 E6 FC 00 00 00 486 0896 00 00 66 66 3C 18 487 7E 18 488 089E 7E 18 18 00 00 00 489 08A4 00 F8 ee ee F8 C4 490 CC DE 491 08AC CC CC e6 00 00 00 492 08B2 000E1B181818 493 7E 18 494 08BA 18 18 18 08 70 00 49' 496 08CO 00 18 30 60 00 18 497 OC 7C 498 08C8 CC cc 76 00 00 00 499 08CE 00 DC 18 30 00 38 500 18 18 501 0806 18 18 3C 00 00 00 502 08DC 00 18 30 60 08 7C 503 C6 C6 504 08£4 C6 C6 7C 00 00 00 505 08EA 00 18 30 60 00 CC 500 CC CC 507 08F2 ee ce 76 00 00 00 508 08F8 00 00 76 DC 00 DC 509 66 66 510 0900 66 66 66 00 00 00 511 0906 76 DC 00 C6 E6 F6 512 FE DE 513 090£ CE c6 c6 00 00 00 514 0914 00 3C 6C 6e 3E 00 515 7E 00 516 091C 00 00 00 00 00 00 517 0922 00 38 6C 6C 38 00 518 7C 00 519 092A 00 00 00 00 00 00 520 0930 00 00 30 30 00 30 521 30 60 522 0938 C6 C6 7C 00 00 00 523 093E 00 00 00 00 00 00 524 FE CO 525 0946 CO CO 00 00 00 00 526 094C 00 00 00 00 00 00 527 FE 06 528 0954 06 06 00 00 00 00 529 095A 00 CO CO C6 CC DB 530 30 60 531 0962 DC 86 DC 18 3E: 00 532 0968 00 CO CO C6 CC 08 533 30 66 534 0970 CE 9E 3E 06 06 00 537 0976 00 00 18 18 00 18 536 18 3C 537 097E 3C 3C 18 00 00 00 538 0984 00 00 00 00 36 6c 539 08 6C 540 098C 36 00 00 00 00 00 541 0992 00 00 00 00 08 6C 542 36 6G 543 099A 08 00 00 00 00 00 544 545 09AO 11 44 11 44 11 44 546 11 44 547 09A8 11 44 11 44 11 44 548 09AE 55 AA 55 AA 55 AA 549 55 AA 550 09B6 55 AA 55 AA 55 AA 551 09BC DO 77 DO 77 DO 77 552 DO 77 553 09C4 DO 77 DO 77 DO 77 554 09CA 18 18 18 18 18 16 555 18 18 556 0902 18 18 18 18 18 18 557 09D8 18 18 18 18 18 18 558 18 F8 559 09[0 18 18 18 18 18 18 560 09(6 18 18 18 18 18 F8 561 18 F8 562 09EE 18 18 18 18 18 16 563 09f4 36 36 36 36 36 36 564 36 F6 565 09FC 36 36 36 36 36 36 566 OA02 00 00 00 00 00 00 567 00 FE 568 OAOA 36 36 36 36 36 36 569 08 038H, 06CH, 038H,OOOH, 038H, 06CH, OC6H, QC6H ; TH._8F DB OFEH, OC6H, OC6H, OOOH, OOOH, OOOH DB 018H, 030H, 06QH,000H,OFEH, 066H, 060H,07CH ; TH_90 DB DB g~g~: ggg~: g~~~; ggg~: ggg~: g~g~, 036H, 07EH ~~=~~ DB DB ggg~:ggg~:g~~~:g~g~:ggg~:ggg~,oF£H,OeCH ~ ~~=~~ DB DB ggg~:g~g~:g~~~:g~g~:ggg~:g~g~,OC6H,OC6H ~ ~~=~~ DB OC6H,OC6H,07CH,000H,000H,000H ; 8T_93 DB 000H,000H,OC6H,OC6H,OOOH,07CH,OC6H,OC6H ; TH_94 DB DB ggg~: g~g~: gig~:g~~~: ggg~: g~g~, OC6H, OC6H ~~=~~ DB OC6H,OC6H,07CH,OOOH,000H,OOOH ; BT_95 DB OOOH,030H,078H,OCCH,OOOH,OCCH,OCCH,OCCH ; TH_96 DB OCCH,OCCH,076H,000H,OOOH,OOOH ; 6T_96 DB OOOH,060H,030H,018H,000H,OCCH,OCCH,OCCH ; TH_97 DB OCCH,OCCH,076H,000H,OOOH,OOOH ; 6T 97 DB 000H,OOOH,OC6H,OC6H,OOOH,OC6H,OC6H,OC6H ; TH::::98 DB OC6H, 07EH, 006H, OOCH, 018H, OOOH ; BT 98 DB OOOH,OC6H,OC6H,038H,06CH,OC6H,OC6H,QC6H ; TH::::99 DB OC6H,06cH,038H,000H,000H,OOOH 8T 99 DB 000H,oc6H, OC6H, OOOH, OC6H, OC6H, OC6H, OC6H TH::::9A DB OC6H,OC6H,07CH,OOOH,OOOH,OOOH : BT 9A DB OOOH,018H,018H,03CH,066H,060H,060H,066H ; TH::::9B DB 03CH,018H,018H,OOOH,OOOH,000H ; BT_98 DB 000H,038H,06CH,064H,060H,OFOH,060H,060H ; TH_9C DB 060H,OE6H,OFCH,000H,OOOH,000H BT 9C DB OOOH, OOOH, 066H, 066H, 03CH, 018H, 01EH, 018H TH::::90 DB 07£H,018H, 018H, OOOH, OOOH, OOOH BT_9D DB OOOH, Of8H, OCCH, OCCH, 0 F8H, OC4H, OCCH, ODEH TH_9E DB OCCH, OCCH, OC6H, OOOH, OOOH, OOOH BT_9£ DB OOOH,OO£H, 01 BH, 018H, 018H, 018H, 07EH, 0 18H TH_9F 018H, 018H, 016H, 008H,070H, OOOH BT_9F DB 000H,018H,030H,060H,OOOH,078H,00CH,07CH ; TH_AO DB DB ggg~: ggg~: gig~: g~g~: ggg~: g~~~, 0 18H, 01 8H ~~:::::? DB 018H,018H,03CH,OOOH,QOQH,OOOH ; 8T Al DB OOOH, 018H, 030H, 060H, OOOH, 07CH, OC6H, OC6H TH:::A2 DB OC6H,OC6H,07CH,000H,000H,000H BT A2 DB OOOH, 018H, 030H, 060H, OOOH, OCCH, OCCH, OCCH T(::A3 DB OCCH,OCCH,076H,OOOH,OOOH,OOOH 6T A3 DB OOOH, OOOH, 076H, OOCH, OOOH, ODCH, 066H, 066H TH::::A4 DB 066H, 066H, 066H, OOOH, OOOH, OOOH 6T A4 DB 076H, ODCH, OOOH, OC6H, 0£6H, Or6H, Of£H, 00£1-1 TH:::A5 DB OCEH,OC6H,OC6H,000H,OOOH,OOOH BT A5 DB OOOH, 03CH, 06CH, 06CH, 03£H, OOOH, 07£H, OOOH TH::::A6 DB OOOH, OOOH, OOOH, OOOH, OOOH, OOOH , BT_A6 DB 000H,036H,06CH,06CH,038H,OOOH,07CH,000H ; TH_A7 DB OOOH,OOOH,OOOH,OOOH,OOOH,OOOH · BT A7 DB OOOH, OOOH, 030H, 030H, OOOH, 030H, 030H,060H ; TH:::A8 DB OC6H,OC6H,07CH,OOOH,OOOH,000H , 8T A8 DB OOOH,OOOH,OOOH,OOOH,OOOH,OOOH,OF£H,OCOH ; TH~A9 DB OCOH,OCOH,OOOH,OOOH,OOOH,OOOH ; BT A9 DB 000H,000H,OOOH,000H,OOOH,OOOH,OFEH,006H ; TH::::AA DB 006H,006H,000H,000H,000H,OOOH ; BT AA DB OOOH, OCOH, OCOH, OG6H, OCCH, OD8H, 030H, 060H TH::::AB DB 00CH,086H,00CH,018H,03£H,OOOH · BT AB DB 000H,OCOH,OCOH,OC6H,OCCH,OD8H,030H,066H ; TH::::AC DB OCEH,09EH,03EH,006H,006H,0001-l ; 8T AC DB 000H,000H,018H,018H,OOOH,018H,018H,03CH ; TH::Ao DB 03CH, 03CH, 018H, OOOH, OOOH, OOOH BT _AD DB OOOH, OOOH, OOOH, OOOH, 036H, 06CH, OD8H, 06CH ; TH_AE DB 036H,OOOH,000H,OOOH,000H,OOOH BT A£ DB OOOH, OOOH, OOOH, OOOH, OD8H, 06CH, 036H, 06GH TH::::AF DB 006H, OOOH, OOOH, OOOH, OOOH, OOOH BT_AF DB 011H,044H,011H,044H,011H,044H,011H,044H ; TH_80 DB 011H,044H,011H,044H,011H,044H , BT BO DB 055H,OAAH,055H,OAAH,055H,OAAH,055H,OAAH ; TH::::Bl DB 055H,OAAH,055H,OAAH,055H,OAAH BT 61 DB ODDH, 077H, ODDH, 077H, OODH, 077H, ODOH, 077H TH::::B2 DB OODH, 077H, ODDH, 077H, ODDH, 077H 8T_82 DB 018H, 018H, 018H, 018H, 018H, 018H, 0 18H, 018H TH_83 DB 016H,018H,018H,018H,018H,018H 6T B3 DB 018H, 018H, 018H, 018H, 018H, 018H, 018H, OF8H TH::::84 DB 018H,018H,018H,018H,018H,018H ; 8T 84 DB 018H,018H,018H,018H,018H,OF8H,018H,OF8H ; TH=65 DB 018H, 018H, 018H, 018H, 018H, 018H 6T _B5 DB 036H, 036H, 036H, 036H, 036H, 036H, 036H, OF6H TH_86 DB 036H,036H,036H,036H,03.6H,036H BT B6 DB OOOH,OOOH,OOOH,OOOH,OOOH,OOOH,OOQH,OFEH ; TH::::B7 DB 036H, 036H, 036H, 036H, 036H, 036H 8T B7 August 2, 1984 IBM Enhanced Graphics Adapter 157 OA10 OA18 DAlE OA26 OA2C OA34 OA3A OA42 OM8 OA50 OA56 OA5E OA64 OMe OA72 OA7A 00 00 00 00 00 F8 18 F8 18 18 18 18 18 18 36 36 36 36 36 F6 06 F6 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 00 00 00 00 00 FE 06 F6 36 36 36 36 36 36 36 36 36 36 36 F6 06 FE 00 00 00 00 00 00 36 36 36 36 36 36 36 FE 00 00 00 00 00 00 18 18 18 18 18 F8 18 F8 00 00 00 00 00 00 00 00 00 00 00 00 00 F8 18 18 lB lB lB 18 OA80 OAS8 OASE OA96 OA9C OAA4 OAAA OAB2 DABS OACO OAC6 DACE OAD4 OAOC OAE2 OAEA OArO OAF8 OAFE 0606 OBOC OB14 OB1A OB22 OB28 OB30 OB36 OB3E OB41j OBIjC OB52 OB5A 18 18 18 18 18 18 18 IF 00 00 00 00 00 00 18 18 18 18 18 18 18 FF 00 00 00 00 00 00 00 00 00 00 00 00 00 FF 18 18 18 lB 18 18 18 18 18 18 lB 18 18 1F 18 18 18 18 18 18 00 00 00 00 00 00 00 FF 00 00 00 00 00 00 18 18 18 18 18 18 18 FF lB 18 18 18 18 18 18 18 18 18 18 IF 18 IF 18 18 18 18 18 18 36 36 36 36 36 36 36 37 36 36 36 36 36 36 36 36 36 36 36 37 30 3F 00 00 00 00 00 00 00 00 00 00 00 3F 30 37 36 36 36 36 36 36 36 36 36 36 36 F7 DO FF 00 00 00 00 00 00 00 00 00 00 00 FF DO F7 36 36 36 36 16 36 36 36 36 36 36 37 30 37 36 36 36 36 36 36 00 00 00 00 00 FF 00 FF 00 00 00 00 00 00 36 36 36 36 36 F7 DO F7 36 36 36 36 36 36 18 18 18 18 18 FF 00 FF 00 00 00 00 00 00 OB60 OB68 OB6E OB76 OB7C 0884 OB8A 0692 OB98 OBAO OBA6 OBAE OBB4 OBBC OBC2 OBCA OBDO OB08 OBOE OBE6 OBEC OBF4 OBFA OC02 OC08 OC10 OC16 DelE OC24 OG2C OC32 OC3A 36 36 36 36 36 36 36 FF 00 00 00 00 00 00 00 00 00 00 00 FF DO FF 18 18 18 18 18 18 00 00 00 00 00 00 00 FF 36 36 36 36 36 36 36 36 36 36 36 36 36 3F 00 00 00 00 00 00 18 18 18 16 18 IF 18 1F 00 00 00 00 00 00 00 00 00 00 00 IF 18 1F 18 18 18 18 18 18 00 00 00 00 00 00 00 3F 36 36 36 36 36 36 36 36 3fi 36 36 36 36 FF 36 36 36 36 36 36 18 18 18 18 lB FF 18 FF 18 18 IS lS 18 18 18 16 18 18 18 18 18 F8 00 00 00 00 00 00 00 00 00 00 00 00 00 IF 18 18 18 18 1B 18 FF FF FF FF FF FF FF FF FF FF FF FF FF FF 00 00 00 00 00 00 00 FF FF FF FF FF FF FF FO FO FO Fa FO FO FO FO FO Fa FO FO FO FO OF OF OF OF OF OF OF OF OF OF OF OF OF OF FF FF FF FF FF FF FF 00 00 00 00 00 00 00 OC40 OC48 00 00 00 00 00 76 DC OS 08 DC 76 00 00 00 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 60 11 605 606 607 608 609 610 611 612 613 61!1 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 6ljO 641 642 643 644 645 646 647 648 649 650 651 65? 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 605 686 687 688 689 690 691 692 693 694 695 DB OOOH, OOOH, OOOH, OOOH, OOOH, OF8H, 018H,OF8H ; TH_B8 DB 018H, 018H, a 18H, 018H,018H, 018H BT B8 DB 036H, 036H, 036H, 036H,036H, OF6H, 006H,OF6H TH:::B9 08 036H, 036H, 036H, 036H, 036H, 036H BT_B9 06 036H, 036H, 036H, 036H, 036H, 036H, 036H, 036H TH_BA DB 036H,036H, 036H, 036H, 036H, 036H BT_BA DB OOOH, OOOH, OOOH, OOOH, OOOH,OFEH, 006H, OF6H TH_BB 08 036H, 036H, 036H, 036H,036H, 036H BT BB DB 036H, 0 36H, 036H, 036H, 036H, a F6H, 006H, OrEH TH:::BC DB OOOH, OOOH, OOOH, OOOH, OOOH, OOOH BT BC DB 036H, 036H, 036H, 036H, 03 6H, 036H, 036H, OFEH TH:::SD DB OOOH, OOOH, OOOH, OOOH, OOOH, OOOH BT_BD 06 a 18H, 018H, 018H, 018H, 018H, OF8H,O 18H, OF8H TH_BE DB OOOH, OOOH, OOOH, oaOH, ODOH, ODOH BT BE DB OOOH, OOOH, OOOH, OOOH, OOOH, OOOH, OOOH, 0 F8H TH=BF 06 o 18H, 018H, 018H, 01SH, 018H, 018H BT_BF DB 01 8H, 018H, 018H, 018H, 01SH, 018H, 018H, 01 FH ; TH_CO DB OOOH, OOOH, OOOH, OOOH, OOOH, OOOH ; BT co DB 018H, 018H, 018H, 018H, 01 8H, 018H, 018H, OFFH TH:::Cl DB OOOH, OOOH, OOOH, OOOH, OOOH, OOOH BT_Cl DB OOOH, OOOH,OOOH, OOOH, OOOH, OOOH, OOOH, OFFH TH_C2 06 018H, 018H, 018H, 018H, 018H, 018H BT C2 DB o 18H, 018H, 018H, 018H, 018H, 018H, 0 18H, 0 1 FH TH:::C3 OB 018H, 018H, 018H,01SH, 018H, 018H BT C3 DB OOOH, OOOH, OOOH, OOOH, OOOH, OOOH, OOOH, OF FH TH:::CII DB OOOH, OOOH, OOOH, OOOH, OOOH, OOOH BT C4 DB 018H, 018H, 018H, 018H, 018H, 018H, 018H, OFFH TH:::C5 DB 018H, 018H, 018H,018H,018H, 018H BT_C5 08 018H, 018H, a 18H, 018H, 01 8H, 01 FH, 018H, 0 1 FH TH_C6 DB 018H, 018H, 0 18H, 018H, 01SH, 018H BT_C6 DB 036H, 036H, 036H, 036H, 036H, 036H, 036H, 03 7H TH_C7 06 036H, 036H, 036H, 036H, 036H, 036H BT_C7 DB 036H, 036H, 036H, 036H, 036H, 037H, 030H,03FH TH_C8 DB OOOH, OOOH, OOOH, OOOH, OOOH, OOOH BT C8 DB OOOH, OOOH, OOOH, OOOH,OOOH. 03 FH, 030H, 037H TH-:::C9 DB 036H, 036H, 036H, 036H, 036H, 036H BT_C9 DB 036H, 036H,036H, 036H, 036H, Of7H, OOOH, OFFH TH_CA DB OOOH, OOOH, OOOH, OOOH, OOOH, OOOH BT_CA DB OOOH, OOOH, OOOH, OOOH, OOOH, OFFH, OOOH, OF7H TH_CB DB 036H, 036H, 036H, 036H, 036H, 036H BT CB DB 036H, 036H, 0 36H, 036H. 036H, 037H, 030H, 031H TH=CC 08 036H, 036H, 036H, 036H, 036H, 036H BT CC DB OOOH, OOOH, OOOH, OOOH, OOOH, a FFH, OOOH, a FFH TH:::CO DB OOOH, OOOH, OOOH, OOOH,OOOH, OOOH BT_CD DB 036H, 036H, 036H, 036H, 036H, OF7H, OOOH,OF7H TH_CE DB 036H, 036H, 036H, 036H, 036H, 036H BT_CE DB o 18H. 018H, 018H, 018H, 018H, OFFH, OOOH, OFFH TH_CF DB OOOH, OOOH,OOOH, OOOH, OOOH, OOOH BT_CF DB 036H, 036H, 036H, 036H, 036H, 036H, 036H, OFFH ; TH_DO DB OOOH, OOOH, OOOH,OOOH, OOOH, OOOH BT_DO DB OOOH, OOOH, OOOH, OOOH, OOOH, OFFH, OOCH, OFFH TH_Dl DB 01 8H, 0 18H, 0 18H, 018H, 018H, 01 8H ; BT 01 DB OOOH, OOOH, OOOH, OOOH, OOOH, OOOH, OOOH, OFFH TH::':02 DB 036H, 036H, 036H, 036H, 036H, 036H BT 02 DB 036H, 036H, 036H, 036H, 036H, 036H, 036H, 03FH TH:::03 DB OOOH, OOOH,OOOH, OOOH, OOOH, OOOH BT 03 DB o 18H, 018H, 018H,018H, 018H, 01 FH, 01SH, 01 rH TH=D4 DB OOOH, OOOH, OOOH, OOOH, OOOH, OOOH BT 04 DB OOOH, OOOH, OOOH,OOOH,OOOH, 01 FH, 018H, 01 FH TH:::D5 DB 01 8H, 018H, 018H, 018H, 0 18H, 018H BT_D5 DB OOOH, OOOH, OOOH, OOOH, OOOH, OOOH, OOOH, 03FH TH_D6 DB 036H, 036H,036H, 036H, 036H, 036H BT_06 DB 036H, 036H, 036H, 036H, 036H, 036H, 036H, 0 FFH TH_07 DB 036H, 036H, 036H, 036H, 036H, 036H BT_D7 DB 018H,?1 8H,018H, 018H, 018H, OFFH, 018H, OF FH TH_D8 DB 01 8H, 018H, 0 18H, 01SH, 018H, 018H BT 08 DB o 18H, 0 18H, 0 18H, 0 18H. 0 18H, a 18H, 018H, OF8H TH:::09 DB OOOH, OOOH, OOOH, OOOH, OOOH, OOOH BT_D9 DB OOOH, OOOH, OOOH,OOOH, OOOH, OOOH, OOOH, 01 FH TH_DA DB o 18H, 018H,O ISH, 018H, 018H,018H BT DA DB o FFH, OFFH, OFFH, OFFH, OFFH, OFFH, 0 FFH, OF FH TH:::OB DB OFFH, OFFH, a FFH, OFFH, OFFH, OFFH BT DB DB OOOH, OOOH,OOOH, OOOH, OOOH, OOOH, OOOH, OF FH TH:::OC DB OFFH, OFFH, OFFH,OFFH, OFFH, OFFH BT DC 08 OFOH, 0 FOH, 0 FOH, a FOH, 0 FOH, 0 FOH, OFOH. OFOH TH=OO DB OFOH, OFOH, 0 FOH,OFOH, OFOH, OFOH BT DO DB OOFH, OOFH, OOFH, OOFH, OOFH, OOFH, OOFH,OOFH ; TH::':OE DB OOFH, OOFH, OOFH, OOFH, OOFH, OOFH BT_DE DB o FFH, OFFH, OFFH, OFFH, OFFH, OFFH, 0 FFH, OOOH TH_DF DB OOOH. OOOH, OOOH, OOOH, OOOH, OOOH BT_DF DB - OOOH, OOOH,OOOH, OOOH, DOOH, 076H, ODCH, OD8H ; TH EO DB OD8H, ODCH, 076H, OOOH. OOOH, OOOH BT_EO 158 IBM Enhanced Graphics Adapter August 2, 1984 OC4E OC56 OC5C OC64 OC6A OC72 OC78 oceo OC86 OC8E OC94 OC9C OCAl OCM OC80 OCBe OGBE OCC6 OGCC OC04 OCDA OCE2 OCE8 OCFO OCF6 OCFE 0004 OoOC 0012 001A 00 00 00 00 1C C6 Fe C6 C6 FC co co 40 00 00 00 FE C6 C6 CO co CO CO CO co 00 00 00 00 00 00 00 FE 6C 6C 6c 6C 6C 6C 00 00 00 00 00 FE C6 60 30 18 30 60 C6 FE 00 00 00 00 00 00 00 00 7E 08 08 08 08 10 00 00 00 00 00 00 00 66 66 66 66 7e 60 60 co 00 00 00 00 00 00 76 DC 18 18 18 18 18 00 00 00 00 00 7E 18 3C 66 66 66 3C 18 7£ 00 00 00 00 00 38 6C C6 C6 FE C6 C6 6c 38 00 00 00 00 00 38 6C C6 C6 c6 6C 6C 6C EE 00 00 00 ~OODlE 30 18 DC 3E 66 66 66 3C 00 00 00 00 00 00 00 00 7E DB DB 7E 00 00 00 00 00 00 00 03 06 7E DB 08 F3 7E 60 CO 00 00 00 00 00 1C 30 60 60 7C 60 60 30 1C 00 00 00 00 00 00 7C C6 c6 C6 C6 C6 C6 C6 00 00 00 0020 0028 OD2E 0036 OD3C 0044 004A 0052 0058 0060 0066 OD6£ OD74 007C 0082 OOSA 0090 0098 OD9E ODA6 OOAC 0084 OOBA o00oCca2 0000 0006 OODE 00E4 OOEC OOF2 OOFA OEOO 00 00 00 FE 00 00 FE 00 00 FE 00 00 00 00 00 00 00 18 18 7E 18 18 00 00 FF 00 00 00 00 00 30 18 DC 06 ac 18 30 00 7E DODD 00 00 00 DC 18 30 60 30 18 OC 00 7E 00 00 00 00 00 DE 1B 1B 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 08 DB 70 00 00 00 00 00 00 18 18 00 7E 00 18 18 00 00 00 00 00 00 00 00 76 DC 00 76 DC 00 00 00 00 00 00 38 6C 6C 38 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 18 18 00 00 00 00 00 00 00 00 00 00 00 00 00 18 00 00 00 00 00 00 00 OF DC OC OC OC OC EC 6C 3C lC 00 00 00 00 08 6C 6C 6c 6c 6C 00 00 00 00 00 00 00 00 70 08 30 60 C8 F8 00 00 00 00 00 00 00 00 00 00 00 7C 7e 7C 7C 7C 7C 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0000 0000 0000 0001 0009 OOOF 0010 0018 DOlE 001F 0027 0020 OOZE 10 00 00 00 00 24 66 FF 66 24 00 00 00 00 00 22 00 63 63 63 22 00 00 00 00 00 00 00 00 00 2B 000000 18 18 18 FF 18 18 18 00 00 00 00 20 00 00 00 00 00 00 fF 00 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 78' 790 791 1 2 ,3 4 6 7 8 9 10 11 12 13 14 1"6 17 18 19 20 21 22 23 24 25 26 27 28 CODE DB DB DB OB DB DB DB DB OB OB DB DB OB DB OB OB DB OB DB DB OB DB DB DB OB OB DB OB DB OB DB DB DB OB DB DB DB DB DB DB OB OB OB OB OB OB DB DB OB DB OB OB OB DB OB DB DB DB DB OB ENDS END 000H.000H,OOOH,OOOH,07CH,OC6H,OFCH.OG6H ; TH_E1 gg~~:g6g~: g~~~: gg~~: g~~~: ggg~.OCOH, OCOH ~~=g ggg~: ggg~: ggg~: ggg~:g~~~: g~g~. 06CH, 06CH ~~=g 06CH,06CH,06CH,OOOH,OOOH,OOOH ; 6T E3 OOOH,OOQH,OFEH,OC6H,060H,030H,018H,030H ; TH E4 g8g~: gg8~: g66~; ggg~: ggg~:g~~~. OD8H, 008H ~~:::~~ 008H,OD6H,070H,OOOH,OOOH,OOOH ; 81_E5 OOOH, OOOH, OOOH,OOOH,066H, 066H, 066H, 066H 1H_E6 07CH, 060H, 060H, OCOH, OOOH, OOOH OOOH, OOOH, OOOH, 000H,076H, ODCH, 018H. 018H 018H, 016H, 018H,OOOH,OOOH. OOOH OOOH, OOOH, 07EH, 01 8H, 03CH. 066 H, 066H, 066H 03CH, 018H, 07£H, OOOH, OOOH, OOOH OOOH, OOOH. 038H, 06CH, OC6H, OC6H, 0 FEH, OC6H OC6H, 06CH, 038H, OOOH, OOOH, OOOH OOOH, OOOH, 038H, 06CH, OC6H, OC6H,OC6H, 06CH 06CH, 06CH, OEEH, OOOH, OOOH, OOOH OOOH, OOOH, 01 EH, 030H, 0 18H, OOCH, 03EH. 066H 066H, 066H, 03CH. OOOH, OOOH, OOOH OOOH. OOOH, OOOH, OOOH, OOOH. D7EH, ODBH. ODBH 07EH, OOOH, OOOH, OOOH, OOOH, OOOH OOOH, OOOH, 003H, 006H, 07EH, OOBH, ODBH, 0 F3H 07EH, 060H, OCOH, OOOH, OOOH, OOOH ; BT ED 000H,000H,OlCH,030H,060H,060H,07CH,060H ; TH::::EE 060H,030H,01CH,OOOH,OOOH,OOOH OOOH, OOOH, OOOH, 07CH, OC6H, OC6H, OC6H, OC6H BT EE TH::::EF OC6H, OC6H, OC6H, OOOH, OOOH, OOOH 8T _EF OOOH,OOOH,OOOH,OFEH,OOOH,OOOH,OFEH,OOOH ; TH_FO OOOH,OfEH,QOOH,OOOH,OOOH,OOOH 000H,OOOH,OOOH,018H,018H,07EH,018H,018H BT FO TH Fl OOOH,OOOH,OFFH,OOQH,OOOH,OOOH OOOH, OOOH, 030H, 018H, OOCH. 006H, OOCH, 018H BT Fl TH:::F2 030H,OOOH,07EH,OOOH,OOOH,OOOH , BT_F2 OOOH, OOOH,OOCH, 018H, 030H, 060H, 030H, 018H .; TH_F3 OOCH, OOOH, 07EH, OOOH,OOOH, OOOH OOOH, OOOH,OOEH, 018H,018H, 018H, 018H, 018H BT_F3 TH_F4 018H,018H,018H,018H,018H,018H 018H, 018H, 018H, 018H,018H, 018H, 018H, 018H BT F4 TH::::F5 OD8H,OD8H,070H,OOOH,OOOH.000H OOOH. OOOH. OOOH, 018H, 0 18H, OOOH, 07EH, OOOH 8T F5 TH-F6 018H,018H,000H,OOOH,OOOH,OOOH , BT F6 OOOH,OOOH,000H,000H,076H,ODCH,000H,076H ; TH:::n ODCH, OOOH, OOOH, OOOH, OOOH,OOOH OOOH, 038H, 06CH, 06CH, 038H, OOOH, OOOH, OOOH BT F7 TH:::F8 OOOH,OOOH,OOOH,OOOH,OOOH,OOOH OOOH, OOOH, OOOH,OOOH,OOOH, OOOH, 018H, 018H BT F8 TH::::F9 OOOH, OOOH, OOOH, OOOH, OOOH, OOOH OOOH, OOOH, OOOH,OOOH, OOOH, OOOH, OOOH, 018H 8T_F9 TH_FA OOOH, OOOH,OOOH, OOOH, OOOH, OOOH OOOH, OOFH,OOCH,OOCH, OOCH, OOCH, OOCH, OECH 06CH,03CH,OlCH,ooaH,OOOH,OOOH OOOH, 008H, 06CH, 06CH, 06CH, 06CH, 06CH, OOOH 8T_FA TH_FB 8T F8 TH:::FC OOOH,OOOH,OOOH,OOOH,OQOH,OOOH , BT FC 000H,070H,008H,030H,060H,OG8H,OF8H,OOOH ; TH:::m OOOH,OOOH,OOOH,OOOH,OOOH,ooaH aaOH,OOOH,OOOH, OOOH, 07CH, 07CH, 07CH, 07CH BT FO TH:::FE 07CH,07CH,OOOH,OOOH,OOOH,000H OOOH, OOOH, OOOH, OOOH, OOOH,OOOH, OOOH, OOOH BT FE TH:::FF OOOH, OOOH,OOOH, OOOH, OOOH, OOOH BT_FF PAGE,120 SUBTTL MONOCHROME CHARACTER GENERATOR CODE SEGMENT PU8L 1C PUBL I C CGMN FOG CGMNJOG LABEL BYTE ALPHA SUPPLEMENT STRUCTURE OF TH I S FILE DB XXH WHERE XX IS THE HEX CODE FOR THE FOLLOWING CHAR DB [BYTES 0 - 13 OF THAT CHARACTER) os' OOH INDICATES NO MORE REPLACEMENTS TO BE DONE DB 01DH DB oaOH, OOOH, OOOH, OOOH, 024H, 066H, OFFH, 066H TH_ 10 DB OZ4H,000H,OOOH,OOOH,OOOH,OOOH 8T_10 DB OZ2H DB 000H,063H,063H,063H,022H,OOOH,OOOH,OOOH TH_22 " DB OOOH,OOOH,OOOH,OOOH,OOOH,OOOH BT_22 " DB 02BH , DB 000H,OOOH,OOOH,018H,018H,018H,OFFH,018H ; TH_2B + DB 018H,018H,OOOH,OOOH,OOOH,OOOH BT_28 + DB 02DH DB OOOH,OOOH,OOOH,OOOH,OOOH,OOOH,OFFH,OOOH TH_20 August 2, 1984 IBM Enhanced Graphics Adapter 159 0036 00 00 00 00 00 00 29 003C 40 30 0030 00 00 C3 E1 ff DB 31 C3 C3 32 0045 C3 C3 C3 00 00 00 33 004B 5" 34 004C 00 00 fF DB 99 1B 35 18 1B 36 0054 18 18 3C 00 00 00 37 005A 56 38 005B 00 00 C3 C3 C3 C3 39 C3 C3 40 0063 66 3C 18 00 00 00 41 0069 57 006A 00 00 C3 C3 C3 C3 '""3 DB DB 44 0072 FF 66 66 00 00 00 0078 5B ,4,65 0079 00 00 C3 C3 66 3C 1B 3C '""B 0081 66 C3 C3 00 00 00 "9 0087 59 50 0088 00 00 C3 C3 C3 66 51 3C 18 52 0090 1B 1B 3C 00 00 00 53 0096 5A 5" 0097 00 00 FF C3 86 oc 55 18 30 56 009F 61 C3 ff 00 00 00 57 00A5 60 5B 00A6 00 00 00 00 00 E6 59 FF DB 60 OOAE DB DB DB 00 00 00 61 00B4 76 62 00B5 00 00 00 00 00 C3 6J C3 C3 64 OOBO 66 3C 18000000 65 00C3 77 66 00C4 00 00 00 00 00 C3 67 C3 DB 68 DB Ff 66 00 00 00 69 91 70 00 00 00 00 6E 3B n lB 7E 72 OODB 08 DC 77 00 00 00 73 OOEl 9B 74 00E2 00 18 18 7E C3 CO 75 CO C3 76 OOEA 7E 18 18000000 77 OOFO 90 7B OOFl 00 00 C3 66 3C 1B 79 FF 18 80 00F9 FF 18 18000000 81 ~OFF 9E 82 0100 00 FC 66 66 7C 62 B3 666F B4 0108 66 66 F3 00 00 00 85 OlOE F1 86 010F 00 00 18 18 1B FF B7 18 1B 8B 0117 18 00 fF 00 00 00 89 0110 F6 90 01lE 00 00 18 18 00 00 91 FF 00 92 " 0126 00 012C 00 18 00 00 00 93 94 0120 95 96 1 2 0000 3 4 0000 5 6 0000 00 00 00 00 00 00 7 0000 B 0008 7E 81 A5 81 BO 99 9 81 7E 10 0010 7E FF DB FF C3 E7 11 FF 7E 12 0018 6C FE FE FE 7C 38 13 1000 14 0020 10 38 7C FE 7C 38 15 1000 16 0028 387C 3B FE FE 7C 17 387C 18 0030 10 10 38 7C FE 7C 19 387C 20 0038 00 00 1B 3C 3C 1B 21 0000 22 0040 FF FF E7 C3 CJ E7 23 FF FF 2', 0048 00 3C 66 42 42 66 25 3C 00 26 0050 FF C3 99 Bo BO 99 27 C3 FF 28 0058 Of 07 Of 70 CC CC 29 CC 78 30 0060 3C 66 66 66 3C 18 31 " 7E 0068 3F 33 3F 30 30 70 32 33 FO EO 34 0070 7f 63 7F 63 63 67 35 £6 CO 36 0078 99 5A 3C E7 E7 JC 37 5A 99 38 39 0080 BO EO 18 FE 18 EO 40 8000 41 0088 02 DE 3E FE 3E OE 42 0200 43 0090 18 3C 7E 18 18 7E 44 3C 1B 45 0098 666666666600 46 66 00 OGAD 7F DB DB 7B 18 1B '1B lB 00 49 00A8 3E 63 38 6c 6C 38 50 CC 78 51 OOBO 00 00 00 00 7E 7E 52 7E 00 53 00B8 18 3C 7E 187E 3C 54 18 FF 55 " " " oDeD 18 3C 7E 56 CODE DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB D' DB ENOS END OOOH, OOOH, OOOH, OOOH, OOOH, OOOH 040H OOOH, OOOH, OC3H, O£7H, OFFH, OOBH, OC3H, OC3H BT_20 TH_40 M OC3H, OC3H, OC3H, OOOH, OOOH, OOOH 054H OOOH, OOOH, OFFH, ?OBH, 099H, 018H, 018H, 018H BT_40 M TH_54 T 018H, 018H, 03CH, OOOH, OOOH, OOOH 056H OOOH, OOOH, OC3H, OC3H, OC3H, OC3H, OC3H, OC3H BT_54 T TH_56 V 066H, 03CH, 018H, OOOH, OOOH, OOOH BT_56 V 057H ; OOOH, OOOH, OC3H, OC3 H, OC3H, OC3H, ODBH, OOBH TH_57 W OFFH, 066H, 066H, OOOH, OOOH, OOOH 058H OOOH, OOOH, OC3H, OC3H, 066H, 03CH, 018H, 03CH BT_57 W TH_58 X BT_58 X TH _59 y BT_59 Y TH_5A Z 061 H, OC3H, OF FH, OOOH, OOOH, OOOH BT_5A Z 06DH OOOH, OOOH, OOOH, OOOH, OOOH, OE6H, 0 FFH, ODBH ; TH_6D L.C. H ODBH, OoBH, ODBH, OOOH, OOOH, OOOH 076H OOOH, OOOH, OOOH,OOOH, OOOH, OC3H, OC3H, OC3H BT_60 L,C, H TH_76 L.C. Y 066H, 03CH, 018H, OOOH, OOOH, OOOH 077H OOOH, OOOH, OOOH, OOOH, OOOH, OC3H, OC3H, OOBH BT_76 L.C, Y TH_77 L.C, W OOBH, OF FH, 066H, OOOH, OOOH, OOOH 091H OOOH, OOOH, OOOH, OOOH, 06EH, 03BH, 01 BH, 07EH 6T_77 L.C. W TH_91 OD8H, OOCH, 077H, OOOH, OOOH, OOOH 09BH OOOH, 0 18H, 018H, 07EH, OC3H, OCOH, OCOH, OC3H BT_91 TH_9B 07EH,018H,018H,000H,OOOH,OOOH 090H OOOH, OOOH, OC3H, 066H ,.o3CH, 0 18H, 0 FFH, 018H BT_9B TH_90 OFFH,018H,018H,000H,OOOH,OOOH 09EH 000H,OFCH,066H,066H,07CH,062H,066H,06FH BT_9D TH_9E 066H,066H,OF3H,000H,000H,000H BT_9E OF1H ; - 000H,000H,018H,018H,018H,OFFH,018H,018H TH F1 018H,000H,OFFH,000H,OOOH,000H OF6H OOOH, OOOH, 0 18H, 018H, OOOH, OOOH, OFFH, OOOH BT- F1 TH _F6 OOOH, 018H, 018H, OOOH, OOOH, OOOH OOOH BT F6 NO-MORE CODE CGODOT PAGE,120 SUBTTL DOUBLE DOT CHARACTER GENERATOR SEGMENT PUBL I C PUBLIC CGOOOT,INT_1F_l LABEL BYTE DB OOOH, OOOH, OOOH, OOOH, OOOH, OOOH, OOOH, OOOH DOUBLE DOT 0_00 DB 07EH, 081 H, OA5H, 081 H, OBOH, 099H, 081 H, 07EH ; 0_01 DB 07EH, Of FH, OOBH, Of FH, DC3H, OE7H, OfFH, 07EH ; 0_02 DB 06CH,OFEH,OFEH,OFEH,07CH,038H,010H,OOOH ; 0_03 010H,038H,07CH,OFEH,07CH,038H,010H,OOQH ; 0_04 DB 038H,07CH,038H,OFEH,OFEH,07CH,038H,07CH ; 0_05 DB Q1QH,Dl0H,038H,07CH,OFEH,07CH,038H,07CH ; 0_06 DB OOOH, OOOH, 0 18H, 03CH, 03CH, 018H, OOOH, OOOH ; 0_07 DB OFFH,OFFH,OE7H,OC3H,OC3H,OE7H,OFFH,OFFH ; 0_08 DB OOOH,03CH,066H,042H,042H,066H,03CH,OOOH ; 0_09 OFFH, OC3H, 099H, OBDH, OBDH, 099H, OC3H, 0 FFH ; D_DA OOfH, 007H, OOFH, 070H, OCCH, aCCH, OGCH, 078H ; O_OB DB 03CH, 066H, 066H, 066H, 03CH, a 18H, 07£H, 018H ; D_DC DB 03 fH, 033 H, 03 FH, 030H, 030H, 070H, a FOH, OEOH ; o_00 DB 07 fH, 063 H, 07 FH, 063H, 063H, 06 7H, 0£6H, OCOH ; O_OE 099H, 05AH, 03CH, OE7 H, OE7 H, 03CH, 05AH, 099H ; D_OF DB 080H, OEDH, OF8H, OFEH, OF6H, OEOH, 080H, OOOH ; 0_10 DB 002H, OOEH, 03EH, OFEH, 03EH, OOEH, 002H, OOOH ; 0_" DB 018H, 03CH, 07EH, 018H, 018H, 07EH, 03CH, 018H ; 0_12 DB 066H, 066H, 066H, 066H, 066H, OOOH, 066H, OOOH ; 0_13 DB 07 FH, ODBH, ODBH, 07BH, 01 BH, 01 BH, 01 BH, OOOH ; o_14 DB 03EH, 063H, 038H, 06CH, 06CH, 038H, aCCH, 078H ; o_15 DB OOOH, OOOH, OOOH, OOOH, 07EH, 07EH, 07£H, OOOH ; 0_16 DB 018H, 03CH, 07£H, 018H, 07EH, 03CH, 018H. OFFH ; 0_17 DB 018H, OSCH, 07EH, 018H, 018H, 018H, 018H, OOOH ; 0_18 160 IBM Enhanced Graphics Adapter August 2, 1984 00C8 0000 0008 ODED 00E8 OOFO 00F8 18 00 18 18 18 18 7E 3C 18 00 DO 18 DC FE DC 18 00 00 00 10 60 FE 60 30 00 00 00 00 CO CO CO FE 00 00 00 24 66 FF 66 24 00 00 00 18 3C 7E FF FF 00 00 00 FF FF 7E 3C 18 00 00 ~ 0100 0108 < ! 0110 0118 0120 0128 01JO 0138 0140 0148 0150 0158 0160 0168 0170 0178 00 00 00 00 00 00 00 00 30 78 78 30 30 00 30 00 6C 6C 6C 00 00 00 00 00 6C 6C FE 6C FE 6C 6C 00 30 7C CO 78 OC F8 30 00 00 C6 CC 18 30 66 C6 00 38 6C J8 76 OC CC 76 00 60 60 CO 00 00 00 00 00 18 30 60 60 60 30 18 00 60 30 18 18 18 30 60 00 00 66 3C FF 3C 66 00 00 00 30 3D FC 30 30 00 00 00 00 00 00 00 30 30 60 00 00 00 rc 00 00 00 00 00 00 00 00 00 30 30 00 06 OC 18 30 60 CO 80 00 ~ 0180 0188 0190 0198 OlAD 01A8 01BO 01B8 OlCO 01C8 0100 0108 OlEO 01E8 OUO OU8 7C C6 CE DE f6 E6 7C 00 30 70 30 30 30 30 FC 00 78 CC DC 38 60 CC FC 00 18 CC DC 38 OC CC 78 00 lC 3C 6C CC FE DC 1 E 00 FC CO F8 OC OC cc 78 00 38 60 CO F8 CC CC 78 00 FC CC OC 18 30 30 30 00 78 CC CC 78 CC CC 78 00 78 CC CC 7C OC 18 70 00 00 30 30 00 00 30 30 00 00 30 30 00 00 30 30 60 18 30 60 CO 60 30 18 00 00 00 FC 00 00 FC 00 00 60 30 180C1830 60 00 78 CC OC 18 30 00 30 00 ~ 0200 0208 0210 0218 0220 0228 0230 0238 0240 0248 0250 0258 0260 0268 0270 0278 7C C6 DE DE DE CO 78 00 30 78 CC CC FC CC CC 00 FC 66 66 7C 66 66 FC 00 3C 66 CO CO CO 66 3C 00 F8 6C 66 66 66 6c F8 00 FE 62 68 78 68 62 FE 00 FE 62 68 78 68 60 FO 00 3C 66 CO CO CE 66 3E 00 CC CC CC fC CC CC CC 00 78 30 30 30 30 30 78 00 lEocococcccc 78 00 E6 66 6C 78 6c 66 E6 00 fO 60 60 60 62 66 FE 00 C6 EE FE FE D6 C6 C6 00 C6 E6 F6 DE CE C6 C6 00 38 6C c6 c6 C6 6C 38 00 0280 0288 0290 0298 02AO 02AB FC 66 66 1C 60 60 FO 00 78 cc CC CC DC 78 lC 00 fC 66 66 1C 6C 66 £6 00 78 CC EO 70 lC CC 78 00 FC B4 30 30 30 30 18 00 CC CC CC CC CC CC ,,'7.. 60 61 62 63 6. 6, 66 67 68 6. 70 71 72 73 7' 75 76 77 78 79 BO 81 8' 83 8' 8' 86 87 88 8. 90 91 92 ..·3,· '6 .7 .8 99 100 101 102 11003. 105 106 107 108 10. 110 111 112 113 " '115 116 117 11B 119 120 121 122 123 12' 125 126 127 128 129 130 131 132 133 13' 135 136 137 138 139 140 14' 142 143 14' 14' 146 147 148 149 150 151 ' 152 153 15' 155 156 157 158 159 160 161 162 163 16' 165 166 167 168 169 170 171 172 173 17' 175 176 177 178 17' 180 '81 182 DB 01 8H,018H,018H, 018H,07EH,03CH,018H, OOOH ; 0_19 DB OOOH, 018H, OOCH, OFEH,OOCH,018H, OOOH, OOOH ; O_lA DB OOOH, 030H, 060H, OFEH, 060H, 030H, OOOH, OOOH ; O_lB OOOH, OOOH, OCOH,OCOH,OCOH,OFEH,OOOH, OOOH ; O_lC OOOH. 024H, 066H, OFFH, 066H. 024H, OOOH,OOOH ; 0_10 DB - OOOH, 018H, OlCH, 07EH, OFFH, OFFH, OOOH, OOOH ; 0 1E DB OOOH, OFFH, OFFH, 07EH, 03CH, 018H, OOOH,OOOH ; O_lF DB OOOH, OOOH, OOOH, GOOH, GOOH, OOOH, OOOH, OOOH SP 0_20 DB OlOH, 078H, 078H, 030H, 030H, OOOH, 030H, OOOH : ! 0_21 DB 06CH, 06CH, 06CH, OOOH, OOOH, OOOH, GOOH, OOOH : 0_22 DB 06CH, 06CH, OrEH, 06CH, OFEH, 06CH, 06CH, OOOH 1/ 0_23 DB 030H, 07CH, OCOH, 078H, OOCH, OF8H, OJOH, OOOH S 0_24 DB OOOH, OC6H, OCCH, 018H, 030H, 066H, OC6H, OOOH ; PER CENT 0_25 DB 038H, 06CH, OJ8H, 076H, OOCH, OCCH, 076H, OOOH : & 0_26 DB 060H, 060H, OCOH, OOOH, OOOH, OOOH, OOOH, OOOH 0_27 DB 018H,030H, 060H, 060H, 060H, 030H, 018H, OOOH I 0_28 DB 060H, 030H, 01 8H, 018H, 018H, 030H, 060H, OOOH I 0_29 08 * OOOH, 066H, 03CH, 0 FFH, 03CH, 066H, OOOH, OOOH ; 0_2A DB OOOH, 030H, 030H, OFCH, 030H, 030H, OOOH, OOOH ; + 0_2B DB OOOH, OOOH, OOGH, OOOH, OOOH, 030H,030H, 060H ; 0_2C DB OOGH, OOOH, OOOH, 0 FCH. OOOH, OOOH, OOOH, OOOH ; ~ 0_20 DB OGGH, OOOH, OOOH, OOOH, OOOH, 030H, 030H, OOOH ; 0_2E DB 006H, OOCH, 018H, OlOH, 060H, OCOH,080H, OOOH ; / D_2F 01CH, OC6H, OCEH, OOEH, Of6H, OE6H,07CH, OOOH ; o 0_30 DB 030H, 070H, 030H, 030H, OlOH, 030H, OFCH, OOOH ; 1 0_31 DB 07 8H, OCCH, OOCH, 038H, 060H, OCCH, OFCH, OOOH ; 2 0_32 DB 078H, OCCH, OOCH, 038H,OOCH,OCCH, 078H,OOOH ; 3 0_33 DB OtCH, 03CH,06CH, OCCH, OFEH, OOCH, 01 EH, OOOH : 4 0_34 DB OFCH, OCOH, OF8H, OOCH, OOCH, OCCH, 018H, OOOH : 5 0_35 DB 038H, 060H, OCOH, OF8H, OCCH, OCCH, 078H, OOOH ; 6 0_36 DB OFCH, OCCH, OOCH, 0 18H, OJOH, 030H, 030H, OOOH : 7 0_37 DB 078H,OCCH, OCCH, 078H, OCCH, OCCH, 078H, OOOH 8 0_38 DB 078H,OCCH, OCCH, 07CH, OOCH, 018H, 010H, OOOH : 9 0_39 DB OOOH, 030H, 030H, OOOH, OOOH, OJOH, 030H, OOOH : 0_3A DB OOOH, 030H, 030H, OOOH, OOOH, 030H, 030H, 060H : 0_38 DB 018H, 030H, 060H, oeOH, 060H, 030H, 018H, OOOH < 0_3C DB OOOH,OOOH, OFCH, DOOH, OOOH, OFCH, OOOH, OOOH " 0_30 DB 060H, 030H, 018H, OOCH, 018H, 030H, 060H, OOOH 078H, OCCH, OOCH, 018H, 030H, OOOH, 030H, OOOH ,> 0_3E 0_3F DB 07CH,OC6H,00EH,ODEH,OOEH,OCOH,078H,000H ; 00_40 DB 030H, 078H, OCCH, OCCH, OFCH, OCCH, OCCH,OOOH ; A 0_41 OFCH, 066H, 066H, 07CH, 066H, 066H, orCH,OOOH ; B 0_42 DB 03CH, 066H, OCOH, OCOH, OCOH, 066H,03CH, OOOH : C 0_43 ° OF8H, 06CH, 066H, 066H,066H,06CH, Of8H,OOOH ; 0_44 DB OFEH, 062H, 068H, 078H, 068H, 062H, OFEH, OOOH ; E 0_45 OfEH, 062H, 068H, 078H, 068H, 060H, OFOH, OOOH ; F 0_46 DB 03CH, 066H, OCOH, OCOH,OCEH, 066H, 03EH, OOOH : G 0_47 DB OCCH, OCCH, OCCH, OFCH,OCCH, OCCH, OCCH,OOOH ; H 0_48 DB 078H,030H,030H, 030H, 030H, 030H, 078H, OOOH : I 0_49 01 EH,OOCH, OOCH, OOCH, OCCH, OCCH, 078H, OOOH : J 0_4A DB OE6H, 066H, 06CH, 078H, 06CH, 066H, OE6H, OOOH : K 0 _4B DB OFOH, 060H, 060H, 060H, 062H, 066H, OFEH, OOOH : L 0_4C DB OC6H,OEEH, OFEH, 0 FEH, 006H, OC6H, OC6H, OOOH M 0_40 DB OC6H,OE6H, OF6H, OOEH, OCEH, OC6H, OC6H, OOOH : N 0_4E DB 038H, 06CH, OC6H, OC6H, OC6H, 06CH, OJ8H, OOOH ; o 0_4F DB OFCH, 066H, 066H, 07CH, 060H, 060H, OFOH, OOOH : PO_50 DB 078H, OCCH,OCCH, OCCH, OOCH, 078H, OlCH, OOOH ; Q 0_51 DB OfCH, 066H, 066H, 07CH, 06CH, 066H, 0 E6H, OOOH : R 0_52 DB 078H, OCCH, OEOH, 070H, 01Ctl, OCCH. 07SH, OOOH ; SO_53 DB OFCH,OB4H.030H, 030H,030H, 030H, 078H, OOOH ; TO_54 DB OCCH, OCCH, OCCH, OCCH,OCCH. OCCH, OfCH,OOOH ; U 0_55 August 2, 1984 IBM Enhanced Graphics Adapter 161 fC 00 18' 0280 CC CC CC CC CC 78 18' 30 00 185 0268 C6 C6 C6 06 FE EE 18. C6 00 187 02CO C6 C6 6C 38 38 6C 188 C6 00 189 02C8 CC CC CC 78 30 30 190 78 00 191 0200 fE C6 8C 18 32 66 192 fE 00 19' 0208 78 60 60 60 60 60 19' 78 00 195 02EO CO 60 30 18 OC 06 19' 02 00 197 02E8 78 18 18 18 18 18 '98 78 00 '99 02fO 10 38 6C C6 00 00 200 00 00 20' 02F8 00 00 00 00 00 00 202 00 FF 203 204 0300 30 30 18 00 00 00 205 00 00 20' 0308 00 00 78 OC 7C CC 207 76 00 208 0310 EO 60 60 7C 66 66 209 DC 00 210 0318 00 00 78 CC CO CC 211 78 00 212 0320 lC DC OC 7C CC CC 213 76 00 214 0328 00 00 78 CC fC CO 215 78 00 21. 0330 36 6C 60 fO 60 60 217 FO 00 21' 0338 00 00 76 CC CC 7C 219 OC f8 220 0340 EO 60 6C 76 66 66 221 E6 00 222 0348 30 00 70 30 30 30 223 76 00 0350 OC 00 DC ac OC cc 224 225 CC 76 22' 0358 EO 60 66 6C 76 6C 227 E6 00 228 0360 70 30 30 30 30 30 229 78 00 230 0368 00 00 CC FE FE 06 231 C6 00 232 0370 00 00 f8 CC CC CC 233 CC 00 234 0376 00 00 78 CC CC CC 235 78 00 236 237 0380 00 00 DC 66 66 7C 2'8 60 FO 239 0388 00 00 76 CC CC 7C 240 OC 1E 24' 0390 00 00 DC 76 66 60 242 FO 00 243 0398 00 00 7C CO 78 OC 244 F8 00 245 03AO 10 30 7C 30 30 34 24' 18 00 247 03AS 00 00 CC Cc Cc CC 248 76 00 249 0380 00 00 CC Cc CC 78 250 30 00 251 03B8 00 00 C6 06 FE FE 252 6C 00 253 03CO 00 00 C6 6C 38 6C 254 C6 00 255 03C8 00 00 Cc Cc CC 7C 25' OC F8 257 0300 00 00 FC 98 30 64 258 FC 00 259 0308 1C 30 30 EO 30 30 1C 00 226.,0 03EO 18 18 18 00 18 18 2'2 03E8 i8 00 EO 30 30 1C 30 30 EO 00 2"263 265 OHO 76 DC 00 00 00 00 26. 00 00 267 03f8 00 10 38 6C C6 C6 268 FE 00 269 270 0400 271 272 0400 78 CC CO CC 78 18 273 OC 78 27. 0408 00 cc 00 CC CC CC 275 7E 00 27. 0410 lC 00 78 CC FC CO 277 78 00 278 0418 7E C3 3C 06 3E 66 279 H 00 280 0420 CC 00 78 DC 7C CC 281 7E 00 282 0428 EO 00 78 DC 7e ee 283 7E 00 284 0430 30 30 78 oe 7C CC 285 7E 00 28. 0436 00 00 78 CO CO 78 287 DC 36 288 0440 7E C3 3C 66 7E 60 289 3C 00 290 0448 CC 00 78 CC FC CO 291 78 00 292 0450 EO 00 78 CC FC CO 293 78 00 294 0458 CC 00 70 30 30 30 295 78 00 296 0460 7C C6 38 18 18 18 297 3C 00 298 0468 EO 00 70 30 30 30 299 76 00 300 0410 C6 36 6C C6 FE C6 30' C6 00 302 0476 30 30 00 78 CC FC CC 00 '3D03. 305 0480 1C 00 FC 60 78 60 300 fC 00 307 0486 00 00 7F DC 7F CC 308 OB OB OB OB OB DB DB OB OB DB DB DB DB OB DB DB DB DB DB DB OB DB DB OB DB OB DB DB DB DB OB 08 OB OB DB DB DB DB DB DB INT_1 F_1 DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB OCCH, OCCH, OCCH, OCCH, OCCH, 018H, 030H,OOOH ; V 0_56 OC6H,OC6H,OC6H,006H,OFEH,OEEH,OC6H,OOOH ; W 0_51 OC6H,OC6H,06CH,038H,038H,06CH,OC6H,OOOH ; X 0_58 OCCH, OCCH, OCCH, 018H, 030H, 030H, 018H, OOOH ; YO_59 OFEH,OC6H,08CH,018H,032H,066H,OFEH,OOOH ; Z D_5A 078H,060H,060H,060H,060H,060H,078H,OOOH ; I 0_5B OCOH,060H,030H,018H,OOCH,006H,002H,OOOH ; IV'CKSLASH 0_5C 018H,018H,018H,016H,018H,018H,078H,000H ; 1 o_50 010H, 038H, 06CH, OC6H, OOOH, OOOH, OOOH, OOOH ; CIRCUMfLEX 0_5E OOOH,OOOH,OOOH,OOOH,OOOH,OOOH,OOOH,OFFH ; _ 0_5F 030H,030H,018H,OOOH,000H,000H,OOOH,000H ; , 0_60 000H,000H,018H,OOCH,07CH,OCCH,076H,OOOH ; LOWER CASE A 0_61 OEOH,060H,060H,07CH,066H,066H,00CH,OOOH ; L.C. B 0_62 000H,OOOH,016H,OCCH,OCOH,OCCH,078H,OOOH ; L.C. C 0_63 01CH,OOCH,00CH,07CH,OCCH,OCCH,076H,OOOH L.C. 00_64 000H,OOOH,078H,OCCH,OFCH,OCOH,078H,000H ; L.C. E '0_65 038H,06CH,060H,OFOH,060H,060H,OFOH,OOOH ; L.C. F 0_66 000H,OOOH,076H,OCCH,OCCH,07CH,OOCH,Of6H ; L.C. G 0_67 OEOH,060H,06CH,076H.066H,066H,OE6H,OOOH ; L.C. H 0_66 030H,000H,070H,030H,030H.030H,078H,OOOH ; L.C. I 0_69 00CH,OOOH,OOCH,OOCH,OOCH,OCCH,OCCH,078H ; L.C. J 0_6A OEOH,060H,066H,06CH.018H,06CH,OE6H,OOOH ; L.C. K 0_6B 010H,030H,030H,030H,030H,030H,018H.000H ; L.C. L 0_6C 000H,000H,OCCH,OFEH.OfEH,0O6H,OC6H,000H ; L.C. M 0_6D OOOH,000H,OF8H,OCCH,OCCH,OCCH,OCCH,OOOH ; L.C. N D_6E 000H,COOH,078H,OCCH,OCCH,OCCH,078H,OOOH ; L.C. 0 0_6F OOOH,000H,OOCH,066H,066H,OlCH,060H,OFOH ; L,C. P 0_70 000H,OOOH,016H,OCCH,OCCH,07CH,00CH,01EH; L.C. Q 0_11 OOOH, OOOH, ODCH,076H, 066H, 060H, OroH, OOOH ; 000H,000H,07CH,OCOH,078H,OOCH,OF8H,OOOH ; L.C. S 0_13 010H,030H,07CH,030H,030H,034H,018H,000H ; L.C. T 0_74 OOOH,OOOH, OCCH, OCCH, OCCH, OCCH, 076H, OOOH ; OOOH,000H,OCCH,OCCH,OCCH,078H,030H,000H ; L.C. V 0_76 000H,OOOH,OC6H,006H,OfEH,OFEH,06cH,000H ; L.C. W 0_11 000H,000H,OC6H,06CH,038H,06cH,oc6H,OOOH ; L.C. X 0_78 000H,OOOH,OCCH,OCCH,OCCH,07CH,00CH,Of8H ; L.C. Y 0_79 000H,OOOH,OfCH,098H,030H,064H,OFCH,OOOH ; L.C. Z D_IA 01CH,030H,030H,OEOH.030H,030H,01CH,OOOH ; L BRAK 0_7B 018H,018H,018H,000H,018H,018H,018H,OOOH ; I 0_7C OEOH, 030H, 030H, 0 lCH, 030H,030H, OEOH, OOOH ; R BRAK 0_70 076H,OOCH,OOOH,OOOH,OOOH.000H,OOOH,OOOH ; TILDE D_7E 000H,010H,038H,06CH,0C6H,OC6H,OfEH,OOOH ; DELTA D_7F LABEL BYTE 078H,OCCH,OCOH,OCCH,078H,016H,OOCH,078H; 000H,OCCH,OOOH,OCCH,OCCH,OCCH,07EH,OOOH; 01CH,OOOH,078H,OCCH,orCH,OCOH,078H,000H; 07EH,OC3H,03CH,006H,03EH,066H,03fH,OOOH; OCCH,OOOH,078H,00CH,07CH,OCCH,07EH,OOOH; O[OH,OOOH, 078H, OOCH, 07CH, OCCH, 07EH, OOOH; 030H,030H,078H,OOCH,07CH,OCCH,07EH,000H; 000H,OOOH,076H,OCOH,OCOH,078H,OOCH,038H; 07EH,OC3H,03CH,066H,07EH,060H,03CH,000H; OCCH,000H,078H,OCCH,OFCH,OCOH,078H,000H; OEOH,OOOH, 078H, OCCH,OfCH, OCOH, 078H, OOOH; OCCH,OOOH,070H,030H,010H,030H,078H,OOOH; 07CH, OC6H,038H,018H, 018H, 018H, 03CH, OOOH; OEOH,OOOH,070H,030H,030H,030H,078H,OOOH; OC6H,038H,06CH,OC6H,OFEH,OC6H,OC6H,OOOH; 030H,030H,OOOH,016H,OCCH,OFCH,OCCH,OOOH; 0_80 0_81 0_82 0_83 0_84 0_85 0_86 0_87 0_88 0_89 0_8A D~8B 0_8C 0_80 0~8E D_8F 01CH,000H,OFCH,060H,078H,060H,OFCH,OOOH; 000H,OOOH,07fH,OOCH,07FH,OCCH,07FH,OOOH; 0_90 0_91 162 IBM Enhanced Graphics Adapter August 2, 1984 7f 00 309 0490 3E 6C CC FE CC CC 310 CE 00 311 0496 76 CC 00 76 CC CC 312 78 00 313 04AO 00 CC 00 76 CC CC 31. 78 00 315 04A8 00 EO 00 76 CC CC 316 78 00 317 0480 78 CC 00 CC CC CC 318 7E 00 319 0486 00 EO 00 CC CC CC 320 7E 00 321 04CO 00 CC 00 CC CC 7C 322 DC f8 323 04C8 C3 18 3C 66 66 3c 32. ~ 18 00 0.00 CC 00 CC CC CC ee 325 326 76 00 327 0'08 18 18 7E CO CO 7E 328 18 18 329 04EO 38 6C 64 fO 60 E6 330 fe 00 331 04£6 CC CC 76 FC 30 FC 332 30 30 333 04FO F6 CC CC fA C6 CF 33' C6 C7 335 04F8 O£ lB 18 3C 16 18 336 08 70 337 338 0500 lC 00 78 OC 7C cc 339 7E 00 340 0508 38 00 70 30 30 30 341 78 00 342 0510 00 lC 00 78 CC CC 343 78 00 34' 0518 00 lC 00 CC CC CC 345 7E 00 346 0S,20 00 f8 00 F6 CC CC 347 CC 00 348 0526 FC 00 ce EC FC DC 349 CC 00 350 0530 3C 6C 6C 3E 00 7E 351 00 00 352 0S,38 38 6C 6C 38 00 7C 353 00 00 35. 0540 30 00 30 60 CO CC 355 78 00 356 0548 00 00 00 FC CO CO 357 00 00 358 0550 00 00 00 FC DC OC 359 00 00 360 0558 C3 C6 CC DE 33 66 361 CC OF 362 0560 C3 C6 CC DB 37 6F 363 CF 03 36. 0568 18 18 00 18 18 18 365 18 00 366 0570 00 33 66 CC 66 33 367 00 00 368 0576 00 CC 66 33 66 CC 369 00 00 370 371 0580 22 88 22 88 22 88 372 22 88 373 ~ 0588 55 AA 55 AA 5S, M 55 AA 37. 375 0590 DB 77 DB EE DB 77 376 DB EE 377 0598 18 18 18 18 18 18 378 18 18 379 05AO 18 18 18 18 F8 18 380 18 lB 381 05A8 18 18 f8 18 F8 18 382 18 18 383 0580 36 36 36 36 F6 36 38' 36 36 385 05B8 00 00 00 00 FE 36 386 36 36 387 05CO 00 00 F6 18 F8 lB 388 18 18 389 05C8 36 36 F6 06 F6 36 390 36 36 391 0500 36 36 36 36 36 36 392 36 36 393 0508 00 00 FE 06 F6 36 39' 36 36 395 05EO 36 36 F6 06 FE 00 396 00 00 397 05E8 36 36 36 36 FE 00 398 00 00 399 05FO 18 18 F8 18 F8 00 .00 00 00 '01 05F8 00 00 00 00 Fa 18 .02 18 18 '03 0600 18 18 18 18 1F 00 '0' .05 00 00 '06 0608 18 18 18 18 FF 00 '07 00 00 '08 0610 00 00 00 00 Ff 18 '09 18 18 410 0618 0620 18 18 18 18 IF 18 18 18 00 00 00 00 ff 00 00 00 ."'"412 41. 0628 18 18 18 18 ff 18 '15 18 lB 0630 lB 18 1F 18 IF 18 .41176 18 18 418 0638 36 36 36 36 37 36 419 36 36 '20 0640 36 36 37 30 3F 00 '21 00 00 .22 ~ 0648 00 00 3f 30 37 36 36 36 '23 .2. 0650 36 36 F7 00 FF 00 .25 00 00 '26 0658 00 00 ff 00 F7 36 '27 36 36 '28 0660 36 36 37 30 37 36 .29 36 36 430 0668 00 00 FF 00 FF 00 '31 00 00 432 0670 36 36 f7 00 F7 36 '33 36 36 43' August 2, 1984 DB 03EH, 06CH, OCCH, OfEH, OCCH, OCCH, OCEH, OOOH ; 0_92 DB 076H,OGCH, OOOH, 076H, oeCH, OCCH, 078H, OOOH ; 0_93 DB OOOH, OCCH, OOOH, 078H, OCCH, OCCH, 078H, OOOH ; 0_94 DB OOOH, OEOH, OOOH, 076H, OCCH, OCCH, 078H, OOOH ; D_95 DB 078H, OCCH, OOOH, OCCH, OCCH, OCCH, 07EH, OOOH ; 0_96 DB OOOH. OEOH, OOOH, OCCH, OCCH, OCCH, 07EH, OOOH ; 0_97 DB OOOH, OCCH, OOOH, OCCH, OCCH, a 7CH, OOCH, 0 F6H ; o_98 DB OC3H, a 16H, 03CH, 066H, 066H, 03CH, a 16H, OOOH ; D_99 DB oeCH, OOOH,OceH, OCCH, OceH, oeCH, 078H, OOOH ; D_9A DB 018H, 018H, 07EH,OCOH, OCOH,07EH, 016H, 018H ; D_9B DB 036H, 06CH, 064H, OfOH, 060H, 0£6H, 0 FCH, OOOH ; D_9C DB OCCH, OCCH, 076H, arCH, 030H, OFCH, 030H,030H ; D_9D DB OF6H,OCCH, OCCH, OFAH, OC6H, OCFH, OC6H,OC7H ; D_9E DB OOEH, 01 BH, 018H, 03CH, 018H, 0 18H, 008H, 070H ; D_9F DB 01CH, OOOH, 078H, OOCH, 07CH, OCCH, 07EH, OOOH ; D_AO DB 038H, OOOH, 070H, 030H, 030H, 030H,076H, OOOH ; D_Al DB OOOH, a 1CH, OOOH, 078H, OCCH, OCCH, 078H, OOOH ; 0_A2 DB OOOH, 0 1CH, OOOH. OCCH, OCCH, OCCH, 07 EH, OOOH ; 0_A3 DB OOOH, 0 F8H, OODH, Of8H, OceH, OCCH, OCCH, OOOH ; D_AA DB OFCH, OOOH, OceH, OECH, OFCH, 0 DCH, OCCH, OOOH ; D_AS, DB 03CH, 06CH, 06CH, 03EH, OOOH, 07EH, OOOH, OOOH ; D_A6 DB 038H, 06CH, 06CH, 038H, OOOH, 07CH, OOOH, OOOH ; D_A7 DB 030H, OOOH, 030H, 060H, OCOH, OCCH, 076H, OOOH ; D_A8 DB OOOH, OOOH, OOOH, 0 FCH, OCOH, OCOH,OOOH, OOOH ; D_A9 DB OOOH, OOOH, OOOH, OfCH, OOCH, OOCH, OOOH, OOOH ; D_AA DB OC3H, OC6H, OCCH, OOEH, 033H, 066H, OCCH, OOFH ; D_AB DB OC3H, OC6H, OceH, ODBH, 037H, 06FH, OCFH, 003H ; D_AC DB o 18H, 018H, OOOH, 018H, 018H, 0 18H, 0 18H, OOOH ; D_AD DB OOOH, 033H, 066H, OCCH, 066H, 033H, OOOH, OOOH ; O_AE DB OOOH, OCCH, 066H, 033H, 066H,OCCH, OOOH, OOOH ; O_AF DB 022H, 088H, 022H, 088H, 022H, 088H, 022H, 088H ; o_BO DB 055H, OMH, 055H, OMH, 055H, OMH, 055H, OMH ; O_Bl DB OOBH, 077H, ODBH, OEEH, OOBH, 077H, ODBH, OEEH ; 0_B2 DB 018H,018H, 01 8H, 018H, 018H, 018H, 018H, 018H ; 0_B3 DB 018H, 018H, 018H, 018H, OF8H, 018H, 018H, 018H ; 0_B4 DB 018H, 018H, OF8H, 018H,OF8H, 018H, 018H, 018H ; 0_B5 DB 036H, 036H, 036H, 036H, OF6H, 036H, 036H, 036H ; 0_B6 DB OOOH, OOOH, OOOH, OOOH, 0 FEH, 036H, 036H, 036H ; D_B7 DB OOOH, OOOH, 0 F8H, 018H, OF8H, 0 18H, 01 8H, 018H ; 0_B8 DB 036H, 036H, Of6H, 006H, Of6H, 0 36H, 036H, 036H ; D_B9 DB 036H, 036H, 036H, 036H, 036H, 036H, 036H, 036H ; D_BA DB OOOH, OOOH, OFEH, 006H, OF6H, 036H, 036H, 036H ; O_BB DB 036H,036H, OF6H, 006H, OFEH, OOOH, OOOH, OOOH ; O_BC DB 036H,036H, 036H, 036H. OFEH, OOOH,OOOH, OOOH ; D_BD DB 018H, 018H, OF8H, 018H, OF8H, OOOH, OOOH, OOOH ; O_BE DB OOOH, OOOH, OOOH, OOOH, OFeH, 01 8H, 018H, 018H ; D_Bf DB o 16H, 018H, 018H, 018H, 01 FH, OOOH, OOOH, OOOH ; D_CO DB 018H, 0 16H. 018H, 01 8H, OffH, OOOH, OOOH, OOOH ; O_Cl DB OOOH, OOOH, OOOH, OOOH, OffH, 0 18H, 0 18H, 018H ; 0_C2 DB 018H, 018H, 018H, 018H, 01 FH,018H, 018H, 018H ; D_C3 DB OOOH, OOOH, OOOH, OOOH, Of FH, OOOH, OOOH, OOOH ; D_C4 DB 018H,018H. 018H, 018H, 0 FFH, 01 8H, 018H,018H ; D_C5 DB 018H, 018H, 01 FH, 018H, 01 FH,018H, 018H,018H ; D_C6 DB 036H, 036H, 036H, 036H, 037H, 036H, 036H, 036H ; D_C7 DB 036H, 036H, 037H, 030H, 03 FH, OOOH, OOOH, OOOH ; D_C8 DB OOOH, 000H,03FH, 030H, 037H, 036H, 036H, 036H ; 0_C9 DB 036H, 036H,0F7H,OOOH, OFFH,OOOH, OOOH, OOOH ; D_CA DB OOOH, OOOH, OffH, 000H,0F7H,036H, 036H, 036H ; D_CB DB 036H, 036H.037H, 030H, 037H, 036H, 036H, 036H ; O_CC DB OOOH, OOOH, OffH, OOOH, 0 ffH, OOOH, OOOH, OOOH ; D_CD DB 036H,036H, OF7H, OOOH, OF7H, 036H, 036H, 036H ; D_CE IBM Enhanced Graphics Adapter 163 0678 18 18 FF 00 FF 00 435 00 00 436 437 0680 36 36 36 36 FF 00 438 00 00 439 0688 00 00 FF 00 FF 18 440 18 18 441 0690 00 00 00 00 FF 36 442 36 36 443 0698 36 36 36 36 3F 00 444 0000 445 06AO 18 18 1F 18 1F 00 446 00 00 447 06A8 00 00 1F 18 1F 18 448 18 18 449 0680 00 00 00 00 3F 36 450 3636 451 0688 36 36 36 36 FF 36 452 36 36 453 06CO 18 18 FF 18 fF 18 454 18 18 455 06C8 18 18 18 18 F8 00 456 00 00 457 0600 00 00 00 00 1F 18 458 18 18 459 0608 FF FF FF FF FF FF 460 FF FF 461 06EO 00000000 FF FF 462 FF FF 463 06E8 FO FO FO FD FO FO 464 FO FO 465 06FO OF OF OF OF OF OF 466 OF OF 467 06F8 Fe Fe FF FF 00 00 468 0000 469 470 0700 00 00 76 DC C8 DC 471 76 00 472 0708 00 78 CC F8 CC FB 473 CO CO 474 0710 00 FC CC CO CO CO 475 CO 00 476 0718 00 FE 6C 6C 6C 6C 477 6C 00 478 0720 FC CC 60 30 60 CC 479 FC 00 480 0728 00 00 7E 08 08 08 481 70 00 482 0730 00 66 66 66 66 7C 483 60 CO 4B4 0738 00 76 DC 18 18 18 485 0740 18 00 FC 30 78 CC CC 78 ]0 FC 486 487 488 0748 38 6C C6 FE C6 6C 489 38 00 490 0750 38 6C C6 C6 6C 6C 491 EE 00 492 0758 1C 30 18 7C CC CC 493 78 00 494 0760 00 00 7E DB DB 7E 495 00 00 496 0768 06 OC 7E DB DB 7E 497 60 co 498 0770 38 60 co F8 CO 60 499 38 00 500 0778 78 CC CC CC CC CC 501 CC 00 502 503 0780 00 FC 00 FC 00 FC 504 00 00 505 0788 30 30 FC 30 30 00 506 FC 00 507 0790 60 30 18 30 60 00 508 FC 00 509 0798 18 30 60 30 1800 510 FC 00 511 07AO DE 18 18 18 18 18 512 18 18 513 07A8 18 18 18 18 18 08 514 DB 70 515 07BO 30 30 00 FC 00 30 516 3000 517 07B8 00 76 DC 00 76 DC 51B 00 00 519 07CO 38 6C 6G 38 00 00 520 00 00 521 07G8 00 00 00 18 18 00 522 00 00 523 0700 00 00 00 00 18 00 524 00 00 525 0708 OF DC DC OC EC 6C 526 3C 1C 527 07EO 78 6C 6C 6C 6C 00 52B 00 00 529 07E8 70 18 30 60 78 00 530 00 00 5]1 07FO 00 00 3C ]C 3C ]C 532 00 00 53] 07F8 00 00 00 00 00 00 5]4 00 00 535 0800 536 537 0000 0000 0000 08 018H,018 H,OFFH,000H,OFFH,OOOH,OOOH,OOOH ; O~CF 036H, 036H, 036H, 036H, OFFH, OOOH, OOOH, OOOH ; O~OO DB OOOH, OOOH, OFFH, OOOH, OFFH, 018H, 0 18H, 018H ; 0~01 OOOH, OOOH, OOOH, OOOH, OF FH, 036H, 036H, 036H ; 0~02 036H, 036H, 036H, 036H, 03 FH, OOOH, OOOH. OOOH ; 0~03 018H, 018H, 01 FH, 018H, 01 FH, OOOH, OOOH, OOOH ; 0~04 DB OOOH, OOOH, 01 FH, 018H, 01 FH, 018H, 018H ,018H ; D~D5 DB OOOH, OOOH, OOOH, OOOH, 03 FH, 0 36H, 036H, 036H ; D~D6 036H, 036H, 0 36H, 036H, 0 FFH, 03 6H, 0 36H, 036H ; D~D7 DB 018H, 018H, OFFH, 018H, OFFH, 018H, 018H, 018H ; 0~08 DB 018H,018H,018H,018H,OF8H,OOOH,000H,OOOH ; 0~09 DB OOOH,OOOH,OOOH,OOOH,Ol FH,018H,018H,018H ; O~OA OFFH, 0 FFH, 0 r FH, OFFH, OFFH, OFFH, 0 FFH, OFFH ; 0~08 DB OOOH, OOOH, OOOH, OOOH, OFFH, OFFH, OFFH, OFFH ; O~OC OFOH, OFOH, OFOH, OFOH, OFOH, OFOH, OFOH, OFOH ; O~OO DB OOFH, OOFH, OOFH, OOFH, OOFH, OOFH, OOFH, OOFH ; D~OE DB OF FH, OFFH, aFFH, OFFH, OOOH, OOOH, OOaH, OOOH ; O~DF OOOH, OOOH, 076H, OOCH, OC8H, OOCH, 076H. OOOH ; D_EO DB OOOH, 078H, OCCH.OF8H, OCCH, OF8H, OCOH, OCOH ; 0_E1 OOOH, OFCH, OCCH,OCOH, OCOH, OCOH, OCOH. OOOH ; 0_E2 DB OOOH, 0 FEH, 06CH, 06CH, 06CH, 06CH, 06CH, OOOH 0_E3 OFCH, OCCH, 060H, 030H, 060H, OCCH, OFCH, OOOH 0- E4 08 OOOH, OOOH, 07EH, 008H, 008H, 008H, 070H, OOOH 0_E5 08 OOOH, 066H, 066H, 066H, 066H, 07CH, 060H, OCOH 0- E6 08 OOOH, 076H, ODCH, 0 18H, 018H, 018H, 018H, OOOH 0- E7 08 o FCH, 030H, 078H, OCCH, OCCH, 078H, 030H, orCH 0 _EB 08 038H, 06CH, OC6H, 0 FEH, OC6H, 06CH, 038H, OOOH ; 0- E9 08 038H, 06CH, OC6H, OC6H, 06CH, 06CH, OEEH, OOOH ; D_EA 08 01 CH, 030H, 018H, 07CH, OCCH, OCCH, 078H, OOOH ; O_EB DB OOOH, OOOH, 07EH, OOBH, OOBH, 07 EH, OOOH, OOOH ; D_EC 006H, OOCH, 07EH, OOBH, OOBH, 07 EH, 060H, OCOH ; D_EO DB 038H. 060H, OCOH, 0 F8H. OCOH, 060H, 03 8H, OOOH ; D__ EE 07 8H. OCCH, OCCH, OCCH, OCCH, OCCH, OCCH, OOOH ; O_EF DB 08 08 08 08 DB DB DB ENDS END OOOH, OFCH, OOOH, OFCH, OOOH, OFCH. OOOH, OOOH ; 030H, 030H, OFCH, 030H, 030H, OOOH, OFCH, OOOH ; 060H, 030H, 018H, 030H, 060H, OOOH, OFCH, OOOH ; o 18H, 030H, 060H, 030H, 0 18H, OOOH, OFCH, OOOH OOEH, 01 BH, 01 BH, 0 18H, 0 18H, 0 18H, 018H, 018H ; o 18H, 018H, 018H, 0 18H, 0 18H, OD8H, 008H, 070H ; 030H. 030H, OOOH, 0 FCH, OOOH, 030H, 030H, OOOH ; OOOH, 076H, OOGH, OOOH, 076H, oDGH, OOOH, OOOH ; 038H. 06CH, 06CH, 038H. OOOH, OOOH, OOOH, OOOH ; OOOH. OOOH, OOOH, 018H, 01 8H, OOOH, OOOH, OOOH ; OOOH, OOOH, OOOH, OOOH, 01 8H, OOOH, OOOH, OOOH ; OOFH, OOCH, OOCH, OOCH, OECH, 06CH, 03CH, 01 CH ; 078H, 06CH, 06CH, 06CH, 06CH, OOOH, OOOH, OOOH ; 070H, 018H, 030H, 060H, 078H, OOOH, OOOH, OOOH ; OOOH, OOOH, 03GH, 03CH, 03CH, 03CH, OOOH, OOOH ; OOOH, OOOH, OOOH, OOOH, OOOH, OOOH. OOOH, OOOH ; O_FO 0- F1 0- F2 0- F3 0- F4 0- F5 O_F6 D_F7 D_F8 D_F9 O_FA 0- FB 0 - FC 0- FO 0- FE 0- FF PAGE,120 SUBTTL END ADDRESS CODE SEGMENT PUBLIC PUBLIC END_ADDRESS END ADDRESS LABEL BYTE CODE ENOS END 164 IBM Enhanced Graphics Adapter August 2, 1984 Index ~A Attribute Address Register 56 Attribute Controller description 3 registers 56 B BIOS description 4 vectors with special meanings 103 BIOS listing 103 Bit Mask Register 54 compatibility issues 74 configuration switches 80 CRT Controller description 3 registers 24 CRT Controller Address Register 24 CRT Controller Overflow Register 30 Cursor End Register 33 Cursor Location High Register 35 Cursor Location Low Register 35 Cursor Start Register 32 D Data Rotate Register 49 c direct drive connector 83 display buffer 4 character generator ROM 1 Character Map Select Register 21 Clocking Mode Register 19 Color Compare Register 48 Color Don't Care Register 53 color mapping 10 Color Plane Enable Register 60 E Enable Set/Reset Register 47 End Horizontal Blanking Register 27 End Horizontal Retrace Register 29 Index-l End Vertical Blanking I Register 40 Input Status Register One 15 Input Status Register Zero 14 F Interface 76 feature connector 76 feature connector 76 Feature Control Register 14 L G Light Pen High Register 36 light pen interface 84 Light Pen Low Register 37 Graphics Controller Line Compare Register 43 description 3 registers 45 Graphics 1 and 2 Address Register 46 M Graphics 1 Position Register 45 Graphics 2 Position Register 46 Map Mask Register 20 Maximum Scan Line Register 32 Memory Mode Register 23 Miscellaneous Output H Register 12 Miscellaneous Register 52 Mode Control Register 41,58 Horizontal Display Enable End Mode Register 50 Register 26 modes Horizontal Pel Panning alphanumeric 8 Register 60 graphics 8 Horizontal Total Register 25 IBM Color Display 5 IBM Enhanced Color Display 6 ~.. IBM Monochrome Display 6 Index-2 o Offset Register 38 Overscan Color Register 59 Graphics Controller 45 Sequencer 18 Reset Register 18 s p Sequencer description 3 Palette Registers 57 registers 18 Preset Row Scan Register 31 Sequencer Address Register 18 programming Set/Reset Register 47 considerations 62 specifications 79 compatibility issues 74 configuration switch creating a split screen 73 settings 81 creating a 512 character configuration switches 80 set 70 direct drive connector 83 creating an 80 by 43 light pen interface 84 alphanumeric mode 71 system board switches 79 programming registers 62 Start Address High Register 34 RAM loadable character Start Address Low Register 34 generator 69 Start Horizontal Blanking vertical interrupt feature 72 Register 26 Start Horizontal Retrace Pulse Register 28 Start Vertical Blanking R Register 39 support logic 4 RAM loadable character generator 69 Read Map Select Register 50 registers Attribute Controller 56 CRT Controller 24 external 12 u Underline Location Register 39 Index-3 v Vertical Display Enable End Register 38 vertical interrupt feature 72 Vertical Retrace End Register 36 Vertical Retrace Start Register 36 Vertical Total Register 30 Index-4Adobe Acrobat Pro Extended 9.5.5 Adobe Acrobat Pro Extended 9.5.5