   "Clears all breakpoints"
   (interactive)
   (setq debug-string (format "ZBREAK -*\n" (lkm-current-label-offset-routine)))
+  (process-send-string "debugger" debug-string))
+
+(defun lkm-list-breakpoints ()
+  "Lists all breakpoints"
+  (interactive)
+  (setq debug-string "ZSHOW \"B\"\n")
+  (process-send-string "debugger" debug-string))
+
+(defun lkm-step-into ()
+  "Executes ZSTEP INTO"
+  (interactive)
+  (setq debug-string "ZSTEP INTO\n")
+  (process-send-string "debugger" debug-string))
+
+(defun lkm-step-over ()
+  "Executes ZSTEP OVER"
+  (interactive)
+  (setq debug-string "ZSTEP OVER\n")
+  (process-send-string "debugger" debug-string))
+
+(defun lkm-step-out ()
+  "Executes ZSTEP OUT"
+  (interactive)
+  (setq debug-string "ZSTEP OUT\n")
+  (process-send-string "debugger" debug-string))
+
+(defun lkm-immediate (value)
+  "Executes a line of MUMPS code or sends input to a pending MUMPS READ"
+  (interactive "sEnter MUMPS command or input for pending READ: ")
+  (setq debug-string (format "%s\n" value))
   (process-send-string "debugger" debug-string))
 
 (define-derived-mode mumps-mode fundamental-mode

  (with-current-buffer (get-buffer-create "*MUMPS Global Examiner*")
    (goto-char (point-max))
    (insert "MUMPS Global Dump of " global "\n\n"))
  (call-process "mumps" nil "*MUMPS Global Examiner*" nil "-r" "KBBMLRKM" global)
  (display-buffer (get-buffer "*MUMPS Global Examiner*") t)
  (with-current-buffer (get-buffer-create "*MUMPS Global Examiner*")
    (goto-char (point-max))))

  (setq mcmd (format "%s%s" gtm-dist "/mumps"))
  (start-process "debugger" "Debug" mcmd "-r" "^KBBMDBUG"))   

(defun lkm-stop-debugger ()
  "Stops the debugger"
  (interactive)
  (setq debug-string "HALT\n")
  (process-send-string "debugger" debug-string))

(defun lkm-debug-routine ()
  "Begins debug at current routine"
  (interactive)
