]> git.sur5r.net Git - cc65/blob - asminc/modload.inc
Made the code that logs indirect-goto referals be a little more efficient.
[cc65] / asminc / modload.inc
1 ;*****************************************************************************/
2 ;*                                                                           */
3 ;*                                  modload.inc                              */
4 ;*                                                                           */
5 ;*                     o65 module loader interface for cc65                  */
6 ;*                                                                           */
7 ;*                                                                           */
8 ;*                                                                           */
9 ;* (C) 2002      Ullrich von Bassewitz                                       */
10 ;*               Wacholderweg 14                                             */
11 ;*               D-70597 Stuttgart                                           */
12 ;* EMail:        uz@musoftware.de                                            */
13 ;*                                                                           */
14 ;*                                                                           */
15 ;* This software is provided 'as-is', without any expressed or implied       */
16 ;* warranty.  In no event will the authors be held liable for any damages    */
17 ;* arising from the use of this software.                                    */
18 ;*                                                                           */
19 ;* Permission is granted to anyone to use this software for any purpose,     */
20 ;* including commercial applications, and to alter it and redistribute it    */
21 ;* freely, subject to the following restrictions:                            */
22 ;*                                                                           */
23 ;* 1. The origin of this software must not be misrepresented; you must not   */
24 ;*    claim that you wrote the original software. If you use this software   */
25 ;*    in a product, an acknowledgment in the product documentation would be  */
26 ;*    appreciated but is not required.                                       */
27 ;* 2. Altered source versions must be plainly marked as such, and must not   */
28 ;*    be misrepresented as being the original software.                      */
29 ;* 3. This notice may not be removed or altered from any source              */
30 ;*    distribution.                                                          */
31 ;*                                                                           */
32 ;*****************************************************************************/
33
34
35
36 ; Exports structures and functions to load relocatable o65 modules at
37 ; runtime.
38
39
40
41 ; Offsets for the mod_ctrl struct. This struct is passed to the module loader.
42 ; It contains stuff, the loader needs to work, and another area where the
43 ; loader will place informational data if it was successful. You will have to
44 ; check the return code of mod_load before accessing any of these additional
45 ; struct members.
46 .struct MOD_CTRL
47         READ            .addr
48         CALLERDATA      .word
49         MODULE          .addr           ; Pointer to module data
50         MODULE_SIZE     .word           ; Total size of loaded module
51         MODULE_ID       .word
52 .endstruct
53
54 ; unsigned char mod_load (struct mod_ctrl* ctrl);
55 ; /* Load a module into memory and relocate it. The function will return an
56 ;  * error code (see below). If MLOAD_OK is returned, the outgoing fields in
57 ;  * the passed mod_ctrl struct contain information about the module just
58 ;  * loaded.
59 ;  */
60 .global         _mod_load
61
62 ; void mod_free (void* module);
63 ; /* Free a loaded module. Note: The given pointer is the pointer to the
64 ;  * module memory, not a pointer to a control structure.
65 ;  */
66 .global         _mod_free
67
68 ; Errors
69 .enum
70         MLOAD_OK        ; Module load successful
71         MLOAD_ERR_READ  ; Read error
72         MLOAD_ERR_HDR   ; Header error
73         MLOAD_ERR_OS    ; Wrong OS
74         MLOAD_ERR_FMT   ; Data format error
75         MLOAD_ERR_MEM   ; Not enough memory
76 .endenum
77
78