NAME
InitResident - initialize resident module
SYNOPSIS
object = InitResident(resident, segList)
D0 A1 D1
APTR InitResident(struct Resident *,ULONG);
Links: Resident
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