/**FSTimer.c*************************************************************
 *									*
 *   SeePix -- by Hank Schafer						*
 *									*
 *   SeePix is an IFF Picture Viewer.  It works with Lo-Res,		*
 *   Med-Res, Hi-Res, HAM, and EHB formats.  I'm working on support     *
 *   for X-Specs, and Anim5 formats.					*
 *									*
 *   SeePix is based on a program by Olaf Barthel, called		*
 *   'LoadImage'.  As released, LoadImage had a couple of bugs. 	*
 *   The Amiga-Key alternatives to menu use didn't all work.  That's	*
 *   been fixed.  There were two separate print functions in LoadImage	*
 *   which behaved exactly the same.  The redundancy was eliminated.	*
 *   LoadImage used the Topaz ROMFONT, and made no allowances for a	*
 *   different system default font (under 2.04).  I added a built-in	*
 *   font.  I've reworked the code considerably from the original       *
 *   release, to allow for optimizations based on time and space.	*
 *									*
 *   SeePix features a palette tool which allows "tweaking" of colors	*
 *   prior to printing, allowing you to modify the color printout to	*
 *   more closely resemble the original graphics (Blue is Blue, not	*
 *   Purple).  SeePix can be Iconified.  SeePix features an ARP 	*
 *   interface.  SeePix now uses the PathMaster File Selector.		*
 *									*
 ************************************************************************
 *                                                                      *
 *   SeePix Copyright © 1992 by Hank Schafer; all rights reserved.      *
 *                                                                      *
 *   This program is free software; you can redistribute it and/or      *
 *   modify it under the terms of the GNU General Public License as     *
 *   published by the Free Software Foundation, either version 1, or    *
 *   (at your option) any later version.                                *
 *                                                                      *
 *   This program is distributed in the hope that it will be useful,    *
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of     *
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU  *
 *   General Public License for more details.                           *
 *                                                                      *
 *   You should have received a copy of the GNU General Public License  *
 *   along with this program; if not, write to:                         *
 *                 Free Software Foundation, Inc.                       *
 *                 675 Massachusetts Ave.                               *
 *                 Cambridge  MA  02139, USA                            *
 *                                                                      *
 **************** Special Function Copyright Notices ********************
 *									*
 ****LoadImage Copyright Notice:					*
 *									*
 *   LoadImage is © Copyright 1988, 1989, 1990 by MXM, all rights	*
 *   reserved, written by Olaf Barthel.  No guarantees of any kind are	*
 *   made that this program is 100% reliable.  Use this program on	*
 *   your own risk!							*
 *									*
 ****Iconify Copyright Notice:						*
 *									*
 *   Copyright 1987 by Leo L. Schwab.					*
 *   Permission is hereby granted for use in any and all programs,	*
 *   both Public Domain and commercial in nature, provided this 	*
 *   Copyright notice is left intact.					*
 *									*
 ****ColorWindow (Palette) Copyright Notice:				*
 *									*
 * ColorWindow Routine	--  Color Window Routines			*
 *     from Book 1 of the Amiga Programmers' Suite by RJ Mical          *
 *									*
 * Copyright (C) 1986, 1987, Robert J. Mical				*
 * All Rights Reserved. 						*
 *									*
 ****PathMaster Copyright Notice:					*
 *									*
 * -------------------------------------------------------------------- *
 *   Copyright © 1989 Justin V. McCormick.  All Rights Reserved.	*
 * -------------------------------------------------------------------- *
 *									*
 *    The PathMaster name is a trademark of Justin V. McCormick.	*
 *									*
 *   PathMaster File Selector source and documentation written by:	*
 *									*
 *			 Justin V. McCormick.				*
 *	       Copyright © 1989 by Justin V. McCormick. 		*
 *			 All Rights Reserved.				*
 *									*
 * -------------------------------------------------------------------- *
 ************************************************************************
 *									*
 *   Hope this is something you can use and enjoy.			*
 *									*
 ************************************************************************/

#ifdef	PATHMASTER

LONG
CreateVBTimer(name, pport, ptreq)
    BYTE	   *name;
    struct MsgPort **pport;
    struct timerequest **ptreq;
{
    if ((*pport = CreatePort(name, 0L)) != 0) {
	if ((*ptreq = (struct timerequest *) CreateExtIO(*pport, (LONG) sizeof(struct timerequest))) != 0) {
	    if (OpenDevice(TimerName, (LONG) UNIT_VBLANK, (struct IORequest *) * ptreq, 0L) == 0) {
		return (1L);
	    }
	}
    }
    return (0L);
}

/*
 * Initialize a VBLANK timer for scroll arrow timings
 */

LONG
InitFSVBDelay()
{
    return (CreateVBTimer(0L, &FSTimerPort, &FSDelayReq));
}

/*
 * Free above timer.
 */

VOID
FreeFSVBDelay()
{
    FreeVBTimer(&FSTimerPort, &FSDelayReq);
}

VOID
FreeVBTimer(pport, ptreq)
    struct MsgPort **pport;
    struct timerequest **ptreq;
{
    struct timerequest *treq;

    if (*pport != 0) {
	if ((treq = *ptreq) != 0) {
	    if (treq->tr_node.io_Device != 0) {
		AbortAsyncIO((struct IORequest *) treq);
		CloseDevice((struct IORequest *) treq);
	    }
	    DeleteExtIO((struct IORequest *) treq);
	    *ptreq = 0;
	}
	DeletePort(*pport);
	*pport = 0;
    }
}

VOID		__stdargs
FSVBDelay(timedelay)
    ULONG	    timedelay;
{
    FSDelayReq->tr_node.io_Command = TR_ADDREQUEST;
    FSDelayReq->tr_time.tv_micro = timedelay * 20000;
    FSDelayReq->tr_time.tv_secs = 0;
    (VOID) DoIO((struct IORequest *) FSDelayReq);
}

#endif	/* PATHMASTER */
