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