[Back to EGAVGA SWAG index] [Back to Main SWAG index] [Original]
{
> I'm trying to do a copper bars effect in Turbo Pascal. At
> the moment, I have three different coloured _LINES_ which go
> up and down etc. etc.
Here is a copper-car-routine which I found in an old issue of an german
computer-magazine. Maybe it helps you..:
}
{$A+,B-,D-,E-,F-,G+,I-,L-,N-,O-,R-,S-,V-,X-} { For TP 6.0 }
Program RedBar;
Uses
Crt;
Var
C : Byte;
C2,
C3,
C4 : Word;
SinTab : Array [0..127] of Word;
HeadPtr : Word Absolute $0040:$001A;
TailPtr : Word Absolute $0040:$001C;
Zaehler : Word;
Begin
For C := 0 to 127 do
SinTab[C] := Trunc((Sin((2 * Pi / 128) * C) + 1) * 135);
C3 := 0;
Repeat
Inline($FA); {CLI}
Repeat Until (Port[$3DA] and 8) > 0;
Repeat Until (Port[$3DA] and 8) = 0;
For C4 := 0 to SinTab[C3 and 127] do
Begin
Repeat Until (Port[$3DA] and 1) = 0;
Repeat Until (Port[$3DA] and 1) > 0;
End;
For C := 0 to 63 do
Begin
Repeat Until (Port[$3DA] and 1) > 0;
Port[$3C8] := 0;
Port[$3C9] := 0;
Port[$3C9] := C;
Port[$3C9] := 63-C;
Repeat Until (Port[$3DA] and 1) = 0;
End;
For C := 63 downTo 0 do
Begin
Repeat Until (Port[$3DA] and 1) > 0;
Port[$3C8] := 0;
Port[$3C9] := 0;
Port[$3C9] := C;
Port[$3C9] := 63-C;
Repeat Until (Port[$3DA] and 1) = 0;
End;
Inc(C3);
Inline($FB); {STI}
Until HeadPtr <> TailPtr;
HeadPtr := TailPtr;
Port[$3C8] := 0;
Port[$3C9] := 0;
Port[$3C9] := 0;
Port[$3C9] := 0;
End.
[Back to EGAVGA SWAG index] [Back to Main SWAG index] [Original]