In article <3BAF5DC9.92DB1...@aem.umn.edu>,
Joachim K. Hochwarth <hochwa...@aem.umn.edu> wrote:
Quote
>Hello -
>Does anybody know how to get the Euro currency into a Turbo Vision
>application? I have it under WinWord but how can I use it under Borland
>Pascal? Has anybody ever done that?
Here is a test to define it. Note the definition is lost when the video
mode is set, so you need to redefine it. Also printing it is a completely
different matter.
Uses CharG;
Var ch:Tchardef;
i:integer;
Const E16:Tchardef=(0,0,0,60,102,194,248,192,248,194,102,60,0,0,0,0);
Const E14:Tchardef=(0,0,60,102,194,248,192,248,194,102,60,0,0,0,0,0);
Const E8:Tchardef=(60,102,248,192,248,102,60,0,0,0,0,0,0,0,0,0);
Const E12:Tchardef=(0,0,60,102,248,192,248,102,60,0,0,0,0,0,0,0);
Begin
SetChar(#213,E16);
writeln;
Write('525'#213);
Readln;
End.
-----------------------------------------------
{$s-,r-}
Unit CharG;
Interface
type TChardef=Array[0..15] of byte;
Procedure ShowDefs;
Procedure HideDefs;
Procedure ReadChar(c:char; var buff:Tchardef);
Procedure SetChar(c:char; const buff:Tchardef);
Procedure CombineChars(s1,s2,d:char;rows,adj:integer);
Procedure ReadCharRaw(c:char;var buff:Tchardef);
Procedure SetCharRaw(c:char;const buff:Tchardef);
const base=0;
Implementation
Procedure ShowDefs;
Begin
asm
cli
end;
portw[$3c4]:=$100;
portw[$3c4]:=$402;
portw[$3c4]:=$704;
portw[$3c4]:=$300;
asm
sti;
end;
portw[$3ce]:=$204;
portw[$3ce]:=5;
portw[$3ce]:=6;
End;
Procedure HideDefs;
Begin
asm
cli
end;
portw[$3c4]:=$100;
portw[$3c4]:=$302;
portw[$3c4]:=$304;
portw[$3c4]:=$300;
asm
sti;
end;
portw[$3ce]:=$4;
portw[$3ce]:=$1005;
portw[$3ce]:=$e06;
if mem[$40:$49]=7 then portw[$3ce]:=$806;
End;
Procedure ReadChar(c:char;var buff:Tchardef);
var p:^Tchardef;
Begin
p:=ptr(SegA000,Base+32*ord(c));
ShowDefs;
buff:=p^;
HideDefs;
End;
Procedure SetChar(c:char;const buff:Tchardef);
var p:^Tchardef;
Begin
p:=ptr(SegA000,Base+32*ord(c));
ShowDefs;
p^:=buff;
HideDefs;
End;
Procedure ReadCharRaw(c:char;var buff:Tchardef);
var p:^Tchardef;
Begin
p:=ptr(SegA000,Base+32*ord(c));
buff:=p^;
End;
Procedure SetCharRaw(c:char;const buff:Tchardef);
var p:^Tchardef;
Begin
p:=ptr(SegA000,Base+32*ord(c));
p^:=buff;
End;
Procedure CombineChars(s1,s2,d:char;rows,adj:integer);
var p,q,r:^Tchardef;
i:integer;
Begin
p:=ptr(SegA000,Base+32*ord(s1));
q:=ptr(SegA000,Base+32*ord(s2));
r:=ptr(SegA000,Base+32*ord(d));
ShowDefs;
for i:=0 to rows-1 do if (i+adj>=0) and (i+adj<=rows-1)
then r^[i]:=p^[i] or q^[i+adj]
else r^[i]:=p^[i];
HideDefs;
End;
end.