notaz.gp2x.de
/
picodrive.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
starting input layer integration work
[picodrive.git]
/
cpu
/
cz80
/
cz80.c
diff --git
a/cpu/cz80/cz80.c
b/cpu/cz80/cz80.c
index
f2ab003
..
374325e
100644
(file)
--- a/
cpu/cz80/cz80.c
+++ b/
cpu/cz80/cz80.c
@@
-13,9
+13,21
@@
#include <string.h>
\r
#include "cz80.h"
\r
\r
#include <string.h>
\r
#include "cz80.h"
\r
\r
+#if PICODRIVE_HACKS
\r
+#undef EMU_M68K
\r
+#include <pico/pico_int.h>
\r
+#endif
\r
+
\r
#ifndef ALIGN_DATA
\r
#ifndef ALIGN_DATA
\r
+#ifdef _MSC_VER
\r
+#define ALIGN_DATA
\r
+#define inline
\r
+#undef CZ80_USE_JUMPTABLE
\r
+#define CZ80_USE_JUMPTABLE 0
\r
+#else
\r
#define ALIGN_DATA __attribute__((aligned(4)))
\r
#endif
\r
#define ALIGN_DATA __attribute__((aligned(4)))
\r
#endif
\r
+#endif
\r
\r
#define CF 0x01
\r
#define NF 0x02
\r
\r
#define CF 0x01
\r
#define NF 0x02
\r
@@
-203,6
+215,13
@@
void Cz80_Reset(cz80_struc *CPU)
Cz80_Set_Reg(CPU, CZ80_PC, 0);
\r
}
\r
\r
Cz80_Set_Reg(CPU, CZ80_PC, 0);
\r
}
\r
\r
+/* */
\r
+#if PICODRIVE_HACKS
\r
+static inline unsigned char picodrive_read(unsigned short a)
\r
+{
\r
+ return (a < 0x4000) ? Pico.zram[a&0x1fff] : z80_read(a);
\r
+}
\r
+#endif
\r
\r
/*--------------------------------------------------------
\r
CPU
\8e
À
\8d
s
\r
\r
/*--------------------------------------------------------
\r
CPU
\8e
À
\8d
s
\r
@@
-223,6
+242,7
@@
INT32 Cz80_Exec(cz80_struc *CPU, INT32 cycles)
UINT32 res;
\r
UINT32 val;
\r
int afterEI = 0;
\r
UINT32 res;
\r
UINT32 val;
\r
int afterEI = 0;
\r
+ union16 *data;
\r
\r
PC = CPU->PC;
\r
#if CZ80_ENCRYPTED_ROM
\r
\r
PC = CPU->PC;
\r
#if CZ80_ENCRYPTED_ROM
\r
@@
-236,7
+256,8
@@
INT32 Cz80_Exec(cz80_struc *CPU, INT32 cycles)
Cz80_Exec:
\r
if (CPU->ICount > 0)
\r
{
\r
Cz80_Exec:
\r
if (CPU->ICount > 0)
\r
{
\r
- union16 *data = pzHL;
\r
+Cz80_Exec_nocheck:
\r
+ data = pzHL;
\r
Opcode = READ_OP();
\r
#if CZ80_EMULATE_R_EXACTLY
\r
zR++;
\r
Opcode = READ_OP();
\r
#if CZ80_EMULATE_R_EXACTLY
\r
zR++;
\r
@@
-251,6
+272,8
@@
Cz80_Check_Interrupt:
if (CPU->IRQState != CLEAR_LINE)
\r
{
\r
CHECK_INT
\r
if (CPU->IRQState != CLEAR_LINE)
\r
{
\r
CHECK_INT
\r
+ CPU->ICount -= CPU->ExtraCycles;
\r
+ CPU->ExtraCycles = 0;
\r
}
\r
goto Cz80_Exec;
\r
}
\r
}
\r
goto Cz80_Exec;
\r
}
\r