``````{
> I used something like this:
> for x := 1 to 100 do
> begin
>      y := slope*x;
>      putpixel(x,y);
> end;

the slope method is a close cousin to bubble-sort an algorithm to use if
you can't be bothered to use a more efficient one for the job.

here's one. that only uses addition and subtraction in it's loop.
(FWIW it's based on the commutativity of multiplication.)

I think It's got some fancy name which I forget, this code is 100% my
own (freeware) and reasonably well tested.
}

procedure myline(x1,y1,x2,y2,color:integer);

{Freeware: my bugs - your problem , 29 dec 1993 J.Betts,
PASCAL echo Fidonet.     please keep this notice intact}

function sign(x:integer):integer; {like sgn(x) in basic}
begin if x<0 then sign:=-1 else if x>0 then sign:=1 else sign:=0 end;
var
x,y,count,xs,ys,xm,ym:integer;
begin
x:=x1;y:=y1;

xs:=x2-x1;    ys:=y2-y1;

xm:=sign(xs); ym:=sign(ys);
xs:=abs(xs);  ys:=abs(ys);

putpixel(x,y,color);

if xs > ys
then begin {flat line <45 deg}
count:=-(xs div 2);
while (x <> x2 ) do begin
count:=count+ys;
x:=x+xm;
if count>0 then begin
y:=y+ym;
count:=count-xs;
end;
putpixel(x,y,color);
end;
end
else begin {steep line >=45 deg}
count:=-(ys div 2);
while (y <> y2 ) do begin
count:=count+xs;
y:=y+ym;
if count>0 then begin
x:=x+xm;
count:=count-ys;
end;
putpixel(x,y,color);
end;
end;
end;

``````