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 | } |