diff --git a/asm/preproc.c b/asm/preproc.c
index 41a7c6fb..260cfcbe 100644
--- a/asm/preproc.c
+++ b/asm/preproc.c
@@ -4084,15 +4084,29 @@ issue_error:
             tmpl.alias = true;
         } else {
             if (op == PP_XDEFINE) {
+		char* pp = detoken(tline, 1);
+		printf("2 mname=%s casesense=%i nparam=%i tline=%s\n",
+			mname, (int)casesense, (int)nparam, pp);
+		nasm_free(pp);
+		fflush(stdout);
                 /* Protect macro parameter tokens */
                 if (nparam)
                     mark_smac_params(tline, &tmpl, TOK_XDEF_PARAM);
                 tline = expand_smacro(tline);
+		{
+		char* pp = detoken(tline, 1);
+		printf("3 mname=%s casesense=%i nparam=%i tline=%s\n",
+			mname, (int)casesense, (int)nparam, pp);
+		nasm_free(pp);
+		fflush(stdout);
+		}
             }
             /* NB: Does this still make sense? */
             macro_start = reverse_tokens(tline);
         }
 
+	printf("1 mname=%s casesense=%i\n", mname, (int)casesense);
+	fflush(stdout);
         /*
          * Good. We now have a macro name, a parameter count, and a
          * token list (in reverse order) for an expansion. We ought
@@ -5303,6 +5317,13 @@ static SMacro *expand_one_smacro(Token ***tpp)
     while (t) {
         enum pp_token_type type = t->type;
         Token *tnext = t->next;
+		{
+		char* pp = detoken(t, 1);
+		printf("7 t=%s\n",
+			pp);
+		nasm_free(pp);
+		fflush(stdout);
+		}
 
         switch (type) {
         case TOK_PREPROC_Q:
@@ -5357,6 +5378,13 @@ static SMacro *expand_one_smacro(Token ***tpp)
              */
             Token **tp = &t;
             t->next = tline;
+		{
+		char* pp = detoken(t->next, 1);
+		printf("9 t->next=%s\n",
+			pp);
+		nasm_free(pp);
+		fflush(stdout);
+		}
             expand_one_smacro(&tp);
             tline = *tp;        /* First token left after any macro call */
             break;
@@ -5364,6 +5392,13 @@ static SMacro *expand_one_smacro(Token ***tpp)
         default:
             if (is_smac_param(t->type)) {
                 int param = smac_nparam(t->type);
+		{
+		char* pp = detoken(t, 1);
+		printf("12 t=%s\n",
+			pp);
+		nasm_free(pp);
+		fflush(stdout);
+		}
                 nasm_assert(!tup && param < nparam);
                 delete_Token(t);
                 t = NULL;
@@ -5371,19 +5406,49 @@ static SMacro *expand_one_smacro(Token ***tpp)
                 tnext = dup_tlist_reverse(params[param], NULL);
                 cond_comma = false;
             } else {
+		{
+		char* pp = detoken(tline, 1);
+		printf("11 tline=%s\n",
+			pp);
+		nasm_free(pp);
+		fflush(stdout);
+		}
                 t->next = tline;
             }
         }
 
         if (t) {
             Token *endt = tline;
+		uint32_t ii = 0;
+		{
+		char* pp1 = detoken(t, 1);
+		char* pp2 = detoken(tline, 1);
+		printf("13 t='%s' tline='%s'\n",
+			pp1, pp2);
+		nasm_free(pp1);
+		nasm_free(pp2);
+		fflush(stdout);
+		}
 
             tline = t;
-            while (!cond_comma && t && t != endt)
+            while (!cond_comma && t && t != endt) {
                 cond_comma = t->type != TOK_WHITESPACE;
+		printf("15 ii=%i\n", ii);
+		++ ii;
+		t = t->next;
+		}
         }
 
         if (tnext) {
+		{
+		char* pp1 = detoken(t, 1);
+		char* pp2 = detoken(tnext, 1);
+		printf("14 t='%s' tnext='%s'\n",
+			pp1, pp2);
+		nasm_free(pp1);
+		nasm_free(pp2);
+		fflush(stdout);
+		}
             t = tnext;
         } else {
             t = tup;
@@ -5392,8 +5457,16 @@ static SMacro *expand_one_smacro(Token ***tpp)
     }
 
     **tpp = tline;
-    for (t = tline; t != tafter; t = t->next)
+    for (t = tline; t != tafter; t = t->next) {
         *tpp = &t->next;
+		{
+		char* pp = detoken(t, 1);
+		printf("8 t=%s\n",
+			pp);
+		nasm_free(pp);
+		fflush(stdout);
+		}
+    }
 
     m->in_progress = false;
 
@@ -5446,6 +5519,13 @@ static Token *expand_smacro_noreset(Token *org_tline)
      * routine we copy it back
      */
     tline = dup_Token(org_tline->next, org_tline);
+		{
+		char* pp = detoken(tline, 1);
+		printf("4 tline=%s\n",
+			pp);
+		nasm_free(pp);
+		fflush(stdout);
+		}
 
     /*
      * Pretend that we always end up doing expansion on the first pass;
@@ -5470,8 +5550,23 @@ static Token *expand_smacro_noreset(Token *org_tline)
         };
         Token **tail = &tline;
 
-        while (*tail)           /* main token loop */
+        while (*tail) {          /* main token loop */
+		{
+		char* pp = detoken(*tail, 1);
+		printf("5 tline=%s\n",
+			pp);
+		nasm_free(pp);
+		fflush(stdout);
+		}
             expanded |= !!expand_one_smacro(&tail);
+		{
+		char* pp = detoken(*tail, 1);
+		printf("6 tline=%s\n",
+			pp);
+		nasm_free(pp);
+		fflush(stdout);
+		}
+	}
 
         if (!expanded)
             break;              /* Done! */
