home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The Fred Fish Collection 1.5
/
ffcollection-1-5-1992-11.iso
/
ff_disks
/
200-299
/
ff247.lzh
/
RemoteLogin
/
spmon.c
< prev
Wrap
C/C++ Source or Header
|
1989-09-15
|
2KB
|
107 lines
/* Placed in the public domain by the author David Kinzer */
#include "exec/types.h"
#include "exec/nodes.h"
#include "exec/lists.h"
#include "exec/ports.h"
#include "exec/libraries.h"
#include "exec/devices.h"
#include "exec/io.h"
#include "devices/serial.h"
#include "hardware/cia.h"
main(ac,av)
int ac;
char *av[];
{
unsigned char status = CIAF_COMCD;
unsigned char newstat;
if (ac < 2) return;
for (;;) {
/* wait until the carrier detect bit makes a high to low */
/* transition indicating new carrier detect. */
newstat = ciab.ciapra & CIAF_COMCD;
if (newstat != status) {
status = newstat;
if (status) {
/* ignore this, phone just hung up */
} else {
/* the carrier detect just came up */
/* check serial device to see if anyone else is using */
/* this. If so, we ignore, else, we fire up the task */
if (openamigaserial()) {
/* it errored, someone else is using */
} else {
/* ours, close serial device, and start routine */
closeamigaserial();
Execute(av[1],0L,0L);
}
}
}
/* Delay a while, ain't multitasking easy? */
Delay(150L);
}
}
/* Standard Amiga Serial Port Routines */
static struct Port *mySerPort;
struct IOExtSer *mySerReq;
int openamigaserial()
{
int gotport = 0;
int gotextio = 0;
long error;
long OpenDevice();
VOID *CreateExtIO();
struct Port *CreatePort();
mySerPort = CreatePort("mySerial",0L);
if (mySerPort == NULL)
goto errorexit;
gotport = 1;
mySerReq = (struct IOExtSer *)CreateExtIO(mySerPort,
(long)sizeof(struct IOExtSer));
if (mySerReq == NULL)
goto errorexit;
gotextio = 1;
error = OpenDevice("serial.device",0L,mySerReq,0L);
if (error)
goto errorexit;
return 0; /* return success */
errorexit:
if (gotextio)
DeleteExtIO(mySerReq,sizeof(struct IOExtSer));
if (gotport)
DeletePort(mySerPort);
return 1; /* return error */
}
closeamigaserial()
{
CloseDevice(mySerReq);
DeleteExtIO(mySerReq,sizeof(struct IOExtSer));
DeletePort(mySerPort);
}