Index: branches/eam_branches/ohana.20190329/src/opihi/cmd.data/Makefile
===================================================================
--- branches/eam_branches/ohana.20190329/src/opihi/cmd.data/Makefile	(revision 40779)
+++ branches/eam_branches/ohana.20190329/src/opihi/cmd.data/Makefile	(revision 40780)
@@ -79,4 +79,5 @@
 $(SRC)/join.$(ARCH).o		\
 $(SRC)/jpeg.$(ARCH).o		\
+$(SRC)/kapamemory.$(ARCH).o		\
 $(SRC)/kern.$(ARCH).o		\
 $(SRC)/keyword.$(ARCH).o	\
Index: branches/eam_branches/ohana.20190329/src/opihi/cmd.data/init.c
===================================================================
--- branches/eam_branches/ohana.20190329/src/opihi/cmd.data/init.c	(revision 40779)
+++ branches/eam_branches/ohana.20190329/src/opihi/cmd.data/init.c	(revision 40780)
@@ -68,4 +68,5 @@
 int join             PROTO((int, char **));
 int jpeg             PROTO((int, char **));
+int kapamemory       PROTO((int, char **));
 int kern             PROTO((int, char **));
 int keyword          PROTO((int, char **));
@@ -264,4 +265,5 @@
   {1, "join",         join,             "find the join of two ID vectors"},
   {1, "jpeg",         jpeg,             "convert display image to JPEG"},
+  {1, "kapamemory",   kapamemory,       "manage kapa memory dump options"},
   {1, "kern",         kern,             "convolve with 3x3 kernel"},
   {1, "keyword",      keyword,          "extract a FITS keyword from image header"},
Index: branches/eam_branches/ohana.20190329/src/opihi/cmd.data/kapamemory.c
===================================================================
--- branches/eam_branches/ohana.20190329/src/opihi/cmd.data/kapamemory.c	(revision 40780)
+++ branches/eam_branches/ohana.20190329/src/opihi/cmd.data/kapamemory.c	(revision 40780)
@@ -0,0 +1,56 @@
+# include "data.h"
+
+int kapamemory (int argc, char **argv) {
+
+  int N, kapa;
+
+  /* display source */
+  char *name = NULL;
+  if ((N = get_argument (argc, argv, "-n"))) {
+    remove_argument (N, &argc, argv);
+    name = strcreate (argv[N]);
+    remove_argument (N, &argc, argv);
+  }
+  if (!GetImage (NULL, &kapa, name)) return (FALSE);
+  FREE (name);
+
+  if (argc < 2) {
+    gprint (GP_ERR, "USAGE: kapamemory (mode)\n");
+    gprint (GP_ERR, "  mode = dump, nlines, exit\n");
+    return (FALSE);
+  }
+
+  if (!strcasecmp(argv[1], "dump")) {
+    KapaMemoryDump (kapa);
+    return TRUE;
+  }
+
+  if (!strcasecmp(argv[1], "exit")) {
+    if (argc != 3) goto exit_usage;
+    if (!strcasecmp(argv[2], "on")) {
+      KapaMemoryDumpOnExit (kapa, TRUE);
+      return TRUE;
+    }
+    if (!strcasecmp(argv[2], "off")) {
+      KapaMemoryDumpOnExit (kapa, FALSE);
+      return TRUE;
+    }
+  exit_usage:
+    gprint (GP_ERR, "USAGE: kapamemory exit (status)\n");
+    gprint (GP_ERR, "  statue = 'on' or 'off'\n");
+    return FALSE;
+  }
+
+  if (!strcasecmp(argv[1], "nlines")) {
+    if (argc != 3) {
+      gprint (GP_ERR, "USAGE: kapamemory nlines (N)\n");
+      return FALSE;
+    }
+    int Nlines = atoi (argv[2]);
+    KapaMemoryDumpLines (kapa, Nlines);
+    return TRUE;
+  }
+  gprint (GP_ERR, "ERROR: unknown kapamemory mode %s\n", argv[1]);
+  return FALSE;
+}
+
