{OK...for awhile I've been saying I'm going to post my unit for changing characters...well today's the day. This unit has one procedure called ProcessChar. You pass ProcessChar the ordinal value of the character you wish to process (between 0 and 255), the data that holds your new character or where you want to load the existing character, and if you want to load it or save it. There are also four constants that simulate a copyright symbol. One is bigger than the other (that's the only difference). You can replace characters with the copyright symbol so effectively you can have a legal C-in-a-circle in text mode!! Although, I do not know if this is actually legal, so don't mark my words... } Unit ModChar; { Unit Name: ModChar } { Author: Rob Perelman } Interface Const LoadChar=False; SaveChar=True; Type CharPic=Array[1..16] of Byte; Const CRLeft: CharPic=(0,31,48,99,198,140,140,140,140,140,140,198,99,48, 31,0); CRRight: CharPic=(0,248,12,198,99,1,1,1,1,1,33,99,198,12,248,0); BigCRLeft: CharPic=(31,48,96,195,134,140,140,140,140,140,140,134, 195,96,48,31); BigCRRight: CharPic=(248,12,6,195,97,1,1,1,1,1,33,97,195,6,12, 248); Procedure ProcessChar(CharNum: Byte; var Pic: CharPic; Which: Boolean); Implementation Uses Dos; Procedure ProcessChar(CharNum: Byte; var Pic: CharPic; Which: Boolean); Begin Inline($FA); PortW[$3C4]:=$0402; PortW[$3C4]:=$0704; PortW[$3CE]:=$0204; PortW[$3CE]:=$0005; PortW[$3CE]:=$0006; If Which then Move(Pic, Mem[$A000:CharNum*32], SizeOf(CharPic)) Else Move(Mem[$A000:CharNum*32], Pic, SizeOf(CharPic)); PortW[$3C4]:=$0302; PortW[$3C4]:=$0304; PortW[$3CE]:=$0004; PortW[$3CE]:=$1005; PortW[$3CE]:=$0E06; Inline($FB); End; End.