Subversion Repositories Kolibri OS

Rev

Rev 8930 | Rev 9716 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

  1. #include <_ansi.h>
  2. #include <stdio.h>
  3. #include <sys/unistd.h>
  4. #include "io.h"
  5. #include <string.h>
  6.  
  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);
  15. short    __stdcall con_getch2(void);
  16. char*    __stdcall con_gets(char*, unsigned);
  17.  
  18. extern void __stdcall (*con_set_title_ptr)(char*);
  19.  
  20. int __gui_mode;
  21.  
  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.  
  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;
  30.     /*int   cnt = 0;
  31.     short c;
  32.     char  ch;*/
  33.     con_gets(p, count+1);
  34.     *done = strlen(p);
  35.  
  36. //   __asm__ volatile("int3");
  37. /*
  38.     do
  39.     {
  40.         c = con_getch2();
  41.         printf("%d\n",(char)c);
  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;
  51. */
  52.     return 0;
  53. }
  54.  
  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;
  61.     return 0;
  62. };
  63.  
  64. void __init_conio()
  65. {
  66.     __io_handle *ioh;
  67.  
  68.     load_libconsole();
  69.     con_init(80, 25, 80, 500, "Console application");
  70.  
  71.     ioh = &__io_tab[STDIN_FILENO];
  72.     ioh->mode  = _READ|_ISTTY;
  73.     ioh->read  = &console_read;
  74.  
  75.     ioh = &__io_tab[STDOUT_FILENO];
  76.     ioh->mode  = _WRITE|_ISTTY;
  77.     ioh->write = &console_write;
  78. };
  79.  
  80. void __fini_conio()
  81. {
  82.     con_exit(0);
  83. }
  84.  
  85. void con_set_title(char *title)
  86. {
  87.     con_set_title_ptr(title);
  88. }
  89.