home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / cpm / walnut-creek-CDROM / MBUG / MBUG013.ARC / PLOTI2.PRO < prev    next >
Text File  |  1979-12-31  |  2KB  |  62 lines

  1. procedure PLOT(x1,y1,x2,y2 : integer);
  2.  
  3. { Procedure developed in Turbo Pascal
  4.      for the MicroBee by Bob Burt       }
  5.  
  6. { This  version  written using integer
  7.   variables, but with a switch to real
  8.   variable  for  the  x  axis  if  the
  9.   coordinate  value exceeds 128.  This
  10.   speeds  up  the  plotting  rate by a
  11.   factor of at least 3                  }
  12.  
  13. label 99;
  14. var
  15.   dx,dy,x,y,xi,yi : integer;
  16.   x_real : real;
  17.   count : integer;
  18. begin
  19.   dx := x2 - x1;
  20.   dy := y2 - y1;
  21.   if (dx = 0) and (dy = 0) then
  22.     begin
  23.       xi := 0; yi := 0; count := 1; goto 99
  24.     end; {if}
  25.   if abs(dx) > abs(dy) then
  26.     begin
  27.       xi := 256; count := abs(dx) + 1; yi := abs(dy*256 div dx)
  28.     end; {if}
  29.   if abs(dx) <= abs(dy) then
  30.     begin
  31.       yi := 256; count := abs(dy) + 1; xi := abs(dx*256 div dy)
  32.     end; {if}
  33.   if abs(dx) <> ((count - 1)*xi div 256) then xi := xi + 1;
  34.   if abs(dy) <> ((count - 1)*yi div 256) then yi := yi + 1;
  35.   99 :
  36.   if dx < 0 then mem[addr(draw)+11] := 1
  37.             else mem[addr(draw)+11] := 0;
  38.   if dy < 0 then mem[addr(draw)+12] := 1
  39.             else mem[addr(draw)+12] := 0;
  40.   y := y1*256;
  41.   if x1 > 128 then
  42.                 begin
  43.                   x_real := x1*256;
  44.                   mem[addr(draw)+2] := trunc(x_real - int(x_real/256)*256);
  45.                   mem[addr(draw)+3] := trunc(x_real/256)
  46.                 end
  47.               else
  48.                 begin
  49.                   x := x1*256;
  50.                   mem[addr(draw)+2]  := x - (x div 256)*256;
  51.                   mem[addr(draw)+3]  := x div 256
  52.                 end;
  53.   mem[addr(draw)+4]  := y - (y div 256)*256;
  54.   mem[addr(draw)+5]  := y div 256;
  55.   mem[addr(draw)+6]  := xi - (xi div 256)*256;
  56.   mem[addr(draw)+7]  := xi div 256;
  57.   mem[addr(draw)+8]  := yi - (yi div 256)*256;
  58.   mem[addr(draw)+9]  := yi div 256;
  59.   mem[addr(draw)+10] := count;
  60.   draw
  61. end; {procedure plot}
  62.