home *** CD-ROM | disk | FTP | other *** search
- #include <mylib.h>
- #include <coproc.h>
-
- int c1, c2, c3 ;
-
- void far coproc (void)
- {
- WIN *w ;
- int ch ;
-
- /* Initialisierung */
- w = define_window (EFRAME,(BLUE<<4)+LIGHTGRAY,(BLUE<<4)+WHITE," COPROC ");
- open_window (w,HERE*5,(HERE<<1)+4,HERE*5+30,(HERE<<1)+14,(BLUE<<4)+YELLOW);
- clrscr();
- writef ("Coroutine %d\n",HERE);
- coreturn();
- do {
- swap_window (w);
- writefxy (1,3,"Stack : %u\n",costackfree());
- ch = getkey();
- switch (ch) {
- case '1' : if (HERE != c1)
- transfer (c1);
- break ;
- case '2' : if (HERE != c2)
- transfer (c2);
- break ;
- case '3' : if (HERE != c3)
- transfer (c3);
- break ;
- case '0' : close_window();
- exitcoproc();
- break ;
- } /* end switch */
- }
- while (1);
- } /* end of coproc */
-
- int main (void)
- {
-
- init_windows (0);
- initcoproc();
- /* Einrichten der Coroutinen */
- if ((c1 = newcoproc (coproc,1024)) == -1)
- return (255);
- if ((c2 = newcoproc (coproc,1024)) == -1)
- return (255);
- if ((c3 = newcoproc (coproc,1024)) == -1)
- return (255);
- /* Initialisierung der Coroutinen */
- transfer (c1);
- transfer (c2);
- transfer (c3);
- /* Start des Zyklus */
- transfer (c1);
- /* Ende des Programms */
- remcoproc (c1);
- remcoproc (c2);
- remcoproc (c3);
- return (0);
- }