mirror of
https://github.com/cc65/cc65.git
synced 2024-12-30 20:29:25 +00:00
4fa1f8ba97
git-svn-id: svn://svn.cc65.org/cc65/trunk@2709 b7a2c559-68d2-44c3-8de9-860c34a00d81
79 lines
3.9 KiB
PHP
79 lines
3.9 KiB
PHP
;*****************************************************************************/
|
|
;* */
|
|
;* 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
|
|
|
|
|