From 00cf8728216cb61d9c2ac847bec8b7be4e11c518 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sun, 4 Oct 2020 11:46:35 +0200 Subject: [PATCH] Convert DrZ80_support.cpp to C --- DrZ80_support.cpp => DrZ80_support.c | 62 ++++++++++++++-------------- DrZ80_support.h | 7 ++-- Makefile.common | 2 +- 3 files changed, 35 insertions(+), 36 deletions(-) rename DrZ80_support.cpp => DrZ80_support.c (57%) diff --git a/DrZ80_support.cpp b/DrZ80_support.c similarity index 57% rename from DrZ80_support.cpp rename to DrZ80_support.c index 344ecac..043058d 100644 --- a/DrZ80_support.cpp +++ b/DrZ80_support.c @@ -20,28 +20,28 @@ #define INT_IRQ 0x01 #define NMI_IRQ 0x08 -Z80_Regs Z80; +struct Z80_Regs Z80; -#define z80_int() Z80.regs.Z80_IRQ = INT_IRQ -#define z80_nmi() Z80.regs.Z80IF |= NMI_IRQ +#define Z80_INT() Z80.regs.Z80_IRQ = INT_IRQ +#define Z80_NMI() Z80.regs.Z80IF |= NMI_IRQ static unsigned int z80_rebaseSP(unsigned short address) { - Z80.regs.Z80SP_BASE = (unsigned int)&mainram[0x3000]; - Z80.regs.Z80SP = Z80.regs.Z80SP_BASE + address; - return Z80.regs.Z80SP_BASE + address; + Z80.regs.Z80SP_BASE = (unsigned int)&mainram[0x3000]; + Z80.regs.Z80SP = Z80.regs.Z80SP_BASE + address; + return Z80.regs.Z80SP_BASE + address; } static unsigned int z80_rebasePC(unsigned short address) { - Z80.regs.Z80PC_BASE = (unsigned int)&mainram[0x3000]; - Z80.regs.Z80PC = Z80.regs.Z80PC_BASE + address; - return Z80.regs.Z80PC_BASE + address; + Z80.regs.Z80PC_BASE = (unsigned int)&mainram[0x3000]; + Z80.regs.Z80PC = Z80.regs.Z80PC_BASE + address; + return Z80.regs.Z80PC_BASE + address; } static void z80_irq_callback(void) { - Z80.regs.Z80_IRQ = 0x00; + Z80.regs.Z80_IRQ = 0x00; } @@ -50,36 +50,36 @@ static void z80_irq_callback(void) ****************************************************************************/ void Z80_Reset(void) { - memset (&Z80, 0, sizeof(Z80_Regs)); - Z80.regs.z80_rebasePC=z80_rebasePC; - Z80.regs.z80_rebaseSP=z80_rebaseSP /* 0 */; - Z80.regs.z80_read8 =z80MemReadB; /* z80_read8 */ - Z80.regs.z80_read16 =z80MemReadW; - Z80.regs.z80_write8 =DrZ80ngpMemWriteB; - Z80.regs.z80_write16 =DrZ80ngpMemWriteW; - Z80.regs.z80_in =DrZ80ngpPortReadB; - Z80.regs.z80_out =DrZ80ngpPortWriteB; - - Z80.regs.z80_irq_callback=z80_irq_callback; - Z80.regs.Z80BC = 0013; - Z80.regs.Z80DE = 0x00D8; - Z80.regs.Z80HL = 0x014D; - - Z80.regs.Z80PC=Z80.regs.z80_rebasePC(0); - Z80.regs.Z80SP=Z80.regs.z80_rebaseSP(0xFFFE); + memset (&Z80, 0, sizeof(struct Z80_Regs)); + Z80.regs.z80_rebasePC=z80_rebasePC; + Z80.regs.z80_rebaseSP=z80_rebaseSP /* 0 */; + Z80.regs.z80_read8 =z80MemReadB; /* z80_read8 */ + Z80.regs.z80_read16 =z80MemReadW; + Z80.regs.z80_write8 =DrZ80ngpMemWriteB; + Z80.regs.z80_write16 =DrZ80ngpMemWriteW; + Z80.regs.z80_in =DrZ80ngpPortReadB; + Z80.regs.z80_out =DrZ80ngpPortWriteB; - Z80_Clear_Pending_Interrupts(); + Z80.regs.z80_irq_callback=z80_irq_callback; + Z80.regs.Z80BC = 0013; + Z80.regs.Z80DE = 0x00D8; + Z80.regs.Z80HL = 0x014D; + + Z80.regs.Z80PC=Z80.regs.z80_rebasePC(0); + Z80.regs.Z80SP=Z80.regs.z80_rebaseSP(0xFFFE); + + Z80_Clear_Pending_Interrupts(); } void Z80_Cause_Interrupt(int type) { if (type == Z80_NMI_INT) { - z80_nmi(); + Z80_NMI(); } else if (type != Z80_IGNORE_INT) { - z80_int(); + Z80_INT(); } } @@ -91,7 +91,7 @@ void Z80_Clear_Pending_Interrupts(void) /**************************************************************************** * Execute IPeriod T-states. Return number of T-states really executed ****************************************************************************/ -extern "C" int Z80_Execute(int cycles) +int Z80_Execute(int cycles) { Z80.regs.cycles = cycles; diff --git a/DrZ80_support.h b/DrZ80_support.h index 39c2ad5..a9fcd20 100644 --- a/DrZ80_support.h +++ b/DrZ80_support.h @@ -5,7 +5,6 @@ extern "C" { #endif - #include "DrZ80.h" /****************************************************************************/ @@ -16,7 +15,7 @@ typedef struct { struct DrZ80 regs; } Z80_Regs; -extern Z80_Regs Z80; +extern struct Z80_Regs Z80; #define Z80_IGNORE_INT -1 /* Ignore interrupt */ #define Z80_NMI_INT -2 /* Execute NMI */ @@ -24,8 +23,8 @@ extern Z80_Regs Z80; extern unsigned Z80_GetPC (void); /* Get program counter */ extern int Z80_GetPreviousPC (void); -extern void Z80_GetRegs (Z80_Regs *Regs); /* Get registers */ -extern void Z80_SetRegs (Z80_Regs *Regs); /* Set registers */ +extern void Z80_GetRegs (struct Z80_Regs *Regs); /* Get registers */ +extern void Z80_SetRegs (struct Z80_Regs *Regs); /* Set registers */ extern void Z80_Reset(void); extern int Z80_Execute(int cycles); /* Execute cycles T-States - returns number of cycles actually run */ diff --git a/Makefile.common b/Makefile.common index c0eaeb2..32601a2 100644 --- a/Makefile.common +++ b/Makefile.common @@ -52,7 +52,7 @@ SOURCES_C += \ ifeq ($(DRZ80),1) FLAGS += -DDRZ80 - SOURCES_CXX += $(CORE_DIR)/DrZ80_support.cpp + SOURCES_C += $(CORE_DIR)/DrZ80_support.c SOURCES_ASM := $(CORE_DIR)/DrZ80.s else FLAGS += -DCZ80