//----------------------------------------------------------------------------
//
// Z80A : Z80 Engine - Strong ARM optimize
//
// Copyright by Studio Milmake 1999-2000,2004
//
//----------------------------------------------------------------------------
#include "compiler.h"
#include "parts.h"
#include "z80core.h"
#include "pccore.h"
#include "iocore.h"
Z80CORE z80core;
UINT8 mainmem[0x10000];
void CPUCALL z80a_initialize(void) {
UINT i;
REG8 f;
REG8 c;
for (i=0; i<256; i++) {
f = V_FLAG;
if (!i) {
f |= Z_FLAG;
}
if (i & 0x80) {
f |= S_FLAG;
}
for (c=0x80; c; c>>=1) {
if (i & c) {
f ^= V_FLAG;
}
}
z80core.f.szp[i] = (UINT8)f;
z80core.f.inc[(i - 1) & 0xff] = (UINT8)(f & (~V_FLAG));
if (!(i & 0x0f)) {
z80core.f.inc[(i - 1) & 0xff] |= H_FLAG;
}
z80core.f.dec[(i + 1) & 0xff] = (UINT8)(f & (~V_FLAG)) | N_FLAG;
if ((i & 0x0f) == 0x0f) {
z80core.f.dec[(i + 1) & 0xff] |= H_FLAG;
}
}
z80core.f.inc[0x80 - 1] |= V_FLAG;
z80core.f.dec[0x7f + 1] |= V_FLAG;
}
void CPUCALL z80a_reset(void) {
ZeroMemory(&z80core.s, sizeof(z80core.s));
z80core.s.r1 = rand_get();
z80core.e.membase = mainmem;
}
RetroPC.NET-CVS <cvs@retropc.net>