#include <intuition/intuition.h>
#include <devices/timer.h>
#include <exec/ports.h>
#include <dos/dos.h>
#include <dos/dosextens.h>
#include <libraries/notifyintuition.h>
#include <workbench/startup.h>

#define ERRORNOMEM 1
#define TITLE      "BackClock V1.2"
#define OK         -1
struct specWin {
  ULONG posX ;
  ULONG posY ;
  ULONG width ;
  ULONG height ;
  ULONG back ;
} ;

struct prjSt {
  struct Window * win ;                   // remplit par OpenWindow()
  struct DateStamp * date ;					// date au format interne
  char   datestr[10] ;									// date au format ASCII
  UBYTE  heu ;												// heure
  UBYTE  min ;												// minute
  UBYTE  sec ;												// secondes
  UBYTE  oldH ;											// derniere heure affichée
  UBYTE  oldM ;											//     "     min      " 
  UBYTE  oldS ;											//     "     sec      " 
  struct RDArgs      * args ;							// ReadArgs
  struct timerequest * treq ;							// requete I/O timer.device
  struct MsgPort     * trport ;						// port rply timer
  UBYTE  timerok ;										// ouverture timer ok
  struct IntNotifyRequest * Notify ;				// requete notify
  struct MsgPort          * notifyPort ;			// port reply notify
  struct specWin backWin ;
} ;
struct backMsg {
  struct Message execmsg ;
  ULONG Class ; // not used
} ;

typedef prjSt idWin ;


// proto  
idWin * init(WBArg *) ;
void close(idWin *) ;
void getDate(idWin *) ;
void writeDate(idWin *) ;
extern void DateToByte(register __a0 char *, register __a1 idWin *) ;
void initwin(idWin * prj) ;
void processwin(idWin* prj) ;
void effacer(idWin * prj) ;
void retracer(idWin * prj) ;
int initTimer(idWin * prj) ;
void closeTimer(idWin * prj) ;
void runtimer(idWin * prj) ;
void setArgs(idWin * prj, LONG * args) ;
int readToolValue(char ** toolarr, char * argtype, int argdef) ;
int exists() ;