home *** CD-ROM | disk | FTP | other *** search
/ The C Users' Group Library 1994 August / wc-cdrom-cusersgrouplibrary-1994-08.iso / vol_300 / 309_01 / acia.h < prev    next >
Text File  |  1990-03-20  |  3KB  |  146 lines

  1. /* acia.h    for 6809 */
  2. /* the acia is a MC6850 chip, located at address A000 */
  3.  
  4. #define ACIAPORT        0xA000
  5.  
  6. #code
  7. aciastatus()
  8. {
  9.         char *acia;
  10.         acia = ACIAPORT;
  11.         return *acia;
  12. }
  13.  
  14. initacia()      /* to 9600,n,8,2 interrupts off */
  15. {
  16.         char dummy, *acia, reset, baudrate;
  17.         acia = ACIAPORT;
  18.         baudrate = 0x11;
  19.         reset = 3;
  20.         *(acia) = reset;
  21.         *(acia) = baudrate;
  22.         dummy = *(acia+1);      /*clear RBR*/
  23. }
  24.  
  25. kbhit()         /*check for arriving character, return 1 if avialable*/
  26. {
  27.         int ready;
  28.         char *acia;
  29.         acia = ACIAPORT;
  30.         return ( (*acia) & 1 );
  31. }
  32.  
  33. getchne()
  34. {
  35.         char ch, *acia;
  36.         acia = ACIAPORT;
  37.         while( kbhit() == 0)
  38.                 ;
  39.         ch = *(acia+1);           /*read 0xA001*/
  40.         return ch;
  41. }
  42.  
  43. getchar()
  44. {
  45.         char ch;
  46.         ch = getchne();
  47.         putchar( ch );            /*echo character*/
  48.         return ch;
  49. }
  50.  
  51. putchar(ch)
  52. char ch;
  53. {
  54.         int loop;
  55.         char *acia;
  56.         acia = ACIAPORT;
  57.         while( ((*acia) & 0x02) == 0)    /* wait on TDRE */
  58.                 ;
  59.         *(acia+1) = ch;
  60.         for( loop = 0; loop < 200; loop++)      /*delay required for procomm*/
  61.                 ;
  62. }
  63.  
  64. puts(s)  /* put string s, terminate with a cr,lf */
  65. char *s;
  66. {
  67.         /* compiler handles \\ \' \n \r \f \b \t */
  68.         while( *s ) {
  69.                putchar(*s);
  70.                s++;
  71.         }
  72.         putchar(10);
  73.         putchar(13);
  74. }
  75.  
  76. gets(s)  /* get string from acia int s, null terminate */
  77. char *s;
  78. {
  79.         char ch, cr, nl;
  80.         int lp;
  81.         cr = 13; nl = 10; lp = 0;
  82.         ch = getchne();
  83.         while( (ch != cr ) && (ch != nl) ) {
  84.                 s[lp] = ch;
  85.                 lp++;
  86.                 putchar( ch );
  87.                 ch = getchne();
  88.         }
  89.         s[lp] = '\0';
  90.         putchar(cr);  /* send CR/LF */
  91.         putchar(nl);
  92. }
  93.  
  94. getint()
  95. {
  96.    int value, lp;
  97.    char ch, sign, str[8], nl, cr;
  98.    nl = 10; cr = 13; lp = 0; value = 0;
  99.    ch = getchar();
  100.    while( (ch == ' ')||(ch == cr)||(ch == nl)||(ch == '\t') )
  101.         ch = getchar();
  102.    while( (ch != ' ')&&(ch != cr)&&(ch != nl)&&(ch != '\t')) {
  103.         if(((ch >= 'A')&&(ch <= 'Z'))||((ch >= 'a')&&(ch <= 'z'))) break;
  104.         str[lp] = ch; lp++; ch = getchar();
  105.    }
  106.    str[lp] = '\0';
  107.    lp = 0;
  108.    if( str[0] == '-' || str[0] == '+' ) { sign = str[0]; lp++; }
  109.    while( str[lp] ) {
  110.            value = 10 * value + (str[lp] - '0');
  111.            lp++;
  112.    }
  113.    putchar(cr); putchar(nl);
  114.    if( sign == '-' ) return (-value); else return value;
  115. }
  116.  
  117. putint(value)
  118. int value;
  119. {
  120.         /* right justified, field size 6 characters including sign*/
  121.         char str[7], sign;
  122.         int x;
  123.         for( x = 0; x < 7; x++ )  str[x] = ' ';
  124.         if( value < 0 ) {
  125.                 sign = '-';
  126.                 value = (-value);
  127.         }
  128.         else sign = '+';
  129.         x = 6;
  130.         do {
  131.                 str[x] = (value % 10) + '0';
  132.                 value = value / 10;
  133.                 x--;
  134.         } while( value > 0 );
  135.         str[x] = sign;
  136.         for( x = 0; x < 7; x++ ) putchar( str[x] );
  137. }
  138.  
  139. putnl()
  140. {
  141.         char nl;
  142.         nl = 10;
  143.         putchar('\r');
  144.         putchar(nl);
  145. }
  146.