Only check number of tasks after first message.
Use a 16-bit module for creating the initial task.

diff --git a/miscemu/main.c b/miscemu/main.c
index 5ee83ee..afbef47 100644
--- a/miscemu/main.c
+++ b/miscemu/main.c
@@ -107,11 +107,12 @@
 
     /* Start message loop for desktop window */
 
-    while ( GetNumTasks16() > 1 && Callout.GetMessageA( &msg, 0, 0, 0 ) )
+    do
     {
+        if (!Callout.GetMessageA( &msg, 0, 0, 0 )) break;
         Callout.TranslateMessage( &msg );
         Callout.DispatchMessageA( &msg );
-    }
+    } while (GetNumTasks16() > 1);
 
     ExitProcess( 0 );
 }
@@ -156,7 +157,7 @@
     if (!LoadLibraryA( "KERNEL32" )) return 1;
 
     /* Create initial task */
-    if ( !(pModule = NE_GetPtr( GetModuleHandle16( "KERNEL32" ) )) ) return 1;
+    if ( !(pModule = NE_GetPtr( GetModuleHandle16( "KERNEL" ) )) ) return 1;
     if ( !TASK_Create( THREAD_Current(), pModule, 0, 0, FALSE ) ) return 1;
 
     /* Initialize CALL32 routines */