Xcode project added; Removed Q module autoconfiguration macros.

This commit is contained in:
redcode
2015-03-11 04:41:18 +01:00
parent cd6325ac55
commit 091f8826ca
4 changed files with 425 additions and 59 deletions

5
.gitignore vendored
View File

@@ -1,2 +1,7 @@
# OS generated files
.DS_Store
.directory
# Per-user IDE configuration files
Z80.CPU/v1.0/development/Xcode/Z80.xcodeproj/project.xcworkspace
Z80.CPU/v1.0/development/Xcode/Z80.xcodeproj/xcuserdata

View File

@@ -7,33 +7,37 @@
Copyright © 1999-2015 Manuel Sainz de Baranda y Goñi.
Released under the terms of the GNU General Public License v3. */
#include <Q/hardware/CPU/architecture/Z80.h>
#include <Q/types/generic functions.h>
#ifndef __emulation_CPU_Z80_H__
#define __emulation_CPU_Z80_H__
#ifdef BUILDING_MODULE_EMULATION_CPU_Z80
#include <Q/hardware/CPU/architecture/Z80.h>
#include <Q/types/generic functions.h>
#ifdef EMULATION_CPU_Z80_NO_SLOTS
# define Z80_CB(Type) Type
#else
# include <Q/macros/slot.h>
# define Z80_CB QSlot
# define Z80_EMULATOR_API Q_API
#endif
#if defined(BUILDING_DYNAMIC_EMULATION_CPU_Z80)
# define Z80_API Q_API_EXPORT
#elif defined(BUILDING_STATIC_EMULATION_CPU_Z80)
# define Z80_API Q_PUBLIC
#elif defined(USE_STATIC_EMULATION_CPU_Z80)
# define Z80_API
#else
# define Z80_CB(Type) Type
# define Z80_EMULATOR_API
# define Z80_API Q_API
#endif
typedef struct {
# ifdef BUILDING_MODUDE_EMULATION_CPU_Z80
quintptr id;
# endif
qsize cycles;
QZ80State state;
Q16Bit xy;
quint8 r7;
Q32Bit data;
# ifndef BUILDING_MODULE_EMULATION_CPU_Z80
# ifndef EMULATION_CPU_Z80_NO_SLOTS
void* cb_context;
# endif
@@ -48,18 +52,18 @@ typedef struct {
Q_C_SYMBOLS_BEGIN
Z80_EMULATOR_API qsize z80_run (Z80* object,
qsize cycles);
Z80_API qsize z80_run (Z80* object,
qsize cycles);
Z80_EMULATOR_API void z80_power (Z80* object,
qboolean state);
Z80_API void z80_power (Z80* object,
qboolean state);
Z80_EMULATOR_API void z80_reset (Z80* object);
Z80_API void z80_reset (Z80* object);
Z80_EMULATOR_API void z80_nmi (Z80* object);
Z80_API void z80_nmi (Z80* object);
Z80_EMULATOR_API void z80_irq (Z80* object,
qboolean state);
Z80_API void z80_irq (Z80* object,
qboolean state);
Q_C_SYMBOLS_END

View File

@@ -0,0 +1,358 @@
// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
};
objectVersion = 46;
objects = {
/* Begin PBXBuildFile section */
6428A5751AAFC6DF00634F5D /* Z80.h in Headers */ = {isa = PBXBuildFile; fileRef = 6428A5741AAFC6DF00634F5D /* Z80.h */; settings = {ATTRIBUTES = (Public, ); }; };
6428A5771AAFC72900634F5D /* Z80.c in Sources */ = {isa = PBXBuildFile; fileRef = 6428A5761AAFC72900634F5D /* Z80.c */; settings = {COMPILER_FLAGS = "-DBUILDING_DYNAMIC_EMULATION_CPU_Z80"; }; };
6428A5801AAFEF1D00634F5D /* Z80.c in Sources */ = {isa = PBXBuildFile; fileRef = 6428A5761AAFC72900634F5D /* Z80.c */; settings = {COMPILER_FLAGS = "-DBUILDING_STATIC_EMULATION_CPU_Z80"; }; };
/* End PBXBuildFile section */
/* Begin PBXFileReference section */
6428A5691AAFC68700634F5D /* libZ80.dylib */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; path = libZ80.dylib; sourceTree = BUILT_PRODUCTS_DIR; };
6428A5741AAFC6DF00634F5D /* Z80.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Z80.h; sourceTree = "<group>"; };
6428A5761AAFC72900634F5D /* Z80.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Z80.c; sourceTree = "<group>"; };
6428A57C1AAFEDED00634F5D /* libZ80.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libZ80.a; sourceTree = BUILT_PRODUCTS_DIR; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
6428A5661AAFC68700634F5D /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
6428A5791AAFEDED00634F5D /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
6428A5601AAFC68700634F5D = {
isa = PBXGroup;
children = (
6428A5711AAFC69A00634F5D /* API */,
6428A5701AAFC69100634F5D /* Sources */,
6428A56A1AAFC68700634F5D /* Products */,
);
sourceTree = "<group>";
};
6428A56A1AAFC68700634F5D /* Products */ = {
isa = PBXGroup;
children = (
6428A5691AAFC68700634F5D /* libZ80.dylib */,
6428A57C1AAFEDED00634F5D /* libZ80.a */,
);
name = Products;
sourceTree = "<group>";
};
6428A5701AAFC69100634F5D /* Sources */ = {
isa = PBXGroup;
children = (
6428A5761AAFC72900634F5D /* Z80.c */,
);
name = Sources;
path = ../../sources;
sourceTree = "<group>";
};
6428A5711AAFC69A00634F5D /* API */ = {
isa = PBXGroup;
children = (
6428A5721AAFC6C100634F5D /* emulation */,
);
name = API;
path = ../../API/C;
sourceTree = "<group>";
};
6428A5721AAFC6C100634F5D /* emulation */ = {
isa = PBXGroup;
children = (
6428A5731AAFC6C700634F5D /* CPU */,
);
path = emulation;
sourceTree = "<group>";
};
6428A5731AAFC6C700634F5D /* CPU */ = {
isa = PBXGroup;
children = (
6428A5741AAFC6DF00634F5D /* Z80.h */,
);
path = CPU;
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXHeadersBuildPhase section */
6428A5671AAFC68700634F5D /* Headers */ = {
isa = PBXHeadersBuildPhase;
buildActionMask = 2147483647;
files = (
6428A5751AAFC6DF00634F5D /* Z80.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
};
6428A57A1AAFEDED00634F5D /* Headers */ = {
isa = PBXHeadersBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXHeadersBuildPhase section */
/* Begin PBXNativeTarget section */
6428A5681AAFC68700634F5D /* Z80 */ = {
isa = PBXNativeTarget;
buildConfigurationList = 6428A56D1AAFC68700634F5D /* Build configuration list for PBXNativeTarget "Z80" */;
buildPhases = (
6428A5651AAFC68700634F5D /* Sources */,
6428A5661AAFC68700634F5D /* Frameworks */,
6428A5671AAFC68700634F5D /* Headers */,
);
buildRules = (
);
dependencies = (
);
name = Z80;
productName = Z80;
productReference = 6428A5691AAFC68700634F5D /* libZ80.dylib */;
productType = "com.apple.product-type.library.dynamic";
};
6428A57B1AAFEDED00634F5D /* Z80 (Static) */ = {
isa = PBXNativeTarget;
buildConfigurationList = 6428A57D1AAFEDED00634F5D /* Build configuration list for PBXNativeTarget "Z80 (Static)" */;
buildPhases = (
6428A5781AAFEDED00634F5D /* Sources */,
6428A5791AAFEDED00634F5D /* Frameworks */,
6428A57A1AAFEDED00634F5D /* Headers */,
);
buildRules = (
);
dependencies = (
);
name = "Z80 (Static)";
productName = "Z80-Static";
productReference = 6428A57C1AAFEDED00634F5D /* libZ80.a */;
productType = "com.apple.product-type.library.static";
};
/* End PBXNativeTarget section */
/* Begin PBXProject section */
6428A5611AAFC68700634F5D /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 0610;
ORGANIZATIONNAME = redcode;
TargetAttributes = {
6428A5681AAFC68700634F5D = {
CreatedOnToolsVersion = 6.1.1;
};
6428A57B1AAFEDED00634F5D = {
CreatedOnToolsVersion = 6.1.1;
};
};
};
buildConfigurationList = 6428A5641AAFC68700634F5D /* Build configuration list for PBXProject "Z80" */;
compatibilityVersion = "Xcode 3.2";
developmentRegion = English;
hasScannedForEncodings = 0;
knownRegions = (
en,
);
mainGroup = 6428A5601AAFC68700634F5D;
productRefGroup = 6428A56A1AAFC68700634F5D /* Products */;
projectDirPath = "";
projectRoot = "";
targets = (
6428A5681AAFC68700634F5D /* Z80 */,
6428A57B1AAFEDED00634F5D /* Z80 (Static) */,
);
};
/* End PBXProject section */
/* Begin PBXSourcesBuildPhase section */
6428A5651AAFC68700634F5D /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
6428A5771AAFC72900634F5D /* Z80.c in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
6428A5781AAFEDED00634F5D /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
6428A5801AAFEF1D00634F5D /* Z80.c in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin XCBuildConfiguration section */
6428A56B1AAFC68700634F5D /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ENABLE_MODULES = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
COPY_PHASE_STRIP = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
GCC_C_LANGUAGE_STANDARD = c99;
GCC_DYNAMIC_NO_PIC = NO;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"$(inherited)",
);
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
HEADER_SEARCH_PATHS = (
../../API/C,
/usr/local/include,
"$(inherited)",
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include,
);
LINK_WITH_STANDARD_LIBRARIES = NO;
MACOSX_DEPLOYMENT_TARGET = 10.6;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
STRIP_STYLE = "non-global";
};
name = Debug;
};
6428A56C1AAFC68700634F5D /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ENABLE_MODULES = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
COPY_PHASE_STRIP = YES;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
GCC_C_LANGUAGE_STANDARD = c99;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
HEADER_SEARCH_PATHS = (
../../API/C,
/usr/local/include,
"$(inherited)",
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include,
);
LINK_WITH_STANDARD_LIBRARIES = NO;
MACOSX_DEPLOYMENT_TARGET = 10.6;
MTL_ENABLE_DEBUG_INFO = NO;
STRIP_STYLE = "non-global";
};
name = Release;
};
6428A56E1AAFC68700634F5D /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
EXECUTABLE_PREFIX = lib;
LD_DYLIB_INSTALL_NAME = "$(EXECUTABLE_PATH)";
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Debug;
};
6428A56F1AAFC68700634F5D /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
EXECUTABLE_PREFIX = lib;
LD_DYLIB_INSTALL_NAME = "$(EXECUTABLE_PATH)";
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Release;
};
6428A57E1AAFEDED00634F5D /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
CLANG_ENABLE_OBJC_ARC = YES;
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"$(inherited)",
);
PRODUCT_NAME = Z80;
};
name = Debug;
};
6428A57F1AAFEDED00634F5D /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
CLANG_ENABLE_OBJC_ARC = YES;
PRODUCT_NAME = Z80;
};
name = Release;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
6428A5641AAFC68700634F5D /* Build configuration list for PBXProject "Z80" */ = {
isa = XCConfigurationList;
buildConfigurations = (
6428A56B1AAFC68700634F5D /* Debug */,
6428A56C1AAFC68700634F5D /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
6428A56D1AAFC68700634F5D /* Build configuration list for PBXNativeTarget "Z80" */ = {
isa = XCConfigurationList;
buildConfigurations = (
6428A56E1AAFC68700634F5D /* Debug */,
6428A56F1AAFC68700634F5D /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
6428A57D1AAFEDED00634F5D /* Build configuration list for PBXNativeTarget "Z80 (Static)" */ = {
isa = XCConfigurationList;
buildConfigurations = (
6428A57E1AAFEDED00634F5D /* Debug */,
6428A57F1AAFEDED00634F5D /* Release */,
);
defaultConfigurationIsVisible = 0;
};
/* End XCConfigurationList section */
};
rootObject = 6428A5611AAFC68700634F5D /* Project object */;
}

View File

@@ -7,17 +7,13 @@
Copyright © 1999-2015 Manuel Sainz de Baranda y Goñi.
Released under the terms of the GNU General Public License v3. */
#define MODULE_NAME Z80
#define MODULE_PREFIX z80_
#define MODULE_HEADER <modules/emulation/CPU/Z80.h>
#define BUILDING_CPU_Z80
#include <Q/configuration/module.h>
#include <emulation/CPU/Z80.h>
#include <Q/macros/value.h>
typedef quint8 (* Instruction)(Z80 *object);
#undef Q_PRIVATE
#define Q_PRIVATE static
/* MARK: - Macros: External */
#define O(member) Q_OFFSET_OF(Z80, member)
@@ -27,12 +23,12 @@ typedef quint8 (* Instruction)(Z80 *object);
/* MARK: - Macros & Functions: Callback */
#ifdef BUILDING_MODULE
# define CB_ACTION(name) object->cb.name.action
# define CB_OBJECT(name) object->cb.name.object
#else
#ifdef EMULATION_CPU_Z80_NO_SLOTS
# define CB_ACTION(name) object->cb.name
# define CB_OBJECT(name) object->cb_context
#else
# define CB_ACTION(name) object->cb.name.action
# define CB_OBJECT(name) object->cb.name.object
#endif
#define READ_8(address) CB_ACTION(read )(CB_OBJECT(read ), (address) )
@@ -154,7 +150,7 @@ Q_INLINE void write_16bit(Z80 *object, quint16 address, quint16 value)
/* MARK: - P/V Flag Computation */
static const quint8 pf_parity_table[256] = {
Q_PRIVATE const quint8 pf_parity_table[256] = {
/* 0 1 2 3 4 5 6 7 8 9 A B C D E F */
/* 0 */ 4, 0, 0, 4, 0, 4, 4, 0, 0, 4, 4, 0, 4, 0, 0, 4,
/* 1 */ 0, 4, 4, 0, 4, 0, 0, 4, 4, 0, 0, 4, 0, 4, 4, 0,
@@ -216,7 +212,7 @@ VF(sbc, 16, 32, -, -32768, 32767)
'----------' | 111 = a | | 111 = a | | 111 = a |
'---------' '-----------' '----------*/
static const quint8 x_y_table[8] = {
Q_PRIVATE const quint8 x_y_table[8] = {
O(state.Q_Z80_STATE_MEMBER_B),
O(state.Q_Z80_STATE_MEMBER_C),
O(state.Q_Z80_STATE_MEMBER_D),
@@ -227,7 +223,7 @@ static const quint8 x_y_table[8] = {
O(state.Q_Z80_STATE_MEMBER_A)
};
static const quint8 j_k_p_q_table[8] = {
Q_PRIVATE const quint8 j_k_p_q_table[8] = {
O(state.Q_Z80_STATE_MEMBER_B),
O(state.Q_Z80_STATE_MEMBER_C),
O(state.Q_Z80_STATE_MEMBER_D),
@@ -262,21 +258,21 @@ R_8(_____kkk , j_k_p_q_table, 1, 7, )
| 11 = sp | | 11 = af | | 11 = sp |
'---------' '---------' '--------*/
static const quint8 s_table[4] = {
Q_PRIVATE const quint8 s_table[4] = {
O(state.Q_Z80_STATE_MEMBER_BC),
O(state.Q_Z80_STATE_MEMBER_DE),
O(state.Q_Z80_STATE_MEMBER_HL),
O(state.Q_Z80_STATE_MEMBER_SP)
};
static const quint8 t_table[4] = {
Q_PRIVATE const quint8 t_table[4] = {
O(state.Q_Z80_STATE_MEMBER_BC),
O(state.Q_Z80_STATE_MEMBER_DE),
O(state.Q_Z80_STATE_MEMBER_HL),
O(state.Q_Z80_STATE_MEMBER_AF)
};
static const quint8 w_table[4] = {
Q_PRIVATE const quint8 w_table[4] = {
O(state.Q_Z80_STATE_MEMBER_BC),
O(state.Q_Z80_STATE_MEMBER_DE),
O(xy ),
@@ -307,7 +303,7 @@ R_16(__tt____ , t_table, 0)
| 111 = m |
'---------*/
static const quint8 z_table[8] = {ZF, ZF, CF, CF, PF, PF, SF, SF};
Q_PRIVATE const quint8 z_table[8] = {ZF, ZF, CF, CF, PF, PF, SF, SF};
Q_INLINE qboolean __zzz___(Z80 *object)
{
@@ -345,7 +341,7 @@ Q_INLINE qboolean __zzz___(Z80 *object)
| dec | S | Z |v.5| H |v.3| V | 1 | . |
'------------------------------------*/
static void __uuu___(Z80 *object, quint8 offset, quint8 value)
Q_PRIVATE void __uuu___(Z80 *object, quint8 offset, quint8 value)
{
quint8 t;
@@ -425,7 +421,7 @@ static void __uuu___(Z80 *object, quint8 offset, quint8 value)
}
static quint8 _____vvv(Z80 *object, quint8 offset, quint8 value)
Q_PRIVATE quint8 _____vvv(Z80 *object, quint8 offset, quint8 value)
{
quint8 t, pn;
@@ -467,7 +463,7 @@ static quint8 _____vvv(Z80 *object, quint8 offset, quint8 value)
| 111 = srl |
'----------*/
static quint8 __ggg___(Z80 *object, quint8 offset, quint8 value)
Q_PRIVATE quint8 __ggg___(Z80 *object, quint8 offset, quint8 value)
{
quint8 c;
@@ -542,6 +538,9 @@ static quint8 __ggg___(Z80 *object, quint8 offset, quint8 value)
c = value & CF;
value >>= 1;
break;
/* Uncoment to Avoid compiler warning */
/*default: c = 0; break;*/
}
F = (value & SYXF)
@@ -601,7 +600,7 @@ Q_INLINE quint8 _m______(Z80 *object, quint8 offset, quint8 value)
/* MARK: - Reusable Code */
#define INSTRUCTION(name) static quint8 name(Z80 *object)
#define INSTRUCTION(name) Q_PRIVATE quint8 name(Z80 *object)
#define CYCLES(cycles) return cycles;
#define EXIT_HALT if (HALT) {PC++; HALT = FALSE; CLEAR_HALT;}
#define PUSH(value) WRITE_16(SP -= 2, value)
@@ -1251,7 +1250,7 @@ INSTRUCTION(XY_illegal);
/* MARK: - Instruction Function Tables */
static const Instruction instruction_table[256] = {
Q_PRIVATE const Instruction instruction_table[256] = {
/* 0 1 2 3 4 5 6 7 8 9 A B C D E F */
/* 0 */ nop, ld_SS_WORD, ld_vbc_a, inc_SS, V_X, V_X, ld_X_BYTE, rlca, ex_af_af_, add_hl_SS, ld_a_vbc, dec_SS, V_X, V_X, ld_X_BYTE, rrca,
/* 1 */ djnz_OFFSET, ld_SS_WORD, ld_vde_a, inc_SS, V_X, V_X, ld_X_BYTE, rla, jr_OFFSET, add_hl_SS, ld_a_vde, dec_SS, V_X, V_X, ld_X_BYTE, rra,
@@ -1271,7 +1270,7 @@ static const Instruction instruction_table[256] = {
/* F */ ret_Z, pop_TT, jp_Z_WORD, di, call_Z_WORD, push_TT, U_a_BYTE, rst_N, ret_Z, ld_sp_hl, jp_Z_WORD, ei, call_Z_WORD, FD, U_a_BYTE, rst_N
};
static const Instruction instruction_table_CB[256] = {
Q_PRIVATE const Instruction instruction_table_CB[256] = {
/* 0 1 2 3 4 5 6 7 8 9 A B C D E F */
/* 0 */ G_Y, G_Y, G_Y, G_Y, G_Y, G_Y, G_vhl, G_Y, G_Y, G_Y, G_Y, G_Y, G_Y, G_Y, G_vhl, G_Y,
/* 1 */ G_Y, G_Y, G_Y, G_Y, G_Y, G_Y, G_vhl, G_Y, G_Y, G_Y, G_Y, G_Y, G_Y, G_Y, G_vhl, G_Y,
@@ -1291,7 +1290,7 @@ static const Instruction instruction_table_CB[256] = {
/* F */ M_N_Y, M_N_Y, M_N_Y, M_N_Y, M_N_Y, M_N_Y, M_N_vhl, M_N_Y, M_N_Y, M_N_Y, M_N_Y, M_N_Y, M_N_Y, M_N_Y, M_N_vhl, M_N_Y
};
static const Instruction instruction_table_XY_CB[256] = {
Q_PRIVATE const Instruction instruction_table_XY_CB[256] = {
/* 0 1 2 3 4 5 6 7 8 9 A B C D E F */
/* 0 */ G_vXYOFFSET_Y, G_vXYOFFSET_Y, G_vXYOFFSET_Y, G_vXYOFFSET_Y, G_vXYOFFSET_Y, G_vXYOFFSET_Y, G_vXYOFFSET, G_vXYOFFSET_Y, G_vXYOFFSET_Y, G_vXYOFFSET_Y, G_vXYOFFSET_Y, G_vXYOFFSET_Y, G_vXYOFFSET_Y, G_vXYOFFSET_Y, G_vXYOFFSET, G_vXYOFFSET_Y,
/* 1 */ G_vXYOFFSET_Y, G_vXYOFFSET_Y, G_vXYOFFSET_Y, G_vXYOFFSET_Y, G_vXYOFFSET_Y, G_vXYOFFSET_Y, G_vXYOFFSET, G_vXYOFFSET_Y, G_vXYOFFSET_Y, G_vXYOFFSET_Y, G_vXYOFFSET_Y, G_vXYOFFSET_Y, G_vXYOFFSET_Y, G_vXYOFFSET_Y, G_vXYOFFSET, G_vXYOFFSET_Y,
@@ -1311,7 +1310,7 @@ static const Instruction instruction_table_XY_CB[256] = {
/* F */ M_N_vXYOFFSET_Y, M_N_vXYOFFSET_Y, M_N_vXYOFFSET_Y, M_N_vXYOFFSET_Y, M_N_vXYOFFSET_Y, M_N_vXYOFFSET_Y, M_N_vXYOFFSET, M_N_vXYOFFSET_Y, M_N_vXYOFFSET_Y, M_N_vXYOFFSET_Y, M_N_vXYOFFSET_Y, M_N_vXYOFFSET_Y, M_N_vXYOFFSET_Y, M_N_vXYOFFSET_Y, M_N_vXYOFFSET, M_N_vXYOFFSET_Y
};
static const Instruction instruction_table_XY[256] = {
Q_PRIVATE const Instruction instruction_table_XY[256] = {
/* 0 1 2 3 4 5 6 7 8 9 A B C D E F */
/* 0 */ XY_illegal, XY_illegal, XY_illegal, XY_illegal, XY_illegal, XY_illegal, XY_illegal, XY_illegal, XY_illegal, add_XY_WW, XY_illegal, XY_illegal, XY_illegal, XY_illegal, XY_illegal, XY_illegal,
/* 1 */ XY_illegal, XY_illegal, XY_illegal, XY_illegal, XY_illegal, XY_illegal, XY_illegal, XY_illegal, XY_illegal, add_XY_WW, XY_illegal, XY_illegal, XY_illegal, XY_illegal, XY_illegal, XY_illegal,
@@ -1331,7 +1330,7 @@ static const Instruction instruction_table_XY[256] = {
/* F */ XY_illegal, XY_illegal, XY_illegal, XY_illegal, XY_illegal, XY_illegal, XY_illegal, XY_illegal, XY_illegal, ld_sp_XY, XY_illegal, XY_illegal, XY_illegal, XY_illegal, XY_illegal, XY_illegal
};
static const Instruction instruction_table_ED[256] = {
Q_PRIVATE const Instruction instruction_table_ED[256] = {
/* 0 1 2 3 4 5 6 7 8 9 A B C D E F */
/* 0 */ ED_illegal, ED_illegal, ED_illegal, ED_illegal, ED_illegal, ED_illegal, ED_illegal, ED_illegal, ED_illegal, ED_illegal, ED_illegal, ED_illegal, ED_illegal, ED_illegal, ED_illegal, ED_illegal,
/* 1 */ ED_illegal, ED_illegal, ED_illegal, ED_illegal, ED_illegal, ED_illegal, ED_illegal, ED_illegal, ED_illegal, ED_illegal, ED_illegal, ED_illegal, ED_illegal, ED_illegal, ED_illegal, ED_illegal,
@@ -1388,7 +1387,7 @@ INSTRUCTION(ED_illegal) {PC += 2; CYCLES(8);}
/* MARK: - Main Functions */
EXPORTED(qsize, run)(Z80 *object, qsize cycles)
Z80_API qsize z80_run(Z80 *object, qsize cycles)
{
quint32 data;
@@ -1514,7 +1513,7 @@ EXPORTED(qsize, run)(Z80 *object, qsize cycles)
}
EXPORTED(void, reset)(Z80 *object)
Z80_API void z80_reset(Z80 *object)
{
PC = Q_Z80_VALUE_AFTER_RESET_PC;
SP = Q_Z80_VALUE_AFTER_RESET_SP;
@@ -1540,12 +1539,12 @@ EXPORTED(void, reset)(Z80 *object)
}
EXPORTED(void, power)(Z80 *object, qboolean state)
Z80_API void z80_power(Z80 *object, qboolean state)
{
if (state)
{
# ifdef Q_Z80_RESET_IS_EQUAL_TO_POWER_ON
SYMBOL(reset)(object);
z80_reset(object);
# else
PC = Q_Z80_VALUE_AFTER_POWER_ON_PC;
SP = Q_Z80_VALUE_AFTER_POWER_ON_SP;
@@ -1573,21 +1572,21 @@ EXPORTED(void, power)(Z80 *object, qboolean state)
}
EXPORTED(void, nmi)(Z80 *object) {NMI = TRUE ;}
EXPORTED(void, irq)(Z80 *object, qboolean state) {INT = state;}
Z80_API void z80_nmi(Z80 *object) {NMI = TRUE ;}
Z80_API void z80_irq(Z80 *object, qboolean state) {INT = state;}
#ifndef BUILDING_MODULE
#ifndef BUILDING_DYNAMIC_EMULATION_CPU_Z80
static void after_state_readed (Z80 *object, QZ80State *state)
Q_PRIVATE void after_state_readed (Z80 *object, QZ80State *state)
{Q_Z80_STATE_R(state) = R_ALL;}
static void after_state_written(Z80 *object)
Q_PRIVATE void after_state_written(Z80 *object)
{R7 = R;}
#include <Q/ABIs/emulation.h>
static QEmulatorExport exports[7] = {
Q_PRIVATE QEmulatorExport exports[7] = {
{Q_EMULATOR_ACTION_POWER, (QDo)z80_power },
{Q_EMULATOR_ACTION_RESET, (QDo)z80_reset },
{Q_EMULATOR_ACTION_RUN, (QDo)z80_run },
@@ -1599,7 +1598,7 @@ EXPORTED(void, irq)(Z80 *object, qboolean state) {INT = state;}
#define SLOT_OFFSET(name) Q_OFFSET_OF(Z80, cb.name)
static QEmulatorSlotLinkage slot_linkages[] = {
Q_PRIVATE QEmulatorSlotLinkage slot_linkages[] = {
{Q_EMULATOR_OBJECT_MEMORY, Q_EMULATOR_ACTION_READ_8BIT, SLOT_OFFSET(read )},
{Q_EMULATOR_OBJECT_MEMORY, Q_EMULATOR_ACTION_WRITE_8BIT, SLOT_OFFSET(write )},
{Q_EMULATOR_OBJECT_IO, Q_EMULATOR_ACTION_IN_8BIT, SLOT_OFFSET(in )},
@@ -1608,7 +1607,7 @@ EXPORTED(void, irq)(Z80 *object, qboolean state) {INT = state;}
{Q_EMULATOR_OBJECT_MACHINE, Q_EMULATOR_ACTION_HALT, SLOT_OFFSET(halt )}
};
QCPUEmulatorABI cpu_emulator_abi = {
Q_API_EXPORT QCPUEmulatorABI emulation_cpu_z80_abi = {
0, NULL, 7, exports, {sizeof(Z80), Q_OFFSET_OF(Z80, state), 1, slot_linkages}
};