[Back to COLOR SWAG index] [Back to Main SWAG index] [Original]
{
>A VGA's screen values can be found by defining something like:
> VGAScreen : Array[1..64000] of Byte Absolute $A000:0000
>But, how do I find out exactly what color #200 is? It must be held in memory
>some place. Can anyone supply a Procedure, Function or some
I've written this short Program quite a While ago For some testing,
it should compile and work ok. Just note that it Uses slow BIOS
Function, it's not a good choice For fast palette animations but
otherwise works fine.
}
Program Palette256;
Uses Dos;
Type
VGAColour = Record
RByte, GByte, BByte : Byte;
end;
VGAPal = Array[0..$FF] of VGAColour;
Var
Palette : VGAPal;
i : Byte;
Procedure GetVGAPal(Var Pal : VGAPal);
Var
CPUregs : Registers;
begin
with CPUregs do
begin
ax:=$1017;
bx:=$00;
cx:=$100;
es:=Seg(Pal);
dx:=Ofs(Pal);
end;
Intr($10,CPUregs);
end; {GetVGAPal}
Procedure SVMode(vmod : Byte);
Var
CPUregs : Registers;
begin
CPUregs.ah:=0;
CPUregs.al:=vmod;
Intr($10,CPUregs);
end; {SVMode}
begin
SVMode($13);
GetVGAPal(Palette);
SVMode($02);
for i:=0 to $FF do
Writeln('Entry ',i:3,' Red : ',Palette[i].RByte:3,' Green : ',
Palette[i].GByte:3,' Blue : ',Palette[i].BByte:3);
end.
[Back to COLOR SWAG index] [Back to Main SWAG index] [Original]