[Back to EGAVGA SWAG index] [Back to Main SWAG index] [Original]

    { Here is the VGA palette changing code. }

    Unit PalChg;
    Interface
    USES DOS;
    Type
      TPalette16 = array[0..15] of array[0..2] of Byte;
      TPalette256 = array[0..255] of array[0..2] of Byte;
    procedure SetVGAPalette16(PalBuf : TPalette16);
    procedure SetVGAPalette256(PalBuf : TPalette256);
    Implementation
    procedure SetVGAPalette16(PalBuf : TPalette16);
    var
      Reg:Registers;
    begin
      reg.ax:=$1012;       {Code for chg. palette}
      reg.bx:=0;           {start with color 0}
      reg.cx:=16;          {change 16 colors}
      reg.es:=Seg(PalBuf); {address: segment}
      reg.dx:=Ofs(PalBuf); {address: offset}
      intr($10, reg);      {interrupt call}
    end;
    procedure SetVGAPalette256(PalBuf : TPalette256);
    var
      Reg:                                  Registers;
    begin
      reg.ax:=$1012;       {code for chg. palette}
      reg.bx:=0;           {start with color 0}
      reg.cx:=256;         {change 256 colors}
      reg.es:=Seg(PalBuf); {address: segment}
      reg.dx:=Ofs(PalBuf); {address: offset}
      intr($10, reg);      {interrupt call}
    end;
    End.

[Back to EGAVGA SWAG index] [Back to Main SWAG index] [Original]