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

Unit MyGraph;

Interface

Type
  ColorValue = Record
    Rvalue,
    Gvalue,
    Bvalue : Byte;
  end;

  PaleteType = Array [0..255] of ColorValue;

Procedure palette(tp : paleteType);
Procedure pset(x, y : Integer; c : Byte);
Function  Point(x, y : Integer) : Byte;
Procedure RotatePalette(Var p : PaleteType; n1, n2, d : Integer);
Procedure SetVga;

Implementation

Uses
  Crt, Dos;



Var
  n, x,
  y, c, i : Integer;
  ch      : Char;
  p       : PaleteType;
  image   : File;
  ok      : Boolean;

Procedure palette(tp : PaleteType);
Var
  regs : Registers;
begin { Procedure VGApalette }
  Regs.AX := $1012;
  Regs.BX := 0; { first register to set }
  Regs.CX := 256; { number of Registers to set }
  Regs.ES := Seg(tp);
  Regs.DX := Ofs(tp);
  Intr($10, regs);
end; { Procedure SetVGApalette }

Procedure Pset(x, y : Integer; c : Byte);
begin { Procedure PutPixel }
  mem[$A000 : Word(320 * y + x)] := c;
end; { Procedure PutPixel }

Function point(x, y : Integer) : Byte;
begin { Function GetPixel }
  Point := mem[$A000 : Word(320 * y + x)];
end; { Function GetPixel }

Procedure rotatePalette(Var p : PaleteType; n1, n2, d : Integer);
Var
  q : PaleteType;
begin { Procedure rotatePalette }
  q := p;
  For i := n1 to n2 do
    p[i] := q[n1 + (i + d) mod (n2 - n1 + 1)];
  palette(p);
end; { Procedure rotatePalette }

Procedure SetVga;
begin
  Inline($B8/$13/$00/$CD/$10);
end;

end.


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