133 lines
4.1 KiB
Plaintext
133 lines
4.1 KiB
Plaintext
Hercules Graphics Adapter
|
|
|
|
3B0h synonym for 3B4h
|
|
|
|
3B1h synonym for 3B5h
|
|
|
|
3B2h synonym for 3B4h
|
|
|
|
3B3h synonym for 3B5h
|
|
|
|
|
|
3B4h (W): Index register.
|
|
The value written to this register selects which of the data
|
|
registers will be accessed at 3B5h.
|
|
|
|
3B4h index 00h (W): Horizontal Total Register
|
|
Bit 0-7 Number of characters (-1) in a scan line incl. retrace.
|
|
|
|
3B4h index 01h (W): Horizontal Displayed Register
|
|
Bit 0-7 Number of characters (-1) displayed during a scan line.
|
|
|
|
3Bh index 02h (W): Horizontal Sync Position Register
|
|
Bit 0-7 Number of characters displayed before Horizontal Sync pulse starts.
|
|
|
|
3B4h index 03h (W): Horizontal Sync Width Register
|
|
Bit 0-7 Number of character clocks during a Horizontal Sync pulse.
|
|
|
|
3B4h 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).
|
|
|
|
3B4h index 05h (W): Vertical Total Adjust Register
|
|
Bit 0-3 Number of scanlines added to the Vertical Total time.
|
|
|
|
3B4h index 06h (W): Vertical Displayed Register
|
|
Bit 0-6 Number of character rows displayed per frame.
|
|
|
|
3B4h index 07h (W): Vertical SyncPosition Register
|
|
Bit 0-6 Number of character rows displayed before the Vertical Sync pulse
|
|
starts.
|
|
|
|
3B4h index 08h (W): Interlace Mode Register
|
|
|
|
3B4h index 09h (W): Maximum Scan Line Register
|
|
Bit 0-3 Number of scanlines (-1) in a character row.
|
|
|
|
3B4h 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).
|
|
|
|
3B4h 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.
|
|
|
|
3B4h 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.
|
|
|
|
3B4h 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.
|
|
|
|
3B4h 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.
|
|
|
|
3B4h 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.
|
|
|
|
3B4h 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.
|
|
|
|
3B4h 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.
|
|
|
|
|
|
|
|
3B8h (W): Display Mode Control Register
|
|
bit 1 Hercules graphics mode if set, text mode else
|
|
3 Video enabled if set
|
|
5 Blink enabled if set
|
|
7 Graphics page 1 displayed if set, page 0 else
|
|
|
|
3BAh (R): Status Register
|
|
bit 0 Horizontal sync
|
|
3 Video signal
|
|
7 Vertical sync
|
|
|
|
3BAh (W): Mode Select Register
|
|
bit 3 132-column text for monochrome
|
|
|
|
3BBh (W): Lightpen Strobe Reset
|
|
Writing to this register will clear the lightpen strobe.
|
|
|
|
3BFh (W):
|
|
bit 0 Setting of graphics mode bit (3B8h bit 1) enabled if set
|
|
1 Setting of graphics page bit (3B8h bit 7) enabled if set
|
|
|
|
|
|
ID Hercules Graphics Card:
|
|
|
|
old:=rdinx($3B4,$a);
|
|
outp($3B5,6); {Change Cursor End}
|
|
for x:=1 to 50 do; {Wait for CRTC to respond}
|
|
val:=inp($3B5);
|
|
outp($3B5,old);
|
|
if val=6 then
|
|
begin
|
|
x:=50000;
|
|
repeat
|
|
dec(x);
|
|
y:=inp($3BA);
|
|
until (y and $80)=0) or (x=0);
|
|
if x=0 then __MDA__
|
|
else
|
|
case y and $70 of
|
|
$50:Hercules Incolor;
|
|
$10:Hercules Graphics Plus
|
|
else Hercules Graphics Card;
|
|
end;
|
|
end;
|