1  /*
2   * UAE - The Un*x Amiga Emulator
3   *
4   * Events
5   * These are best for low-frequency events. Having too many of them,
6   * or using them for events that occur too frequently, can cause massive
7   * slowdown.
8   *
9   * Copyright 1995-1998 Bernd Schmidt
10   */
11 
12 #ifndef HATARI_EVENT_H
13 #define HATARI_EVENT_H
14 
15 #undef EVENT_DEBUG
16 
17 #define do_cycles do_cycles_slow
18 
19 extern void reset_frame_rate_hack (void);
20 extern int rpt_available;
21 
22 extern void compute_vsynctime (void);
23 extern void init_eventtab (void);
24 extern void do_cycles_ce (long cycles);
25 extern void do_cycles_ce020 (int clocks);
26 extern void do_cycles_ce020_mem (int clocks);
27 extern void do_cycles_ce000 (int clocks);
28 extern int is_cycle_ce (void);
29 extern int current_hpos (void);
30 
31 static void events_schedule (void);
32 
33 extern unsigned long currcycle, nextevent, is_lastline;
34 typedef void (*evfunc)(void);
35 typedef void (*evfunc2)(uae_u32);
36 
37 typedef unsigned long int evt;
38 
39 struct ev
40 {
41     int active;
42     evt evtime, oldcycles;
43     evfunc handler;
44 };
45 
46 struct ev2
47 {
48     int active;
49     evt evtime;
50     uae_u32 data;
51     evfunc2 handler;
52 };
53 
54 enum {
55     ev_hsync, ev_audio, ev_cia, ev_misc,
56     ev_max
57 };
58 
59 enum {
60     ev2_blitter, ev2_disk, ev2_misc,
61     ev2_max = 12
62 };
63 
64 extern struct ev eventtab[ev_max];
65 extern struct ev2 eventtab2[ev2_max];
66 
67 extern void event2_newevent (int, evt, uae_u32);
68 extern void event2_newevent2 (evt, uae_u32, evfunc2);
69 extern void event2_remevent (int);
70 
71 /*#if 0
72 #ifdef JIT
73 #include "events_jit.h"
74 #else
75 #include "events_normal.h"
76 #endif
77 #else
78 #include "events_jit.h"
79 #endif
80 */
81 
82 #include "events_normal.h"
83 
84 
cycles_in_range(unsigned long endcycles)85 STATIC_INLINE bool cycles_in_range (unsigned long endcycles)
86 {
87 	signed long c = get_cycles ();
88 	return (signed long)endcycles - c > 0;
89 }
90 
91 #endif //HATARI_EVENT_H
92