Xcode project added; Removed Q module autoconfiguration macros.
This commit is contained in:
5
.gitignore
vendored
5
.gitignore
vendored
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
358
Z80.CPU/v1.0/development/Xcode/Z80.xcodeproj/project.pbxproj
Normal file
358
Z80.CPU/v1.0/development/Xcode/Z80.xcodeproj/project.pbxproj
Normal 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 */;
|
||||
}
|
||||
@@ -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}
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user