diff --git a/ldb/test.c b/ldb/test.c
index 54ac1d089fd9fe3c804e4aa3f83b1301abcd5057..e9c0381189a576e6e21a7790dfd10abeb116f574 100644
--- a/ldb/test.c
+++ b/ldb/test.c
@@ -1,4 +1,4 @@
-/* $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/ldb/Attic/test.c,v 1.2 1990/03/08 17:30:54 wlott Exp $ */
+/* $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/ldb/Attic/test.c,v 1.3 1990/03/19 14:21:02 wlott Exp $ */
 /* Extra random routines for testing stuff. */
 
 #include <signal.h>
@@ -16,27 +16,55 @@ static char *signames[] = {
     "SIGUSR1", "SIGUSR2"
 };
 
+static char *errors[] = ERRORS;
+
 
 signal_handler(signal, code, context)
 int signal, code;
 struct sigcontext *context;
 {
     int mask;
-    unsigned long bad_inst;
+    unsigned long *ptr, bad_inst;
+    char *cptr;
 
     printf("Hit with %s, code = %d, context = 0x%x\n", signames[signal], code, context);
 
     if (context->sc_cause & CAUSE_BD)
-        bad_inst = *(unsigned long *)(context->sc_pc + 4);
+        ptr = (unsigned long *)(context->sc_pc + 4);
     else
-        bad_inst = *(unsigned long *)(context->sc_pc);
+        ptr = (unsigned long *)(context->sc_pc);
+    bad_inst = *ptr;
 
     if ((bad_inst >> 26) == 0 && (bad_inst & 0x3f) == 0xd) {
-        printf("Hit a break.  Use ``exit'' to continue.\n");
-        if (context->sc_cause & CAUSE_BD)
-            emulate_branch(context, *(unsigned long *)context->sc_pc);
-        else
-            context->sc_pc += 4;
+        /* It was a break. */
+        switch (code) {
+            case trap_Halt:
+                printf("%primitive halt called; the party is over.\n");
+                break;
+
+            case trap_PendingInterrupt:
+                printf("Pending interrupt trap? This should not happen.\n");
+                break;
+
+            case trap_Error:
+            case trap_Cerror:
+                cptr = (char *)(ptr+1);
+                printf("Error: %s\n", errors[*cptr]);
+                while (*++cptr != 0)
+                    printf("    R%d: 0x%x\n", *cptr, context->sc_regs[*cptr]);
+                if (code == trap_Cerror) {
+                    printf("Hit a break.  Use ``exit'' to continue.\n");
+                    if (context->sc_cause & CAUSE_BD)
+                        emulate_branch(context, *(unsigned long *)context->sc_pc);
+                    else
+                        context->sc_pc += 4;
+                }
+                break;
+
+            default:
+                printf("Unknown trap type.\n");
+                break;
+        }
     }
 
     mask = sigsetmask(0);