richr@iddic.UUCP (Rich Rodgers) (11/27/85)
/*
*
The following code is a C code example of how to set up and
use the timer device. The main section of code shows how to call and use the
timer. This code ,in general, shows how to use most of the many devices that
the Amiga uses. EX. printer, serial, parallel, timer, narrator...
Please use this code as much as possible. Do not include my name with it if
you do not want to. And sell it if you find anyone stupid enough to buy it.
RDS Software
9140 SW Locust St.
Tigard, OR 97223
(503) 246-9258
Makers of the most unique terminal emulation
software the Amiga will ever see!!!
*
*/
#include "exec/types.h"
#include "exec/nodes.h"
#include "exec/lists.h"
#include "exec/ports.h"
#include "exec/tasks.h"
#include "exec/io.h"
#include "devices/timer.h"
struct timerequest TimerIO;
struct MsgPort TimerMsgPort;
int tOpen() /* Open the serial device */
{
int error;
if ((error = OpenDevice(TIMERNAME, UNIT_VBLANK, &TimerIO, 0)) != 0)
return(error);
/* Set up the message port in the I/O request */
TimerMsgPort.mp_Node.ln_Type = NT_MSGPORT;
TimerMsgPort.mp_Node.ln_Name = "vt-timer";
TimerMsgPort.mp_Flags = 0;
TimerMsgPort.mp_SigBit = AllocSignal(-1);
TimerMsgPort.mp_SigTask = (struct Task *) FindTask((char *) NULL);
AddPort(&TimerMsgPort);
TimerIO.tr_node.io_Message.mn_ReplyPort = &TimerMsgPort;
return(0);
}
tClose()
{
CloseDevice(&TimerIO);
RemPort(&TimerMsgPort);
}
StartTimer(seconds, micros)
ULONG seconds, micros;
{
TimerIO.tr_node.io_Command = TR_ADDREQUEST;
TimerIO.tr_node.io_Flags = IOF_QUICK;
TimerIO.tr_time.tv_secs = seconds;
TimerIO.tr_time.tv_micro = micros;
SendIO(&TimerIO);
}
main()
{
int check;
check = tOpen();
if (check != 0)
{
printf("Timer device not available for use, Try next year!");
exit(0);
}
printf("starting to wait 3 seconds\n");
StartTimer(3, 0);
Wait(1 << TimerMsgPort.mp_SigBit);
printf("3 seconds up\n");
printf("starting to wait 10 seconds\n");
StartTimer(10, 0);
Wait(1 << TimerMsgPort.mp_SigBit);
printf("10 seconds up\n");
printf("starting to wait 10 seconds\n");
StartTimer(10, 0);
AbortIO(&TimerIO);
Wait(1 << TimerMsgPort.mp_SigBit);
printf("Timer Aborted with wait\n");
printf("starting to wait 10 seconds\n");
StartTimer(10, 0);
Wait(1 << TimerMsgPort.mp_SigBit);
printf("10 seconds up\n");
tClose();
}
--
RDS Software
9140 SW Locust St.
Tigard, OR 97223
(503) 246-9258
Makers of the most unique terminal emulation
software the Amiga will ever see!!!