/* k 0209	07/09/91	*//* to shorten loop & del restoredos */
/* k 0213	08/09/91	*//* escape */
/* k 0214	14/09/91	*//* escape */
/* k 0215	14/09/91	*//* return if pvtcom==-1 */
/* k 0224       23/09/91        *//* ebss */
/* k 0233	12/10/91	*//* Trn modules */
/* k 0269       18/11/91        *//* On-line exit */
/* @0312 - 4/03/92 - Parallel Foreground 2th Algorithm */
/* @0313 - 11/03/92 - int28h call */
#include <ebss.h>               /* @0224 */
/*#define DEBUG*/
#include <stdarg.h>
#include <stdlib.h>
#include <ctype.h>
#if (OS_TYPE==0)
#include <dir.h>
#include <process.h>
#include <io.h>
#endif
#include <stdio.h>
#include <string.h>
#include <fcntl.h>
#include <pconio.h>
#include "emadapt.h"
#if (OVL_TYPE==1)	/* @0233 */
extern void Trn_handler();	/* @0233 */
#endif			/* @0233 */
#if defined(DEBUG)
dosimit(short in)
{}
router ( ) {
int key,lo,hi,input,inp;
       do {
  for (key=0;key<3;key++)	/* @0209 */
	{int y=0;
      y++;
      y--;};/*задержка - timer tick imitation */
          my_1ch ( );           /* TEMPORARY */
	  if (kbhit ( ) ) {
	   key = bioskey(0);
	   lo = key & 0X00FF;
	   hi=(key & 0XFF00) >> 8;
	   input=(lo==0) ? hi+256:lo;
	   inp=hot_key(input);		/* @0215 */
	    if (!(vt_flag & VT_MODE) && (inp <= 0 ))
					   dosimit (input);
	    else {

      /* @0209 */
      if ((vt_flag & VT_MODE) && (vt_flag & VT_IO) && (inp==0))
						 handler (input);
      else
	pvtcom (input);		/* @0209 */

	     }
	   } /*kbhit*/
	  }       while (lo!=26);

}
#else
router (key)
int key;
 {
int input;
short rt,lo,hi;       /* @0269  @0312 */
 lo = key & 0X00FF;                 /*@0312    */
 hi=(key & 0XFF00) >> 8;            /*@0312    */
 key = ((lo == 0) ? hi + 256 : lo); /*@0312    */

#define FG_OPT    4	  /*  ;@0309 @0312 */
  if (!(optflg & FG_OPT))   {      /*  @0312  */
   if (pvtcom (key)==-1) return -1;	/* @0215 *//* @0269 */
while (1)
  {
   while (!bioskey(1)) call28 ();  /* &0313 */
   input=getkey ( );
   if ((vt_flag & VT_MODE) && (vt_flag & VT_IO) && (!hot_key (input))) {
#if (OVL_TYPE==1)			/* @0233 */
					   Trn_handler (input);	/* @0233 */
#else					/* @0233 */
					   handler ( input );	/* @0233 */
#endif					/* @0233 */
   }  else
   if ((rt=pvtcom (input))<0) 	/* @0209 *//* @0269 */
	   break; 		/* @0209 */
  }
 } else {     /*  @0312  */
   if ((vt_flag & VT_MODE) && (vt_flag & VT_IO) && (!hot_key (key))) { /*  @0312  */
#if (OVL_TYPE==1)			/* @0233 */             /*  @0312  */
					   Trn_handler (key);	/* @0233 */ /*  @0312  */
#else					/* @0233 */                         /*  @0312  */
					   handler (key );	/* @0233 */ /*  @0312  */
#endif					/* @0233 */
	rt=0;         /*  @0312  */
   }  else          /*  @0312  */
    rt=pvtcom (key);/*  @0312  */
 }            /*  @0312  */
  return rt;                    /* @0269 */
}
#endif

int hot_key (in)
 int in;
 {
 if ((in>=CTRLF1)&&(in<=CTRLF10)) return (1+in-CTRLF1);
 if (in==ALTX) return -1;
 return 0;
 }

/*
put_in_video (unsigned x, unsigned y, char l) {
  char far *a=MK_FP (vissegment,y*160+x*2-162);
  *a=l;
}  */

