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;