chiark / gitweb /
Create readable text `.bas' for each tokenized BASIC `,ffb' file.
[ssr] / StraySrc / SDLS / DLLManager / s / dllmdump
1 ;
2 ; dump.s
3 ;
4 ; DLLManager dump utility
5 ;
6 ; © 1994-1998 Straylight
7 ;
8
9 ;----- Licensing note -------------------------------------------------------
10 ;
11 ; This file is part of Straylight's Dynamic Linking System (SDLS)
12 ;
13 ; SDLS is free software; you can redistribute it and/or modify
14 ; it under the terms of the GNU General Public License as published by
15 ; the Free Software Foundation; either version 2, or (at your option)
16 ; any later version.
17 ;
18 ; SDLS is distributed in the hope that it will be useful,
19 ; but WITHOUT ANY WARRANTY; without even the implied warranty of
20 ; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
21 ; GNU General Public License for more details.
22 ;
23 ; You should have received a copy of the GNU General Public License
24 ; along with SDLS.  If not, write to the Free Software Foundation,
25 ; 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
26
27                 GET     libs:header
28                 GET     libs:swis
29                 GET     sh.dllblock
30                 GET     sh.appblock
31                 GET     sh.linkblock
32                 GET     sh.wspace
33
34                 AREA    |!!!Foonly|,CODE,READONLY
35
36 start           STMFD   R13!,{R14}
37                 MOV     R0,#18
38                 ADR     R1,modname
39                 SWI     XOS_Module
40                 LDMVSFD R13!,{PC}
41                 MOV     R11,R12
42                 MOV     R12,R4
43                 SWI     OS_WriteS
44                 DCB     "*** Dump of DLLManager workspace at &",0
45                 MOV     R0,R12
46                 BL      writeHex
47                 SWI     OS_WriteS
48                 DCB     13,10,10
49                 DCB     "[DLL list]",13,10
50                 DCB     13,10,0
51
52                 ; --- Dump out DLL list ---
53
54                 LDR     R7,dll__list
55
56 dll_loop        CMP     R7,#0
57                 BEQ     dump_apps
58                 LDR     R0,[R7,#dl_name]
59                 SWI     XOS_Write0
60                 SWI     XOS_WriteI+' '
61                 LDR     R0,[R7,#dl_version]
62                 BL      writeDec
63                 SWI     XOS_WriteS
64                 DCB     13,10,"  Handle: ",0
65                 MOV     R0,R7
66                 BL      writeHex
67                 SWI     XOS_WriteS
68                 DCB     13,10,"  Links: ",0
69                 LDR     R0,[R7,#dl_next]
70                 BL      writeHex
71                 SWI     XOS_WriteI+','
72                 LDR     R0,[R7,#dl_prev]
73                 BL      writeHex
74                 SWI     XOS_WriteS
75                 DCB     13,10,"  Ref count: ",0
76                 LDR     R0,[R7,#dl_clients]
77                 AND     R1,R0,#&80000000
78                 BIC     R0,R0,#&80000000
79                 BL      writeDec
80                 CMP     R1,#0
81                 BEQ     notent
82                 SWI     XOS_WriteI+' '
83                 SWI     XOS_WriteI+'['
84                 SWI     XOS_WriteI+'T'
85                 SWI     XOS_WriteI+']'
86 notent          SWI     XOS_NewLine
87                 SWI     XOS_NewLine
88                 LDR     R7,[R7,#dl_next]
89                 B       dll_loop
90
91 modname         DCB     "DLLManager",0
92
93                 ; --- Dump out application data ---
94
95 dump_apps       SWI     XOS_WriteS
96                 DCB     "[App data]",13,10
97                 DCB     13,10
98                 DCB     "Cached handle: ",0
99                 LDR     R0,app__cacheHnd
100                 BL      writeHex
101                 SWI     XOS_WriteS
102                 DCB     13,10
103                 DCB     "Cached pointer: ",0
104                 LDR     R0,app__cachePtr
105                 BL      writeHex
106                 SWI     XOS_WriteS
107                 DCB     13,10
108                 DCB     13,10
109                 DCB     "[App list]",13,10
110                 DCB     13,10,0
111
112                 ; --- Dump out application list ---
113
114                 LDR     R7,app__list
115
116 app_loop        CMP     R7,#0
117                 BEQ     dump_sub
118                 ADD     R0,R7,#app_name
119                 SWI     XOS_Write0
120                 SWI     XOS_WriteS
121                 DCB     13,10
122                 DCB     "  External handle: ",0
123                 LDR     R0,[R7,#app_handle]
124                 BL      writeHex
125                 SWI     XOS_WriteS
126                 DCB     13,10
127                 DCB     "  Internal handle: ",0
128                 MOV     R0,R7
129                 BL      writeHex
130                 SWI     XOS_WriteS
131                 DCB     13,10
132                 DCB     "  Links: ",0
133                 LDR     R0,[R7,#app_next]
134                 BL      writeHex
135                 SWI     XOS_WriteI+','
136                 LDR     R0,[R7,#app_prev]
137                 BL      writeHex
138                 SWI     XOS_WriteS
139                 DCB     13,10
140                 DCB     "  Stack entries: ",0
141                 LDR     R0,[R7,#app_stackPtr]
142                 MOV     R0,R0,LSR #3            ;Divide it by 8
143                 BL      writeDec
144                 SWI     XOS_WriteS
145                 DCB     13,10
146                 DCB     "  Cached DLL handle: ",0
147                 LDR     R0,[R7,#app_cachedll]
148                 BL      writeHex
149                 SWI     XOS_WriteS
150                 DCB     13,10
151                 DCB     "  Cached DLL link: ",0
152                 LDR     R0,[R7,#app_cacheptr]
153                 BL      writeHex
154                 SWI     XOS_WriteS
155                 DCB     13,10
156                 DCB     "  DLL list",13,10,0
157
158                 ; --- Dump out DLL list quickly ---
159
160                 LDR     R8,[R7,#app_dlls]
161 used_list       CMP     R8,#0
162                 BEQ     app_end
163                 LDR     R9,[R8,#lk_dll]
164                 SWI     XOS_WriteI+' '
165                 SWI     XOS_WriteI+' '
166                 SWI     XOS_WriteI+' '
167                 SWI     XOS_WriteI+' '
168                 LDR     R0,[R9,#dl_name]
169                 SWI     XOS_Write0
170                 SWI     XOS_WriteI+' '
171                 LDR     R0,[R9,#dl_version]
172                 BL      writeDec
173                 SWI     XOS_WriteI+' '
174                 SWI     XOS_WriteI+'['
175                 LDR     R0,[R8,#lk_work]
176                 BL      writeHex
177                 SWI     XOS_WriteI+']'
178                 LDR     R0,[R8,#lk_flags]
179                 CMP     R0,#0
180                 BEQ     floop
181                 SWI     XOS_WriteI+' '
182                 SWI     XOS_WriteI+'['
183                 SWI     XOS_WriteI+'T'
184                 SWI     XOS_WriteI+']'
185 floop           SWI     XOS_NewLine
186                 LDR     R8,[R8,#lk_next]
187                 B       used_list
188
189 app_end         SWI     XOS_NewLine
190                 LDR     R7,[R7,#app_next]
191                 B       app_loop
192
193                 ; --- Dump sub_alloc information ---
194
195 dump_sub        LDMFD   R13!,{PC}
196
197 writeHex        STMFD   R13!,{R1,R2,R14}
198                 MOV     R1,R11
199                 MOV     R2,#256
200                 SWI     XOS_ConvertHex8
201                 SWI     XOS_Write0
202                 LDMFD   R13!,{R1,R2,PC}^
203
204 writeDec        STMFD   R13!,{R1,R2,R14}
205                 MOV     R1,R11
206                 MOV     R2,#256
207                 SWI     XOS_ConvertInteger4
208                 SWI     XOS_Write0
209                 LDMFD   R13!,{R1,R2,PC}^
210
211                 END