;/*                                                                           */
 ;/*                                                                           */
 ;/*                                                                           */
-;/* (C) 2002      Ullrich von Bassewitz                                       */
-;/*               Wacholderweg 14                                             */
-;/*               D-70597 Stuttgart                                           */
-;/* EMail:        uz@musoftware.de                                            */
+;/* (C) 2002-2012, Ullrich von Bassewitz                                      */
+;/*                Roemerstrasse 52                                           */
+;/*                D-70794 Filderstadt                                        */
+;/* EMail:         uz@cc65.org                                                */
 ;/*                                                                           */
 ;/*                                                                           */
 ;/* This software is provided 'as-is', without any expressed or implied       */
 
 
 
-; Error codes
-EM_ERR_OK               = 0       ; No error
-EM_ERR_NO_DRIVER        = 1       ; No driver available
-EM_ERR_CANNOT_LOAD      = 2       ; Error loading driver
-EM_ERR_INV_DRIVER       = 3       ; Invalid driver
-EM_ERR_NO_DEVICE        = 4       ; Device (hardware) not found
+; Error constants
+.enum
+        EM_ERR_OK                       ; No error
+        EM_ERR_NO_DRIVER                ; No driver available
+        EM_ERR_CANNOT_LOAD              ; Error loading driver
+        EM_ERR_INV_DRIVER               ; Invalid driver
+        EM_ERR_NO_DEVICE                ; Device (hardware) not found
+        EM_ERR_INSTALLED                ; A driver is already installed
+
+        EM_ERR_COUNT                    ; Special: Number of error messages
+.endenum
 
 
 
 
 /*                                                                           */
 /*                                                                           */
 /*                                                                           */
-/* (C) 2002-2011, Ullrich von Bassewitz                                      */
+/* (C) 2002-2012, Ullrich von Bassewitz                                      */
 /*                Roemerstrasse 52                                           */
 /*                D-70794 Filderstadt                                        */
 /* EMail:         uz@cc65.org                                                */
 #define EM_ERR_CANNOT_LOAD      2       /* Error loading driver */
 #define EM_ERR_INV_DRIVER       3       /* Invalid driver */
 #define EM_ERR_NO_DEVICE        4       /* Device (hardware) not found */
+#define EM_ERR_INSTALLED        5       /* A driver is already installed */
 
 /* Parameters for the em_copy_... functions. NOTE: The first seven bytes
  * have the same order and alignment as needed for the Commodore REU, so
 
+++ /dev/null
-/*****************************************************************************/
-/*                                                                           */
-/*                                em_load.c                                  */
-/*                                                                           */
-/*                       Loader module for EM drivers                        */
-/*                                                                           */
-/*                                                                           */
-/*                                                                           */
-/* (C) 2002-2003 Ullrich von Bassewitz                                       */
-/*               Römerstrasse 52                                             */
-/*               D-70794 Filderstadt                                         */
-/* EMail:        uz@cc65.org                                                 */
-/*                                                                           */
-/*                                                                           */
-/* This software is provided 'as-is', without any expressed or implied       */
-/* warranty.  In no event will the authors be held liable for any damages    */
-/* arising from the use of this software.                                    */
-/*                                                                           */
-/* Permission is granted to anyone to use this software for any purpose,     */
-/* including commercial applications, and to alter it and redistribute it    */
-/* freely, subject to the following restrictions:                            */
-/*                                                                           */
-/* 1. The origin of this software must not be misrepresented; you must not   */
-/*    claim that you wrote the original software. If you use this software   */
-/*    in a product, an acknowledgment in the product documentation would be  */
-/*    appreciated but is not required.                                       */
-/* 2. Altered source versions must be plainly marked as such, and must not   */
-/*    be misrepresented as being the original software.                      */
-/* 3. This notice may not be removed or altered from any source              */
-/*    distribution.                                                          */
-/*                                                                           */
-/*****************************************************************************/
-
-
-
-#include <string.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include <modload.h>
-#include <em.h>
-#include <em/em-kernel.h>
-
-
-
-unsigned char __fastcall__ em_load_driver (const char* name)
-/* Load an extended memory driver and return an error code */
-{
-    static struct mod_ctrl ctrl = {
-        read            /* Read from disk */
-    };
-    unsigned char Res;
-
-    /* Check if we do already have a driver loaded. If so, remove it. */
-    if (em_drv != 0) {
-        em_uninstall ();
-    }
-
-    /* Now open the file */
-    ctrl.callerdata = open (name, O_RDONLY);
-    if (ctrl.callerdata >= 0) {
-
-        /* Load the module */
-        Res = mod_load (&ctrl);
-
-        /* Close the input file */
-        close (ctrl.callerdata);
-
-        /* Check the return code */
-        if (Res == MLOAD_OK) {
-
-            /* Check the driver signature, install the driver */
-            return em_install (ctrl.module);
-
-        }
-    }
-
-    /* Error loading the driver */
-    return EM_ERR_CANNOT_LOAD;
-}
-
-
-