INT 10h,  11h (17)       Character Generator                              EGA

Changes fonts on the Enhanced Graphics Adapter (EGA) to predefined
fonts or user-defined fonts in both text and graphics modes.

On entry:      AH         11h
AL         Subservice
00h - Load user-defined font (text modes)
ES:BP   Pointer to font table
CX      Character count
DX      Table Character offset
BL      Font block to load (0-3)
BH      Bytes per Character

01h - Load 8 x 14 character font (monochrome set)
BL       Font block to load (0-3)

02h - Load 8 x 8 double-dot character font (text modes)
BL       Font block to load (0-3)

03h - Set the block specifier (text modes)
BL       Bits 3, 2: Select block (0-3) to use
when bit 3 of attribute byte is 1
Bits 1, 0: Select block (0-3) to use
when bit 3 of attribute byte is 0

10h - Load user-defined text font (text modes)
ES:BP    Pointer to font table
CX       Character count
DX       Table character offset
BL       Font block to load (0-3)
BH       Bytes per character

11h - Load 8 x 14 character font (monochrome set)
(text modes)
BL       Font block to load (0-3)

12h - Load 8 x 8 double-dot character font (text modes)
BL       Font block to load (0-3)

20h - Load user-defined 8 x 8 character font (graphics
mode)
ES:BP    Pointer to user graphics table for
graphics characters 128-255. INT 1Fh
is set to this pointer

21h - Load user-defined character font (graphics mode)
ES:BP    Pointer to user graphics table for
graphics characters 0-255
CX       Bytes per Character
BL       Number of Rows
00h - DL contains number of rows
01h - 14 (0Eh) rows
02h - 25 (19h) rows
03h - 43 (2Bh) rows

22h - Load ROM 8 x 14 character font (graphics mode)
BL       Number of Rows (Same format as
Subservice 21h)

23h - Load ROM 8 x 8 double-dot character font
(graphics mode)
BL       Number of Rows (Same format as
Subservice 21h)

30h - Return Font Information
BH       Type of Pointer to return
00h - Current INT 1Fh
pointer
01h - Current INT 44h
pointer
02h - ROM 8 x 14 font pointer
03h - ROM 8 x 8 double-dot font
pointer
04h - ROM 8 x 8 double-dot font
pointer (top)
05h - ROM text alternate 9 x 14
pointer

Returns:       (Only Subservice 30h - Return Font Information)
ES:BP      Pointer to Table specified in BH
CX         Scan lines per character
DL         Rows

                                                                          

Notes:         Subservices 00h, 01h, and 02h perform a mode set,
completely altering the video state but not clearing
the display buffer (the screen is not cleared).

Subservices 10h, 11h, and 12h are the same as 00h,
01h, and 02h, respectively, except for the following
differences:

*  Subservices 10h, 11h, and 12h rely on page 0 as being
the active page
*  The number of bytes per character is recalculated
*  The number of rows is recalculated
*  The length of the regenerative buffer is recalculated
*  Five cursor control (CRTC) registers are reprogrammed

Subservices 10h-23h should only be called
immediately after a mode set.

Subservice 03h (Set the block specifier) lets you
display two character sets at the same time, each
from one block of 256 characters, thus allowing for
a 512-character set. When a 512-character set is
used, it is recommended that you set the color
planes with 8 consistent colors by executing Service
10h, Subservice 00h (AX=1000h) and setting BX =
0712h.

Each increment of 64K EGA memory allows another font
block to be used. The default of 64K allows one font
block, whereas an EGA memory of 256K allows up to
four font block. Each block holds definitions for
256 characters.

When defining the character set in graphics modes, a
full set of 256 characters MUST be supplied (compare
this with character-set definitions in the text
modes, where any number of characters--up to 256 per
block--may be loaded).

Subservice 21h will load 256 character definitions.
Video modes 4, 5, and 6 use only the first 128
characters. All other modes use all 256 characters.

See also: INT 10h, 12h

INT 10h, 11h (17) Character Generator EGA