KCONIO.C
上传用户:sunrenlu
上传日期:2022-06-13
资源大小:1419k
文件大小:1k
源码类别:

操作系统开发

开发平台:

DOS

  1. #include <rtos.h>
  2. #include <mem.h>
  3. #define KBD_DELAY 80
  4. int kgetch(void)
  5. {
  6.     int x;
  7.     while ( 1 ) {
  8.         dos_enter();
  9.         x = kbhit();
  10.         dos_exit();
  11.         if ( x != 0 ) break;
  12.         rt_sleep( KBD_DELAY );
  13.     }
  14.     dos_enter();
  15.     x = getch();
  16.     dos_exit();
  17.     return( x );
  18. }
  19. int kgetche( void )
  20. {
  21.     int x;
  22.     while ( 1 ) {
  23.         dos_enter();
  24.         x = kbhit();
  25.         dos_exit();
  26.         if ( x != 0 ) break;
  27.         rt_sleep( KBD_DELAY );
  28.     }
  29.     dos_enter();
  30.     x = getche();
  31.     dos_exit();
  32.     return( x );
  33. }
  34. char *kgets( char *str )
  35. {
  36.     int maxlen = *(BYTE *)str;
  37.     int len;
  38.     char ch;
  39.     memset( str, 0, maxlen );
  40.     for ( len = 0 ; len < maxlen ; ) {
  41.         putch( 220 );
  42.         ch = kgetch();
  43.         putch( 8 );
  44.         putch( ' ' );
  45.         putch( 8 );
  46.         switch ( ch ) {
  47.             case 27 : *str = 0; return( str );
  48.             case 13 : return( str );
  49.             case  8 :
  50.             case 127 : if ( len > 0 ) {
  51.                          putch( 8 );
  52.                          str[ --len ] = ' ';
  53.                        }
  54.                        break;
  55.             default  : str[ len++ ] = ch;
  56.                        putch( ch );
  57.                        break;
  58.         }
  59.     }
  60.     return( str );
  61. }