// license:BSD-3-Clause
// copyright-holders:David Haywood
/* 68307 SIM module */
#include "cpu/m68000/m68000.h"
class m68307cpu_device;
/* ports */
#define m68307SIM_PACNT (0x10)
#define m68307SIM_PADDR (0x12)
#define m68307SIM_PADAT (0x14)
#define m68307SIM_PBCNT (0x16)
#define m68307SIM_PBDDR (0x18)
#define m68307SIM_PBDAT (0x1a)
/* interrupt logic */
#define m68307SIM_LICR1 (0x20)
#define m68307SIM_LICR2 (0x22)
#define m68307SIM_PICR (0x24)
#define m68307SIM_PIVR (0x26)
/* used for the CS logic */
#define m68307SIM_BR0 (0x40)
#define m68307SIM_OR0 (0x42)
#define m68307SIM_BR1 (0x44)
#define m68307SIM_OR1 (0x46)
#define m68307SIM_BR2 (0x48)
#define m68307SIM_OR2 (0x4a)
#define m68307SIM_BR3 (0x4c)
#define m68307SIM_OR3 (0x4e)
class m68307_sim
{
public:
uint16_t m_pacnt; // 8-bit
uint16_t m_paddr; // 8-bit
uint16_t m_padat; // 8-bit
uint16_t m_pbcnt;
uint16_t m_pbddr;
uint16_t m_pbdat;
uint16_t m_pivr; // 8-bit
uint16_t m_br[4];
uint16_t m_or[4];
uint16_t m_picr;
uint16_t m_licr1;
uint16_t m_licr2;
void write_pacnt(uint16_t data, uint16_t mem_mask);
void write_paddr(uint16_t data, uint16_t mem_mask);
uint16_t read_padat(m68307cpu_device* m68k, address_space &space, uint16_t mem_mask);
void write_padat(m68307cpu_device* m68k, address_space &space, uint16_t data, uint16_t mem_mask);
void write_pbcnt(uint16_t data, uint16_t mem_mask);
void write_pbddr(uint16_t data, uint16_t mem_mask);
uint16_t read_pbdat(m68307cpu_device* m68k, address_space &space, uint16_t mem_mask);
void write_pbdat(m68307cpu_device* m68k, address_space &space, uint16_t data, uint16_t mem_mask);
void write_licr1(m68307cpu_device* m68k, uint16_t data, uint16_t mem_mask);
void write_licr2(m68307cpu_device* m68k, uint16_t data, uint16_t mem_mask);
void write_picr(m68307cpu_device* m68k, uint16_t data, uint16_t mem_mask);
void write_pivr(m68307cpu_device* m68k, uint16_t data, uint16_t mem_mask);
void reset(void);
};