*/
 #define MAX_EM_OVERLAY 3
 
+/* Search for up to 10 extended memory drivers.
+ */
+#define MAX_EM_DRIVER 10
+
+
 
 /* Functions resident in an overlay can call back functions resident in the
  * main program at any time without any precautions. The function log() is
 
 unsigned char loademdriver (void)
 {
+    static char emd[MAX_EM_DRIVER][FILENAME_MAX];
     DIR* dir;
     struct dirent* ent;
+    unsigned char max = 0;
+    unsigned char num;
 
     printf ("Dbg: Searching for emdrivers\n");
     dir = opendir (".");
             continue;
         }
 
-        printf ("Dbg: Trying emdriver %s\n", ent->d_name);
-        if (em_load_driver (ent->d_name) == EM_ERR_OK) {
-            printf ("Dbg: Loaded emdriver %s\n", ent->d_name);
+        printf ("Dbg: Memorizing file %s\n", ent->d_name);
+        strcpy (emd[max], ent->d_name);
+        if (++max == MAX_EM_DRIVER) {
             break;
         }
- 
-        printf ("Dbg: Emdriver %s failed\n", ent->d_name);
     }
-
     closedir (dir);
-    return ent != NULL;
+
+    for (num = 0; num < max; ++num) {
+        printf ("Dbg: Trying emdriver %s\n", emd[num]);
+        if (em_load_driver (emd[num]) == EM_ERR_OK) {
+            printf ("Dbg: Loaded emdriver %s\n", emd[num]);
+            return 1;
+        }
+ 
+        printf ("Dbg: Emdriver %s failed\n", emd[num]);
+    }
+    return 0;
 }
 
 void copyoverlays (void)