home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1993 #3 / NN_1993_3.iso / spool / fj / comp / parallel / 181 < prev    next >
Encoding:
Text File  |  1993-01-25  |  3.3 KB  |  108 lines

  1. Path: sparky!uunet!ccut!news.u-tokyo.ac.jp!komaba!graco!nitta
  2. From: nitta@c.u-tokyo.ac.jp (Yoshihisa Nitta)
  3. Newsgroups: fj.comp.parallel
  4. Subject: Re: why does transputer(c)'s i/o function busywaiting?
  5. Message-ID: <NITTA.93Jan25233312@ns.c.u-tokyo.ac.jp>
  6. Date: 25 Jan 93 14:33:12 GMT
  7. References: <TAKE.93Jan25210050@tomo.wadalab.t.u-tokyo.ac.jp>
  8. Sender: news@graco.c.u-tokyo.ac.jp
  9. Distribution: fj
  10. Organization: Coll. Arts & Sci., University of Tokyo, Japan.
  11. Lines: 94
  12. In-reply-to: take@wadalab.t.u-tokyo.ac.jp's message of 25 Jan 93 12:00:50 GMT
  13.  
  14. $B?7ED(B@$BElBg$G$9!#(B
  15.  
  16.    In article <TAKE.93Jan25210050@tomo.wadalab.t.u-tokyo.ac.jp>
  17.    take@wadalab.t.u-tokyo.ac.jp (Mikio Takeuchi) writes:
  18.    > $B3+H/4D6-$K$O(B INMOS $B<R$N(B ANSI C $B%D!<%k%;%C%H$rMQ$$$F$$$^$9!#(B
  19.    > $B<ALd$O(B ANSI C $B$NI8=`F~=PNO%i%$%V%i%j$K$D$$$F$G$9!#(B
  20. $B;d$b@N!"$3$N(BANSI C tool set (IMS D4214)$B$r;H$C$F$$$?$3$H$,$"$j$^$9!#(B
  21. $B$=$N8e3+H/4D6-$H$7$F(B transputer $B$O(B$B8+<N$F$F!"(BAP1000$B$K0\$C$F(B
  22. $B$7$^$C$?$N$G:G6a$O;H$C$F$$$J$$$N$G$9$,!#(B
  23.  
  24.    > transputer $B$G$O%A%c%M%k$rMQ$$(B$B$?F~=PNO$K$h$j%W%m%;%9$,%V%m%C%/$9$k:]$K$O!"(B
  25.    > $B%3%s%F%/%9%H%9%$%C%A$,5/$3$j!"L5BL$J(B CPU $B;~4V$r>CHq(B$B$7$J$$$h$&@_7W$5$l(B
  26.    > $B$F$$$^$9!#$7$+$7$J$,$i!"%[%9%H$H$NF~=PNO$r9T$J$&%i%$%V%i%j$O%S%8!<%&%'(B
  27.    > $B%$(B$B%H$7$F$7$^$&$h$&$J$N$G$9!#(B
  28. $B$3$l$K4X$7$F;d$O0J2<$NJ}K!$r<h$j$^$7$?!#(B
  29. host$BMQ$N(BLibrary$B$K(B pollkey() $B$H$$$&(B$B4X?t$,$"$j$^$9$N$G(B
  30. $B$3$l$r?t2sD4$Y$FF~NO$,$J$1$l$P(Btimeup$B$5$;$F;C$/(Bsleep$B$5$;$^$9!#(B
  31. $B@N$N(B code $B$+$i$=$N$^(B$B$^H4$$$?ItJ,$r2<$KIU$1$F$*$-$^$9!#(B
  32.  
  33. $B5-;vCf$GNc$H$7$F<($5$l$?%W%m%0%i%`$G(B
  34.    >         gets(buf);
  35. $B$NBe$o$j$K(B$B0J2<$N(B fgets_poll(buf, sizeof(buf), stdin) $B$r;H$($P(B
  36. ($B>/$J$/$H$b4JC1$JJQ99$G(B)$B0U?^$NDL$j$KF0$/$N$G$O$J$$(B$B$G$7$g$&$+!#(B
  37. # $B$`$m$sB>$N<BAu!?<B8=J}K!$b$"$k$+$b$7$l$^$;$s$,!#(B
  38.  
  39. $B$=$&$=$&!"0x$_$K(B
  40.    :    if (c == '\n' || c == 0xd) { /* RETURN on volvox is 0xd */
  41. $B$NItJ,$O!"(B"RETURN" key$B2!2<$G%7%e%_%l!<%?$H<B5!(B(iserver)$B$G(B$BJV$C(B
  42. $B$F$/$kCM$,0[$J$C$F$$$?$O$:$G$9!#>l9g$K1~$8$FJQ99$7$F$/$@$5$$!#(B
  43. ($BO7GL?4$J$,$i!#(B)
  44.  
  45. $B;29M$K$J$l$P9,$$(B$B$G$9!#(B
  46.  
  47. $B$=$l$G$O!#(B
  48.  
  49. #include <iocntrl.h>
  50. #define KEY_IDLE    10
  51. char *fgets_poll(char *buf, int len, FILE *fp)
  52. {
  53.     int c;
  54.     int n, i;
  55.     int timeup = 0;
  56.  
  57.     fp=fp;
  58.     n = 0;
  59.     for (;;) {
  60.       RETRY:
  61.     c = pollkey();
  62.     if (c == -1) {
  63.         ++timeup;
  64.         if (timeup > KEY_IDLE) ProcWait(2000);
  65.         goto RETRY;
  66.     }
  67.     timeup = 0;
  68.     if (c == '\n' || c == 0xd) { /* RETURN on volvox is 0xd */
  69.         buf[n++] = '\n';
  70.         putchar('\n');
  71.         fflush(stdout);
  72.         goto END;
  73.     } else if (c == '\b') {
  74.         if (n > 0) {
  75.         n--;
  76.         putchar('\b');
  77.         putchar(' ');
  78.         putchar('\b');
  79.         fflush(stdout);
  80.         }
  81.     } else if (c == 24) {        /* Ctl-x */
  82.         if (n > 0) {
  83.         /* putchar('\r'); */
  84.         for (i=0; i<n; ++i) putchar('\b');
  85.         for (i=0; i<n; ++i) putchar(' ');
  86.         /* putchar('\r'); */
  87.         for (i=0; i<n; ++i) putchar('\b');
  88.         fflush(stdout);
  89.         n = 0;
  90.         }
  91.     } else if (c == 0x4) {        /* Ctl-d */
  92.         if (n == 0) goto END;
  93.         else buf[n++]=c;
  94.     } else {
  95.         buf[n++] = c;
  96.         putchar(c);
  97.         fflush(stdout);
  98.     }
  99.     if (n == len-2) goto END;
  100.     }
  101.   END:
  102.     buf[n] = '\0';
  103.     if (n==0) return((char *)NULL);
  104.     return(buf);
  105. }
  106. --
  107. $B?7(B$BEDA15W(B@$B65M\3XIt(B.$BEl5~Bg3X(B
  108.