Rev 8930 | Rev 9716 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
6068 | serge | 1 | #include <_ansi.h> |
8777 | turbocat | 2 | #include |
6068 | serge | 3 | #include |
4 | #include "io.h" |
||
8777 | turbocat | 5 | #include |
6 | |||
6068 | serge | 7 | |
8 | void load_libconsole(); |
||
9 | void __stdcall con_init(unsigned w_w, unsigned w_h, unsigned s_w, unsigned s_h, const char* t); |
||
10 | void __stdcall con_exit(char bCloseWindow); |
||
11 | unsigned __stdcall con_get_flags(void); |
||
12 | unsigned __stdcall con_set_flags(unsigned new_flags); |
||
13 | void __stdcall con_cls(void); |
||
14 | void __stdcall con_write_string(const char* string, unsigned length); |
||
6536 | serge | 15 | short __stdcall con_getch2(void); |
8777 | turbocat | 16 | char* __stdcall con_gets(char*, unsigned); |
6068 | serge | 17 | |
9354 | turbocat | 18 | extern void __stdcall (*con_set_title_ptr)(char*); |
19 | |||
6068 | serge | 20 | int __gui_mode; |
21 | |||
8930 | turbocat | 22 | void con_init_opt(unsigned w_w, unsigned w_h, unsigned s_w, unsigned s_h, const char* t){ |
23 | con_init(w_w, w_h, s_w, s_h, t); |
||
24 | } |
||
25 | |||
6536 | serge | 26 | static int console_read(const char *path, void *buff, |
27 | size_t offset, size_t count, size_t *done) |
||
28 | { |
||
29 | char *p = buff; |
||
8777 | turbocat | 30 | /*int cnt = 0; |
6536 | serge | 31 | short c; |
8777 | turbocat | 32 | char ch;*/ |
33 | con_gets(p, count+1); |
||
34 | *done = strlen(p); |
||
6536 | serge | 35 | |
36 | // __asm__ volatile("int3"); |
||
8777 | turbocat | 37 | /* |
6536 | serge | 38 | do |
39 | { |
||
40 | c = con_getch2(); |
||
8777 | turbocat | 41 | printf("%d\n",(char)c); |
6536 | serge | 42 | ch = (char)c; |
43 | if(ch != 0) |
||
44 | { |
||
45 | p[cnt] = ch != 0x0D ? ch : 0x0A; |
||
46 | con_write_string(p+cnt, 1); |
||
47 | cnt++; |
||
48 | } |
||
49 | }while(ch != 0x0D); |
||
50 | *done = cnt; |
||
8777 | turbocat | 51 | */ |
6536 | serge | 52 | return 0; |
53 | } |
||
54 | |||
6068 | serge | 55 | static int console_write(const char *path, const void *buff, |
56 | size_t offset, size_t count, size_t *writes) |
||
57 | { |
||
58 | con_write_string(buff, count); |
||
59 | |||
60 | *writes = count; |
||
6536 | serge | 61 | return 0; |
6068 | serge | 62 | }; |
63 | |||
6074 | serge | 64 | void __init_conio() |
6068 | serge | 65 | { |
66 | __io_handle *ioh; |
||
67 | |||
68 | load_libconsole(); |
||
6074 | serge | 69 | con_init(80, 25, 80, 500, "Console application"); |
6068 | serge | 70 | |
6536 | serge | 71 | ioh = &__io_tab[STDIN_FILENO]; |
72 | ioh->mode = _READ|_ISTTY; |
||
73 | ioh->read = &console_read; |
||
74 | |||
6068 | serge | 75 | ioh = &__io_tab[STDOUT_FILENO]; |
76 | ioh->mode = _WRITE|_ISTTY; |
||
77 | ioh->write = &console_write; |
||
78 | }; |
||
79 | |||
6074 | serge | 80 | void __fini_conio() |
6068 | serge | 81 | { |
82 | con_exit(0); |
||
83 | } |
||
84 | |||
9354 | turbocat | 85 | void con_set_title(char *title) |
86 | { |
||
87 | con_set_title_ptr(title); |
||
88 | } |