home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Club Amiga de Montreal - CAM
/
CAM_CD_1.iso
/
files
/
051.lha
/
Journal
/
journal.h
< prev
next >
Wrap
C/C++ Source or Header
|
1986-11-20
|
3KB
|
94 lines
/*
* 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 <libraries/dos.h>
#include <exec/io.h>
#include <exec/interrupts.h>
#include <exec/memory.h>
#include <devices/input.h>
#include <devices/inputevent.h>
#include <stdio.h>
#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)