1
0
mirror of https://github.com/cc65/cc65.git synced 2024-12-27 00:29:31 +00:00
cc65/asminc/modload.inc

79 lines
3.9 KiB
PHP
Raw Normal View History

;*****************************************************************************/
;* */
;* modload.inc */
;* */
;* o65 module loader interface for cc65 */
;* */
;* */
;* */
;* (C) 2002 Ullrich von Bassewitz */
;* Wacholderweg 14 */
;* D-70597 Stuttgart */
;* EMail: uz@musoftware.de */
;* */
;* */
;* 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. */
;* */
;*****************************************************************************/
; Exports structures and functions to load relocatable o65 modules at
; runtime.
; Offsets for the mod_ctrl struct. This struct is passed to the module loader.
; It contains stuff, the loader needs to work, and another area where the
; loader will place informational data if it was successful. You will have to
; check the return code of mod_load before accessing any of these additional
; struct members.
.struct MOD_CTRL
READ .addr
CALLERDATA .word
MODULE .addr ; Pointer to module data
MODULE_SIZE .word ; Total size of loaded module
MODULE_ID .word
.endstruct
; unsigned char 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.
; */
.global _mod_load
; void 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.
; */
.global _mod_free
; Errors
.enum
MLOAD_OK ; Module load successful
MLOAD_ERR_READ ; Read error
MLOAD_ERR_HDR ; Header error
MLOAD_ERR_OS ; Wrong OS
MLOAD_ERR_FMT ; Data format error
MLOAD_ERR_MEM ; Not enough memory
.endenum