From: linkt@GroupW.cns.vt.edu (Tim Link)
Newsgroups: alt.msdos.programmer
Subject: Re: text modes
Date: 26 Jul 92 20:56:59 GMT
Organization: Va Tech Communications Resources

In article <1992Jul26.134202.12205@news.cs.brandeis.edu> dernis@binah.cc.brandeis.edu writes:
>
>I am interested in using text modes 0-3 with an alternate character
>set.
>
>For some reason I am under the impression that character 00h-7Fh are
>not alterable, but characters 80h-FFh are alterable.
>
>Also, how is color handled in the text modes.
>
>Mitch Dernis

Mitch...
The entire character set can be altered in the modes that you are interested
in (0-3).  Graphics modes only allow the upper 128 characters to be altered
so you are not completely off base in your recollections.

Colors are handled by having an attribute byte following each character byte
in the display buffer.  For each 80 character row on the screen, there are
actually 160 bytes used in the display buffer. The attribute bytes can control
blinking,backgrond color, intensity/font and foreground color.  The attributes
work as follows:

             +-+---+-+---+
        Bit  |7|654|3|210|                     Colors  Normal   Intense
             +-+---+-+---+
              |  |  |  |                           0 - Black    Gray
              |  |  |  +---- Foreground Color      1 - Blue     Light Blue
              |  |  |                              2 - Green    Light Green
              |  |  +------- Intensity/Font        3 - Cyan     Light Cyan
              |  |                                 4 - Red      Light Red
              |  +---------- BackGround Color      5 - Magenta  Light Magenta
              |                                    6 - Brown    Yellow
              +------------- Blinking              7 - White    Intense White

Only 8 colors (normal) are available for the background. Sixteen colors are
available for the forground (8 normal & 8 intense).  If an alternate font is
loaded the intensity bit controls which of the fonts a character is shown in.
By default the alternate font is also displayed as intense, but this can be
changed by loading the palette registers.

Rather than try to explain how to load the fonts I've written a short Turbo
Pascal 6 program to illustrate.  It doesn't really do anything useful, but
hopefully, you can see what you have to do with it.  I used BIOS calls to handle
the font loading/selecting and direct screen writes to actually display the
test data.

Hope this helps!

Here's the program ( There's a uuencoded ZIP file following this that has the
                     source, executables and several ".FNT" files. )


Program ScreenFont;

Uses
  DOS,CRT;

Var
  Regs : Registers;
  Font : Array[ 0..8191 ] Of Byte;   { Storage for font file }
  FontNameA : String;
  FontNameB : String;


