IBM PC Jr graphics system: 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. 3D4h index 01h (W): Horizontal Displayed Register Bit 0-7 Number of characters (-1) displayed during a scan line. 3D4h index 02h (W): Horizontal Sync Position Register Bit 0-7 Number of characters displayed before Horizontal Sync pulse starts. 3D4h index 03h (W): Horizontal Sync Width Register Bit 0-7 Number of character clocks during a Horizontal Sync pulse. 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). 3D4h index 05h (W): Vertical Total Adjust Register Bit 0-3 Number of scanlines added to the Vertical Total time. 3D4h index 06h (W): Vertical Displayed Register Bit 0-6 Number of character rows displayed per frame. 3D4h index 07h (W): Vertical SyncPosition Register Bit 0-6 Number of character rows displayed before the Vertical Sync pulse starts. 3D4h index 08h (W): Interlace Mode Register 3D4h index 09h (W): Maximum Scan Line Register Bit 0-3 Number of scanlines (-1) in a character row. 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). 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. 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. 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. 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. 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. 3DAh (R): bit 0 Display Active. 1 Light Pen Trigger. 2 Light Pen Switch. 3 Vertical Retrace active if set 4 Video Dots. 3DAh (W): VGA registers The indexed VGA (Video Gate Array) registers are accessed by reading 3DAh, then writing the index to 3DAh and finally writing the data to 3DAh 3DAh index 00h (W): Mode Control 1 Register bit 0 ? 1 ? 2 ? 3 ? 4 ? 3DAh index 01h (W): Palette Mask Register bit 0-3 Palette mask. Guess: 1 in 2color modes, 3 in 4 color modes and 15 in 16color & text modes ? (ANDed with the pixel?) 3DAh index 02h (W): Border Color Register bit 0-3 Border color in IRGB format (bit0 is Blue) 3DAh index 03h (W): Mode Control 2 Register bit 1 Enable Blink if set, disable if clear 3 Set in 640x200 2color mode, clear in all other modes 3DAh index 04h (W): Reset Register bit 0 ? 1 ? 3DAh index 10h-1Fh (W): Palette Array Entry 0-15 bit 0-3 Palette entry in IRGB format. Bit 0 is blue and bit 3 is intensity. The text & 16color modes use all 16 entries, the 4 color modes use entries 0-3 and the 2 color modes only use entries 0-1. 3DFh (R/W): bit 0-2 Identifies the page of main memory being displayed in units of 16K. 0: 0K, 1: 16K...7: 112K. In 32K modes (bits 6-7 = 2) only 0,2,4 and 6 are valid, as the next page will also be used. 3-5 Identifies the page of main memory that can be read/written at B8000h in units of 16K. 0: 0K, 1: 16K...7: 112K. In 32K modes (bits 6-7 = 2) only 0,2,4 and 6 are valid, as the next page will also be used. 6-7 Display mode. 0: Text, 1: 16K graphics mode (4,5,6,8) 2: 32K graphics mode (9,Ah) Video modes (set via INT 10h with AX=mode#): 00h T 40 25 mono 01h T 40 25 color 02h T 80 25 mono 03h T 80 25 color 04h G 320 200 4 color 05h G 320 200 4 mono 06h G 640 200 2 color 08h G 160 200 16 color 09h G 320 200 16 color 0Ah G 640 200 4 color The text modes are similar to MDA/Hercules/CGA/EGA/VGA text modes. The graphics modes resemble CGA modes. The pixels are packed 2/4/8 in each byte with the lowest pixel in the highest bits. The display memory is split 2 or 4 ways, with modes 5-8 having even scanlines in the first 8K and odd lines in the next 8K, and modes 9,0Ah split into 4 banks based on the two lowest bits of the scanline number (Scanline 0,4,8.. are in the first 8K, line 1,5,9 .. in the 2nd 8K, line 2,6,10 in the 3rd and line 3,7,11 in the last 8K bank).