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

  1. /*
  2.  * test program for the very beginnings  (brother lsi1shot.c)
  3.  */
  4.  
  5. #include <signal.h>
  6. #include <sys/types.h>
  7. #include <stdio.h>
  8. #include <sys/drc.h>
  9. #include "../h/fifoio.h"
  10.  
  11. #define NW      32
  12. #define YES     1
  13. #define NO      0
  14.  
  15. int     onlsi1(), onlsi2();
  16.  
  17. struct fifobuf wbuffer, rbuffer;
  18.  
  19. struct drcROBOT drcROBOT  = {
  20.     (caddr_t) &wbuffer, /* this write buffer */
  21.     (caddr_t) &rbuffer, /* this is read buffer */
  22.     onlsi1,
  23.     onlsi2
  24. };
  25.  
  26. int fd, exch1, exch2;
  27.  
  28. main(argc,argv)
  29. char **argv;
  30. {
  31.     extern onbreak(), onhung();
  32.     register count;
  33.  
  34.     signal(SIGINT, onbreak);
  35.     signal(SIGHUP, onhung);
  36.  
  37.     if ((fd = open("/dev/drc0", 2)) < 0) {
  38.         printf("Can't open /dev/drc0 for write\n");
  39.         exit(1);
  40.     }
  41.     if ((count=write(fd, &drcROBOT, sizeof (struct drcROBOT)))
  42.          != sizeof (struct drcROBOT)) {
  43.         printf("write error initing drcROBOT, count:%d\n", count);
  44.         exit(9);
  45.     }
  46.     printf("send to lsi :\n");
  47.     for(count = 0; count < NW; ++count) {
  48.         wbuffer.data[count] = 052525;
  49.         rbuffer.data[count] = 0;
  50.         printf(" %o", wbuffer.data[count] & 0xffff);
  51.     }
  52.     wbuffer.wc = NW;
  53.  
  54.     printf("wait for interrupt\n");
  55.     while (exch1 == 0) {
  56.         nap(5);
  57.     }
  58.     close(fd);
  59.     printf("exch1 %d exch2 %d\n", exch1, exch2);
  60.     printf("wc = %d, got from lsi :\n", rbuffer.wc);
  61.     for (count = 0; count < NW; ++count) {
  62.         printf(" %o", rbuffer.data[count] & 0xffff);
  63.     }
  64. }
  65.  
  66.  
  67. onlsi1()
  68. {
  69.     exch1++;
  70. }
  71.  
  72.  
  73. onlsi2()
  74. {
  75.     exch2++;
  76. }
  77.  
  78.  
  79.  
  80. onbreak()
  81. {
  82.     close(fd);
  83.     printf("exch1 %d exch2 %d\n", exch1, exch2);
  84.     printf("program broken\n");
  85.     exit(3);
  86. }
  87.  
  88.  
  89.  
  90. onhung()
  91. {
  92.     close(fd);
  93.     printf("exch1 %d exch2 %d\n", exch1, exch2);
  94.     printf("program hung\n");
  95.     exit(4);
  96. }
  97.