;;; -*- Mode:LISP; Package:NEW-MATH; Base:10; Readtable:CL -*-

(defun draw-line (x1 y1 x2 y2)
  (draw-point x1 y1)
  (draw-point x2 y2)
  (draw-line-1 x1 y1 x2 y2))

(defun draw-line-1 (x1 y1 x2 y2)
    (let ((x-mid (ash (+ x1 x2) -1))
	  (y-mid (ash (+ y1 y2) -1)))
      (draw-point x-mid y-mid)
      (when (not (and (= x1 x2) (= y1 y2)))
	(draw-line-1 x1 y1 x-mid y-mid)
	(draw-line-1 x-mid y-mid x2 y2))))
  