home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1996 September / pcwk_09_96.iso / demo / wgelectr / pk51demo / files.2 / EXAMPLES / TDP / CMDBUILD.C < prev    next >
C/C++ Source or Header  |  1995-06-08  |  2KB  |  81 lines

  1. /*------------------------------------------------------------------------------
  2. CMDBUILD.C:  Routine to build up serial commands.
  3.  
  4. Copyright 1995 KEIL Software, Inc.
  5. ------------------------------------------------------------------------------*/
  6.  
  7. #include <stdlib.h>
  8. #include <ctype.h>
  9. #include "tdp.h"
  10.  
  11. /*------------------------------------------------------------------------------
  12. ------------------------------------------------------------------------------*/
  13. xdata char cmdbuf [1 + MAX_CMD_LEN];
  14. xdata unsigned char cmdndx;
  15.  
  16. /*------------------------------------------------------------------------------
  17. ------------------------------------------------------------------------------*/
  18. void cmdb_init (void)
  19. {
  20. cmdndx = 0;
  21. cmdbuf [0] = '\0';
  22. }
  23.  
  24. /*------------------------------------------------------------------------------
  25. ------------------------------------------------------------------------------*/
  26. void cmdb_prompt (void)
  27. {
  28. com_puts ("COMMAND: ");
  29. com_puts (cmdbuf);
  30. }
  31.  
  32. /*------------------------------------------------------------------------------
  33. ------------------------------------------------------------------------------*/
  34. const char *cmdb_scan (void)
  35. {
  36. int c;
  37.  
  38. /*------------------------------------------------
  39. ------------------------------------------------*/
  40. while (1)
  41.   {
  42.   if ((c = com_getchar ()) == -1)
  43.     break;
  44.  
  45.   if (c == '\r')
  46.     {
  47.     com_puts ("\r\n");
  48.     return (cmdbuf);
  49.     }
  50.  
  51.   if ((c == '\b') && (cmdndx != 0))
  52.     {
  53.     com_puts ("\b \b");
  54.     cmdbuf [--cmdndx] = '\0';
  55.     continue;
  56.     }
  57.  
  58.   if (!isprint (c))
  59.     {
  60.   BEEPCHAR:
  61.     com_putchar ('\x7');
  62.     continue;
  63.     }
  64.  
  65.   if (cmdndx >= MAX_CMD_LEN)
  66.     goto BEEPCHAR;
  67.  
  68.   com_putchar (c);
  69.   cmdbuf [cmdndx++] = (unsigned char) c;
  70.   cmdbuf [cmdndx]   = '\0';
  71.   }
  72.  
  73. /*------------------------------------------------
  74. ------------------------------------------------*/
  75. return (NULL);
  76. }
  77.  
  78. /*------------------------------------------------------------------------------
  79. ------------------------------------------------------------------------------*/
  80.  
  81.