141 lines
5.1 KiB
Plaintext
141 lines
5.1 KiB
Plaintext
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).
|