IBM Color Graphics Adapter (CGA) The original CGA was built with discrete logic around an MC6845 display controller. On the original CGA and some clones accessing the video memory during the active display time caused the display controller to miss some pixels (seen as "snow"), which is the reason many programs only accesses video memory during vertical or horizontal retrace. This is fixed in some clones and in EGA/VGA adapters. Basic features: 80x25 text modes in 16colors 320x200 4color graphics modes 640x200 2 color graphics mode TTL video interface (Red, Green, Blue and Intensity) 16KB Video RAM and 2KB ROM for 8x8 font. Clones: Commodore AGA: Combines CGA, MDA, Hercules and Plantronics support in one chip. Chips & Tech 82c425: Supports both CRT and LCD displays. Greyscale on LCD, supports two softfonts (up to 8x16 pixels) allowing 512 characters on screen. No Snow. Chips & Tech 82c426: Same as 82c425, but also supports Sleep mode, AT&T 400 line Graphics Mode, Color LCDs and upto 32KB video memory. 3D4h (W): Index register. The value written to this register selects which of the data registers will be accessed at 3D5h. 3D4h index 00h (W): Horizontal Total Register Bit 0-7 Number of characters (-1) in a scan line incl. retrace. Note: this register is Read/Write on the CT82c425/6. 3D4h index 01h (W): Horizontal Displayed Register Bit 0-7 Number of characters (-1) displayed during a scan line. Note: this register is Read/Write on the CT82c425/6. 3D4h index 02h (W): Horizontal Sync Position Register Bit 0-7 Number of characters displayed before Horizontal Sync pulse starts. Note: this register is Read/Write on the CT82c425/6. 3D4h index 03h (W): Horizontal Sync Width Register Bit 0-7 Number of character clocks during a Horizontal Sync pulse. Note: this register is ignored on the CT82c425/6. 3D4h index 04h (W): Vertical Total Register Bit 0-6 Number of character rows in a frame. This is adjusted by the number of scanlines in a character (index 9) and the Vertical Adjust (index 5). Note: this register is Read/Write on the CT82c425/6. 3D4h index 05h (W): Vertical Total Adjust Register Bit 0-3 Number of scanlines added to the Vertical Total time. Note: this register is Read/Write on the CT82c425/6. 3D4h index 06h (W): Vertical Displayed Register Bit 0-6 Number of character rows displayed per frame. Note: this register is Read/Write on the CT82c425/6. 3D4h index 07h (W): Vertical SyncPosition Register Bit 0-6 Number of character rows displayed before the Vertical Sync pulse starts. Note: this register is Read/Write on the CT82c425/6. 3D4h index 08h (W): Interlace Mode Register Note: this register is ignored on the CT82c425/6 and F8680. 3D4h index 09h (W): Maximum Scan Line Register Bit 0-3 Number of scanlines (-1) in a character row. Note: this register is Read/Write on the CT82c425/6. 3D4h index 0Ah (W): Cursor Start Register Bit 0-4 The scanline (starting from 0) within the character where the cursor starts. 5-6 Cursor Attributes: 0,2: Cursor is blinking at the blink rate. 1: Cursor is turned off. 3: Cursor is blinking at half the blink rate. The default blink rate is 1/16 of the frame rate (8 frames on, 8 off). Note: this register is Read/Write on the CT82c425/6. 3D4h index 0Bh (W): Cursor End Register Bit 0-4 The scanline (starting from 0) within the character where the cursor ends. If the start position (index 0Ah) is larger than this value, no cursor is shown. Note: this register is Read/Write on the CT82c425/6. 3D4h index 0Ch (W): Start Address High Register Bit 0-5 The upper 6 bits of the address of the start of the display. The lower 8 bits are in index 0Dh. Note: this register is Read/Write on the CT82c425/6. 3D4h index 0Dh (W): Start Address Low Register Bit 0-7 The lower 8 bits of the address of the start of the display. The upper 6 bits are in index 0Ch. Note: this register is Read/Write on the CT82c425/6. 3D4h index 0Eh (W): Cursor Location High Register Bit 0-5 The upper 6 bits of the address of the start of the cursor. The lower 8 bits are in index 0Fh. Note: this register is Read/Write on the CT82c425/6. 3D4h index 0Fh (W): Cursor Location Low Register Bit 0-7 The lower 8 bits of the address of the start of the cursor. The upper 6 bits are in index 0Eh. Note: this register is Read/Write on the CT82c425/6. 3D4h index 10h (W): Light Pen High Register Bit 0-5 The upper 6 bits of the latched address of the lightpen strobe. The lower 8 bits are in index 11h. Note: this register is Read/Write on the CT82c425/6. 3D4h index 11h (W): Light Pen Low Register Bit 0-7 The lower 8 bits of the latched address of the lightpen strobe. The upper 6 bits are in index 10h. Note: this register is Read/Write on the CT82c425/6. 3D4h index D3h (R/W): Grey-level Control Register #1 (CT82c426 only) bit 0-7 GC10-17. Parameter for the Monochrome Alternate GrayScale algorithm. Recommended value is 43h. Bit 3 should be 0. 3D4h index D4h (R/W): Grey-level Control Register #2 (CT82c426 only) bit 0-7 GC20-27. Parameter for the Monochrome Alternate GrayScale algorithm. Recommended value is E6h. Bits 3 and 7 should be 0. 3D4h index D5h (R/W): General-Purpose Register (CT82c426 only) bit 0 General Purpose I/O bit 1. Data to/from the GPIO1 pin. 1 General Purpose I/O 1 Three State Control. If set the GPIO1 pin is three-stated and can be used as an input. If clear the pin is an output. 2 General Purpose I/O 1 Mux Control. If set the GPIO1 pin is fed with the data in bit 0, if clear with the Display Enable bit (3DAh bit 0). 4 General Purpose I/O bit 2. Data to/from the GPIO2 pin. 5 General Purpose I/O 2 Three State Control. If set the GPIO2 pin is three-stated and can be used as an input. If clear the pin is an output. 6 General Purpose I/O 2 Mux Control. If set the GPIO2 pin is fed with the data in bit 4, if clear with the ROMCS/ signal 3D4h index D6h (R/W): Sleep Register (CT82c426 only) bit 0 Sleep Mode Software Enable. If a 1 is written to this bit, the 82c426 enters sleep mode when the current display fetch completes. In sleep mode video memory can not be accessed and the SLEEP pin is driven high. If a 0 is written normal operation resumes. 1 (R) Sleep Mode Output. Reflects the state of the SLEEP output pin. 1 if the 82c426 is in sleep mode or if the Video Enable bit is 0. 3D4h index D7h (R/W): Panel Size Register (CT82c426 only) bit 0-7 Size of the upper panel (if a two panel system) in scanlines (-1). 3D4h index D8h (R/W): Panel Configuration Register (CT82c426 only) bit 0-2 LCD Mode. Panel type: 0: Single Panel, Single Drive 1: Dual-Panel, Single Drive 2: Dual-Panel, Dual Drive 3: Single Panel, 12bit color 4: Single Panel, 4bit color 3 Alternate FLM. If clear the FLM (First Line Marker) is generated as in the 82c425: Rising before the LP of the first line and falling after it. If set FLM rises when the last LP of the frame falls, and falls with the falling edge of the first LP of the frame. 4 Scan-Doubling Enabled. If set and bit 5 is 0, the scanlines are doubled. 5 AT&T Mode Enabled. If set the AT&T Mode register (3DEh) is enabled. If clear the AT&T register is inaccessible. 6-7 Memory Configuration 0-1. 0: 3 8Kx8 SRAM or 2 8Kx8 SRAM and 1 8Kx8 ROM. 1: 1 32Kx8 SRAM 2: 1 16Kx8 SRAM and 1 8Kx8 SRAM/ROM 3: 1 32Kx8 SRAM and 1 8Kx8 SRAM/ROM 3D4h index D9h (R/W): AC Control Register (CT82c425/6 only) Bit 0-4 The number of LCD Latch Pulses (-1) for which the AC signal is on and off (50% duty cycle) 7 If set the programmable AC signal is enabled. If clear, the AC signal remains ON for one frame and OFF for the next. 3D4h index DAh (R/W): Threshold Register (CT82c425/6 only) Bit 0-3 Threshold Value. 4 Saturation. If set the shifts in fore- and background colors by SMARTMAP is limited to the saturation points, if clear the colormapping will be modulo 16 5 Four Grey Scale Bit. If set 4 grey scales is selected, if clear 8 grey scales is selected for text modes. 6 (82c426 only) Alternate Graylevel Algorithm. 3D4h index DBh (R/W): Shift Parameter Register (CT82c425/6 only) Bit 0-3 Foreground Shift. The amount of shift for ForeGround colors in the text grey scale scheme. 4-7 Background Shift. 3D4h index DCh (R/W): Horizontal Sync Width Register (CT82c425/6 only) Bit 0-7 Number of Dot clocks in the HSYNC pulse. 3D4h index DDh (R/W): Vertical Sync Width Register (CT82c425/6 only) Bit 0-3 Vertical Sync Width in scanlines (-1). 4-7 Blink rate of characters. The character will be on for (value+1) frames and off for the same number of frames. The cursor blink rate is twice the character blink rate. 3D4h index DEh (R/W): Shift Parameter Register (CT82c425/6 only) Bit 0-4 (82c425 only) ECLK. The number of output clock pulses (-1) per pulse of the ENABLE CLOCK for the LCD panel 0-3 (82c426 only) (R) Silicon Revision. 5 CLK SEL. 0 selects the CLK1 input as the master clock source, 1 selects the CLK2 input. 6-7 CCLK DIV 0-1. Determines the panel shift clock (PCLK) and pixel clock. Value: Pixel freq: PCLK (LCD): 0 CLKIN CLKIN/4 1 CLKIN/2 CLKIN/8 2 CLKIN/3 CLKIN/12 3 CLKIN/4 CLKIN/16 3D4h index DFh (R/W): Function Control Register (CT82c425/6 only) Bit 0 Decode Enable. If clear all accesses to the video memory and the 3Dxh registers will be disabled, except for writes to this bit. When set the memory and registers are accessible. 1 Font Enable. If set the font memory can be accessed at B8000h-B9FFFh. If clear the font memory is inaccessible. 2 Font Select. If set the font at B9000h is selected, if clear the font at B8000h is the default. 3 If set the CRT output is selected, if clear the LCD. 4 (LCD only) Status Control. Controls the behavior of the Display Enable bit (3DAh bit 0) and Vertical Sync bit (3DAh bit 3). If clear, the Display Enable bit toggles every 16 character clocks, and the Vertical Sync bit is active during the first scanline. If set the Display Enable bit is active during the first 16 character clocks of each scanline, and from row 22 till the end of the panel in text modes (row 85 in graphics modes). The Vertical Sync bit is active through all scanlines of row 24 in textmodes (row 93 - 96 incl in graphics modes). 5 (LCD only) Enable Control. 6 If set bit 3 of the attribute byte selects the font, rather than intensity. 7 If set the video outputs are inverted. 3D8h (W): Mode Control register bit 0 80x25 Alpha mode if set, 40x25 else 1 Graphics mode if set, alpha else. 2 BW mode if set, color else 3 Video Enable. Enable video signal if set 4 640x200 Graphics mode if set, 320x200 else 5 if set bit 7 of the attribute controls background, else blink Note: this register is Read/Write on the CT82c425/6. 3D9h (W): Color Select register The function of this register depends on the active mode. Text modes: 320x200 modes: 640x200 mode: Bit 0 Blue border Blue background Blue ForeGround 1 Green border Green background Green ForeGround 2 Red border Red background Red ForeGround 3 Bright border Bright background Bright ForeGround 4 Backgr. color Alt. intens. colors Alt. intens colors 5 No func. Selects palette Palette 0 is Green, red and brown, Palette 1 is Cyan, magenta and white. Note: this register is Read/Write on the CT82c425/6. 3DAh (R): Status register bit 0 Display Enable. If set Horizontal or Vertical Retrace is active and the video memory may be accessed by the PC. 1 Lightpen trigger has occurred if set 2 Lightpen switch is off if set 3 Vertical Sync. Vertical retrace active if set. Video RAM can be accessed for the next 1.25 ms. Note: The CT82c425/6 modifies bits 0 and 3 for LCD panels. See 3D4h index DFh. 3DBh (R/W) Clear Light Pen Strobe Reading or writing this register clears the lightpen strobe. This can happen before or after the lightpen position is read from 3D4h index 10h-11h. 3DCh (R/W): Set Light Pen Strobe Reading or writing this register sets the lightpen strobe, causing the lightpen position to be latched to 3D4h index 10h-11h. The strobe must be cleared by accessing register 3DBh. 3DDh (W): (AGA - Plantronics) bit 4 Set for 320x200 16color mode, clear for all other (16color?) modes 5 Set for 640x200 4color mode, clear for all other (4color?) modes 6 If set plane0 is at BC000h-BFFFFh and plane1 at B8000h-BBFFFh, if clear plane0 is at B8000h-BBFFFh and plane1 at BC000h-BFFFFh, 7 Set for 640x200 16color mode, clear for all other (16color?) modes. 3DEh (R/W): AT&T Mode Register (CT82c426 only) bit 0 AT&T Mode. Only effective if 3D4h index D8h bit 5 is set. If clear text modes are displayed as 16line characters and graphics modes are displayed 200 line scandoubled resolution. If set text modes are displayed with 16line characters and graphics modes are displayed as true 400 line modes. 3 Page Select. If set display memory is in the 16KB starting from BC000h, if clear in the 16KB starting at B8000h. If there is less than 32KB of video memory this has no effect. 6 Enable Underline. If set bit 0 of the attribute byte selects underline (as in the MDA), if clear it selects blue ForeGround. Note: this register is only accessible if 3D4h index D8h bit 5 is set. 3DFh (W): (AGA - Plantronics) bit 3 132column monochrome text mode 4 132column color text mode (3D8h bit 0 must be set) 5 Set emulation mode in lieu of DIP switch 6 Set monochrome mode in lieu of DIP switch 7 Set color mode in lieu of DIP switch Video Modes: 00h T 40 25 2 (8x8) 01h T 40 25 2 (8x8) 02h T 80 25 16 (8x8) 03h T 80 25 16 (8x8) 04h G 320 200 4 05h G 320 200 4 06h G 640 200 2