From 966290ff4dc8379c6043e56fa692e75532ac6aca Mon Sep 17 00:00:00 2001 From: Matt Heffron Date: Mon, 17 Feb 2025 12:35:02 -0800 Subject: [PATCH] Enable runtime controlled debug output. Currently only in make_X_keymap. Output is to STDOUT (since the conditional compilation DEBUG did) Medley branch: mth38--command-line-arg-to-support-maiko-runtime-debug adds command line argument support for this. --- src/initkbd.c | 16 ++++++++++++++++ src/main.c | 11 +++++++++++ 2 files changed, 27 insertions(+) diff --git a/src/initkbd.c b/src/initkbd.c index 8a45528..7584156 100644 --- a/src/initkbd.c +++ b/src/initkbd.c @@ -71,6 +71,8 @@ extern DspInterface currentdsp; extern int LispKbdFd; int LispKbdFd = -1; +extern int runtime_debug_level; + extern fd_set LispReadFds; extern DLword *EmMouseX68K; @@ -375,6 +377,20 @@ static u_char *make_X_keymap(void) { table[xcode - 7] = code; } + if (runtime_debug_level > 0) { + printf("*********************************************************************\n"); + printf("(DEFINE-FILE-INFO \036PACKAGE \"INTERLISP\" \036READTABLE \"XCL\" \036 BASE 10)\n"); + printf("(SETQ XGetKeyboardMappingTable '(\n"); + for (i = 0; i < codecount * symspercode; i += symspercode) { + printf("(%d (", minkey + (i / symspercode)); + for (int j = 0; j < symspercode; j++) { + printf(" #X%lx", (unsigned long)mapping[i+j]); + } + printf(" ))\n"); + } + printf("\n))\nSTOP\n"); + printf("*********************************************************************\n"); + } #ifdef DEBUG printf("\n\n\tXGetKeyboardMapping table\n\n"); for (i = 0; i < codecount * symspercode; i += symspercode) { diff --git a/src/main.c b/src/main.c index 590424a..d37936e 100644 --- a/src/main.c +++ b/src/main.c @@ -226,6 +226,8 @@ int save_argc; char **save_argv; int display_max = 65536 * 16 * 2; +long runtime_debug_level = 0; + /* diagnostic flag for sysout dumping */ extern unsigned maxpages; @@ -345,6 +347,7 @@ int main(int argc, char *argv[]) { int i; char *envname; + char *rtdebug; extern int TIMER_INTERVAL; extern fd_set LispReadFds; long tmpint; @@ -677,6 +680,14 @@ int main(int argc, char *argv[]) // // + if ((rtdebug = getenv("LDERUNTIMEDEBUG")) != NULL) { + errno = 0; + runtime_debug_level = strtol(rtdebug, (char **)NULL, 10); + if (errno != 0) { + runtime_debug_level = 0; // default to OFF if erroneous value + } + } + /* Sanity checks. */ #ifdef DOS