Go to most recent revision | Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
1029 | serge | 1 | |
2 | |||
3 | |||
4 | typedef struct |
||
5 | { |
||
6 | char sec; |
||
7 | char min; |
||
8 | char hour; |
||
9 | char rsv; |
||
10 | }detime_t; |
||
11 | #pragma pack(pop) |
||
12 | |||
13 | |||
14 | typedef struct |
||
15 | { |
||
16 | char day; |
||
17 | char month; |
||
18 | short year; |
||
19 | }dedate_t; |
||
20 | #pragma pack(pop) |
||
21 | |||
22 | |||
23 | |||
24 | typedef struct |
||
25 | { unsigned attr; |
||
26 | unsigned flags; |
||
27 | union |
||
28 | { |
||
29 | detime_t ctime; |
||
30 | unsigned cr_time; |
||
31 | }; |
||
32 | union |
||
33 | { |
||
34 | dedate_t cdate; |
||
35 | unsigned cr_date; |
||
36 | }; |
||
37 | union |
||
38 | { |
||
39 | detime_t atime; |
||
40 | unsigned acc_time; |
||
41 | }; |
||
42 | union |
||
43 | { |
||
44 | dedate_t adate; |
||
45 | unsigned acc_date; |
||
46 | }; |
||
47 | union |
||
48 | { |
||
49 | detime_t mtime; |
||
50 | unsigned mod_time; |
||
51 | }; |
||
52 | union |
||
53 | { |
||
54 | dedate_t mdate; |
||
55 | unsigned mod_date; |
||
56 | }; |
||
57 | unsigned size; |
||
58 | unsigned size_high; |
||
59 | } FILEINFO; |
||
60 | #pragma pack(pop) |
||
61 | |||
62 | |||
63 | { |
||
64 | char *path; |
||
65 | int offset; |
||
66 | } dbgfile_t; |
||
67 | |||
68 | |||
69 | |||
70 | |||
71 | { |
||
72 | asm __volatile__ |
||
73 | ( |
||
74 | "call [DWORD PTR __imp__SysMsgBoardStr]" |
||
75 | : |
||
76 | :"S" (text) |
||
77 | ); |
||
78 | }; |
||
79 | |||
80 | |||
81 | { |
||
82 | int retval; |
||
83 | |||
84 | |||
85 | ( |
||
86 | "push 0 \n\t" |
||
87 | "push 0 \n\t" |
||
88 | "mov [esp+1], eax \n\t" |
||
89 | "push ebx \n\t" |
||
90 | "push 0 \n\t" |
||
91 | "push 0 \n\t" |
||
92 | "push 0 \n\t" |
||
93 | "push 5 \n\t" |
||
94 | "mov ebx, esp \n\t" |
||
95 | "mov eax, 70 \n\t" |
||
96 | "int 0x40 \n\t" |
||
97 | "add esp, 28 \n\t" |
||
98 | :"=eax" (retval) |
||
99 | :"a" (path), "b" (info) |
||
100 | ); |
||
101 | return retval; |
||
102 | }; |
||
103 | |||
104 | |||
105 | { |
||
106 | int retval; |
||
107 | asm __volatile__( |
||
108 | "push 0 \n\t" |
||
109 | "push 0 \n\t" |
||
110 | "mov [esp+1], eax \n\t" |
||
111 | "push 0 \n\t" |
||
112 | "push 0 \n\t" |
||
113 | "push 0 \n\t" |
||
114 | "push 0 \n\t" |
||
115 | "push 2 \n\t" |
||
116 | "mov ebx, esp \n\t" |
||
117 | "mov eax, 70 \n\t" |
||
118 | "int 0x40 \n\t" |
||
119 | "add esp, 28" |
||
120 | :"=eax" (retval) |
||
121 | :"a" (path) |
||
122 | ); |
||
123 | return retval; |
||
124 | }; |
||
125 | |||
126 | |||
127 | { |
||
128 | int retval; |
||
129 | asm __volatile__( |
||
130 | "push 0 \n\t" |
||
131 | "push 0 \n\t" |
||
132 | "mov [esp+1], eax \n\t" |
||
133 | "push 0 \n\t" |
||
134 | "push 0 \n\t" |
||
135 | "push 0 \n\t" |
||
136 | "push ebx \n\t" |
||
137 | "push 4 \n\t" |
||
138 | "mov ebx, esp \n\t" |
||
139 | "mov eax, 70 \n\t" |
||
140 | "int 0x40 \n\t" |
||
141 | "add esp, 28" |
||
142 | :"=eax" (retval) |
||
143 | :"a" (path), "b" (size) |
||
144 | ); |
||
145 | return retval; |
||
146 | }; |
||
147 | |||
148 | |||
149 | unsigned offset,unsigned count,unsigned *writes) |
||
150 | { |
||
151 | int retval; |
||
152 | asm __volatile__ |
||
153 | ("push ebx \n\t" |
||
154 | "push 0 \n\t" |
||
155 | "push 0 \n\t" |
||
156 | "mov [esp+1], eax \n\t" |
||
157 | "push ebx \n\t" |
||
158 | "push edx \n\t" |
||
159 | "push 0 \n\t" |
||
160 | "push ecx \n\t" |
||
161 | "push 3 \n\t" |
||
162 | "mov ebx, esp \n\t" |
||
163 | "mov eax, 70 \n\t" |
||
164 | "int 0x40 \n\t" |
||
165 | "test esi, esi \n\t" |
||
166 | "jz 1f \n\t" |
||
167 | "mov [esi], ebx \n\t" |
||
168 | "1:" |
||
169 | "add esp, 28 \n\t" |
||
170 | "pop ebx" |
||
171 | :"=eax" (retval) |
||
172 | :"a"(path),"b"(buff),"c"(offset),"d"(count),"S"(writes) |
||
173 | ); |
||
174 | return retval; |
||
175 | }; |
||
176 | |||
177 | |||
178 | { |
||
179 | int i=0; |
||
180 | |||
181 | |||
182 | { |
||
183 | case '\n': |
||
184 | *s++ = '\r'; |
||
185 | *s++ = '\n'; |
||
186 | |||
187 | |||
188 | break; |
||
189 | |||
190 | |||
191 | do |
||
192 | { |
||
193 | *s++ = ' '; |
||
194 | } |
||
195 | while (i % 8 != 0); |
||
196 | break; |
||
197 | default: |
||
198 | *s++ = c; |
||
199 | } |
||
200 | return s; |
||
201 | } |
||
202 | |||
203 | |||
204 | { |
||
205 | int i=0; |
||
206 | char c; |
||
207 | |||
208 | |||
209 | { |
||
210 | switch(c) |
||
211 | { |
||
212 | case '\r': |
||
213 | break; |
||
214 | |||
215 | |||
216 | *buff++ = '\r'; |
||
217 | *buff++ = '\n'; |
||
218 | i=0; |
||
219 | |||
220 | |||
221 | do |
||
222 | { |
||
223 | *buff++ = ' '; |
||
224 | i++; |
||
225 | } |
||
226 | while (i % 8 != 0); |
||
227 | break; |
||
228 | |||
229 | |||
230 | *buff++ = c; |
||
231 | i++; |
||
232 | }; |
||
233 | } |
||
234 | return buff; |
||
235 | } |
||
236 | |||
237 | |||
238 | { |
||
239 | char dbuff[16]; |
||
240 | int i = 14; |
||
241 | |||
242 | |||
243 | do |
||
244 | { |
||
245 | dbuff[i] = (val % 10) + '0'; |
||
246 | val = val / 10; |
||
247 | i--; |
||
248 | } while(val); |
||
249 | |||
250 | |||
251 | } |
||
252 | |||
253 | |||
254 | |||
255 | |||
256 | { |
||
257 | int i; |
||
258 | for (i=sizeof(u32_t)*8-4; i >= 0; i -= 4) |
||
259 | buff = _putc(buff,hexchars[((u32_t)val >> i) & 0xF]); |
||
260 | return buff; |
||
261 | } |
||
262 | |||
263 | |||
264 | #define va_end(v) __builtin_va_end(v) |
||
265 | #define va_arg(v,l) __builtin_va_arg(v,l) |
||
266 | #if !defined(__STRICT_ANSI__) || __STDC_VERSION__ + 0 >= 199900L |
||
267 | #define va_copy(d,s) __builtin_va_copy(d,s) |
||
268 | #endif |
||
269 | #define __va_copy(d,s) __builtin_va_copy(d,s) |
||
270 | |||
271 | |||
272 | typedef __gnuc_va_list va_list; |
||
273 | |||
274 | |||
275 | |||
276 | |||
277 | |||
278 | |||
279 | { |
||
280 | u32_t ret = 1; |
||
281 | u32_t i = 0; |
||
282 | char *sbuf = txtbuf; |
||
283 | |||
284 | |||
285 | |||
286 | |||
287 | |||
288 | |||
289 | return 0; |
||
290 | |||
291 | |||
292 | { |
||
293 | switch (*(format)) |
||
294 | { |
||
295 | case '%': |
||
296 | next_fmt: |
||
297 | switch (*(++format)) |
||
298 | { |
||
299 | case 'l': case '-': |
||
300 | case '0': case '1': case '2': case '3': case '4': |
||
301 | case '5': case '6': case '7': case '8': case '9': |
||
302 | goto next_fmt; |
||
303 | |||
304 | |||
305 | sbuf = _putc (sbuf,arg (i)); |
||
306 | break; |
||
307 | case 'd': |
||
308 | sbuf = print_dec (sbuf,arg (i)); |
||
309 | break; |
||
310 | case 'p': |
||
311 | case 'x': |
||
312 | sbuf = print_hex (sbuf,(u32_t) arg (i)); |
||
313 | break; |
||
314 | case 's': |
||
315 | sbuf = print_string (sbuf,(char*) arg (i)); |
||
316 | break; |
||
317 | default: |
||
318 | sbuf = print_string (sbuf,"?"); |
||
319 | break; |
||
320 | } |
||
321 | i++; |
||
322 | break; |
||
323 | |||
324 | |||
325 | sbuf = _putc (sbuf,*format); |
||
326 | break; |
||
327 | } |
||
328 | format++; |
||
329 | } |
||
330 | |||
331 | |||
332 | *sbuf=0; |
||
333 | _SysMsgBoardStr(txtbuf); |
||
334 | return ret; |
||
335 | } |
||
336 | |||
337 | |||
338 | { |
||
339 | FILEINFO info; |
||
340 | |||
341 | |||
342 | |||
343 | |||
344 | { |
||
345 | if(!create_file(path)) |
||
346 | { |
||
347 | dbgfile.path = path; |
||
348 | return TRUE; |
||
349 | } |
||
350 | else |
||
351 | return FALSE; |
||
352 | }; |
||
353 | set_file_size(path, 0); |
||
354 | dbgfile.path = path; |
||
355 | dbgfile.offset = 0; |
||
356 | return TRUE; |
||
357 | }; |
||
358 | |||
359 | |||
360 | |||
361 | |||
362 | { |
||
363 | unsigned writes; |
||
364 | |||
365 | |||
366 | // char *sbuf = txtbuf; |
||
367 | |||
368 | |||
369 | |||
370 | |||
371 | if (format) |
||
372 | len = vsnprintf(txtbuf, 128, format, ap); |
||
373 | va_end(ap); |
||
374 | |||
375 | |||
376 | |||
377 | |||
378 | { |
||
379 | write_file(dbgfile.path,txtbuf,dbgfile.offset,len,&writes); |
||
380 | dbgfile.offset+=writes; |
||
381 | }; |
||
382 | return len; |
||
383 | } |
||
384 | |||
385 | |||
386 | { |
||
387 | va_list ap; |
||
388 | int retval; |
||
389 | |||
390 | |||
391 | retval = vsnprintf(s, n, format, ap); |
||
392 | va_end(ap); |
||
393 | |||
394 | |||
395 | } |
||
396 | /* |
||
397 | int snprintf(char *buf,int count, const char* format, ...) |
||
398 | { |
||
399 | int len; |
||
400 | |||
401 | |||
402 | u32 i = 0; |
||
403 | char *sbuf = buf; |
||
404 | |||
405 | |||
406 | |||
407 | |||
408 | |||
409 | |||
410 | return 0; |
||
411 | |||
412 | |||
413 | { |
||
414 | switch (*(format)) |
||
415 | { |
||
416 | case '%': |
||
417 | next_fmt: |
||
418 | switch (*(++format)) |
||
419 | { |
||
420 | case 'l': case '-': |
||
421 | case '0': case '1': case '2': case '3': case '4': |
||
422 | case '5': case '6': case '7': case '8': case '9': |
||
423 | goto next_fmt; |
||
424 | |||
425 | |||
426 | sbuf = _putc (sbuf,arg (i)); |
||
427 | break; |
||
428 | case 'd': |
||
429 | sbuf = print_dec (sbuf,arg (i)); |
||
430 | break; |
||
431 | case 'p': |
||
432 | case 'x': |
||
433 | sbuf = print_hex (sbuf,(u32) arg (i)); |
||
434 | break; |
||
435 | case 's': |
||
436 | sbuf = print_string (sbuf,(char*) arg (i)); |
||
437 | break; |
||
438 | default: |
||
439 | sbuf = print_string (sbuf,"?"); |
||
440 | break; |
||
441 | } |
||
442 | i++; |
||
443 | break; |
||
444 | |||
445 | |||
446 | sbuf = _putc (sbuf,*format); |
||
447 | break; |
||
448 | } |
||
449 | format++; |
||
450 | } |
||
451 | |||
452 | |||
453 | *sbuf=0; |
||
454 | len = sbuf-txtbuf; |
||
455 | |||
456 | |||
457 | } |
||
458 | */ |
||
459 | |||
460 | |||
461 | RhdAppendString(char *s1, const char *s2) |
||
462 | { |
||
463 | |||
464 | |||
465 | return s1; |
||
466 | else |
||
467 | if (!s1) |
||
468 | return strdup(s2); |
||
469 | else |
||
470 | { |
||
471 | int len = strlen(s1) + strlen(s2) + 1; |
||
472 | char *result = (char *)malloc(len); |
||
473 | |||
474 | |||
475 | |||
476 | |||
477 | strcat(result,s2); |
||
478 | free(s1); |
||
479 | return result; |
||
480 | } |
||
481 | |||
482 | |||
483 | } |
||
484 |