KnowledgeBase Archive

An Archive of Early Microsoft KnowledgeBase Articles

View on GitHub

Q37343: How to Define Your Own Font in Graphics Mode for EGA or VGA

Article: Q37343
Product(s): See article
Version(s): 4.00 4.00b 4.50
Operating System(s): MS-DOS
Keyword(s): ENDUSER | B_BasicCom | mspl13_basic
Last Modified: 31-OCT-1988

A programmer can create a specialized graphics font for use with the
EGA or VGA graphics systems. The new font is installed by making a
BIOS interrupt call. When you install your own font, none of the
original graphics characters are available until they are reinstated.

The code example below creates and installs a new user font. This font
consists of the following four characters:

   triangle
   capital Sigma
   the fraction 1/3 (one third)
   a space

The program displays the characters and then reinstates the original
font and displays the original characters.

This information applies to QuickBASIC Versions 4.00, 4.00b, 4.50 and
to Microsoft BASIC Compiler Versions 6.00 and 6.00b for MS-DOS and
OS/2.

The following is a code example:

' $INCLUDE: 'q:qb.bi'
DIM RegS AS regtype, RegL AS Regtypex
DIM table(100)
DATA 0,0,0,2,6,14,30,62,126,254,0,0,0,0
DATA 0,0,0,254,64,32,16,32,64,254,0,0,0,0
DATA 0,0,0,132,,136,158,162,70,130,14,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0
CLS
DEF SEG = VARSEG(table(0))
FOR i = 1 TO 56
   READ A%      'Place the created characters into the new
   POKE VARPTR(table(0)) + i, A%    'graphics table
NEXT i
DEF SEG

SCREEN 9
' set user defined font
RegL.AX = &H1121
RegL.BX = &H0
RegL.CX = &HE
RegL.DX = 0
RegL.DS = -1
RegL.ES = VARSEG(table(0))
RegL.BP = VARPTR(table(0))
CALL InterruptX(&H10, RegL, RegL)

LOCATE 10, 10
FOR i = 0 TO 3
   PRINT CHR$(i) + CHR$(4); 'prints new user font
NEXT

'  switch back
RegL.AX = &H1122
RegL.BX = 0
CALL InterruptX(&H10, RegL, RegL)

LOCATE 12, 10
FOR i = 0 TO 3
   PRINT CHR$(i); " "; 'prints normal characters
NEXT

THE INFORMATION PROVIDED IN THE MICROSOFT KNOWLEDGE BASE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. MICROSOFT DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL MICROSOFT CORPORATION OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF MICROSOFT CORPORATION OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES SO THE FOREGOING LIMITATION MAY NOT APPLY.

Copyright Microsoft Corporation 1986-2002.