home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 18 / CD_ASCQ_18_111294_W.iso / dos / prg / pas / pasgraph / shade.pas < prev    next >
Pascal/Delphi Source File  |  1994-02-20  |  2KB  |  97 lines

  1. Program Shading;
  2.  
  3. Uses
  4.   Crt;
  5.  
  6. Var
  7.   Y,
  8.   ColorNum  : Integer;
  9.  
  10. {----------------------------------------------------------------------------}
  11.  
  12. Procedure SetColors;
  13.  
  14.   Var
  15.     Color : Byte;
  16.     A     : Integer;
  17.  
  18.   Begin   {SetColors}
  19.     For A := 1 to 63 do
  20.       Begin   {For}
  21.         Port[$3c8] := A;
  22.         Port[$3c9] := 1;
  23.         Port[$3c9] := 1;
  24.         Port[$3c9] := A;
  25.       End;    {For}
  26.   End;    {SetColors}
  27.  
  28. {----------------------------------------------------------------------------}
  29.  
  30. Procedure Horizontal_Line (x1,x2,y : integer; color : Byte);
  31.  
  32.   Var
  33.     Temp,
  34.     Counter : Integer;
  35.  
  36.   Begin   {Horizontal_Line}
  37.     If X1 > X2 Then
  38.       Begin   {If}
  39.         Temp:=X1;
  40.         X1:=X2;
  41.         X2:=Temp;
  42.       End;    {If}
  43.  
  44.     X1:=(y*320)+X1;
  45.     X2:=(y*320)+X2;
  46.  
  47.     For Counter := X1 To X2 Do
  48.       Mem[$A000:Counter]:=color;
  49.   End;    {Horizontal_Line}
  50.  
  51. {----------------------------------------------------------------------------}
  52.  
  53. Procedure Init13h;    {Sets video to 320X200X256}
  54.  
  55.   Begin   {Init13h}
  56.     Asm
  57.       Mov Ah, 00
  58.       Mov Al, 13h
  59.       Int 10h
  60.     End;   {Asm}
  61.   End;    {Init13h}
  62.  
  63. {----------------------------------------------------------------------------}
  64.  
  65. Procedure InitText;   {Sets video to Textmode}
  66.  
  67.   Begin   {InitText}
  68.     Asm
  69.       Mov Ah, 00
  70.       Mov Al, 3
  71.       Int 10h
  72.     End;    {Asm}
  73.   End;    {InitText}
  74.  
  75. {----------------------------------------------------------------------------}
  76.  
  77. Begin   {Main}
  78.   ColorNum:=1;
  79.   Init13h;
  80.   SetColors;
  81.  
  82.   For Y := 1  To 63  Do
  83.     Begin   {For}
  84.       Horizontal_Line(80, 239, Y, Colornum);
  85.       Inc(ColorNum);
  86.     End;    {For}
  87.  
  88.   For Y := 64 To 126 Do
  89.     Begin   {For}
  90.       Dec(ColorNum);
  91.       Horizontal_Line(80, 239, Y, ColorNum);
  92.     End;
  93.  
  94.   Readkey;
  95.   InitText;
  96. End.    {Main}
  97.