93 lines
3.4 KiB
C
93 lines
3.4 KiB
C
|
#include <conio.h>
|
||
|
#include <kolibrisys.h>
|
||
|
|
||
|
char* con_caption = "Console app";
|
||
|
extern int __argc;
|
||
|
extern char** __argv;
|
||
|
extern char* __path;
|
||
|
dword *con_dll_ver;
|
||
|
int __console_initdll_status;
|
||
|
|
||
|
char* con_dllname="/sys/lib/console.obj";
|
||
|
|
||
|
struct import{
|
||
|
char *name;
|
||
|
void *data;
|
||
|
};
|
||
|
|
||
|
void stdcall (*con_init)(dword wnd_width, dword wnd_height,
|
||
|
dword scr_width, dword scr_height, const char* title);
|
||
|
void stdcall (*con_exit)(int bCloseWindow);
|
||
|
void stdcall (*con_set_title)(const char* title);
|
||
|
void stdcall (*con_write_asciiz)(const char* str);
|
||
|
void stdcall (*con_write_string)(const char* str, dword length);
|
||
|
int cdecl (*con_printf)(const char* format, ...);
|
||
|
dword stdcall (*con_get_flags)(void);
|
||
|
dword stdcall (*con_set_flags)(dword new_flags);
|
||
|
int stdcall (*con_get_font_height)(void);
|
||
|
int stdcall (*con_get_cursor_height)(void);
|
||
|
int stdcall (*con_set_cursor_height)(int new_height);
|
||
|
int stdcall (*con_getch)(void);
|
||
|
word stdcall (*con_getch2)(void);
|
||
|
int stdcall (*con_kbhit)(void);
|
||
|
char* stdcall (*con_gets)(char* str, int n);
|
||
|
char* stdcall (*con_gets2)(con_gets2_callback callback, char* str, int n);
|
||
|
void stdcall (*con_cls)();
|
||
|
void stdcall (*con_get_cursor_pos)(int* px, int* py);
|
||
|
void stdcall (*con_set_cursor_pos)(int x, int y);
|
||
|
|
||
|
|
||
|
// don't change order in this! linked by index
|
||
|
char* con_imports[] = {
|
||
|
"START", "version", "con_init", "con_write_asciiz", "con_write_string",
|
||
|
"con_printf", "con_exit", "con_get_flags", "con_set_flags", "con_kbhit",
|
||
|
"con_getch", "con_getch2", "con_gets", "con_gets2", "con_get_font_height",
|
||
|
"con_get_cursor_height", "con_set_cursor_height", "con_cls",
|
||
|
"con_get_cursor_pos", "con_set_cursor_pos",
|
||
|
(char*)0
|
||
|
};
|
||
|
|
||
|
void con_lib_link(struct import *exp, char** imports){
|
||
|
|
||
|
con_dll_ver = _ksys_cofflib_getproc(exp, imports[1]);
|
||
|
con_init = _ksys_cofflib_getproc(exp, imports[2]);
|
||
|
con_write_asciiz = _ksys_cofflib_getproc(exp, imports[3]);
|
||
|
con_write_string = _ksys_cofflib_getproc(exp, imports[4]);
|
||
|
con_printf = _ksys_cofflib_getproc(exp, imports[5]);
|
||
|
con_exit = _ksys_cofflib_getproc(exp, imports[6]);
|
||
|
con_get_flags = _ksys_cofflib_getproc(exp, imports[7]);
|
||
|
con_set_flags = _ksys_cofflib_getproc(exp, imports[8]);
|
||
|
con_kbhit = _ksys_cofflib_getproc(exp, imports[9]);
|
||
|
con_getch = _ksys_cofflib_getproc(exp, imports[10]);
|
||
|
con_getch2 = _ksys_cofflib_getproc(exp, imports[11]);
|
||
|
con_gets = _ksys_cofflib_getproc(exp, imports[12]);
|
||
|
con_gets2 = _ksys_cofflib_getproc(exp, imports[13]);
|
||
|
con_get_font_height = _ksys_cofflib_getproc(exp, imports[14]);
|
||
|
con_get_cursor_height=_ksys_cofflib_getproc(exp, imports[15]);
|
||
|
con_set_cursor_height=_ksys_cofflib_getproc(exp, imports[16]);
|
||
|
con_cls = _ksys_cofflib_getproc(exp, imports[17]);
|
||
|
con_get_cursor_pos = _ksys_cofflib_getproc(exp, imports[18]);
|
||
|
con_set_cursor_pos = _ksys_cofflib_getproc(exp, imports[19]);
|
||
|
}
|
||
|
|
||
|
|
||
|
int con_init_console_dll(void)
|
||
|
{
|
||
|
struct import * hDll;
|
||
|
|
||
|
if (__console_initdll_status == 1) return 0;
|
||
|
|
||
|
if((hDll = (struct import *)_ksys_cofflib_load(con_dllname)) == 0){
|
||
|
debug_out_str("can't load lib\n");
|
||
|
return 1;
|
||
|
}
|
||
|
con_lib_link(hDll, con_imports);
|
||
|
|
||
|
con_init(-1, -1, -1, -1, con_caption); //__argv[0] && __path dont work
|
||
|
|
||
|
__console_initdll_status = 1;
|
||
|
|
||
|
return(0);
|
||
|
}
|
||
|
|