/* 6809.h - header for monitor and simulator Copyright (C) 2001 Arto Salmi This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef __M6809_H_ #define __M6809_H_ 1 #define R_A 1 #define R_B (1<<1) #define R_AB (R_A|R_B) #define R_D (1<<2) #define R_X (1<<3) #define R_Y (1<<4) #define R_S (1<<5) #define R_U (1<<6) #define R_PC (1<<7) #define R_DP (1<<8) #define R_CC (1<<9) #define R_H (1<<10) #define R_N (1<<11) #define R_Z (1<<12) #define R_V (1<<13) #define R_C (1<<14) #define R_HNZVC (R_H|R_N|R_Z|R_V|R_C|R_E) /*TESTING*/ #define R_EFI (1<<15) #define R_VAL (1<<16) #define R_RES (1<<17) #define R_MSN (1<<18) #define R_LSN (1<<19) #define R_EA (1<<20) #define R_CLOCKTICKS (1<<21) #define R_ARG (1<<22) #define R_E (1<<23) #define R_F (1<<24) #define R_I (1<<25) #define R_Always (1<<26) // remember to recompile 6809dasm.c whenever R_Always changes! /* Only used in flush() code. Don't flush pseudo-regs that are always lost after translating a single opcode. */ //#define R_FLUSH (((unsigned int)-1) & (~R_RES) & (~R_VAL) & (~R_EA) & (~R_ARG_ ) // #define R_FLUSH (R_A|R_B|R_X|R_Y|R_S|R_U|R_PC|R_DP|R_HNZVC|R_Always) #define R_FLUSH (R_A|R_B|R_X|R_Y|R_S|R_U|R_PC|R_DP|R_HNZVC|R_CLOCKTICKS|R_Always) typedef unsigned char UINT8; typedef signed char INT8; typedef unsigned short UINT16; typedef signed short INT16; typedef unsigned int UINT32; typedef signed int INT32; // CC=EFHINZVC #define E_FLAG 0x80 #define F_FLAG 0x40 #define H_FLAG 0x20 #define I_FLAG 0x10 #define N_FLAG 0x08 #define Z_FLAG 0x04 #define V_FLAG 0x02 #define C_FLAG 0x01 extern UINT8 *memory; extern int Gen_C; extern int Gen_Switch; extern int Do_Timing; extern int Single_Step; extern int Accessible; /* 6809.c */ extern int VECTREX; extern void translate6809 (int CodePC, int NextPC, int cycles); extern void cpu_reset (void); extern void dumpf(int def, int use, char *s, ...); /* vectrex-regs.c */ extern char *Name[0x10000]; extern int In[0x10000], Out[0x10000], Trash[0x10000]; extern unsigned char DP_In[0x10000], DP_Out[0x10000]; extern void init_vectrex_bios(void); #endif /* __M6809_H_ */