clipper: Scope down enums (nw)

This commit is contained in:
AJR 2017-04-12 15:20:55 -04:00
parent d37b6d9b4f
commit 0f510928f8

View File

@ -7,7 +7,37 @@
#include <limits.h>
enum clipper_registers
// convenience macros for frequently used instruction fields
#define R1 (m_info.r1)
#define R2 (m_info.r2)
// convenience macros for dealing with the psw
#define PSW(mask) (m_psw & PSW_##mask)
#define SSW(mask) (m_ssw & SSW_##mask)
// macros for setting psw condition codes
#define FLAGS(C,V,Z,N) \
m_psw = (m_psw & ~(PSW_C | PSW_V | PSW_Z | PSW_N)) | (((C) << 3) | ((V) << 2) | ((Z) << 1) | ((N) << 0));
#define FLAGS_CV(C,V) \
m_psw = (m_psw & ~(PSW_C | PSW_V)) | (((C) << 3) | ((V) << 2));
#define FLAGS_ZN(Z,N) \
m_psw = (m_psw & ~(PSW_Z | PSW_N)) | (((Z) << 1) | ((N) << 0));
// over/underflow for addition/subtraction from here: http://stackoverflow.com/questions/199333/how-to-detect-integer-overflow-in-c-c
#define OF_ADD(a, b) ((b > 0) && (a > INT_MAX - b))
#define UF_ADD(a, b) ((b < 0) && (a < INT_MIN - b))
#define OF_SUB(a, b) ((b < 0) && (a > INT_MAX + b))
#define UF_SUB(a, b) ((b > 0) && (a < INT_MIN + b))
// CLIPPER logic for carry and overflow flags
#define C_ADD(a, b) ((u32)a + (u32)b < (u32)a)
#define V_ADD(a, b) (OF_ADD((s32)a, (s32)b) || UF_ADD((s32)a, (s32)b))
#define C_SUB(a, b) ((u32)a < (u32)b)
#define V_SUB(a, b) (OF_SUB((s32)a, (s32)b) || UF_SUB((s32)a, (s32)b))
class clipper_device : public cpu_device
{
enum registers
{
CLIPPER_R0, CLIPPER_R1, CLIPPER_R2, CLIPPER_R3, CLIPPER_R4, CLIPPER_R5, CLIPPER_R6, CLIPPER_R7,
CLIPPER_R8, CLIPPER_R9, CLIPPER_R10, CLIPPER_R11, CLIPPER_R12, CLIPPER_R13, CLIPPER_R14, CLIPPER_R15,
@ -20,7 +50,7 @@ enum clipper_registers
CLIPPER_PC,
};
enum clipper_addressing_modes
enum addressing_modes
{
ADDR_MODE_PC32 = 0x10,
ADDR_MODE_ABS32 = 0x30,
@ -33,7 +63,7 @@ enum clipper_addressing_modes
};
// branch conditions
enum clipper_branch_conditions
enum branch_conditions
{
BRANCH_T = 0x0,
BRANCH_LT = 0x1,
@ -53,7 +83,7 @@ enum clipper_branch_conditions
BRANCH_FN = 0xf,
};
enum clipper_psw
enum psw
{
PSW_N = 0x00000001, // negative
PSW_Z = 0x00000002, // zero
@ -98,7 +128,7 @@ enum clipper_ssw
SSW_P = 0x80000000, // previous mode
};
enum clipper_exception_vectors
enum exception_vectors
{
// data memory trap group
EXCEPTION_D_CORRECTED_MEMORY_ERROR = 0x108,
@ -140,7 +170,7 @@ enum clipper_exception_vectors
};
// trap source values are shifted into the correct field in the psw
enum clipper_cpu_trap_sources
enum cpu_trap_sources
{
CTS_NO_CPU_TRAP = 0 << 24,
CTS_DIVIDE_BY_ZERO = 2 << 24,
@ -149,7 +179,7 @@ enum clipper_cpu_trap_sources
CTS_TRACE_TRAP = 7 << 24,
};
enum clipper_memory_trap_sources
enum memory_trap_sources
{
MTS_NO_MEMORY_TRAP = 0 << 28,
MTS_CORRECTED_MEMORY_ERROR = 1 << 28,
@ -160,36 +190,6 @@ enum clipper_memory_trap_sources
MTS_WRITE_PROTECT_FAULT = 7 << 28,
};
// convenience macros for frequently used instruction fields
#define R1 (m_info.r1)
#define R2 (m_info.r2)
// convenience macros for dealing with the psw
#define PSW(mask) (m_psw & PSW_##mask)
#define SSW(mask) (m_ssw & SSW_##mask)
// macros for setting psw condition codes
#define FLAGS(C,V,Z,N) \
m_psw = (m_psw & ~(PSW_C | PSW_V | PSW_Z | PSW_N)) | (((C) << 3) | ((V) << 2) | ((Z) << 1) | ((N) << 0));
#define FLAGS_CV(C,V) \
m_psw = (m_psw & ~(PSW_C | PSW_V)) | (((C) << 3) | ((V) << 2));
#define FLAGS_ZN(Z,N) \
m_psw = (m_psw & ~(PSW_Z | PSW_N)) | (((Z) << 1) | ((N) << 0));
// over/underflow for addition/subtraction from here: http://stackoverflow.com/questions/199333/how-to-detect-integer-overflow-in-c-c
#define OF_ADD(a, b) ((b > 0) && (a > INT_MAX - b))
#define UF_ADD(a, b) ((b < 0) && (a < INT_MIN - b))
#define OF_SUB(a, b) ((b < 0) && (a > INT_MAX + b))
#define UF_SUB(a, b) ((b > 0) && (a < INT_MIN + b))
// CLIPPER logic for carry and overflow flags
#define C_ADD(a, b) ((u32)a + (u32)b < (u32)a)
#define V_ADD(a, b) (OF_ADD((s32)a, (s32)b) || UF_ADD((s32)a, (s32)b))
#define C_SUB(a, b) ((u32)a < (u32)b)
#define V_SUB(a, b) (OF_SUB((s32)a, (s32)b) || UF_SUB((s32)a, (s32)b))
class clipper_device : public cpu_device
{
public:
clipper_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, u32 clock, const char *shortname, const char *source);