home *** CD-ROM | disk | FTP | other *** search
/ The Fred Fish Collection 1.5 / ffcollection-1-5-1992-11.iso / ff_disks / 200-299 / ff246.lzh / Ty / src / io.c < prev    next >
C/C++ Source or Header  |  1989-09-14  |  2KB  |  70 lines

  1. /*************************************************************************
  2.  ***                        io.c                         (JJB TEMPLAR) ***
  3.  *** Date modifications begun: 7/8/89.                                 ***
  4.  *** Last modified: 8/8/89.                                            ***
  5.  *************************************************************************/
  6. /*** Used to be MicroEMACS AmigaDOS (V31) terminal I/O. Hmmm.          ***
  7.  *************************************************************************/
  8.  
  9. #include <exec/types.h>
  10.  
  11. #include "win.h"
  12.  
  13. #define   NOBUF   512      /* Not too big for 750/730.   */
  14.  
  15. int     tty;
  16. char    obuf[NOBUF];    /* Output buffer */
  17. int     nobuf;          /* # of bytes in above */
  18.  
  19. void    ttopen();
  20. void    ttclose();
  21. void    ttputc(int);
  22. void    ttflush();
  23. void    ttputs(char *);
  24. void    tputs(char *);
  25.  
  26. void    ttopen() /*======================================================*/
  27. {                /* Open terminal channel.                               */
  28.     if (tty) return;    /* Already open. */
  29.     nobuf = 0;
  30.     tOpen();            /* Will die appropriately if failure occurs. */
  31. }
  32.  
  33. void    ttclose() /*=====================================================*/
  34. {
  35.     if (tty) {
  36.         ttflush();
  37.         tClose();       /* Error resistant. Also sets tty to NULL. */
  38.     }
  39. }
  40.  
  41. void    ttputc(c) /*=====================================================*/
  42. int     c;        /* Write char to display.                              */
  43. {
  44.     if (nobuf >= NOBUF) ttflush();  /* Out of buffer, flush. */
  45.     obuf[nobuf++] = c;              /* Else just put in buffer. */
  46. }
  47.  
  48. void    ttflush() /*=====================================================*/
  49. {                 /* Output buffer, reset counter.                       */
  50.     if (nobuf > 0) {
  51.         tWrite(obuf,nobuf);   /* Go! */
  52.         nobuf = 0;
  53.     }
  54. }
  55.  
  56. void    ttputs(s) /*=====================================================*/
  57. register char *s; /* Output a string to the terminal.                    */
  58. {
  59.     while (*s) ttputc(*s++);
  60.     ttflush();
  61. }
  62.  
  63. void    tputs(s) /*======================================================*/
  64. char *s;
  65. {
  66.     if (!tty) ttopen();
  67.     flush();
  68.     ttputs(s);  /* Pass it on... */
  69. }
  70.