{ >> I know this can be done - in fact I've seen posts on it before, but it >> didn't strike me as something to save at the time. . . > Does anyone know how to redefine the Characters used in Text mode? I >> don't want to use a whole new set; rather I'd like to change just about a >> dozen or so Characters to my own. This is a little routine I developed sometime ago to redefine some of the ascii Chars as 'smileys'. The Arrays of hex values are Character bitmaps. There is a rather good article about doing this sort of thing in PC Magazine,Volume 9 number 2 (Jan 30, 1990) } Program Redefine; Uses Dos,Crt; Procedure loadChar; Const numnewChars = 6; Type ByteArray = Array[0..15] of Byte; CharArray = Array[1..numnewChars] of Record CharNum : Byte; CharData : ByteArray; end; Const newChars : CharArray = ( (CharNum : 21; CharData : ($00,$00,$E7,$A5,$E7,$00,$00,$08,$18,$38,$00,$00,$C3,$C3,$7E,$00)), (Charnum : 4; CharData : ($00,$00,$E7,$A5,$E7,$00,$00,$08,$18,$38,$00,$00,$7E,$C3,$C3,$00)), (Charnum : 19; CharData : ($AA,$AA,$FE,$00,$EE,$AA,$EE,$00,$08,$18,$38,$00,$C6,$C6,$7C,$00)), (Charnum : 17; CharData : ($03,$07,$FF,$00,$0E,$0A,$0E,$00,$00,$01,$03,$00,$08,$07,$00,$00)), (Charnum : 23; CharData : ($C0,$E0,$FF,$00,$E0,$A0,$E0,$00,$80,$80,$80,$10,$10,$E0,$00,$00)), (Charnum : 24; CharData : ($E7,$42,$00,$C3,$A5,$E7,$00,$08,$18,$38,$00,$00,$7E,$FF,$81,$00)) ); Var r : Registers; i : Byte; begin for i := 1 to numnewChars do With r do begin ah := $11; { video sub-Function $11 } al := $0; { Load Chars to table } bh := $10; { number of Bytes per Char } bl := 0; { Character table to edit } cx := 1; { number of Chars we're definig } dx := NewChars[i].CharNum; { ascii value of the Char } es := seg(NewChars[i].CharData); { es:bp --> table we're loading } bp := ofs(NewChars[i].CharData); intr($10,r); end; end; begin loadChar; Writeln('Char(21) is now ',chr(21));Writeln; Writeln('Char(04) is now ',chr(04));Writeln; Writeln('Char(19) is now ',chr(19));Writeln; Writeln('Char(17) is now ',chr(17));Writeln; Writeln('Char(23) is now ',chr(23));Writeln; Writeln('Char(24) is now ',chr(24));Writeln; readln; Textmode(co80); Writeln('Char(21) is now ',chr(21));Writeln; Writeln('Char(04) is now ',chr(04));Writeln; Writeln('Char(19) is now ',chr(19));Writeln; Writeln('Char(17) is now ',chr(17));Writeln; Writeln('Char(23) is now ',chr(23));Writeln; Writeln('Char(24) is now ',chr(24));Writeln; end.