summaryrefslogblamecommitdiffstatshomepage
path: root/src/devices/machine/68307sim.h
blob: 2198e19d956da028beceea38ecc897ec5befa5b4 (plain) (tree)
1
2
3
4
5
6
7
8
9

                                  

                      
                              
 
                       
 
 














                              













                            









                                

                       






                                                       

                                                                                                     


                                                       

                                                                                                     


 



                                                                               

                         
  
// 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 m_pacnt; // 8-bit
	UINT16 m_paddr; // 8-bit
	UINT16 m_padat; // 8-bit

	UINT16 m_pbcnt;
	UINT16 m_pbddr;
	UINT16 m_pbdat;

	UINT16 m_pivr; // 8-bit

	UINT16 m_br[4];
	UINT16 m_or[4];
	UINT16 m_picr;
	UINT16 m_licr1;
	UINT16 m_licr2;


	void write_pacnt(UINT16 data, UINT16 mem_mask);
	void write_paddr(UINT16 data, UINT16 mem_mask);
	UINT16 read_padat(m68307cpu_device* m68k, address_space &space, UINT16 mem_mask);
	void write_padat(m68307cpu_device* m68k, address_space &space, UINT16 data, UINT16 mem_mask);

	void write_pbcnt(UINT16 data, UINT16 mem_mask);
	void write_pbddr(UINT16 data, UINT16 mem_mask);
	UINT16 read_pbdat(m68307cpu_device* m68k, address_space &space, UINT16 mem_mask);
	void write_pbdat(m68307cpu_device* m68k, address_space &space, UINT16 data, UINT16 mem_mask);



	void write_licr1(m68307cpu_device* m68k, UINT16 data, UINT16 mem_mask);
	void write_licr2(m68307cpu_device* m68k, UINT16 data, UINT16 mem_mask);
	void write_picr(m68307cpu_device* m68k, UINT16 data, UINT16 mem_mask);
	void write_pivr(m68307cpu_device* m68k, UINT16 data, UINT16 mem_mask);

	void reset(void);
};