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_ */