home *** CD-ROM | disk | FTP | other *** search
- /****************************************************************************/
- /* DIGITEST.C */
- /* */
- /* This file demonstrates how to the the multi-port DIGIBOAD with Encom. */
- /* The user can press '1' to '8' on the keyboard to send a character out */
- /* port 1-8. The [Esc] key quits the test. */
- /* EnQue Software */
- /****************************************************************************/
- #include <stdio.h>
- #include "encom.h"
-
- PORT Port[8];
- extern long Interrupts, No_irqs;
- extern int Digi_irq, Digi_stat, Digi_id;
- #define MAX_PORT 8
-
- /*********/
- /* ~main */
- /* ********************************************************************/
- /****************************************************************************/
- int main( void )
- {
- int i, c, end_flag = 0, echo = 0;
- PORT *cp;
-
- init_digi(0x170, 7);
- for( i = 0; i < MAX_PORT; i++ )
- {
- com_config(i, 0x178 + (i * 8), 7);
- if( com_port_create(i, 2400,'N',8,1, 1024, 1024, &Port[i]) < 0 )
- {
- printf("Cannot create COM%d", i + 1);
- return(0);
- }
- }
- printf("\nDigi_irq:%d Digi_stat:%02x IRQ MASK:%02x\n",
- Digi_irq, Digi_stat, inbyte(0x21));
- getch();
- while( !end_flag )
- {
- for( i = 0; i < MAX_PORT; i++ )
- if( (c = com_getc(&Port[i])) != -1 ) /* get any characters */
- printf("[%d-%c]", i, c);
- if( kbhit() )
- {
- c = getch();
- printf("Input: %c\n", c);
- switch(c) /* get the character */
- {
- case 27: end_flag = 1; break; /* esc to quit */
- case 's': case 'S': printf("Id:%02x\n", inbyte(0x170)); break;
- case '1': com_putc(c, &Port[0] ); break;
- case '2': com_putc(c, &Port[1] ); break;
- case '3': com_putc(c, &Port[2] ); break;
- case '4': com_putc(c, &Port[3] ); break;
- case '5': com_putc(c, &Port[4] ); break;
- case '6': com_putc(c, &Port[5] ); break;
- case '7': com_putc(c, &Port[6] ); break;
- case '8': com_putc(c, &Port[7] ); break;
- }
- for( i = 0; i < MAX_PORT; i++ )
- printf("State%d:%d Tx_chars:%ld\n",
- i+1, Port[i].tx_on, Port[i].tx_chars);
- printf("Irqs:%8ld No_irqs:%ld Digi_stat:%02x\n",
- No_irqs, Interrupts, Digi_id);
- }
- }
- for( i = 0; i < MAX_PORT; i++ )
- com_port_destroy(&Port[i]);
- return(1);
- }
- /**** END OF FILE ****/