[Back to EGAVGA SWAG index] [Back to Main SWAG index] [Original]
Program Shading;
Uses CRT;
Var
  ColorNum, Y : Integer;
{--------------------------------------------------------------}
procedure setcolors;
var
  Color : Byte;
  A     : Integer;
Begin
   For A := 1 to 63 do
   Begin
    port[$3c8]:=A;
    port[$3c9]:=1;
    port[$3c9]:=1;
    port[$3c9]:=A;
   End;
end;
{----------------------------------------------------------------}
procedure horizontal_line (x1,x2,y : integer;color:byte);
Var
temp,Counter : Integer;
begin
IF X1 > X2 then
  begin
    Temp:=X1;
    X1:=X2;
    X2:=Temp;
  End;
     X1:=(y*320)+X1;
     X2:=(y*320)+X2;
 For Counter := X1 to X2 do
     mem[$A000:Counter]:=color;
End;
{---------------------------------------------------------------}
Procedure Init13h;    {Sets video to 320X200X256}
Begin
ASM
 MOV AH,00
 MOV AL,13h
 int 10h
End;
End;
{----------------------------------------------------------------}
Procedure InitText;   {Sets video to Textmode}
Begin
ASM
 MOV AH,00
 MOV AL,3
 INT 10h
End;
End;
{--------------------------------------------------------------------------}
Begin    {Main}
ColorNum:=1;
init13h;
Setcolors;
For Y:=1 to 63 do
  Begin
   Horizontal_Line(80,239,Y,Colornum);
   ColorNum:=Colornum+1;
  End;
For Y:=64 to 126 do
  Begin
   ColorNum:=ColorNum-1;
   Horizontal_Line(80,239,Y,ColorNum);
  End;
Readkey;
InitText;
End.
[Back to EGAVGA SWAG index] [Back to Main SWAG index] [Original]