/*************************************************************************** * * Retrocade - Video game emulator * Copyright 1998, The Retrocade group * * Permission to distribute the Retrocade executable *WITHOUT GAME ROMS* is * granted to all. It may not be sold without the express written permission * of the Retrocade development team or appointed representative. * * Source code is *NOT* distributable without the express written * permission of the Retrocade group. * * Cinematronics CPU header file * ***************************************************************************/ #ifndef _C_CPU_H_ #define _C_CPU_H_ /*============================================================================================* HERE BEGINS THE MAME-SPECIFIC ADDITIONS TO THE CCPU INTERFACE. *============================================================================================*/ /* added these includes */ /*#include "osd_cpu.h"*/ /*#include "memory.h"*/ enum { CCPU_PC=1, CCPU_ACC, CCPU_CMP, CCPU_PA0, CCPU_CFLAG, CCPU_A, CCPU_B, CCPU_I, CCPU_J, CCPU_P, CCPU_CSTATE }; #ifndef FALSE #define FALSE 0 #endif #ifndef TRUE #define TRUE (!FALSE) #endif /* constants for configuring the system */ #define CCPU_PORT_IOSWITCHES 0 #define CCPU_PORT_IOINPUTS 1 #define CCPU_PORT_IOOUTPUTS 2 #define CCPU_PORT_IN_JOYSTICKX 3 #define CCPU_PORT_IN_JOYSTICKY 4 #define CCPU_PORT_MAX 5 #define CCPU_MEMSIZE_4K 0 #define CCPU_MEMSIZE_8K 1 #define CCPU_MEMSIZE_16K 2 #define CCPU_MEMSIZE_32K 3 #define CCPU_MONITOR_BILEV 0 #define CCPU_MONITOR_16LEV 1 #define CCPU_MONITOR_64LEV 2 #define CCPU_MONITOR_WOWCOL 3 /*============================================================================================* BELOW LIES THE CORE OF THE CCPU. THE CODE WAS KINDLY GIVEN TO MAME BY ZONN MOORE, JEFF MITCHELL, AND NEIL BRADLEY. I HAVE PRETTY HEAVILY CLEANED IT UP. *============================================================================================*/ /* Define new types for the c-cpu emulator */ typedef short unsigned int CINEWORD; /* 12bits on the C-CPU */ typedef unsigned char CINEBYTE; /* 8 (or less) bits on the C-CPU */ typedef short signed int CINESWORD; /* 12bits on the C-CPU */ typedef signed char CINESBYTE; /* 8 (or less) bits on the C-CPU */ typedef unsigned long int CINELONG; typedef enum { state_A = 0, state_AA, state_B, state_BB } CINESTATE; /* current state */ /* NOTE: These MUST be in this order! */ struct scCpuStruct { CINEWORD accVal; /* CCPU Accumulator value */ CINEWORD cmpVal; /* Comparison value */ CINEBYTE pa0; CINEBYTE cFlag; CINEWORD eRegPC; CINEWORD eRegA; CINEWORD eRegB; CINEWORD eRegI; CINEWORD eRegJ; CINEBYTE eRegP; CINESTATE eCState; }; typedef struct scCpuStruct CONTEXTCCPU; #endif