[Back to EGAVGA SWAG index] [Back to Main SWAG index] [Original]
{
WA> I was wondering if anyone could help me out here. What I
WA> would like is a program that sweeps my screen clear or to a
WA> color then self terminates. Something similar to a radar
WA> sweep. I have a limited knowledge of TP 7.
I guess everyone who programs in Pascal has a limited knowledge of TP.
Anyway, this is what I just made:
--- cut here --- }
program screensweep;
uses crt;
const vseg : word = $b800; fillchar = 32;
var x,i,maxx,maxy : integer;
procedure retrace;
begin
while (port[$3da] and 8) <> 0 do;
while (port[$3da] and 8) = 0 do;
end;
procedure plot(x,y : integer); begin
mem[vseg:y*160+x+x] := fillchar; end;
procedure line(x,y,x2,y2 : integer);
var d,dx,dy,ai,bi,xi,yi : integer;
begin
if x < x2 then begin xi := 1; dx := x2-x; end
else begin xi := -1; dx := x-x2; end;
if y < y2 then begin yi := 1; dy := y2-y; end
else begin yi := -1; dy := y-y2; end;
plot(x,y);
if dx > dy then begin
ai := (dy-dx)*2; bi := dy*2; d := bi-dx;
repeat
if d >= 0 then begin inc(y,yi); inc(d,ai); end else inc(d,bi);
inc(x,xi); plot(x,y);
until x = x2;
end
else begin
ai := (dx-dy)*2; bi := dx*2; d := bi-dy;
repeat
if d >= 0 then begin inc(x,xi); inc(d,ai); end else inc(d,bi);
inc(y,yi); plot(x,y);
until y = y2;
end;
end;
begin
if lastmode = 7 then vseg := $b000;
maxx := lo(windmax); maxy := hi(windmax);
{ fill the screen with characters added by G.DAVIS}
for i := 1 to SUCC(maxy) do
begin
gotoxy(1,i);
for x := 1 to SUCC(maxx) do write(Chr(X+32));
end;
for i := 0 to maxx do begin
retrace;
line(maxx div 2,maxy div 2,i,0);
end;
for i := 0 to maxy do begin
retrace;
line(maxx div 2,maxy div 2,maxx,i);
end;
for i := maxx downto 0 do begin
retrace;
line(maxx div 2,maxy div 2,i,maxy);
end;
for i := maxy downto 0 do begin
retrace;
line(maxx div 2,maxy div 2,0,i);
end;
end.
--- cut here ---
The line-routine was taken from Sean Palmers 320x240-mode-x unit (just a little
re-idented. ;-))
[Back to EGAVGA SWAG index] [Back to Main SWAG index] [Original]