NAME
InitResident - initialize resident module
SYNOPSIS
object = InitResident(resident, segList)
D0 A1 D1
APTR InitResident(struct Resident *,ULONG);
FUNCTION
Initialize a ROMTag. ROMTags are used to link system modules
together. Each disk based device or library must contain a
ROMTag structure in the first code hunk.
Once the validity of the ROMTag is verified, the RT_INIT pointer
is jumped to with the following registers:
D0 = 0
A0 = segList
A6 = ExecBase
INPUTS
resident - Pointer to a ROMTag
segList - SegList of the loaded object, if loaded from disk.
Libraries & Devices will cache this value for later
return at close or expunge time. Pass NULL for ROM
modules.
RESULTS
object - Return value from the init code, usually the library
or device base. NULL for failure.
AUTOINIT FEATURE
An automatic method of library/device base and vector table
initialization is also provided by InitResident(). The initial code
hunk of the library or device should contain "MOVEQ #-1,d0; RTS;".
Following that must be an initialized Resident structure with
RTF_AUTOINIT set in rt_Flags, and an rt_Init pointer which points
to four longwords. These four longwords will be used in a call
to MakeLibrary();
- The size of your library/device base structure including initial
Library or Device structure.
- A pointer to a longword table of standard, then library
specific function offsets, terminated with -1L.
(short format offsets are also acceptable)
- Pointer to data table in exec/InitStruct format for
initialization of Library or Device structure.
- Pointer to library initialization function, or NULL.
Calling sequence:
D0 = library base
A0 = segList
A6 = ExecBase
This function must return in D0 the library/device base to be
linked into the library/device list. If the initialization
function fails, the device memory must be manually deallocated,
then NULL returned in D0.
SEE ALSO
exec/resident.i, FindResident
[Back to Amiga Developer Docs]