home *** CD-ROM | disk | FTP | other *** search
/ Between Heaven & Hell 2 / BetweenHeavenHell.cdr / 500 / 470 / rccl072 < prev    next >
Text File  |  1987-03-02  |  2KB  |  90 lines

  1. #include "../h/stdio11.h"
  2. #include "../h/vaxio.h"
  3.  
  4. #define YES     1
  5. #define NO      0
  6. #define NWRD    16              /* read by the vax */
  7. #define NWWR    20              /* written by the vax */
  8.  
  9. extern int (* onclk)();
  10. extern int tick;
  11.  
  12. int exch, wc, delay, code;
  13. short obuf[NWRD], ibuf[NWWR];
  14.  
  15. struct drcdevice *dp = DRC_ADDR;
  16.  
  17. main()
  18. {
  19.     int send();
  20.     int i, tcc;
  21.  
  22.     setbuf(stdin,NULL);
  23.     setbuf(stdout,NULL);
  24.  
  25.     for(i = 0; i < NWRD; ++i)
  26.         obuf[i] = NWRD;
  27.  
  28.     exch = 0;
  29.     onclk = send;
  30.  
  31.     printf("\nflip switch to Micro and type <return> to begin ");
  32.     while (getchar() != '\n')
  33.         ;
  34.     printf("\ntick delay ");
  35.     scanf("%d%d", &tcc, &delay);
  36.  
  37.     while ((dp->drccsr & FIFO_EMPTY) == 0)
  38.         i = dp->drcbuf;
  39.  
  40.     tick = tcc;             /* from now the clock starts */
  41.  
  42.     while (tick)            /* do something in the background */
  43.         wait();
  44.     printf("exit ... exch = %d   wc = %d   code = %d\n", exch, wc, code);
  45.     for (i = 0; i < NWWR; ++i) {
  46.         printf("%d ", ibuf[i]);
  47.     }
  48. }
  49.  
  50. send()
  51. {
  52.     register int i;
  53.     int spin;
  54.  
  55.     wc = dr11(ibuf, obuf, NWRD);
  56.     if (wc != NWWR) {
  57.         code = -2;
  58.         tick = 0;
  59.         return;
  60.     }
  61.     if (ibuf[0] == 0) {
  62.         tick = 0;
  63.         code = 0;
  64.         return;
  65.     }
  66.     for(i=0; i < wc; ++i) {
  67.         if (ibuf[i] != NWWR) {
  68.             code = -3;
  69.             tick = 0;
  70.             return;
  71.         }
  72.     }
  73.     spin = delay;
  74.     while(spin--)
  75.         ;
  76.     ++exch;
  77. }
  78.  
  79.  
  80. zexit(n)
  81. int n;
  82. {
  83.     register struct drcdevice *dp = DRC_ADDR;
  84.  
  85.     tick = 0;
  86.     dp->drccsr = 0;
  87.     printf("\nexit %d\n", n);
  88.     halt();
  89. }
  90.