; ; iface.s ; ; Interface to DLLManager SWIs ; ; © 1994 Straylight ; ;----- Standard stuff ------------------------------------------------------- GET libs:header GET libs:swis ;----- Main code ------------------------------------------------------------ AREA |DLL$$Code|,CODE,READONLY ; os_error *dll_find(char *name,int version,dll *d) EXPORT dll_find dll_find MOV ip,lr SWI XDLL_Find STRVC a1,[a3] MOVVC a1,#0 MOVS pc,ip ; os_error *dll_findFromTable(dll_table *table,int entries) EXPORT dll_findFromTable dll_findFromTable MOV ip,lr ADD a2,a1,a2,LSL #2 SWI XDLL_FindFromTable MOVVC a1,#0 MOVS pc,ip ; os_error *dll_load(void *buffer,char *name) EXPORT dll_load dll_load MOV ip,lr SWI XDLL_Load MOVVC a1,#0 MOVS pc,ip ; os_error *dll_lose(dll d) EXPORT dll_lose dll_lose MOV ip,lr SWI XDLL_Lose MOVVC a1,#0 MOVS pc,ip ; os_error *dll_appDying(void) EXPORT dll_appDying dll_appDying MOV ip,lr SWI XDLL_AppDying MOVVC a1,#0 MOVS pc,ip ; os_error *dll_giveCLibData(void *data) EXPORT dll_giveCLibData dll_giveCLibData MOV ip,lr SWI XDLL_GiveCLibData MOVVC a1,#0 MOVS pc,ip LTORG ; os_error *dll_findCLibData(void **p) EXPORT dll_findCLibData dll_findCLibData MOV ip,lr MOV a2,a1 SWI XDLL_FindCLibData STRVC a1,[a2] MOVVC a1,#0 MOVS pc,ip ; os_error *dll_instanceVars(void *buffer,int *size,int *magic) EXPORT dll_instanceVars dll_instanceVars MOV ip,lr MOV a4,v1 LDR v1,[a3] SWI XDLL_InstanceVars STRVC v1,[a3] STRVC a1,[a2] MOVVC a1,#0 MOV v1,a4 MOVS pc,ip ; os_error *dll_setInstanceVars(dll d,void *workspace) EXPORT dll_setInstanceVars dll_setInstanceVars MOV ip,lr SWI XDLL_SetInstanceVars MOVVC a1,#0 MOVS pc,ip ; os_error *dll_appData(void) EXPORT dll_appData dll_appData MOV ip,lr MOV a1,sl SWI XDLL_AppData MOVVC a1,#0 MOVS pc,ip ; os_error *dll_readStackPtr(int *sp) EXPORT dll_readStackPtr dll_readStackPtr MOV ip,lr MOV a2,a1 SWI XDLL_ReadStackPtr STRVC a1,[a2] MOVVC a1,#0 MOVS pc,ip ; os_error *dll_setStackPtr(int sp) EXPORT dll_setStackPtr dll_setStackPtr MOV ip,lr MOV a2,sl SWI XDLL_SetStackPtr MOVVC a1,#0 MOVS pc,ip ; os_error *dll_nameApp(char *name) EXPORT dll_nameApp dll_nameApp MOV ip,lr SWI XDLL_NameApp MOVVC a1,#0 MOVS pc,ip ; os_error *dll_info(dll d,dll_info *i) EXPORT dll_info dll_info STMFD sp!,{v1,lr} MOV ip,a2 SWI XDLL_Info STMVCIA ip,{a1-a4,v1} MOVVC a1,#0 LDMFD sp!,{v1,pc}^ ; os_error *dll_findEntry(dll d,char *name,void (**entry)()) EXPORT dll_findEntry dll_findEntry MOV ip,lr SWI XDLL_FindEntry STRVC a1,[a3] MOVVC a1,#0 MOVS pc,ip ; os_error *dll_saveHandle(int *handle) EXPORT dll_saveHandle dll_saveHandle MOV ip,lr MOV a2,a1 SWI XDLL_SaveHandle STRVC a1,[a2] MOVVC a1,#0 MOVS pc,ip ; os_error *dll_restoreHandle(int *handle) EXPORT dll_restoreHandle dll_restoreHandle MOV ip,lr LDR a1,[a1] SWI XDLL_RestoreHandle MOVVC a1,#0 MOVS pc,ip ; os_error *dll_findInstanceVars(dll d,void **addr) EXPORT dll_findInstanceVars dll_findInstanceVars MOV ip,lr SWI XDLL_FindInstanceVars STRVC a1,[a2] MOVVC a1,#0 MOVS pc,ip ; os_error *dll_registerAppEntryTable(void (**btable)(),char *names) EXPORT dll_registerAppEntryTable dll_registerAppEntryTable MOV ip,lr SWI XDLL_RegisterAppEntryTable MOVVC a1,#0 MOVS pc,ip ; os_error *dll_findAppEntry(char *name,void (**func)()) EXPORT dll_findAppEntry dll_findAppEntry MOV ip,lr SWI XDLL_FindAppEntry STRVC a1,[a2] MOVVC a1,#0 MOVS pc,ip ; os_error *dll_setExtensionTable(void (**btable)(),char *names) EXPORT dll_setExtensionTable dll_setExtensionTable MOV ip,lr SWI XDLL_SetExtensionTable MOVVC a1,#0 MOVS pc,ip ;----- That's all, folks ---------------------------------------------------- END