Rev 8777 | Rev 9354 | 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 | |
18 | int __gui_mode; |
||
19 | |||
8930 | turbocat | 20 | void con_init_opt(unsigned w_w, unsigned w_h, unsigned s_w, unsigned s_h, const char* t){ |
21 | con_init(w_w, w_h, s_w, s_h, t); |
||
22 | } |
||
23 | |||
6536 | serge | 24 | static int console_read(const char *path, void *buff, |
25 | size_t offset, size_t count, size_t *done) |
||
26 | { |
||
27 | char *p = buff; |
||
8777 | turbocat | 28 | /*int cnt = 0; |
6536 | serge | 29 | short c; |
8777 | turbocat | 30 | char ch;*/ |
31 | con_gets(p, count+1); |
||
32 | *done = strlen(p); |
||
6536 | serge | 33 | |
34 | // __asm__ volatile("int3"); |
||
8777 | turbocat | 35 | /* |
6536 | serge | 36 | do |
37 | { |
||
38 | c = con_getch2(); |
||
8777 | turbocat | 39 | printf("%d\n",(char)c); |
6536 | serge | 40 | ch = (char)c; |
41 | if(ch != 0) |
||
42 | { |
||
43 | p[cnt] = ch != 0x0D ? ch : 0x0A; |
||
44 | con_write_string(p+cnt, 1); |
||
45 | cnt++; |
||
46 | } |
||
47 | }while(ch != 0x0D); |
||
48 | *done = cnt; |
||
8777 | turbocat | 49 | */ |
6536 | serge | 50 | return 0; |
51 | } |
||
52 | |||
6068 | serge | 53 | static int console_write(const char *path, const void *buff, |
54 | size_t offset, size_t count, size_t *writes) |
||
55 | { |
||
56 | con_write_string(buff, count); |
||
57 | |||
58 | *writes = count; |
||
6536 | serge | 59 | return 0; |
6068 | serge | 60 | }; |
61 | |||
6074 | serge | 62 | void __init_conio() |
6068 | serge | 63 | { |
64 | __io_handle *ioh; |
||
65 | |||
66 | load_libconsole(); |
||
6074 | serge | 67 | con_init(80, 25, 80, 500, "Console application"); |
6068 | serge | 68 | |
6536 | serge | 69 | ioh = &__io_tab[STDIN_FILENO]; |
70 | ioh->mode = _READ|_ISTTY; |
||
71 | ioh->read = &console_read; |
||
72 | |||
6068 | serge | 73 | ioh = &__io_tab[STDOUT_FILENO]; |
74 | ioh->mode = _WRITE|_ISTTY; |
||
75 | ioh->write = &console_write; |
||
76 | }; |
||
77 | |||
6074 | serge | 78 | void __fini_conio() |
6068 | serge | 79 | { |
80 | con_exit(0); |
||
81 | } |
||
82 |