home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 13 / 13.iso / s / s001 / 1.ddi / TS / SRC / TSSPY.C < prev    next >
Encoding:
C/C++ Source or Header  |  1990-04-12  |  2.2 KB  |  115 lines

  1. #include <compiler.h>
  2. #include <ts.h>
  3.  
  4.  
  5. extern TIMER *_tpfrnt;
  6. extern int   _ts_trace;
  7.  
  8.  
  9. TS_SPY()
  10. {
  11.   PROCESS *p, *pl[20];
  12.   CHAN      *cn;
  13.   INTLST  *il;
  14.   TIMER   *tp;
  15.   CRCLASS *cr;
  16.   int      Line, i, cpuflags;
  17.   char      *s = "SXC  ";
  18.  
  19.   for (;;)
  20.   {
  21.       {
  22.      char *s = "DOS 0";
  23.      s[4] = '0' + *_DosFlag;
  24.      prout(75, 1, NORMVID, s);
  25.       }
  26.  
  27.       for (i = 0; i < 4; i++)
  28.       {
  29.       char *s = "0 ";
  30.       if (crit_tab[i].crcur)
  31.       {
  32.          cpuflags = cli() ;
  33.  
  34.          cr = &crit_tab[i];
  35.          s[0] = '0' + cr->crlev;  prout(20, i + 1, NORMVID, s);
  36.          prout(22, i + 1, NORMVID, cr->crcur->name);
  37.          if (cr->crblkd)
  38.         prout(30, i + 1, NORMVID, cr->crblkd->name);
  39.          else
  40.         prout(30, i + 1, NORMVID, "        ");
  41.  
  42.          putf(cpuflags);
  43.       }
  44.       else prout(20, i + 1, NORMVID, "                  ");
  45.       }
  46.  
  47.       cpuflags = cli();
  48.       pl[i = 1] = curproc;
  49.  
  50.       for (p = curproc->nxt; p != curproc; p = p->nxt)
  51.       {
  52.       pl[++i] = p;
  53.       if (i >= 20) break;
  54.       }
  55.       putf( cpuflags ) ;
  56.  
  57.       Line = 1;
  58.       for (Line = 1; Line <= i; ++Line)
  59.       {
  60.      char *s = "SXC  ";
  61.  
  62.      p = pl[Line];
  63.      if (! (p->status & (ASLEEP | CRITWAIT | CHANWAIT)))
  64.         prout(44, Line, NORMVID, "GO   ");
  65.      else
  66.      {
  67.         s[0] = (p->status & ASLEEP    ) ? 'S' : ' ';
  68.         s[1] = (p->status & CHANWAIT) ? 'C' : ' ';
  69.         if (p->status & CRITWAIT)
  70.         {
  71.            s[2] = 'X';
  72.            s[3] = p->crwait + '0';
  73.         }
  74.         else
  75.         {
  76.            s[2] = ' ';
  77.            s[3] = ' ';
  78.         }
  79.         prout(44, Line, NORMVID, s);
  80.      }
  81.  
  82.      prout(50, Line, NORMVID, p->name);
  83.       }
  84.       prout(50, Line, NORMVID, "      ");
  85.  
  86.  
  87.       Line = 1;
  88.       for( cn = _chfrnt ; cn; cn = cn->nxt)
  89.       prout(60, Line++, NORMVID, cn->cname);
  90.  
  91.       Line = 1;
  92.       for( il = (INTLST*)&ilhead ; il->nxt; il = il->nxt )
  93.       prout(70, Line++, NORMVID, "*");
  94.       prout(70, Line, NORMVID, " ");
  95.  
  96.       Line = 1;
  97.       for( tp = _tpfrnt ; tp ; tp = tp->nxt )
  98.       prout(72, Line++, NORMVID, "T");
  99.  
  100.       prout(72, Line, NORMVID, " ");
  101.  
  102.  
  103.       guc();
  104.   }
  105. }
  106.  
  107.  
  108. GLOBAL TS_LIST()
  109. {
  110.   static PROCESS *spy = NULLPTR;
  111.  
  112.   if (spy) { kill(spy); spy = NULLPTR; _ts_trace = 0;}
  113.      else  { spy = spawn("Big Spy", 0x100, TS_SPY); _ts_trace = 1; }
  114. }
  115.