cpu.h
 1  #ifndef CPU_H_
 2  #define CPU_H_
 3  
 4  #include "atari.h"
 5  
 6  #define CPU_N_FLAG 0x80
 7  #define CPU_V_FLAG 0x40
 8  #define CPU_B_FLAG 0x10
 9  #define CPU_D_FLAG 0x08
10  #define CPU_I_FLAG 0x04
11  #define CPU_Z_FLAG 0x02
12  #define CPU_C_FLAG 0x01
13  
14  void CPU_GetStatus(void);
15  void CPU_PutStatus(void);
16  void CPU_Reset(void);
17  void CPU_StateSave(UBYTE SaveVerbose);
18  void CPU_StateRead(UBYTE SaveVerbose, UBYTE StateVersion);
19  void CPU_NMI(void);
20  void CPU_GO(int limit);
21  #define CPU_GenerateIRQ() (CPU_IRQ = 1)
22  
23  extern UWORD CPU_regPC;
24  extern UBYTE CPU_regA;
25  extern UBYTE CPU_regP;
26  extern UBYTE CPU_regS;
27  extern UBYTE CPU_regY;
28  extern UBYTE CPU_regX;
29  
30  #define CPU_SetN CPU_regP |= CPU_N_FLAG
31  #define CPU_ClrN CPU_regP &= (~CPU_N_FLAG)
32  #define CPU_SetV CPU_regP |= CPU_V_FLAG
33  #define CPU_ClrV CPU_regP &= (~CPU_V_FLAG)
34  #define CPU_SetB CPU_regP |= CPU_B_FLAG
35  #define CPU_ClrB CPU_regP &= (~CPU_B_FLAG)
36  #define CPU_SetD CPU_regP |= CPU_D_FLAG
37  #define CPU_ClrD CPU_regP &= (~CPU_D_FLAG)
38  #define CPU_SetI CPU_regP |= CPU_I_FLAG
39  #define CPU_ClrI CPU_regP &= (~CPU_I_FLAG)
40  #define CPU_SetZ CPU_regP |= CPU_Z_FLAG
41  #define CPU_ClrZ CPU_regP &= (~CPU_Z_FLAG)
42  #define CPU_SetC CPU_regP |= CPU_C_FLAG
43  #define CPU_ClrC CPU_regP &= (~CPU_C_FLAG)
44  
45  extern UBYTE CPU_IRQ;
46  
47  extern void (*CPU_rts_handler)(void);
48  
49  extern UBYTE CPU_cim_encountered;
50  
51  #define CPU_REMEMBER_PC_STEPS 64
52  extern UWORD CPU_remember_PC[CPU_REMEMBER_PC_STEPS];
53  extern UBYTE CPU_remember_op[CPU_REMEMBER_PC_STEPS][3];
54  extern unsigned int CPU_remember_PC_curpos;
55  extern int CPU_remember_xpos[CPU_REMEMBER_PC_STEPS];
56  
57  #define CPU_REMEMBER_JMP_STEPS 16
58  extern UWORD CPU_remember_JMP[CPU_REMEMBER_JMP_STEPS];
59  extern unsigned int CPU_remember_jmp_curpos;
60  
61  #ifdef MONITOR_PROFILE
62  extern int CPU_instruction_count[256];
63  #endif
64  
65  #endif /* CPU_H_ */