|
|
1.1 root 1: /*
2: Hatari - cycInt.h
3:
4: This file is distributed under the GNU Public License, version 2 or at
5: your option any later version. Read the file gpl.txt for details.
1.1.1.4 ! root 6:
! 7: (SC) Simon Schubiger - removed all MFP related code. NeXT does not have an MFP
1.1 root 8: */
9:
10: #ifndef HATARI_CYCINT_H
11: #define HATARI_CYCINT_H
12:
13: /* Interrupt handlers in system */
14: typedef enum
15: {
16: INTERRUPT_NULL,
17: INTERRUPT_VIDEO_VBL,
1.1.1.2 root 18: INTERRUPT_HARDCLOCK,
1.1.1.3 root 19: INTERRUPT_MOUSE,
20: INTERRUPT_ESP,
21: INTERRUPT_ESP_IO,
1.1.1.4 ! root 22: INTERRUPT_M2M_IO,
1.1.1.3 root 23: INTERRUPT_MO,
24: INTERRUPT_MO_IO,
25: INTERRUPT_ECC_IO,
26: INTERRUPT_ENET_IO,
27: INTERRUPT_FLP_IO,
1.1.1.4 ! root 28: INTERRUPT_SND_OUT,
! 29: INTERRUPT_SND_IN,
1.1.1.3 root 30: INTERRUPT_LP_IO,
1.1.1.4 ! root 31: INTERRUPT_EVENT_LOOP,
! 32: INTERRUPT_ND_VBL,
! 33: INTERRUPT_ND_VIDEO_VBL,
1.1 root 34: MAX_INTERRUPTS
35: } interrupt_id;
36:
1.1.1.4 ! root 37: /* Event timer structure - keeps next timer to occur in structure so don't need
! 38: * to check all entries */
1.1 root 39:
1.1.1.4 ! root 40: enum {
! 41: CYC_INT_NONE,
! 42: CYC_INT_CPU,
! 43: CYC_INT_US,
! 44: };
1.1 root 45:
1.1.1.4 ! root 46: typedef struct
! 47: {
! 48: int type; /* Type of time (CPU Cycles, microseconds) or NONE for inactive */
! 49: int64_t time; /* number of CPU cycles to go until interupt or absolute microsecond timeout until interrupt */
! 50: void (*pFunction)(void);
! 51: } INTERRUPTHANDLER;
! 52:
! 53: INTERRUPTHANDLER PendingInterrupt;
! 54:
! 55: extern int64_t nCyclesMainCounter;
! 56: extern int64_t nCyclesOver;
! 57:
! 58: extern int usCheckCycles;
! 59:
! 60: void CycInt_Reset(void);
! 61: void CycInt_MemorySnapShot_Capture(bool bSave);
! 62: void CycInt_AcknowledgeInterrupt(void);
! 63: void CycInt_AddRelativeInterruptCycles(int64_t CycleTime, interrupt_id Handler);
! 64: void CycInt_AddRelativeInterruptUs(int64_t us, int64_t usreal, interrupt_id Handler);
! 65: void CycInt_AddRelativeInterruptUsCycles(int64_t us, int64_t usreal, interrupt_id Handler);
! 66: void CycInt_RemovePendingInterrupt(interrupt_id Handler);
! 67: bool CycInt_InterruptActive(interrupt_id Handler);
! 68: bool CycInt_SetNewInterruptUs(void);
1.1 root 69:
70: #endif /* ifndef HATARI_CYCINT_H */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.