home *** CD-ROM | disk | FTP | other *** search
/ PC Media 4 / PC MEDIA CD04.iso / share / prog / encom160 / digitest.c < prev    next >
Encoding:
C/C++ Source or Header  |  1994-06-27  |  2.6 KB  |  73 lines

  1. /****************************************************************************/
  2. /* DIGITEST.C                                                               */
  3. /*                                                                          */
  4. /*   This file demonstrates how to the the multi-port DIGIBOAD with Encom.  */
  5. /* The user can press '1' to '8' on the keyboard to send a character out    */
  6. /* port 1-8.  The [Esc] key quits the test.                                 */
  7. /*                                                        EnQue Software    */
  8. /****************************************************************************/
  9. #include <stdio.h>
  10. #include "encom.h"
  11.  
  12. PORT Port[8];
  13. extern long Interrupts, No_irqs;
  14. extern int Digi_irq, Digi_stat, Digi_id;
  15. #define MAX_PORT 8
  16.  
  17. /*********/
  18. /* ~main */
  19. /*       ********************************************************************/
  20. /****************************************************************************/
  21. int main( void )
  22. {
  23.   int i, c, end_flag = 0, echo = 0;
  24.   PORT *cp;
  25.  
  26.   init_digi(0x170, 7);
  27.   for( i = 0; i < MAX_PORT; i++ )
  28.   {
  29.     com_config(i, 0x178 + (i * 8), 7);
  30.     if( com_port_create(i, 2400,'N',8,1, 1024, 1024, &Port[i]) < 0 )
  31.     {
  32.       printf("Cannot create COM%d", i + 1);
  33.       return(0);
  34.     }
  35.   }
  36.   printf("\nDigi_irq:%d  Digi_stat:%02x  IRQ MASK:%02x\n",
  37.             Digi_irq, Digi_stat,  inbyte(0x21));
  38.   getch();
  39.   while( !end_flag )
  40.   {
  41.     for( i = 0; i < MAX_PORT; i++ )
  42.       if( (c = com_getc(&Port[i])) != -1 )          /* get any characters   */
  43.         printf("[%d-%c]", i, c);
  44.     if( kbhit() )
  45.     {
  46.       c = getch();
  47.       printf("Input: %c\n", c);
  48.       switch(c)                                     /* get the character    */
  49.       {
  50.         case 27: end_flag = 1; break;               /* esc to quit          */
  51.         case 's': case 'S': printf("Id:%02x\n", inbyte(0x170)); break;
  52.         case '1': com_putc(c, &Port[0] ); break;
  53.         case '2': com_putc(c, &Port[1] ); break;
  54.         case '3': com_putc(c, &Port[2] ); break;
  55.         case '4': com_putc(c, &Port[3] ); break;
  56.         case '5': com_putc(c, &Port[4] ); break;
  57.         case '6': com_putc(c, &Port[5] ); break;
  58.         case '7': com_putc(c, &Port[6] ); break;
  59.         case '8': com_putc(c, &Port[7] ); break;
  60.       }
  61.       for( i = 0; i < MAX_PORT; i++ )
  62.         printf("State%d:%d  Tx_chars:%ld\n",
  63.                  i+1, Port[i].tx_on, Port[i].tx_chars);
  64.         printf("Irqs:%8ld  No_irqs:%ld  Digi_stat:%02x\n",
  65.                No_irqs, Interrupts, Digi_id);
  66.     }
  67.   }
  68.   for( i = 0; i < MAX_PORT; i++ )
  69.     com_port_destroy(&Port[i]);
  70.   return(1);
  71. }
  72. /**** END OF FILE ****/
  73.