home *** CD-ROM | disk | FTP | other *** search
- {
- 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. ;-))
-