chiark / gitweb /
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