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