[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]