Article View: alt.msdos.programmer
Article #101Re: text modes
From: Tim Link
Date: Sun, 26 Jul 1992 20:56
Date: Sun, 26 Jul 1992 20:56
636 lines
33796 bytes
33796 bytes
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/!+V6R2#;Q(B3K;&4`'0C@G#'48V>+R,.;)USNTK&B18\	VAF38OE&279N
MM,\A>G<.:<^4.7/FW-U\(T5`<3G?A&5M$2:?MS@>;]R@3B;<\W4TN?/X&N:+
M.(.IJ;_V\`R>(5HX[Z0;*`X7+UMWOT9CQ/%Z$,&N\N_ZM6O7KGM&L[1K[FN$
MK!.?"?,M@B>!1P*D\63E$Q3:X%/[8#X/$>P>9<#13;R-`?)^NNPR:8@&TIW7
M?M8MC6>T.<"CGE&BOUHWOS^2=\12]<I,W3VCYXNUR0,4#B$>[=<(H+!E[D#-
M"H=8';Q")`!'16A3Y`R:ENF7B>>#BSP5[(_)Z)EAMGS8F1X-#GBYE%X#>'2^
M@\^$WDT<_PNFX6`-;QNBNT$?WZAW>89A57N&<I_#.T2@*1A63E+F\33J:YBG
MY1GF:?D&XUDPQSU#))(]0RG,$3Q,&>CF%.H9)I'T[TR8/F'.`-E(MSLW^L7.
M_4XS^=%&W/^!?/DSXJDBFCV%(6W/,&]1SXBOY(DPW_(,\R_N^G,`E*CDO!*`
M)MY03R-.]6&]^+"7@FI?1F;6^S['T?%A#=G_!3L&3T;SV86_*7[>,^UPP\\F
M')$`DGP!YEG^!/,L3X9YEK^@=]SZ;B0RU4R.G;OW[]LS7R2V[J3OH^'"[.YL
M<',^%Q-">!A/1(A4#J:5L&=RX,`!*P4'/\81]K[;89CSAV?DS+///X@33W,>
M(0X1_$:;;&UN$"@PS=MDLTQ&)!(,\WQ55<$PSW>_$PS3$;%@[!F-[QD:WS/2
MIHU@;L^8$@KM[QGJ':Q]`^^H?]+&.[2_;W#O-3H*G7A&/84)&KBW((+_\`X5
M_+]W\/_>P<A8J&_[!_,._>$=\15YXR_HFS!_M`T%(/J&O/<UHFWRWC^X=]0W
M\8[Z)]Y172:^(8+[&LQ?J&CL">#>0GT9^X=Z,UR4L7]P3Z/:1'P1S!O`/(TR
MH5DPZBO$,PX?7C!,"^T/@F'0X8)A:"/*V,TG1+CZ?AQC/X$QB!^:'`.2J,9`
ML!'J.TDV0+<`%OX'!^]L/!:"TP04AP$TRNT^*N,X.(8`@N"86">D?AE[9LVY
MW2/$/;CM/GX(.*$E@"Q4$8>8L\_S:V#_&-[]J(2'\336R/283\&`;,)8Y*.:
M(**'ZM'$(*-:%/&,@L0W/!I(G#AV.#<<_#\?#C%*]`Z6C,:1)I@5%DP`#Q-,
M/M@39\^6QY-);&N41L9^AF+S:F2^!^%"%"P_`-!02P,$"@````8`JH+Z&'D`
M[9QT$0``(!@```P```!30U).1D].5"Y%6$4/`!(#)!4V)S@Y:GM,G6X?"08!
M$S3E]I;WFVH%";`A0)X`(P(\:O"H:=P#`0*9GJF`X3EL>X)A#S'L.(;]R+`S
M&?8PPYYFV/L,NZ!ACS3LEH;=U+![&_9VPWXRP+P->ZAA+S?L`I[V)\-.9=B_
M##N:8;\S[(Z&G=.PQQIV8,-^;=C+#;N^86>05%,U[!:&W<2PPQCV),,^9=C#
M#/N>80<T[)*&_=*P<QKV4,,^:]B*[`![#?NS8:<V[-F&?=RPHQMV><-^@<RN
M8MAA!AC.JU,#=#?LB@NF>A*OFK@\;L$!-?,5X'Q@=L@3]TO0X-7&O@'^MW@5
M]W^`4#7?/7!]3.")#?OU1SU@_Q:T2<UD$U@'3>."NO(E.;MFHP*F\<6^W`]\
M'"M`#^@?54#]8.($N/FBHAV(THCM%]23"('3-39-3E0P329FWU4X@:ZD[[CB
MQ@T6^5+$$XDKXK8P1,5&"8HV"O"X023/!PA_M%*`C+&/IH*DYGX4'88-$>IO
M(GSK0H"B`12]@#&SXHSF@]D+T'>2`V&2SQ7]=/"+H35OH%D7"D=L]-_8Z`'5
M__/:D(:""HV;@-(X`:7U@=).0>`Z7I_L:-\@>X?J"_XJCG)WUT\`.-(DQL
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
MXPC9RN,IQ#/<.WN&'SXL*"-NH#U\6%/8,TS)TW]-S>>)C_WG%=K]SHU^L7._
MT]!H-FB:^;]A9_Z,81%OL8AF;T$](]ZBGE%?L2?"?,LSS+^XZ\\!\<PJ][.5
M!;N?O_!ASS`9W8>]P8>]%,RI9<+$\U)\_FYW3Y/#&K+_"[9OFE]'=KYBS;XI
M?IZKTQLXFGQ)L</Y6=@7H)[EB3"_3WT9\2U_0>_U#M#;MXYIQH>/G[_]^;$O
MT@#Q,N3+W,[#A,>31,=352T..1S,$TRN#0[[<*C9MC";JD`/'#C`X>#@QYIE
M(]1NAUWUAV?DS+///XA3=C:`1$$DY$RSS,VP1"RP6'/1+9.,&<^=,PQ;554P
MA'3!$%MCP>#QXW.&$&;!TD<+5O/FD(F0B?M[AGH':\ZG!(\%@_,GOL&]6Q@)
M:-(?'+&G$+L`ZBWP&#]^>(?&D""QE8]X!S-&B'?4/\H=0I@]"?[LF2I#G_FQ
M$`.GY\"A,LF@@F+V<__@SWP)]M\[ZA_U3GA%?(,W\V9PW_)E<$:`8!"(+Z/^
M8=Z,D%&H?XBG44\1PNQQH?X(\4;4`B7!2#\3%"H:AP\O&/+A@V"(<\QKR+W.
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 ----------------------
Technical Details
Message-ID:
<5119@vtserf.cc.vt.edu>Path:
arc1-ca.pugleaf.net!sparky!uunet!vtserf!GroupW.cns.vt.edu!linktReferences:
<1992Jul26.134202.12205@news.cs.brandeis.edu>Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!sparky!uunet!vtserf!GroupW.cns.vt.edu!linkt From: linkt@GroupW.cns.vt.edu (Tim Link) Newsgroups: alt.msdos.programmer Subject: Re: text modes Message-ID: <5119@vtserf.cc.vt.edu> Date: 26 Jul 92 20:56:59 GMT References: <1992Jul26.134202.12205@news.cs.brandeis.edu> Sender: usenet@vtserf.cc.vt.edu Organization: Va Tech Communications Resources Lines: 636