BBS: Inland Empire Archive
Date: 06-05-92 (22:36)             Number: 166
From: ROBERT CHURCH                Refer#: NONE
  To: MIKE KELLY                    Recvd: NO  
Subj: Fonts                          Conf: (2) Quik_Bas
In a message of <May 06 08:31>, Scott Wunsch (1:140/23) writes:

 >  Could anybody post some code to change the screen font on an
 >                        -= Scott \\'unsch =-

 >Try this, which is a somewhat simplified version of what I use for my
 >Russian/English programs:

   <Code delete for abbreviational purposes <G>>

   Some time ago, you posted some code for using fonts in EGA/VGA.  What
   is the format that the font files take?  Is is the same one as used by
   common font editors?  Thanks for the code and for the help.


SUB LoadFont (DisplayType$, font$)
  SELECT CASE DisplayType$
    CASE "EGA"
      CharBytes% = &HE00
    CASE "VGA", "MCGA"
      CharBytes% = &H1100           ' BH = Number of bytes/character
                                    ' BL = Block to load in map 2
  DIM reg AS regtypeX               ' Standard DIM
  font1% = FREEFILE                 ' No duplicate problems!
  OPEN font$ FOR BINARY AS #font1%  ' Open font file for easy access
  total% = LOF(1)                   ' Total file size
  t$ = STRING$(total%, 0)           ' Define as string for the font
  GET #1, , t$                      ' Get the font
  CLOSE #font1%                     ' Close the file = &H1100                   ' AH = &H11
                                    ' AL = 0 - load user font = &HFF                     ' Number of chars to load (256)
  reg.bx = CharBytes%
  reg.dx = &H0                      ' DX = Offset into map 2 block (0) = VARSEG(t$)               ' Pointer to user table
  reg.bp = SADD(t$)                 ' Pointer to user table
  InterruptX &H10, reg, reg         ' CALL Interrupt 10 = &H1103                   ' AH = &H11
                                    ' AL = 3- Set block specifier
  reg.bx = 0                        ' BL = Block to load
  InterruptX &H10, reg, reg         ' CALL Interrupt 10
  t$ = ""                           ' Free up some memory

SUB ReSetFont (DisplayType$)
  SELECT CASE DisplayType$
    CASE "EGA"
      ROMfont% = 1                  ' 8x14 ROM font
    CASE "VGA", "MCGA"
      ROMfont% = 4                  ' 8x16 ROM font
  DIM reg AS regtypeX               ' Standard DIM = &H1100 + ROMfont%        ' AH = &H11, AL = ROM font to load
  reg.bx = &H0                      ' BL = Block to load
  InterruptX &H10, reg, reg         ' CALL Interrupt 10

--- PPoint 1.30
 * Origin: I'd rather be like Clyde! (1:105/319.27)
Outer Court
Echo Basic Postings

Books at Amazon:

Back to BASIC: The History, Corruption, and Future of the Language

Hackers: Heroes of the Computer Revolution (including Tiny BASIC)

Go to: The Story of the Math Majors, Bridge Players, Engineers, Chess Wizards, Scientists and Iconoclasts who were the Hero Programmers of the Software Revolution

The Advent of the Algorithm: The Idea that Rules the World

Moths in the Machine: The Power and Perils of Programming

Mastering Visual Basic .NET