By: Ratko Tomic
---------------------------------------------------------------------------
Instead of giving you individual recepies for each case, here is a bit more
general method you can use to set number of lines on VGA. The chart shows which
vertical sizes (in text lines) are available when you select particular ROM font
and number of scan lines (SCL):
SCL \ FONT 8x8 8x14 8x16
------------------------------------
200 25 14 12
350 43 25 21
400 50 28 25
------------------------------------
480 60 34 30 (not via BIOS)
------------------------------------
The procedure requires that you call BIOS to set number of scan
lines, then call BIOS set video mode function followed by font
selection:
1. Set # of scan lines:
MOV AX,1200h + SCL_nnn
MOV BL,30h
INT 10h ;Select # of scan lines
MOV AX,3
INT 10h ;Have BIOS program the value
where SCL_nnn is: SCL_200 = 0
SCL_350 = 1
SCL_400 = 2
2. Select ROM font:
MOV AX,1110h + FONT_HxV
MOV BL,0
INT 10h
where FONT_HxV is: FONT_8x8 = 2
FONT_8x14 = 1
FONT_8x16 = 4
NOTE 1. Since 400 scan line mode is default in 25x80 text on VGA,
you need not set it when starting from DOS (it is 350 on
EGA). But you should restore 400 line mode before exiting
from your program.
NOTE 2. Programming the 480 scan line mode is not supported by VGA
BIOS. It can be done by reprogamming vertical timing registers
in the CRTC controller (and sync polarity in Misc. Output)
to same values set by graphics mode 12h (640x480 mode).
NOTE 3. By creating your own fonts 8xN you can produce (almost) any
number of text lines SCL/N. Combined with CRTC timing
registers you can pick many nice (Columns x Rows) numbers.
* Richard Wilton - Programmer's Guide to PC & PS/2 Video Systems
(Microsoft Press, 1987, ISBN 1-55615-103-9)
* Richard Ferraro - Programmer's Guide to the VGA and EGA Cards
(2nd Ed, Addison-Wesley, 1990, ISBN 0-201-57025-4)