/* * JOURNAL.H - Common header file for JOURNAL.C and PLAYBACK.C * * Copyright (c) 1987 by Davide P. Cervone * You may use this code provided this copyright notice is kept intact. */ #include #include #include #include #include #include #include #define ONE 1L extern struct MsgPort *CreatePort(); extern struct IOStdReq *CreateStdIO(); extern LONG AllocSignal(), Wait(), SetSignal(); extern struct Task *FindTask(); extern struct InputEvent *AllocMem(); extern FILE *fopen(); extern long errno, _OSERR; /* Lattice and DOS error numbers */ extern void RemoveHandler(); /* defined later on */ /* * assembly routine that gets called by the Input.Device which sets up * the stack and calls our input handler */ extern void myHandlerStub(); /* * Structure used to pack event data into a small space. This is the * format used to record that data in the journal file */ struct SmallEvent { union { struct { UBYTE se_IDType; /* ie_Class and ie_Code combined */ UBYTE se_Raw; /* RawKey Code */ UWORD se_PrevChar; /* previous key and qualifier */ } se_ID; ULONG se_XYpos; /* X in bits 0-11, Y in 12-23 (ie_Type in 24-31) */ } se_Long1; UWORD se_Qualifier; ULONG se_Long2; /* Micros in 0-19, Ticks in 20-32 */ }; #define se_Type se_Long1.se_ID.se_IDType #define se_Code se_Long1.se_ID.se_Raw #define se_Prev se_Long1.se_ID.se_PrevChar #define se_XY se_Long1.se_XYpos #define se_Ticks se_Long2 #define se_Micros se_Long2 #define se_Count se_Long2 /* * Some shorthands for InputEvent fields */ #define my_Prev ie_X #define my_Time ie_Secs /* micros since last event */ #define my_Ticks ie_Mics /* ticks since last event */ #define my_Ready ie_NextEvent /* TRUE when it can be posted */ #define my_InUse ie_Class /* TRUE when it is in use */ #define my_Saved ie_SubClass /* TRUE if is has been recorded */ #define my_Count my_Time /* number of compressed events */ #define ie_Secs ie_TimeStamp.tv_secs #define ie_Mics ie_TimeStamp.tv_micro #define COUNTMASK 0x3F /* how much of my_Count is count */ #define READY ((struct InputEvent *) TRUE) #define TIME (theEvent->ie_Mics-TimerMics) #define MILLION 1000000 #define XMINMOUSE xminmove #define YMINMOUSE yminmove #define XDEFMIN 8 /* default DX */ #define YDEFMIN 8 /* default DY */ #define LONGTIME 8 /* if this many ticks occur, we */ /* write out a dummy move to */ /* record the pause */ #define IE_SIZE sizeof(struct InputEvent) #define NEWEVENT AllocMem(IE_SIZE,0) #define FREEVENT(ev) FreeMem(ev,IE_SIZE) #define SIGBREAKF_ANY (SIGBREAKF_CTRL_C | SIGBREAKF_CTRL_D |\ SIGBREAKF_CTRL_E | SIGBREAKF_CTRL_F)