--- jam/scrlogos/hleve.lisp	2024-05-22 07:56:15.549790123 +1200
+++ common-lisp/scrlogos/hleve.lisp	2024-05-22 21:45:45.192889883 +1200
@@ -1,6 +1,8 @@
 (uiop:define-package :scrlogos/hleve
+    (:import-from :scrlogos/frame)
     (:mix :clim-lisp :clim :cl)
-  (:mix-reexport :scrlogos/commands :scrlogos/engine #:scrlogos/parents)
+  (:mix-reexport :scrlogos/commands :scrlogos/engine
+		 #:scrlogos/parents)
   
   (:export #:com-set-step-len
 	   #:com-set-phi
@@ -241,24 +243,36 @@
 in an obvious way
 "
   (let ((frame *application-frame*))
-    (refresh-labels frame)
-    (case (keyboard-event-character event)
-      (#\upwards_arrow
+    (case (keyboard-event-key-name event)
+      (:up
        (execute-frame-command frame '(com-forward)))
-      (#\downwards_arrow
+      (:down
        (execute-frame-command frame `(com-undo)))
-      (#\leftwards_arrow
+      (:left
        (with-slots (phi phi-inc) frame
 	 (execute-frame-command
 	  frame
 	  `(com-set-phi ,(mod (- phi phi-inc) 360)))))
-      (#\rightwards_arrow
+      (:right
        (with-slots (phi phi-inc) frame
 	 (execute-frame-command frame
 				`(com-set-phi ,(mod (+ phi phi-inc) 360))))))))
 
 (defmethod run-frame-top-level :before ((obj logos) &key &allow-other-keys))
 
-
-
-
+(defun scrlogos/frame:line-and-turtle (frame pane &rest display-spec)
+  (declare (ignore display-spec))
+  (with-slots (lines turtle-on) frame
+    (dolist (line lines)
+      (apply 'draw-line* pane line))
+    (when turtle-on
+      (with-slots (turtle-x turtle-y turtle-rad step-len phi) frame
+	(scroll-extent pane (- turtle-x 50) (- turtle-y 50))
+	(apply 'draw-circle* pane
+	       turtle-x turtle-y turtle-rad '(:filled nil))
+	(let* ((new-x (round (+ turtle-x (* step-len (cos (* phi 2 pi (/ 360.0)))))))
+	       (new-y (round (+ turtle-y (* step-len (sin (* phi 2 pi (/ 360.0)))))))
+	       (xy (list turtle-x turtle-y))
+	       (new-xy (list new-x new-y)))
+	(apply 'draw-line* pane
+	       turtle-x turtle-y new-xy))))))