|
|
1.1 root 1: /*
2: Hatari
3: */
4:
1.1.1.3 root 5: #ifndef HATARI_DECODE_H
6: #define HATARI_DECODE_H
1.1 root 7:
1.1.1.3 root 8: #include "sound.h"
1.1 root 9:
10: #include "sysdeps.h"
1.1.1.4 ! root 11: #include "maccess.h"
1.1 root 12: #include "memory.h"
13: #include "newcpu.h"
1.1.1.4 ! root 14:
1.1 root 15: #define Regs regs.regs /* Ouah - uggly hack - FIXME! */
16: #define SR regs.sr
17: #define PC regs.pc
18:
19:
1.1.1.3 root 20: #define PENDING_INTERRUPT_FLAG_MFP 0x0001 /* 'PendingInterruptFlag' masks */
21: #define PENDING_INTERRUPT_FLAG_TRACE 0x0002
22: #define CLEAR_PENDING_INTERRUPT_FLAG_MFP 0xfffe
23: #define CLEAR_PENDING_INTERRUPT_FLAG_TRACE 0xfffd
24:
25:
26: extern unsigned char STRam[16*1024*1024];
27: extern short int PendingInterruptFlag;
28: extern void *PendingInterruptFunction;
29: extern short int PendingInterruptCount;
30: extern unsigned long STRamEnd;
31: extern unsigned long STRamEnd_BusErr;
32: extern unsigned long ExceptionVector;
33: extern unsigned long BusAddressLocation;
34:
1.1 root 35:
36: /*-----------------------------------------------------------------------*/
1.1.1.3 root 37: /* Offset ST address to PC pointer: */
38: #define STRAM_ADDR(Var) ((unsigned long)STRam+((unsigned long)Var&0x00ffffff))
39:
1.1 root 40:
41: /*-----------------------------------------------------------------------*/
42: /* Set clock times for each instruction, see '68000 timing' pages for details */
43: /* NOTE All times are rounded up to nearest 4 cycles */
44: #define ROUND_CYCLES_TO4(var) (((int)(var)+3)&0xfffffffc)
45:
46: static inline void ADD_CYCLES(op,r,w)
47: {
1.1.1.3 root 48: PendingInterruptCount-= (op+3)&0xfffffffc;
49: SoundCycles += (op+3)&0xfffffffc;
1.1 root 50: }
51:
52:
1.1.1.3 root 53: #endif /* HATARI_DECODE_H */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.