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

  1. Program Ert;
  2.  
  3. Uses
  4.   Crt;
  5.  
  6. Type
  7.   RGBcolors= array[0..47] of byte;
  8.  
  9. Var
  10.   RGBoriginal,
  11.   RGBnuller    : RGBcolors;
  12.   N            : Integer;
  13.  
  14. {----------------------------------------------------------------------------}
  15.  
  16. Procedure GetDAC(Var RGBvalues); Assembler;
  17.  
  18.   Asm
  19.     Mov Bl,0
  20.     Les Di,RGBvalues
  21.  
  22.    @Loop:
  23.  
  24.     Push Bx
  25.     Mov  Ax, 1007h
  26.     Int  10h
  27.     Mov  Bl, Bh
  28.     Mov  Bh, 0
  29.     Mov  Ax, 1015h
  30.     Int  10h
  31.     Mov  Es:[Di], Dh
  32.     Mov  Es:[Di+1], Ch
  33.     Mov  Es:[Di+2], Cl
  34.     Add  Di, 3
  35.     Pop  Bx
  36.     Inc  Bl
  37.     Cmp  Bl, 10h
  38.     Jnz  @Loop
  39.   End;    {GetDAC}
  40.  
  41. {----------------------------------------------------------------------------}
  42.  
  43. Procedure Fade(RGBvaluEs : RGBcolors; Speed : ShortInt);
  44.  
  45.   Var
  46.     PaletteRegs   : Array[0..16] Of Byte;
  47.     Original,
  48.     TotalChange,
  49.     NextValuEs    : RGBcolors;
  50.  
  51.   Begin   {Fade}
  52.     Asm
  53.       Mov  Bl, 0
  54.       Mov  Di, 0
  55.       Mov  Si, 0
  56.  
  57.      @LoopInit:
  58.  
  59.       Push Bx
  60.       Mov  Ax, 1007h
  61.       Int  10h
  62.       Mov  Byte Ptr PaletteRegs[Si], Bh
  63.       Inc  Si
  64.       Mov  Bl, Bh
  65.       Mov  Bh, 0
  66.       Mov  Ax, 1015h
  67.       Int  10h
  68.       Mov  Byte Ptr Original[Di], Dh
  69.       Mov  Al, Byte Ptr RGBvAluEs[Di]
  70.       Sub  Al, Dh
  71.       Mov  Byte Ptr TotalChange[Di], Al
  72.       Mov  Byte Ptr Original[Di+1], Ch
  73.       Mov  Al, Byte Ptr RGBvAluEs[Di+1]
  74.       Sub  Al, Ch
  75.       Mov  Byte Ptr TotalChange[Di+1], Al
  76.       Mov  Byte Ptr Original[Di+2],Cl
  77.       Mov  Al, Byte Ptr RGBvAluEs[Di+2]
  78.       Sub  Al, Cl
  79.       Mov  Byte Ptr TotalChange[Di+2], Al
  80.       Add  Di, 3
  81.       Pop  Bx
  82.       Inc  Bl
  83.       Cmp  Bl, 10h
  84.       Jnz  @LoopInit
  85.       Mov  Bl, Speed
  86.       Mov  Bh, 0
  87.  
  88.      @LoopSpeed:
  89.  
  90.       Inc  Bh
  91.       Mov  Di, 0
  92.       Mov  Cx, 48
  93.  
  94.      @LoopUdregn:
  95.  
  96.       Mov  Al, Bh
  97.       Imul Byte Ptr TotalChange[Di]
  98.       Idiv Bl
  99.       Add  Al, Byte Ptr Original[Di]
  100.       Mov  Byte Ptr NextVAluEs[Di], Al
  101.       Inc  Di
  102.       loop @LoopUdregn
  103.       Mov  Dx, 3dah
  104.  
  105.      @LoopWait1:
  106.  
  107.       In   Al, Dx
  108.       Test Al,8
  109.       Jnz  @LoopWait1
  110.  
  111.      @LoopWait2:
  112.  
  113.       In   Al, Dx
  114.       Test Al, 8
  115.       Jz   @LoopWait2
  116.       Mov  Cx, 16
  117.       Mov  Di, 0
  118.       Mov  Si, 0
  119.  
  120.      @LoopOutput:
  121.  
  122.       Mov  Al, Byte Ptr PAletteRegs[Di]
  123.       Inc  Di
  124.       Mov  Dx, 3c8h
  125.       Out  Dx, Al
  126.       Inc  Dx
  127.       Mov  Al, Byte Ptr NextVAluEs[Si]
  128.       Out  Dx, Al
  129.       Mov  Al, Byte Ptr NextVAluEs[Si+1]
  130.       Out  Dx, Al
  131.       Mov  Al, Byte Ptr NextVAluEs[Si+2]
  132.       Out  Dx, Al
  133.       Add  Si, 3
  134.       Loop @LoopOutput
  135.       Cmp  Bh, Bl
  136.       Jnz  @LoopSpeed
  137.     End;    {Asm}
  138.   End;    {Fade}
  139.  
  140. {----------------------------------------------------------------------------}
  141.  
  142. Begin   {Main}
  143.   GetDAC(RGBOriginal);
  144.   For N := 0 To 47 Do
  145.     RGBnuller[N] := 0;
  146.     Repeat
  147.       Fade( RGBnuller, 127 );
  148.       For N := 0 To 1999 Do
  149.         Begin   {For}
  150.           Mem[$b800:N+N]   := Random(256);
  151.           Mem[$b800:N+N+1] := Random(16);
  152.         End;    {For}
  153.       Fade( RGBOriginal , 127 );
  154.     Until KeyPressed;
  155.     ClrScr;
  156. End.
  157.