{ From: MICHAEL HOENIE Subj: CHARACTER UNIT. ---------------------------------------------------------------------- here is some revised code to allow users to change the standard ASCII font in EGA or VGA. I don't know if it will work in standard CGA, but it works well on VGA. } unit graphics; interface uses dos, crt; const numnewchars=9; { # of chars available } {1 2 4 8 1 3 6 1 ³ ³ ³ ³ 6 2 4 2 ³ ³ ³ ³ ³ ³ ³ 8 ³ ³ ³ ³ ³ ³ ³ ³ Character. 1 2 3 4 5 6 7 8 8x16 ÚÄÂÄÂÄÂÄÂÄÂÄÂÄÂÄ¿ 1³ ³ ³ ³ ³ ³ ³ ³ ³= 2³ ³ ³ ³ ³ ³ ³ ³ ³= This is a BYTE mapper. 3³ ³ ³ ³ ³ ³ ³ ³ ³= Fill in the blanks, then add 4³ ³ ³ ³ ³ ³ ³ ³ ³= the numbers together on a calculator. 5³ ³ ³ ³ ³ ³ ³ ³ ³= The # should never be greater than 255. 6³ ³ ³ ³ ³ ³ ³ ³ ³= 7³ ³ ³ ³ ³ ³ ³ ³ ³= The #'s are as follows: 8³ ³ ³ ³ ³ ³ ³ ³ ³= 9³ ³ ³ ³ ³ ³ ³ ³ ³= 1,2,4,8,16,32,64,128 10³ ³ ³ ³ ³ ³ ³ ³ ³= 11³ ³ ³ ³ ³ ³ ³ ³ ³= So if you had: 12³ ³ ³ ³ ³ ³ ³ ³ ³= 13³ ³ ³ ³ ³ ³ ³ ³ ³= X X X X X X 14³ ³ ³ ³ ³ ³ ³ ³ ³= 1 2 4 16 32 128 = 183 15³ ³ ³ ³ ³ ³ ³ ³ ³= 16³ ³ ³ ³ ³ ³ ³ ³ ³= ÀÄÁÄÁÄÁÄÁÄÁÄÁÄÁÄÙ} procedure loadchar; { this is the procedure to change the characters } implementation procedure loadchar; type bytearray=array[0..15] of byte; chararray=array[1..numnewchars] of record charnum:byte; chardata:bytearray; end; const { these are the characters outlined 9 = chr(9), 176 = chr(176) } newchars:chararray=( (charnum:9; chardata: (24,0,66,0,0,024,165,24,60,102,66,66,66, 102,60,0)), (charnum:10; chardata: (24,126,255,231,231,255,255,255,255,255, 191,255,255,255,255,255)), (charnum:24; chardata: (24,24,24,24,24,24,24,24,24,24,126,24,24, 24,60,24)), (charnum:231; chardata: (8,42,28,127,27,42,8,8,8,8,8,8,8,8,8,0)), (charnum:235; chardata: (0,0,102,60,24,24,24,60,60,126,126,126, 60,24,0,0)), (charnum:239; chardata: (255,171,213,171,213,171,213,171,213,171, 213,171,213,171,213,171)), (charnum:225; chardata: (24,60,102,102,102,60,24,24,24,24,120,120, 24,120,120,0)), (charnum:176; chardata: (9,64,4,33,0,136,2,32,1,136,0,66,0,8,64,18)), (charnum:177; chardata: (119,119,119,0,238,238,238,0,119,119,119,0, 238,238,238,0))); var regs:registers; i:byte; begin for i:=1 to numnewchars do begin with regs do begin ah:=$11; { video sub-Function $11 } al:=$0; { Load Chars to table $1 } bh:=$10; { number of Bytes per Char $10 } bl:=0; { Character table to edit } cx:=1; { number of Chars we're definig } dx:=newchars[i].charnum; es:=seg(newchars[i].chardata); bp:=ofs(newchars[i].chardata); intr($10,regs); end; end; end; begin end.