//
//  $Log: Timer.c,v $
//  Revision 1.1  1994/02/21  20:21:46  hakan
//  Initial revision
//
//



#include <config.h>
#include <machine.h>
#include <protoypes.h>



short                   TimeDevFlag     = 0;
struct timerequest      *TimeReq        = NULL;
struct MsgPort          *TimePort       = NULL;
struct Library          *TimerBase      = NULL;


void SetupTimer (void)
{
    if  (TimePort = (struct MsgPort *) CreateMsgPort ())
    {
        if  (TimeReq = (struct timerequest *) CreateIORequest (TimePort, sizeof (struct timerequest)))
        {
            if  (TimeDevFlag = !OpenDevice (TIMERNAME, UNIT_MICROHZ, (struct IORequest *) TimeReq, 0L))
            {
                TimerBase = (struct Library *) TimeReq->tr_node.io_Device;

                TimeReq->tr_node.io_Message.mn_ReplyPort    = TimePort;
                TimeReq->tr_node.io_Command                 = TR_ADDREQUEST;
                TimeReq->tr_node.io_Flags                   = 0L;
                TimeReq->tr_node.io_Error                   = 0L;

                return;
            }
        }
    }
    
    exit (5);
}



void ShutDownTimer (void)
{
    AbortIO ((struct IORequest*) TimeReq);

    if (TimeDevFlag)    CloseDevice     ((struct IORequest *) TimeReq);
    if (TimeReq)        DeleteIORequest (TimeReq);
    if (TimePort)       DeleteMsgPort   (TimePort);

}



struct timerequest* GetTimeReq (void)
{
    return (TimeReq);
}



struct MsgPort* GetTimePort (void)
{
    return (TimePort);
}
