#include <ctype.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#include <setjmp.h>

#include "extern.h"

extern jmp_buf env;


chat()
       {   int ch,sysflg = 0,userflg = 0;
           
           if ( ! moniflg )   return(0);
           ch = getch();
           if ( ch != 0x1a ) return(0);     /* chat ÍÉ ºÝÄÛ°Ù Ê ctrl-z */
           
		   strcpy(ssent,"\n********** CHAT IN ************\n");
		   rsout();
           while(1)
              { 
		        if ( ! chkcd() ) { *(ssent) = NULL; longjmp(env,1); }
							   /* con ¼Þ®³À² ÃÞ Å¹ÚÊÞ ÓÄÞÙ */
  
				if( rshit() && ! sysflg )
                    {  ch = rsbread();
                       if ( ch == 0x18 )
						  { break;
						  }
					   if ( ch == '\b' )
							{ 
							  putchar('\b'); rsbwrite('\b',1);
					  		  putchar(' ');  rsbwrite(' ',1);
							  putchar('\b'); rsbwrite('\b',1);
							}

                       if ( ! iscntrl(ch) ) 
							  { putchar(ch);
								rsbwrite(ch,1);
								userflg = 1; }
					   if ( ch == '\r' )  {
											putchar(ch);
											rsbwrite('\n',1);
											userflg = 0;
										  }
					   addlf(ch);
                    }
                  if (kbhit() && ! userflg )
                    {  ch = getch();
                       if ( ch == 0x18 )
						  { break;
						  }
                       if ( ch == '\b' ) { putchar('\b');
                                           putchar(' ');
                                           putchar('\b');  }
                       if ( ! iscntrl(ch) )
							  { 
								putchar(ch);
								rsbwrite(ch,1);
								sysflg = 1; } 
					   if ( ch == '\r' ) { putchar(ch); addlf(ch);
										   rsbwrite('\n',1);
										   sysflg = 0;
										 }
                    }
               }     
		strcpy(ssent,"\n********** CHAT OUT ************\n");
		rsout();
		return(0);  /* ctrl-x for chat end */
        }                              

