Subversion Repositories Kolibri OS

Rev

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