Subversion Repositories Kolibri OS

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
1913 jaeger 1
#include "kolibri.h"
2
 
3
#define __stdcall __attribute__((stdcall))
4
#define _cdecl __attribute__((cdecl))
5
#define _stdcall __attribute__((stdcall))
6
 
7
void (* _stdcall con_init)(unsigned w_w, unsigned w_h, unsigned s_w, unsigned s_h, const char* t);
8
int (* _cdecl con_printf)(const char* format,...);
9
void (* _stdcall con_exit)(char bCloseWindow);
10
void (* __stdcall con_gets)(char* str, int n);
11
 
12
void CONSOLE_INIT(const char title[])
13
{
14
  kol_struct_import *imp;
15
 
16
  if (!(imp = kol_cofflib_load("/sys/lib/console.obj")) ||
17
      !(con_init = ( _stdcall  void (*)(unsigned, unsigned, unsigned, unsigned, const char*))
18
                  kol_cofflib_procload (imp, "con_init")) ||
19
      !(con_printf = ( _cdecl int (*)(const char*,...))
20
                  kol_cofflib_procload (imp, "con_printf"))||
21
      !(con_gets = ( __stdcall void (*)(char*, int))
22
                  kol_cofflib_procload (imp, "con_gets"))||
23
      !(con_exit = ( _stdcall void (*)(char))
24
                  kol_cofflib_procload (imp, "con_exit")))
25
  {
26
    kol_exit();
27
  }
28
  con_init(-1, -1, -1, -1, title);
29
}
30
kol_struct_import* kol_cofflib_load(char *name)
31
{
32
  kol_struct_import* result;
33
  asm ("int $0x40":"=a"(result):"a"(68), "b"(19), "c"(name));
34
  return result;
35
}
36
 
37
void* kol_cofflib_procload (kol_struct_import *imp, char *name)
38
{
39
  int i;
40
  for (i=0;;i++)
41
  {
42
    if ( NULL == ((imp+i) -> name))
43
      break;
44
    else
45
      if ( 0 == strcmp(name, (imp+i)->name) )
46
        return (imp+i)->data;
47
  }
48
  return NULL;
49
}
50
 
51
void kol_board_puts(char *s)
52
{
53
  unsigned i;
54
  i = 0;
55
  while (*(s+i))
56
  {
57
    asm ("int $0x40"::"a"(63), "b"(1), "c"(*(s+i)));
58
    i++;
59
  }
60
}
61
 
62
void kol_exit()
63
{
64
  asm ("int $0x40"::"a"(-1));
65
}