[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]