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