]> git.sur5r.net Git - cc65/blobdiff - include/modload.h
Add the apple extra files to the apple2 rpm package.
[cc65] / include / modload.h
index 2b2397dd4a7c9d03fb9e4cdb59b645a2c9123193..04ad54d79cdcd10024703779054d446abcb329ad 100644 (file)
  * code of mod_load before accessing any of these additional struct members.
  */
 struct mod_ctrl {
-    /* Parameters passed into the loader routine. The second pointer
-     * (callerdata) is an opaque pointer that may be used by the caller to
+    /* Parameters passed into the loader routine. The member callerdata
+     * is an opaque 16 bit datatype that may be used by the caller to
      * pass data through to the read routine. The read routine is used by the
      * loader to load any required data. There are several calls where the
-     * read routine is called with a size of 1, so you may choose to make this
-     * a special case when implementing read().
+     * read routine is passed a count of 1, so you may choose to make this
+     * a special case when implementing read(). The read() should return the
+     * number of bytes actually read. If the return value differs from the
+     * passed count, this is considered an error.
+     * NOTE: read() is designed so that the POSIX read() routine can be used
+     * for this vector, if you're loading from disk.
      */
-    unsigned char   (*read) (struct mod_ctrl*, void* buffer, unsigned size);
-    void*           callerdata;
+    int __fastcall__  (*read) (int callerdata, void* buffer, unsigned count);
+    int               callerdata;
 
     /* Parameters set by the loader routine */
-    void*           module;             /* Pointer to module data */
-    unsigned        module_size;        /* Total size of loaded module */
-    unsigned        module_id;          /* Module id */
+    void*             module;           /* Pointer to module data */
+    unsigned          module_size;      /* Total size of loaded module */
+    unsigned          module_id;        /* Module id */
 };
 
 
 
-unsigned char mod_load (struct mod_ctrl* ctrl);
+unsigned char __fastcall__ mod_load (struct mod_ctrl* ctrl);
 /* Load a module into memory and relocate it. The function will return an
  * error code (see below). If MLOAD_OK is returned, the outgoing fields in
  * the passed mod_ctrl struct contain information about the module just
  * loaded.
  */
 
-void mod_free (struct mod_ctrl* ctrl);
-/* Free a loaded module. */
+void __fastcall__ mod_free (void* module);
+/* Free a loaded module. Note: The given pointer is the pointer to the
+ * module memory, not a pointer to a control structure.
+ */