Код более-менее понятен, но: где комментарии? где табуляция?
И ещё - всё слишком мощно организовано. Можно было бы и попроще.
procedure draw3dline(p,p1:poin);
var r:poin; x,y,x1,y1:integer; j:integer; a,b,xf,yf,x1f,y1f:real;
begin
j:=0;
if p1.z>p.z then
begin r:=p1; p1:=p; p:=r; end;
if (p1.z>=camera.l) then
begin
j:=1;
x:=trunc(camera.l*p.x/p.z);
x1:=trunc(camera.l*p1.x/p1.z);
y:=trunc(camera.l*p.y/p.z);
y1:=trunc(camera.l*p1.y/p1.z);
end; //?!
else
if (p.z>camera.l) then ...
Тебе не кажется что в конструкции if then begin end else не должно быть ";"?