From fe45c4920a070583c02b24d04503d0a3d2384dce Mon Sep 17 00:00:00 2001 From: redcode Date: Wed, 24 Sep 2014 04:20:33 +0200 Subject: [PATCH] source autoconfiguration --- .../API/{ => C}/modules/emulation/CPU/Z80.h | 37 ++++++++----- Z80.CPU/1.0/sources/Z80.c | 53 ++----------------- 2 files changed, 28 insertions(+), 62 deletions(-) rename Z80.CPU/1.0/API/{ => C}/modules/emulation/CPU/Z80.h (62%) diff --git a/Z80.CPU/1.0/API/modules/emulation/CPU/Z80.h b/Z80.CPU/1.0/API/C/modules/emulation/CPU/Z80.h similarity index 62% rename from Z80.CPU/1.0/API/modules/emulation/CPU/Z80.h rename to Z80.CPU/1.0/API/C/modules/emulation/CPU/Z80.h index 0ab4fbd..a6813c4 100644 --- a/Z80.CPU/1.0/API/modules/emulation/CPU/Z80.h +++ b/Z80.CPU/1.0/API/C/modules/emulation/CPU/Z80.h @@ -30,25 +30,36 @@ typedef struct { } cb; } Z80; -#ifdef __cplusplus -extern "C" { -#endif -qsize z80_run (Z80* object, - qsize cycles); +#ifndef BUILDING_Z80_CPU -void z80_power (Z80* object, - qboolean state); +# ifdef __cplusplus + extern "C" { +# endif -void z80_reset (Z80* object); +# ifdef USING_STATIC_LIBRARY_Z80_CPU +# define Z80_CPU_API +# else +# define Z80_CPU_API Q_API +# endif -void z80_nmi (Z80* object); + Z80_CPU_API qsize z80_run (Z80* object, + qsize cycles); -void z80_irq (Z80* object, - qboolean state); + Z80_CPU_API void z80_power (Z80* object, + qboolean state); + + Z80_CPU_API void z80_reset (Z80* object); + + Z80_CPU_API void z80_nmi (Z80* object); + + Z80_CPU_API void z80_irq (Z80* object, + qboolean state); + +# ifdef __cplusplus + } +# endif -#ifdef __cplusplus -} #endif #endif /* __modules_emulation_CPU_Z80_H__ */ diff --git a/Z80.CPU/1.0/sources/Z80.c b/Z80.CPU/1.0/sources/Z80.c index c582854..1636b95 100644 --- a/Z80.CPU/1.0/sources/Z80.c +++ b/Z80.CPU/1.0/sources/Z80.c @@ -10,6 +10,7 @@ Released under the terms of the GNU General Public License v3. */ #define MODULE_NAME Z80 #define MODULE_PREFIX z80_ #define MODULE_HEADER +#define BUILDING_Z80_CPU #include #include @@ -1420,9 +1421,9 @@ EXPORTED(qsize, run)(Z80 *object, qsize cycles) '--------------------------*/ if (INT && IFF1 && !EI) { - EXIT_HALT; /* Resume CPU on halt. */ - R++; /* Consume memory refresh. */ - IFF1 = IFF2 = 0; /* Clear interrupt flip-flops. */ + EXIT_HALT; /* Resume CPU on halt. */ + R++; /* Consume memory refresh. */ + IFF1 = IFF2 = 0; /* Clear interrupt flip-flops. */ #ifdef Z80_AUTOCLEARS_INT_LINE INT = FALSE; @@ -1569,50 +1570,4 @@ EXPORTED(void, nmi)(Z80 *object) {NMI = TRUE ;} EXPORTED(void, irq)(Z80 *object, qboolean state) {INT = state;} -#if defined(BUILDING_MODULE) || defined(BUILDING_HYBRID_MODULE) - - /* MARK: - Module Linking Information */ - -# include - - static const ACMEAction actions[] = { - {Q_CPU_ACTION_RUN, run}, - {Q_CPU_ACTION_POWER, power}, - {Q_CPU_ACTION_RESET, reset} - }; - - static const ACMELine lines[] = { - {"NMI", Q_LINE_TYPE_PULSE, nmi}, - {"INT", Q_LINE_TYPE_SWITCH, irq} - }; - - static const ACMEContextCB context_cbs[] = { - {Q_CPU_CB_16BIT_MEMORY_ADDRESS_READ_8BIT, O(cb.read )}, - {Q_CPU_CB_16BIT_MEMORY_ADDRESS_WRITE_8BIT, O(cb.write)}, - {Q_CPU_CB_16BIT_PORT_NUMBER_READ_8BIT, O(cb.in) }, - {Q_CPU_CB_16BIT_PORT_NUMBER_WRITE_8BIT, O(cb.out) }, - {Q_CPU_CB_HALT, O(cb.halt) } - }; - - const QCPUEmulationABI abi = { - .minimum_cycles = 2, - .maximum_cycles = 23, - .action_count = 3, - .actions = actions, - .line_count = 2, - .lines = lines, - .instance = { - .size = sizeof(Z80), - .cb_context_offset = O(cb_context), - .cb_count = 5, - .cbs = context_cbs, - .variable_count = 26, - .variables = context_variables, - .bit_field_count = 7, - .bit_fields = context_bit_fields - } - }; - -#endif - /* Z80.c EOF */