|
|
1.1 root 1: /*
2: Hatari
3: */
4:
5: // Interrupt handlers in system
6: enum {
7: INTERRUPT_NULL,
8:
9: #ifdef USE_DEBUGGER
10: INTERRUPT_DEBUGGER,
11: INTERRUPT_SINGLESTEP,
12: #endif //USE_DEBUGGER
13:
14: INTERRUPT_VIDEO_VBL,
15: INTERRUPT_VIDEO_VBL_PENDING,
16: INTERRUPT_VIDEO_HBL,
17: INTERRUPT_VIDEO_ENDLINE,
18: INTERRUPT_MFP_TIMERA,
19: INTERRUPT_MFP_TIMERB,
20: INTERRUPT_MFP_TIMERC,
21: INTERRUPT_MFP_TIMERD,
22: INTERRUPT_IKBD_RESETTIMER,
23: INTERRUPT_IKBD_ACIA,
24:
25: MAX_INTERRUPTS
26: };
27:
28: // Event timer structure - keeps next timer to occur in structure so don't need to check all entries
29: typedef struct {
30: BOOL bUsed; // Is interrupt active?
31: int Cycles;
32: void *pFunction;
33: } INTERRUPTHANDLER;
34:
35: extern void *pIntHandlerFunctions[];
36: extern int nCyclesOver;
37: extern int nFrameCyclesOver;
38:
39: extern void Int_Reset(void);
40: extern void Int_MemorySnapShot_Capture(BOOL bSave);
41: extern int Int_HandlerFunctionToID(void *pHandlerFunction);
42: extern void *Int_IDToHandlerFunction(int ID);
43: extern int Int_FindFrameCycles(void);
44: extern void Int_SetNewInterrupt(void);
45: extern void Int_AcknowledgeInterrupt(void);
46: extern void Int_AddAbsoluteInterrupt(int CycleTime, int Handler);
47: extern void Int_AddRelativeInterrupt(int CycleTime, int Handler);
48: extern void Int_RemovePendingInterrupt(int Handler);
49: extern BOOL Int_InterruptActive(int Handler);
50: extern int Int_FindCyclesPassed(int Handler);
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.