{ ReadFont reads a font file into an array in preparation for loading
  into the display adapter. Reading is rather slow as it is performed
  byte by byte.  No matter... it's only a demo. }

Procedure ReadFont( FName:String );
Var
  FontFile : File Of Byte;
  Index    : Word;
Begin
  Index := 0;
  Assign( FontFile, FName );
  Reset( FontFile );
  Repeat
    Read( FontFile, Font[Index] );
    Index := Succ( Index );
  Until EOF( FontFile );
  Close( FontFile );
End;


{ The EGA adapter can store up to 4 fonts in it's memory at a time, the
  VGA can store 8. (This demo only supports 4, regardless.) The memory
  spaces for these fonts are refered to as blocks.
  LoadFontArray makes a BIOS call that copies the font array to the
  display adapter RAM in the specified block. It also reprograms the
  adapter for 16 scan lines per row, because that's the size of the
  font files I have.  The lines/row can actually be anything between
  8 and 16. (Some adapters have extensions for taller characters.)}

Procedure LoadFontArray( Block:Byte );
Begin
  With Regs Do
  Begin
    AH := $11;     { Function 0x11, Subfunction 0x00 - Load User Font }
    AL := $00;
    BH := 16;      { Number of scan lines/row }
    BL := Block;   { Block number - 0-3 }
    CX := 256;     { Number of characters in character set }
    DX := 0;       { Starting character number }
    ES := Seg( Font[0] ); { Segment of users font }
    BP := Ofs( Font[0] ); { Offset of users font }
    Intr( $10, Regs );
  End;
End;


{ The EGA/VGA allows 2 fonts to be in use at the same time.  The particular
  font a character is displayed in, is determined by bit 3 of the attribute
  byte (normally the intensity bit).  This procedure determines which of the
  4 supported font blocks will be used for each state of bit 3. Block "A"
  will be used when bit3=0 and block "B" will be used when bit3=1. Note that
  even though bit3 is used to select the font block, it still functions as
  the intensity bit, meaning block "B" will be intensified.  If this is
  undesired, the palette can be modified to correct it. (See proc FixPalette)}

Procedure SelectFonts( A,B : Byte );
Var
  BlockSpec:Byte;
Begin
  BlockSpec := (A AND 3) OR ((B AND 3) SHL 2); {bits0-1 select font block A}
  With Regs Do                                 {bits2-3 select font block B}
  Begin
    AH := $11;          {function 0x11, subfunction 0x03 - Set Block Specifier}
    AL := $03;
    BL := BlockSpec;
    Intr( $10, Regs );
  End;
End;


Procedure DisplayPattern( Offset:Word; FG, BG:Byte );
Var
  Address : Word;
  Attrib  : Byte;
  Data    : Byte;
Begin
  Attrib := (FG And $0F) OR ((BG AND $0F) SHL 4 );
  For Data := 0 To 255 Do
  Begin
    Address := Offset + (Data * 2);
    Mem[ $B800:Address   ] := Data;    { store the character }
    Mem[ $B800:Address+1 ] := Attrib;  { store the attribute }
  End;
End;


{ DisplayTest uses direct writes to the display buffer to display all
  characters of the 2 currently active fonts.}

Procedure DisplayTest;
Var
  Data,Attrib:Byte;
  Offset : Word;
Begin
  DisplayPattern(   0,  2,  0 );
  DisplayPattern( 800, 11,  0 );
  DisplayPattern(1600,  4,  0 );
  DisplayPattern(2400, 13,  0 );
End;


{ Adjusts the palette so that the upper 8 colors (normally intense) match
  the lower 8 colors (normal intensity).  This makes both fonts display
  in normal intensity. }

Procedure FixPalette;
Begin
  With Regs Do
  Begin
    AH := $10;            { function 0x10, subfunction 0x00 - Set Palette Reg }
    AL := 0;
    BX := $0712;          { makes upper 8 & lower 8 colors equal intensity }
    Intr( $10, Regs );
  End;
End;


Begin
  ClrScr;

  If ParamStr(1) <> '' Then
    FontNameA := ParamStr(1)
  Else
    FontNameA := 'SCRIPT';

  If ParamStr(2) <> '' Then
    FontNameB := ParamStr(2)
  Else
    FontNameB := 'MEDIEVAL';

  Writeln( 'Reading font files... Please wait.' );
  ReadFont( FontNameA + '.FNT' );
  LoadFontArray( 1 );
  ReadFont( FontNameB + '.FNT' );
  LoadFontArray( 2 );

  ClrScr;
  FixPalette;
  SelectFonts( 1,2 );
  DisplayTest;
  GotoXY( 1,20 );
  NormVideo;
  Writeln( FontNameA );
  HighVideo;
  Writeln( FontNameB );
  Write( 'Press <Enter>' );
  Readln;
End.

---- BEGIN ----------------- Part 1/1 ----------------------
begin 644 scrnfont.zip
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
M*&-GGQ#5ZNY'V*88S!14LH^OP"(#]J^Y-2*^`W'"X7S8U/!_F94Z>T9UFCQM
M0:-(K2W!^\400!`=!NNA_1\`)1\$BI>-\"FO*+B=SZ\Z'Z_1=[MW[W[G@4,D
M701IHFP_/,GC[AYJPH-YP1&02+`^W.?"/('&$(WZ,C'(*&8A!/),0.(;)@WH
MV$"1.K/^\^$0HD0)VR,AT`3'PH)Y1B6C'UR,@CE[MCS`Q'&I41H98QF*K:N1
M]1ZX!4;]>"+<#P`+4$L!`@L`"@````8```"A#`[B8]CE!@```!````H`````
M```````@`````````%-#4DE05"Y&3E102P$""P`*````!@``D#04'4Y'N9T&
M````$```"P```````````"`````-!P``04Y425%512Y&3E102P$""P`*````
M!@"J@OH8>0#MG'01```@&```#````````````"````#3#0``4T-23D9/3E0N
M15A%4$L!`@L`"@````8```"A#!BV7PY]!@```!````P````````````@````
M<1\``$U%1$E%5D%,+D9.5%!+`0(+``H````&`!H[B0WE-.3_W@4````0```*
M````````````(````!@F``!&55154D4N1DY44$L!`@L`"@````8``)`T%.1Z
MCT$;!@```!````H````````````@````'BP``$9215-.3RY&3E102P$""P`*
M````!@"J@OH8JO]VH,$'``"I$0``#``````````!`"````!A,@``4T-23D9/
M3E0N4$%34$L!`@L`"@````8``)`T%-.([)M5!@```!````D````````````@
M````3#H``%)/34%.+D9.5%!+`0(+``H````&````H0S@QQ1]'@8````0```,
M````````````(````,A```!#3TU0551%4BY&3E102P4&``````D`"0```@``
&$$<`````
`
end
---- END ------------------- CUT HERE ----------------------
Newsgroups: alt.msdos.programmer