Thread View: rec.games.programmer
7 messages
7 total messages
Started by Justin Liew
Sun, 04 Feb 1996 18:49
Int 10h
Author: Justin Liew
Date: Sun, 04 Feb 1996 18:49
Date: Sun, 04 Feb 1996 18:49
8 lines
917 bytes
917 bytes
I'm writing a game in mode 13h in Turbo C, and the fonts in mode 13h look really crappy. I perused Ralf brown's interrupt page for ways to get better fonts, and I came up with int10h. How would I go about implementing this interrupt to bring in better fonts. Where could I download fonts, what form are they in, and how do I use them with the interrupt to allow me to use them? If you know, could you please help me? Thanx JUSTIN
Re: Int 10h
Author: Ron Collins
Date: Mon, 05 Feb 1996 14:03
Date: Mon, 05 Feb 1996 14:03
17 lines
1233 bytes
1233 bytes
Justin Liew (jliew@wimsey.com) wrote: : I'm writing a game in mode 13h in Turbo C, and the fonts in mode 13h look : really crappy. I perused Ralf brown's interrupt page for ways to get : better fonts, and I came up with int10h. How would I go about : implementing this interrupt to bring in better fonts. Where could I : download fonts, what form are they in, and how do I use them with the : interrupt to allow me to use them? If you know, could you please help me? : Thanx : JUSTIN You're asking the wrong people here. Ask this over in comp.msdos.programmer, or one of the graphics groups. BTW, mode 13h is 320x200 pixels; I don't think *any* font is going to look very good at that low resolution. -- collins --
Re: Int 10h
Author: Emre Yucel
Date: Tue, 06 Feb 1996 00:33
Date: Tue, 06 Feb 1996 00:33
686 lines
29783 bytes
29783 bytes
Justin Liew (jliew@wimsey.com) wrote:
: I'm writing a game in mode 13h in Turbo C, and the fonts in mode 13h
look
: really crappy. I perused Ralf brown's interrupt page for ways to get
: better fonts, and I came up with int10h. How would I go about
: implementing this interrupt to bring in better fonts. Where could I
: download fonts, what form are they in, and how do I use them with the
: interrupt to allow me to use them? If you know, could you please help
me?
: Thanx
: JUSTIN
You're asking the wrong people here. Ask this over in
comp.msdos.programmer,
or one of the graphics groups.
BTW, mode 13h is 320x200 pixels; I don't think *any* font is going to look
very good at that low resolution.
Please! Many fonts look nice in 320x200. How do you think all the games
out there have such nice fonts. Ok, ok, 1024x768 is better but we are not
using DX2 septiums here! Interrupt 10h is just a general interrupt that
relates to VGA BIOS. All graphic realted things are done through int 10h.
You can also change video fonts. I have seen this happen many times
in text mode but never in graphics mode. But you may try. Got nothing to
lose. Here is a list of all uses of interrupt 10h....
--VGABIOS.TXT
----------1000-------------------------------
INT 10 - VIDEO - SET VIDEO MODE
AH = 00h
AL = mode (see below)
Return: AL = video mode flag (Phoenix BIOS)
20h mode > 7
30h modes <= 7 except mode 6
3Fh mode 6
AL = CRT controller mode byte (Phoenix 386 BIOS v1.10)
Notes: IBM standard modes do not clear the screen if the high bit of
AL is set
(EGA or higher only)
SeeAlso: AX=0070h,AX=007Eh,AX=10F0h,AX=6F05h,AH=FFh"GO32",INT 5F/AH=00h
Values for video mode:
text/ text pixel pixel colors display scrn system
grph resol box resoltn pages addr
00h = T 40x25 8x14 16gray 8 B800 EGA
= T 40x25 8x16 16 8 B800 MCGA
= T 40x25 9x16 16 8 B800 VGA
01h = T 40x25 8x14 16 8 B800 EGA
= T 40x25 8x16 16 8 B800 MCGA
= T 40x25 9x16 16 8 B800 VGA
02h = T 80x25 8x14 16gray 4 B800 EGA
= T 80x25 8x16 16 4 B800 MCGA
= T 80x25 9x16 16 4 B800 VGA
03h = T 80x25 8x14 16 4 B800 EGA
= T 80x25 8x16 16 4 B800 MCGA
= T 80x25 9x16 16 4 B800 VGA
04h = G 40x25 8x8 320x200 4 B800
CGA,PCjr,EGA,MCGA,VGA
05h = G 40x25 8x8 320x200 4gray B800 CGA,PCjr,EGA
= G 40x25 8x8 320x200 4 B800 MCGA,VGA
06h = G 80x25 8x8 640x200 2 B800
CGA,PCjr,EGA,MCGA,VGA
07h = T 80x25 9x14 mono var B000 MDA,Hercules,EGA
= T 80x25 9x16 mono B000 VGA
0Bh = reserved (used internally by EGA BIOS)
0Ch = reserved (used internally by EGA BIOS)
0Dh = G 40x25 8x8 320x200 16 8 A000 EGA,VGA
0Eh = G 80x25 8x8 640x200 16 4 A000 EGA,VGA
0Fh = G 80x25 8x14 640x350 mono 2 A000 EGA,VGA
10h = G 80x25 8x14 640x350 4 2 A000 64k EGA
= G 640x350 16 A000 256k EGA,VGA
11h = G 80x30 8x16 640x480 mono A000 VGA,MCGA,ATI EGA,ATI
VIP
12h = G 80x30 8x16 640x480 16/256k A000 VGA,ATI VIP
= G 80x30 8x16 640x480 16/64 A000 ATI EGA Wonder
13h = G 40x25 8x8 320x200 256/256k A000 VGA,MCGA,ATI VIP
----------1001-------------------------------
INT 10 - VIDEO - SET TEXT-MODE CURSOR SHAPE
AH = 01h
CH = bit 7 should be zero
bits 6,5 cursor blink
(00=normal, 01=invisible, 10=erratic, 11=slow)
(00=normal, other=invisible on EGA/VGA)
bits 4-0 top scan line containing cursor
CL = bottom scan line containing cursor (bits 0-4)
Notes: buggy on EGA systems--BIOS remaps cursor shape in 43 line modes,
but
returns unmapped cursor shape
applications which wish to change the cursor by programming the
hardware directly on EGA or above should call INT 10/AX=1130h or
read 0040h:0085h first to determine the current font height
BUG: AMI 386 BIOS and AST Premier 386 BIOS will lock up the system if AL
is not equal to the current video mode
SeeAlso: AH=03h,AX=CD05h
----------1002-------------------------------
INT 10 - VIDEO - SET CURSOR POSITION
AH = 02h
BH = page number
0-3 in modes 2&3
0-7 in modes 0&1
0 in graphics modes
DH = row (00h is top)
DL = column (00h is left)
SeeAlso: AH=03h,AH=05h
----------1003-------------------------------
INT 10 - VIDEO - GET CURSOR POSITION AND SIZE
AH = 03h
BH = page number
0-3 in modes 2&3
0-7 in modes 0&1
0 in graphics modes
Return: AX = 0000h (Phoenix BIOS)
CH = start scan line
CL = end scan line
DH = row (00h is top)
DL = column (00h is left)
Notes: a separate cursor is maintained for each of up to 8 display pages
many ROM BIOSes incorrectly return the default size for a color
display
(start 06h, end 07h) when a monochrome display is attached
SeeAlso: AH=01h,AH=02h
----------1004-------------------------------
INT 10 - VIDEO - READ LIGHT PEN POSITION (EGA Only)
AH = 04h
Return: AH = light pen trigger flag
00h not down/triggered
01h down/triggered
DH,DL = row,column of character light pen is on
CH = pixel row (graphics modes 04h-06h)
CX = pixel row (graphics modes with >200 rows)
BX = pixel column
Notes: on a CGA, returned column numbers are always multiples of 2 (320-
column modes) or 4 (640-column modes)
returned row numbers are only accurate to two lines
----------1005-------------------------------
INT 10 - VIDEO - SELECT ACTIVE DISPLAY PAGE
AH = 05h
AL = new page number (00h to number of pages - 1) (see AH=00h)
SeeAlso: AH=0Fh
----------1006-------------------------------
INT 10 - VIDEO - SCROLL UP WINDOW
AH = 06h
AL = number of lines by which to scroll up (00h = clear entire
window)
BH = attribute used to write blank lines at bottom of window
CH,CL = row,column of window's upper left corner
DH,DL = row,column of window's lower right corner
Note: affects only the currently active page (see AH=05h)
Warning: some implementations have a bug which destroys BP
SeeAlso: AH=07h,AH=72h,AH=73h
----------1007-------------------------------
INT 10 - VIDEO - SCROLL DOWN WINDOW
AH = 07h
AL = number of lines by which to scroll down (00h=clear entire
window)
BH = attribute used to write blank lines at top of window
CH,CL = row,column of window's upper left corner
DH,DL = row,column of window's lower right corner
Note: affects only the currently active page (see AH=05h)
Warning: some implementations have a bug which destroys BP
SeeAlso: AH=06h,AH=72h,AH=73h
----------1008-------------------------------
INT 10 - VIDEO - READ CHARACTER AND ATTRIBUTE AT CURSOR POSITION
AH = 08h
BH = page number (00h to number of pages - 1) (see AH=00h)
Return: AH = attribute
bit 7: blink
bits 6-4: background color
000 black
001 blue
010 green
011 cyan
100 red
101 magenta
110 brown
111 white
bits 3-0: foreground color
0000 black 1000 dark gray
0001 blue 1001 light blue
0010 green 1010 light green
0011 cyan 1011 light cyan
0100 red 1100 light red
0101 magenta 1101 light magenta
0110 brown 1110 yellow
0111 light gray 1111 white
AL = character
Notes: for monochrome displays, a foreground of 1 with background 0 is
underlined
the blink bit may be reprogrammed to enable intense background
colors
using AX=1003h or by programming the CRT controller
SeeAlso: AH=09h,AX=1003h
----------1009-------------------------------
INT 10 - VIDEO - WRITE CHARACTER AND ATTRIBUTE AT CURSOR POSITION
AH = 09h
AL = character to display
BH = page number (00h to number of pages - 1) (see AH=00h)
BL = attribute (text mode) or color (graphics mode)
if bit 7 set in graphics mode, character is xor'ed onto
screen
CX = number of times to write character
Notes: all characters are displayed, including CR, LF, and BS
replication count in CX may produce an unpredictable result in
graphics
modes if it is greater than the number of positions remaining in
the
current row
SeeAlso: AH=08h,AH=0Ah,AH=4Bh,INT 17/AH=60h,INT 1F,INT 43,INT 44
----------100A-------------------------------
INT 10 - VIDEO - WRITE CHARACTER ONLY AT CURSOR POSITION
AH = 0Ah
AL = character to display
BH = page number (00h to number of pages - 1) (see AH=00h)
BL = attribute (PCjr only) or color (graphics mode)
if bit 7 set in graphics mode, character is xor'ed onto
screen
CX = number of times to write character
Notes: all characters are displayed, including CR, LF, and BS
replication count in CX may produce an unpredictable result in
graphics
modes if it is greater than the number of positions remaining in
the
current row
SeeAlso: AH=08h,AH=09h,AH=4Bh,INT 17/AH=60h,INT 1F,INT 43,INT 44
----------100B--BH00-------------------------
INT 10 - VIDEO - SET BACKGROUND/BORDER COLOR
AH = 0Bh
BH = 00h
BL = background/border color (border only in text modes)
SeeAlso: AH=0Bh/BH=01h
----------100B--BH01-------------------------
INT 10 - VIDEO - SET PALETTE
AH = 0BH
BH = 01h
BL = palette ID
00h background, green, red, and brown/yellow
01h background, cyan, magenta, and white
SeeAlso: AH=0Bh/BH=00h
----------100C-------------------------------
INT 10 - VIDEO - WRITE GRAPHICS PIXEL
AH = 0Ch
BH = page number
AL = pixel color (if bit 7 set, value is xor'ed onto screen)
CX = column
DX = row
Notes: valid only in graphics modes
BH is ignored if the current video mode supports only one page
SeeAlso: AH=0Dh,AH=46h
----------100D-------------------------------
INT 10 - VIDEO - READ GRAPHICS PIXEL
AH = 0Dh
BH = page number
CX = column
DX = row
Return: AL = pixel color
Notes: valid only in graphics modes
BH is ignored if the current video mode supports only one page
SeeAlso: AH=0Ch,AH=47h
----------100E-------------------------------
INT 10 - VIDEO - TELETYPE OUTPUT
AH = 0Eh
AL = character to write
BH = page number
BL = foreground color (graphics modes only)
Notes: characters 07h (BEL), 08h (BS), 0Ah (LF), and 0Dh (CR) are
interpreted
and do the expected things
IBM PC ROMs dated 4/24/81 and 10/19/81 require that BH be the same
as
the current active page
SeeAlso: AH=02h,AH=0Ah
----------100F-------------------------------
INT 10 - VIDEO - GET CURRENT VIDEO MODE
AH = 0Fh
Return: AH = number of character columns
AL = display mode (see AH=00h)
BH = active page (see AH=05h)
Notes: if mode was set with bit 7 set ("no blanking"), the returned mode
will
also have bit 7 set
EGA, VGA, and UltraVision return either AL=03h (color) or AL=07h
(monochrome) in all extended-row text modes
SeeAlso: AH=00h,AH=05h,AX=1130h,AX=CD04h
----------101000----------------------------
INT 10 - VIDEO - SET SINGLE PALETTE REGISTER (PCjr,EGA,MCGA,VGA)
AX = 1000h
BL = palette register number (00h-0Fh)
= attribute register number (undocumented)
10h attribute mode control register (should let BIOS control
this)
11h overscan color register (see also AX=1001h)
12h color plane enable register (bits 3-0 enable
corresponding
text attribute bit)
13h horizontal PEL panning register
14h color select register
BH = color or attribute register value
Notes: on MCGA, only BX = 0712h is supported
under UltraVision, the palette locking status (see AX=CD01h)
determines the outcome
SeeAlso: AX=1002h,AX=1007h,AX=CD01h
----------101001-----------------------------
INT 10 - VIDEO - SET BORDER (OVERSCAN) COLOR (PCjr,EGA,VGA)
AX = 1001h
BH = border color (00h-3Fh)
BUG: the original IBM VGA BIOS incorrectly updates the parameter save area
and places the border color at offset 11h of the palette table
rather than offset 10h
Note: under UltraVision, the palette locking status (see AX=CD01h)
determines the outcome
SeeAlso: AX=1002h,AX=1008h,AX=CD01h
----------101002-----------------------------
INT 10 - VIDEO - SET ALL PALETTE REGISTERS (PCjr,EGA,VGA)
AX = 1002h
ES:DX -> palette register list
Note: under UltraVision, the palette locking status (see AX=CD01h)
determines the outcome
SeeAlso: AX=1000h,AX=1001h,AX=1009h,AX=CD01h
Format of palette register list:
Offset Size Description
00h 16 BYTEs colors for palette registers 00h through 0Fh
10h BYTE border color
----------101003-----------------------------
INT 10 - VIDEO - TOGGLE INTENSITY/BLINKING BIT (Jr, PS, TANDY 1000, EGA,
VGA)
AX = 1003h
BL = new state
00h background intensity enabled
01h blink enabled
Note: although there is no function to get the current status, bit 5 of
0040h:0065h indicates the state
SeeAlso: AH=08h
----------101007-----------------------------
INT 10 - VIDEO - GET INDIVIDUAL PALETTE REGISTER (VGA,UltraVision v2+)
AX = 1007h
BL = palette or attribute (undoc) register number (see AX=1000h)
Return: BH = palette or attribute register value
Notes: UltraVision v2+ supports this function even on color EGA systems in
video modes 00h-03h, 10h, and 12h; direct programming of the
palette
registers will cause incorrect results because the EGA registers
are
write-only. To guard against older versions or unsupported video
modes, programs which expect to use this function on EGA systems
should set BH to FFh on entry.
SeeAlso: AX=1000h,AX=1009h
----------101008-----------------------------
INT 10 - VIDEO - READ OVERSCAN (BORDER COLOR) REGISTER (VGA,UltraVision
v2+)
AX = 1008h
Return: BH = border color (00h-3Fh)
Notes: UltraVision v2+ supports this function even on color EGA systems in
video modes 00h-03h, 10h, and 12h; direct programming of the
palette
registers will cause incorrect results because the EGA registers
are
write-only. To guard against older versions or unsupported video
modes, programs which expect to use this function on EGA systems
should set BH to FFh on entry.
SeeAlso: AX=1001h
----------101009-----------------------------
INT 10 - VIDEO - READ ALL PALETTE REGISTERS AND OVERSCAN REGISTER (VGA)
AX = 1009h
ES:DX -> 17-byte buffer (see AX=1002h)
Notes: UltraVision v2+ supports this function even on color EGA systems in
video modes 00h-03h, 10h, and 12h; direct programming of the
palette
registers will cause incorrect results because the EGA registers
are
write-only. To guard against older versions or unsupported video
modes, programs which expect to use this function on EGA systems
should set the ES:DX buffer to FFh before calling.
SeeAlso: AX=1002h,AX=1007h,AX=CD02h
----------101010-----------------------------
INT 10 - VIDEO - SET INDIVIDUAL DAC REGISTER (VGA/MCGA)
AX = 1010h
BX = register number
CH = new value for green (0-63)
CL = new value for blue (0-63)
DH = new value for red (0-63)
SeeAlso: AX=1012h,AX=1015h
----------101012-----------------------------
INT 10 - VIDEO - SET BLOCK OF DAC REGISTERS (VGA/MCGA)
AX = 1012h
BX = starting color register
CX = number of registers to set
ES:DX -> table of 3*CX bytes where each 3 byte group represents
one
byte each of red, green and blue (0-63)
SeeAlso: AX=1010h,AX=1017h
----------101013-----------------------------
INT 10 - VIDEO - SELECT VIDEO DAC COLOR PAGE (VGA)
AX = 1013h
BL = subfunction
00h select paging mode
BH = 00h select 4 blocks of 64
BH = 01h select 16 blocks of 16
01h select page
BH = page number (00h to 03h) or (00h to 0Fh)
Note: not valid in mode 13h
SeeAlso: AX=101Ah
----------101015-----------------------------
INT 10 - VIDEO - READ INDIVIDUAL DAC REGISTER (VGA/MCGA)
AX = 1015h
BL = palette register number
Return: DH = red value
CH = green value
CL = blue value
SeeAlso: AX=1010h,AX=1017h
----------101017-----------------------------
INT 10 - VIDEO - READ BLOCK OF DAC REGISTERS (VGA/MCGA)
AX = 1017h
BX = starting palette register
CX = number of palette registers to read
ES:DX -> buffer (3 * CX bytes in size) (see also AX=1012h)
Return: buffer filled with CX red, green and blue triples
SeeAlso: AX=1012h,AX=1015h
----------101018-----------------------------
INT 10 - VIDEO - undocumented - SET PEL MASK (VGA/MCGA)
AX = 1018h
BL = new PEL value
SeeAlso: AX=1019h
----------101019-----------------------------
INT 10 - VIDEO - undocumented - READ PEL MASK (VGA/MCGA)
AX = 1019h
Return: BL = value read
SeeAlso: AX=1018h
----------10101A-----------------------------
INT 10 - VIDEO - GET VIDEO DAC COLOR-PAGE STATE (VGA)
AX = 101Ah
Return: BL = paging mode
00h four pages of 64
01h sixteen pages of 16
BH = current page
SeeAlso: AX=1013h
----------10101B-----------------------------
INT 10 - VIDEO - PERFORM GRAY-SCALE SUMMING (VGA/MCGA)
AX = 101Bh
BX = starting palette register
CX = number of registers to convert
SeeAlso: AH=12h/BL=33h
----------1011-------------------------------
INT 10 - VIDEO - TEXT-MODE CHARACTER GENERATOR FUNCTIONS (PS, EGA, VGA)
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
ES:BP -> user table
CX = count of patterns to store
DX = character offset into map 2 block
BL = block to load in map 2
BH = number of bytes per character pattern
AL = 01h, 11h: load ROM monochrome patterns (8 by 14)
BL = block to load
AL = 02h, 12h: load ROM 8 by 8 double-dot patterns
BL = block to load
AL = 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
AL = 04h, 14h: load ROM 8x16 character set (VGA)
BL = block to load
The routines called with AL=1xh are designed to be called only
immediately after a mode set and are similar to the routines called
with AL=0xh, 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:
R09 = bytes/char-1 ; max scan line (mode 7 only)
R0A = bytes/char-2 ; cursor start
R0B = 0 ; cursor end
R12 = ((rows+1)*(bytes/char))-1 ; vertical display end
R14 = bytes/char ; underline loc
(*** BUG: should be 1 less ***)
SeeAlso: AX=CD10h
----------1011-------------------------------
INT 10 - VIDEO - GRAPHICS-MODE CHARACTER GENERATOR FUNCTIONS (PS, EGA,
VGA)
AH = 11h
AL = 20h: set user 8 by 8 graphics characters (INT 1F)
ES:BP -> user table
AL = 21h: set user graphics characters
ES:BP -> user table
CX = bytes per character
BL = row specifier
00h user set
DL = number of rows
01h 14 rows
02h 25 rows
03h 43 rows
AL = 22h: ROM 8 by 14 set
BL = row specifier (see above)
AL = 23h: ROM 8 by 8 double dot
BL = row specifier (see above)
AL = 24h: load 8x16 graphics characters (VGA/MCGA)
BL = row specifier (see above)
AL = 29h: load 8x16 graphics characters (Compaq Systempro)
BL = row specifier (see above)
Notes: these functions are meant to be called only after a mode set
UltraVision v2+ sets INT 43 to the appropriate font for
AL=22h,23h,24h,
and 29h
SeeAlso: INT 1F, INT 43
----------101130-----------------------------
INT 10 - VIDEO - GET FONT INFORMATION (EGA, MCGA, VGA)
AX = 1130h
BH = pointer specifier
00h INT 1Fh pointer
01h INT 43h pointer
02h ROM 8x14 character font pointer
03h ROM 8x8 double dot font pointer
04h ROM 8x8 double dot font (high 128 characters)
05h ROM alpha alternate (9 by 14) pointer (EGA,VGA)
06h ROM 8x16 font (MCGA, VGA)
07h ROM alternate 9x16 font (VGA only)
11h (UltraVision v2+) 8x20 font (VGA) or 8x19 font (autosync
EGA)
12h (UltraVision v2+) 8x10 font (VGA) or 8x11 font (autosync
EGA)
Return: ES:BP = specified pointer
CX = bytes/character
DL = character rows on screen - 1
Note: for UltraVision v2+, the 9xN alternate fonts follow the
corresponding
8xN font at ES:BP+256N
SeeAlso: AX=1100h,AX=1120h,INT 1F,INT 43
----------1012--BL10-------------------------
INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (PS, EGA, VGA, MCGA) - GET EGA
INFO
AH = 12h
BL = 10h
Return: BH = 00h color mode in effect (I/O port 3Dxh)
01h mono mode in effect (I/O port 3Bxh)
BL = 00h 64k bytes memory installed
01h 128k bytes memory installed
02h 192k bytes memory installed
03h 256k bytes memory installed
CH = feature bits
CL = switch settings
----------1012--BL20-------------------------
INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (PS,EGA,VGA,MCGA) - ALTERNATE
PRTSC
AH = 12h
BL = 20h select alternate print screen routine
Notes: installs a PrtSc routine from the video card's BIOS to replace the
default PrtSc handler from the ROM BIOS, which usually does not
understand screen heights other than 25 lines
some adapters disable print-screen instead of enhancing it
SeeAlso: INT 05
----------1012--BL30-------------------------
INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (VGA) - SELECT VERTICAL
RESOLUTION
AH = 12h
BL = 30h
AL = vertical resolution
00h 200 scan lines
01h 350 scan lines
02h 400 scan lines
Return: AL = 12h if function supported
----------1012--BL31-------------------------
INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (VGA, MCGA) - PALETTE LOADING
AH = 12h
BL = 31h
AL = 00h enable default palette loading
01h disable default palette loading
Return: AL = 12h if function supported
----------1012--BL32-------------------------
INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (VGA, MCGA) - VIDEO ADDRESSING
AH = 12h
BL = 32h
AL = 00h enable video addressing
01h disable video addressing
Return: AL = 12h if function supported
----------1012--BL33-------------------------
INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (VGA, MCGA) - GRAY-SCALE
SUMMING
AH = 12h
BL = 33h
AL = 00h enable gray scale summing
01h disable gray scale summing
Return: AL = 12h if function supported
SeeAlso: AX=101Bh,AX=BF06h
----------1012--BL34-------------------------
INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (VGA) - CURSOR EMULATION
AH = 12h
BL = 34h
AL = 00h enable alphanumeric cursor emulation
01h disable alphanumeric cursor emulation
Return: AL = 12h if function supported
----------1012--BL35-------------------------
INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (PS) - DISPLAY-SWITCH INTERFACE
AH = 12h
BL = 35h
AL = 00h initial adapter video off
01h initial planar video on
02h switch active video off
03h switch inactive video on
80h *UNDOCUMENTED* set system board video active flag
ES:DX -> buffer (128 byte save area if AL = 0, 2 or 3)
Return: AL = 12h if function supported
----------1012--BL36-------------------------
INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (PS, VGA) - VIDEO REFRESH
CONTROL
AH = 12h
BL = 36h
AL = 00h enable refresh
01h disable refresh
Return: AL = 12h if function supported
----------1013-------------------------------
INT 10 - VIDEO - WRITE STRING (AT and later,EGA)
AH = 13h
AL = write mode
bit 0: update cursor after writing
1: string contains alternating characters and attributes
BH = page number
BL = attribute if string contains only characters
CX = number of characters in string
DH,DL = row,column at which to start writing
ES:BP -> string to write
Notes: recognizes CR, LF, BS, and bell
also available PC or XT with EGA or higher
HP 95LX only supports write mode 00h
BUG: on the IBM VGA Adapter, any scrolling which may occur is performed on
the active page rather than the requested page
SeeAlso: AH=09h,AH=0Ah
----------101A-------------------------------
INT 10 - VIDEO - DISPLAY COMBINATION (PS,VGA/MCGA)
AH = 1Ah
AL = 00h read display combination code
Return: BL = active display code (see below)
BH = alternate display code
01h set display combination code
BL = active display code (see below)
BH = alternate display code
Return: AL = 1Ah if function was supported
Values for display combination code:
00h no display
01h monochrome adapter w/ monochrome display
02h CGA w/ color display
03h reserved
04h EGA w/ color display
05h EGA w/ monochrome display
06h PGA w/ color display
07h VGA w/ monochrome analog display
08h VGA w/ color analog display
09h reserved
0Ah MCGA w/ digital color display
0Bh MCGA w/ monochrome analog display
0Ch MCGA w/ color analog display
FFh unknown display type
----------101B-------------------------------
INT 10 - VIDEO - FUNCTIONALITY/STATE INFORMATION (PS,VGA/MCGA)
AH = 1Bh
BX = implementation type
0000h return functionality/state information
ES:DI -> 64 byte buffer for state information (see below)
Return: AL = 1Bh if function supported
ES:DI buffer filled with state information
SeeAlso: AH=15h
Format of state information:
Offset Size Description
00h DWORD address of static functionality table (see below)
04h BYTE video mode in effect
05h WORD number of columns
07h WORD length of regen buffer in bytes
09h WORD starting address of regen buffer
0Bh WORD cursor position for page 0
The limitations of this program is stopping me from including the rest of
this information. 2 more pages left. But the part about the fonts are up
there.
Have fun.
Re: Int 10h
Author: Mark Kintigh
Date: Tue, 06 Feb 1996 18:14
Date: Tue, 06 Feb 1996 18:14
26 lines
1893 bytes
1893 bytes
Justin Liew wrote:
>
> I'm writing a game in mode 13h in Turbo C, and the fonts in mode 13h look
> really crappy. I perused Ralf brown's interrupt page for ways to get
> better fonts, and I came up with int10h. How would I go about
> implementing this interrupt to bring in better fonts. Where could I
> download fonts, what form are they in, and how do I use them with the
> interrupt to allow me to use them? If you know, could you please help me?
Check out http://stekt.oulu.fi/~jon/jouninfo/toolate.html
You'll find a great BIOS font editor and a copy of some QuickC routines
that I wrote to BYPASS that dreaded BIOS 10h interrupt. The QuickC code
*should* work alright in TurboC, but I make no promises (I tried to keep
them generic/unoptomized). If nothing else, you'll be able to use the
documentation in the code to create your own version if they don't work.
--
_____
/ /## breetai@oak.westol.com
/ /#### ____
(| []/ o ##) "We met the enemy, and they were'nt us, then | _|||
|\ \_/ /\ # /| we faced a pannel of 'us' and found they were || ||
| \-\ ==== /-/ | the enemy." \\//
||\\ '----' //|| \/
|| \\/ \// ||
Re: Int 10h
Author: Chris Hargrove
Date: Tue, 06 Feb 1996 18:40
Date: Tue, 06 Feb 1996 18:40
21 lines
1415 bytes
1415 bytes
Emre Yucel <amoeba@buttercup.cybernex.net> wrote: >Please! Many fonts look nice in 320x200. How do you think all the games >out there have such nice fonts. Ok, ok, 1024x768 is better but we are not >using DX2 septiums here! Interrupt 10h is just a general interrupt that >relates to VGA BIOS. >All graphic realted things are done through int 10h. Incorrect. I personally only use Int 10h for one thing and one thing only, and that's changing the video mode. Once the mode is set (usually mode 13h or a tweak thereof), I never touch the interrupt again. Int 10h is incredibly inefficient - you can't get any decent hardware speed from it whatsoever. My advice - Use it to set modes, and do the rest manually through the VGA registers. Chris Hargrove, Coding & Organization a.k.a. Kiwidog - Terraformer/Hornet email:<kiwidog@vt.edu> http://www.access.digex.net/~terra
Re: Int 10h
Author: ZiMMER
Date: Wed, 07 Feb 1996 01:46
Date: Wed, 07 Feb 1996 01:46
14 lines
1462 bytes
1462 bytes
Incorrect. I personally only use Int 10h for one thing and one thing only, and that's changing the video mode. Once the mode is set (usually mode 13h or a tweak thereof), I never touch the interrupt again. Int 10h is incredibly inefficient - you can't get any decent hardware speed from it whatsoever. My advice - Use it to set modes, and do the rest manually through the VGA registers. Of course, using VGA registers is lot faster, (pixel plotting like things) But it's often hard to program through VGA registers. In this case, changing default fonts, there is no need for speed, and mostly need for efficiency. I would not recommend using VGA registers to reset the font. No thanks. Int 10h sounds much easyer in this case. But VGA registers have their uses of course. I have no doubt.:)
Re: Int 10h
Author: Kanti Bansal
Date: Wed, 07 Feb 1996 10:23
Date: Wed, 07 Feb 1996 10:23
7 lines
839 bytes
839 bytes
In article <4f2v3d$qs9@wolfe.wimsey.com> Justin Liew <jliew@wimsey.com> writes: :I'm writing a game in mode 13h in Turbo C, and the fonts in mode 13h look :really crappy. I perused Ralf brown's interrupt page for ways to get It's quite simple... use images, not the BIOS font calls. Then you can use any font which you draw by making an image of each letter... That's how all good games do it. The BIOS is just too slow.
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads