diff --git a/ldb/ldb.c b/ldb/ldb.c
index 1cdd9c8723b7a7bf3bafc85b48b0e5f07784fa33..898bd917fd683522075d958b736799011c2c2f6e 100644
--- a/ldb/ldb.c
+++ b/ldb/ldb.c
@@ -1,4 +1,4 @@
-/* $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/ldb/Attic/ldb.c,v 1.7 1990/07/01 04:42:29 wlott Exp $ */
+/* $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/ldb/Attic/ldb.c,v 1.8 1990/07/18 10:53:33 wlott Exp $ */
 /* Lisp kernel core debugger */
 
 #include <stdio.h>
@@ -10,6 +10,7 @@
 #include "lisp.h"
 #include "alloc.h"
 #include "vars.h"
+#include "globals.h"
 
 lispobj lisp_nil_reg = NIL;
 char *lisp_csp_reg, *lisp_bsp_reg;
@@ -43,10 +44,11 @@ char *envp[];
 {
     char *arg, **argptr;
     char *core = NULL;
-    boolean restore_state;
+    boolean restore_state, monitor;
 
     define_var("nil", NIL, TRUE);
     define_var("t", T, TRUE);
+    monitor = FALSE;
 
     argptr = argv;
     while ((arg = *++argptr) != NULL) {
@@ -61,10 +63,13 @@ char *envp[];
                 exit(1);
             }
         }
+	else if (strcmp(arg, "-monitor") == 0) {
+	    monitor = TRUE;
+	}
     }
 
     if (core == NULL)
-        core = "test.core";
+        core = "/usr/clisp/lib/lisp.core";
 
     os_init();
 
@@ -89,9 +94,14 @@ char *envp[];
     /* Snag a few of the signal */
     test_init();
 
-    if (restore_state)
-        restore();
-    else
-        while (1)
-            ldb_monitor();
+    if (!monitor) {
+	if (restore_state)
+            restore();
+	else
+	    call_into_lisp(INITIAL_FUNCTION, SymbolFunction(INITIAL_FUNCTION),
+			   current_control_stack_pointer, 0);
+	printf("%INITIAL-FUNCTION returned?");
+    }
+    while (1)
+	ldb_monitor();
 }