home *** CD-ROM | disk | FTP | other *** search
- /*
- * test program for the very beginnings (brother lsi1shot.c)
- */
-
- #include <signal.h>
- #include <sys/types.h>
- #include <stdio.h>
- #include <sys/drc.h>
- #include "../h/fifoio.h"
-
- #define NW 32
- #define YES 1
- #define NO 0
-
- int onlsi1(), onlsi2();
-
- struct fifobuf wbuffer, rbuffer;
-
- struct drcROBOT drcROBOT = {
- (caddr_t) &wbuffer, /* this write buffer */
- (caddr_t) &rbuffer, /* this is read buffer */
- onlsi1,
- onlsi2
- };
-
- int fd, exch1, exch2;
-
- main(argc,argv)
- char **argv;
- {
- extern onbreak(), onhung();
- register count;
-
- signal(SIGINT, onbreak);
- signal(SIGHUP, onhung);
-
- if ((fd = open("/dev/drc0", 2)) < 0) {
- printf("Can't open /dev/drc0 for write\n");
- exit(1);
- }
- if ((count=write(fd, &drcROBOT, sizeof (struct drcROBOT)))
- != sizeof (struct drcROBOT)) {
- printf("write error initing drcROBOT, count:%d\n", count);
- exit(9);
- }
- printf("send to lsi :\n");
- for(count = 0; count < NW; ++count) {
- wbuffer.data[count] = 052525;
- rbuffer.data[count] = 0;
- printf(" %o", wbuffer.data[count] & 0xffff);
- }
- wbuffer.wc = NW;
-
- printf("wait for interrupt\n");
- while (exch1 == 0) {
- nap(5);
- }
- close(fd);
- printf("exch1 %d exch2 %d\n", exch1, exch2);
- printf("wc = %d, got from lsi :\n", rbuffer.wc);
- for (count = 0; count < NW; ++count) {
- printf(" %o", rbuffer.data[count] & 0xffff);
- }
- }
-
-
- onlsi1()
- {
- exch1++;
- }
-
-
- onlsi2()
- {
- exch2++;
- }
-
-
-
- onbreak()
- {
- close(fd);
- printf("exch1 %d exch2 %d\n", exch1, exch2);
- printf("program broken\n");
- exit(3);
- }
-
-
-
- onhung()
- {
- close(fd);
- printf("exch1 %d exch2 %d\n", exch1, exch2);
- printf("program hung\n");
- exit(4);
- }
-