Initial revision
[ssr] / StraySrc / Libraries / DLLLib / s / iface
1 ;
2 ; iface.s
3 ;
4 ; Interface to DLLManager SWIs
5 ;
6 ; © 1994 Straylight
7 ;
8
9 ;----- Standard stuff -------------------------------------------------------
10
11 GET libs:header
12 GET libs:swis
13
14 ;----- Main code ------------------------------------------------------------
15
16 AREA |DLL$$Code|,CODE,READONLY
17
18 ; os_error *dll_find(char *name,int version,dll *d)
19
20 EXPORT dll_find
21 dll_find
22 MOV ip,lr
23 SWI XDLL_Find
24 STRVC a1,[a3]
25 MOVVC a1,#0
26 MOVS pc,ip
27
28 ; os_error *dll_findFromTable(dll_table *table,int entries)
29
30 EXPORT dll_findFromTable
31 dll_findFromTable
32 MOV ip,lr
33 ADD a2,a1,a2,LSL #2
34 SWI XDLL_FindFromTable
35 MOVVC a1,#0
36 MOVS pc,ip
37
38 ; os_error *dll_load(void *buffer,char *name)
39
40 EXPORT dll_load
41 dll_load
42 MOV ip,lr
43 SWI XDLL_Load
44 MOVVC a1,#0
45 MOVS pc,ip
46
47 ; os_error *dll_lose(dll d)
48
49 EXPORT dll_lose
50 dll_lose
51 MOV ip,lr
52 SWI XDLL_Lose
53 MOVVC a1,#0
54 MOVS pc,ip
55
56 ; os_error *dll_appDying(void)
57
58 EXPORT dll_appDying
59 dll_appDying
60 MOV ip,lr
61 SWI XDLL_AppDying
62 MOVVC a1,#0
63 MOVS pc,ip
64
65 ; os_error *dll_giveCLibData(void *data)
66
67 EXPORT dll_giveCLibData
68 dll_giveCLibData
69 MOV ip,lr
70 SWI XDLL_GiveCLibData
71 MOVVC a1,#0
72 MOVS pc,ip
73 LTORG
74
75 ; os_error *dll_findCLibData(void **p)
76
77 EXPORT dll_findCLibData
78 dll_findCLibData
79 MOV ip,lr
80 MOV a2,a1
81 SWI XDLL_FindCLibData
82 STRVC a1,[a2]
83 MOVVC a1,#0
84 MOVS pc,ip
85
86 ; os_error *dll_instanceVars(void *buffer,int *size,int *magic)
87
88 EXPORT dll_instanceVars
89 dll_instanceVars
90 MOV ip,lr
91 MOV a4,v1
92 LDR v1,[a3]
93 SWI XDLL_InstanceVars
94 STRVC v1,[a3]
95 STRVC a1,[a2]
96 MOVVC a1,#0
97 MOV v1,a4
98 MOVS pc,ip
99
100 ; os_error *dll_setInstanceVars(dll d,void *workspace)
101
102 EXPORT dll_setInstanceVars
103 dll_setInstanceVars
104 MOV ip,lr
105 SWI XDLL_SetInstanceVars
106 MOVVC a1,#0
107 MOVS pc,ip
108
109 ; os_error *dll_appData(void)
110
111 EXPORT dll_appData
112 dll_appData
113 MOV ip,lr
114 MOV a1,sl
115 SWI XDLL_AppData
116 MOVVC a1,#0
117 MOVS pc,ip
118
119 ; os_error *dll_readStackPtr(int *sp)
120
121 EXPORT dll_readStackPtr
122 dll_readStackPtr
123 MOV ip,lr
124 MOV a2,a1
125 SWI XDLL_ReadStackPtr
126 STRVC a1,[a2]
127 MOVVC a1,#0
128 MOVS pc,ip
129
130 ; os_error *dll_setStackPtr(int sp)
131
132 EXPORT dll_setStackPtr
133 dll_setStackPtr
134 MOV ip,lr
135 MOV a2,sl
136 SWI XDLL_SetStackPtr
137 MOVVC a1,#0
138 MOVS pc,ip
139
140 ; os_error *dll_nameApp(char *name)
141
142 EXPORT dll_nameApp
143 dll_nameApp
144 MOV ip,lr
145 SWI XDLL_NameApp
146 MOVVC a1,#0
147 MOVS pc,ip
148
149 ; os_error *dll_info(dll d,dll_info *i)
150
151 EXPORT dll_info
152 dll_info STMFD sp!,{v1,lr}
153 MOV ip,a2
154 SWI XDLL_Info
155 STMVCIA ip,{a1-a4,v1}
156 MOVVC a1,#0
157 LDMFD sp!,{v1,pc}^
158
159 ; os_error *dll_findEntry(dll d,char *name,void (**entry)())
160
161 EXPORT dll_findEntry
162 dll_findEntry
163 MOV ip,lr
164 SWI XDLL_FindEntry
165 STRVC a1,[a3]
166 MOVVC a1,#0
167 MOVS pc,ip
168
169 ; os_error *dll_saveHandle(int *handle)
170
171 EXPORT dll_saveHandle
172 dll_saveHandle
173 MOV ip,lr
174 MOV a2,a1
175 SWI XDLL_SaveHandle
176 STRVC a1,[a2]
177 MOVVC a1,#0
178 MOVS pc,ip
179
180 ; os_error *dll_restoreHandle(int *handle)
181
182 EXPORT dll_restoreHandle
183 dll_restoreHandle
184 MOV ip,lr
185 LDR a1,[a1]
186 SWI XDLL_RestoreHandle
187 MOVVC a1,#0
188 MOVS pc,ip
189
190 ; os_error *dll_findInstanceVars(dll d,void **addr)
191
192 EXPORT dll_findInstanceVars
193 dll_findInstanceVars
194 MOV ip,lr
195 SWI XDLL_FindInstanceVars
196 STRVC a1,[a2]
197 MOVVC a1,#0
198 MOVS pc,ip
199
200 ; os_error *dll_registerAppEntryTable(void (**btable)(),char *names)
201
202 EXPORT dll_registerAppEntryTable
203 dll_registerAppEntryTable
204 MOV ip,lr
205 SWI XDLL_RegisterAppEntryTable
206 MOVVC a1,#0
207 MOVS pc,ip
208
209 ; os_error *dll_findAppEntry(char *name,void (**func)())
210
211 EXPORT dll_findAppEntry
212 dll_findAppEntry
213 MOV ip,lr
214 SWI XDLL_FindAppEntry
215 STRVC a1,[a2]
216 MOVVC a1,#0
217 MOVS pc,ip
218
219 ; os_error *dll_setExtensionTable(void (**btable)(),char *names)
220
221 EXPORT dll_setExtensionTable
222 dll_setExtensionTable
223 MOV ip,lr
224 SWI XDLL_SetExtensionTable
225 MOVVC a1,#0
226 MOVS pc,ip
227
228 ;----- That's all, folks ----------------------------------------------------
229
230 END