Function 11h Character Generator Routine (EGA and after)

entry AH 11h

The following functions will cause a mode set, completely

resetting the video environment, but without clearing the video

buffer.

AL 00h, 10h load user-specified patterns

BH number of bytes per character pattern

BL block to load in map 2

CX count of patterns to store

DX character offset into map 2 block

ES:BP pointer to user table

01h, 11h load ROM monochrome patterns (8 by 14)

BL block to load

02h, 12h load ROM 8 by 8 double-dot patterns

BL block to load

03h set block specifier

BL block specifier

(EGA/MCGA) bits 0,1 = block selected by chars with attribute

bit 3 = 0

bits 2,3 = block selected by chars with attribute

bit 3 = 1

(VGA) bits 0,1,4 = block selected by attribute bit 3 = 0

bits 2,3,5 = block selected by attribute bit 3 = 1

04h,14h load 8x16 text character set (MCGA, VGA)

The routines called with AL=1x are designed to be

called only immediately after a mode set and are

similar to the routines called with AL=0x, except

that:

Page 0 must be active.

Bytes/character is recalculated.

Max character rows is recalculated.

CRT buffer length is recalculated.

CRTC registers are reprogrammed as follows:

reg09h bytes/char-1; max scan line (mode 7 only)

reg0Ah bytes/char-2; cursor start

reg0Bh 0 ; cursor end

reg12h ((rows+1)*(bytes/char))-1

; vertical display end

reg14h bytes/char ; underline loc

(* BUG: should be 1 less *)

The following functions are meant to be called only

after a mode set:

20h user 8 by 8 graphics characters (int 1Fh)

ES:BP pointer to user table

21h user graphics characters

ES:BP pointer to user table

CX bytes per character

BL row specifier

0 user set

DL number of rows

1 14 rows

2 25 rows

3 43 rows

22h ROM 8 by 14 set

BL row specifier

23h ROM 8 by 8 double dot

BL row specifier

24h load 8x16 graphics characters (MCGA, VGA)

BL row specifier

30h Get Font Information (EGA, MCGA, VGA)

BH pointer specifier

0 int 1Fh pointer

1 int 44h pointer

2 ROM 8 by 14 character font pointer

3 ROM 8 by 8 double dot font pointer

4 ROM 8 by 8 DD font (top half)

5 ROM text alternate (9 by 14) pointer

return ES:BP specified pointer value

CX bytes/character

DL character rows on screen