/*  Emulador do computador TK3000 //e (Microdigital)
 *  por Fábio Belavenuto - Copyright (C) 2004
 *
 *  Adaptado do emulador Applewin por Michael O'Brien
 *  Part of code is Copyright (C) 2003-2004 Tom Charlesworth
 *
 *  Este arquivo é distribuido pela Licença Pública Geral GNU.
 *  Veja o arquivo Licenca.txt distribuido com este software.
 *
 *  ESTE SOFTWARE NÃO OFERECE NENHUMA GARANTIA
 *
 */

// Emula a CPU Z80

#include "StdAfx.h"

#include "z80emu.h"
#include "CPU.h"
#include "Memory.h"
#include "Z80VICE/z80.h"


BYTE __stdcall Z80Card::IOWrite(WORD pc, WORD addr, BYTE bWrite, BYTE value, ULONG nExecutedCycles)
{
	const UINT slot = (addr >> 8) & 0x7;

	if ((addr & 0xFF00) == (0xC000 + (slot << 8)))
		SetActiveCpu( GetActiveCpu() == CPU_Z80 ? GetMainCpu() : CPU_Z80 );

	return IO_Null(pc, addr, bWrite, value, nExecutedCycles);
}

void Z80Card::InitializeIO(LPBYTE pCxRomPeripheral)
{	
	memset(pCxRomPeripheral + (m_slot << 8), 0xFF, APPLE_SLOT_SIZE);
	
	RegisterIoHandler(m_slot, IO_Null, IO_Null, IO_Null, &Z80Card::IOWrite, this, NULL);
}

//===========================================================================

const std::string& Z80Card::GetSnapshotCardName(void)
{
	return Z80_GetSnapshotCardName();
}

void Z80Card::SaveSnapshot(YamlSaveHelper& yamlSaveHelper)
{
	return Z80_SaveSnapshot(yamlSaveHelper, m_slot);
}

bool Z80Card::LoadSnapshot(YamlLoadHelper& yamlLoadHelper, UINT version)
{
	return Z80_LoadSnapshot(yamlLoadHelper, m_slot, version);
}
