summaryrefslogblamecommitdiffstatshomepage
path: root/src/mame/includes/macpci.h
blob: ac04cedf99475ed0d74abc7571979c96d1209f18 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
                       
                               







                                                                              

                              







                            

                         




                                




                                         
                                                                                      


                                                    

                                        
                                      


                                                



                                               
                                            
                                          

                                                 
 

                                              
 












































                                                                      





                                                           



                                                                                                
                                                

                                   
                                               

                                            

                                                          
                         
 







                                               

                                          
 

                                                
 

                                                         
 
                         


                                         
                           
                                            
                                          
        

                                            
 
               
                             


                                    
                                                                                                              
                                             



                                             

                                                       
                                               
                                            

  
                                
// license:BSD-3-Clause
// copyright-holders:R. Belmont
/*****************************************************************************
 *
 * includes/macpci.h
 *
 * PCI-based Power Macintosh driver declarations
 *
 ****************************************************************************/

#ifndef MAME_INCLUDES_MACPCI_H
#define MAME_INCLUDES_MACPCI_H

#include "machine/8530scc.h"
#include "machine/6522via.h"
#include "machine/ram.h"
#include "machine/cuda.h"
#include "machine/ncr539x.h"
#include "sound/awacs.h"

#define C7M     (7833600)
#define C15M    (C7M*2)

#define MAC_SCREEN_NAME "screen"
#define MAC_539X_1_TAG "539x_1"
#define MAC_539X_2_TAG "539x_2"

/* Mac driver data */

class macpci_state : public driver_device
{
public:
	macpci_state(const machine_config &mconfig, device_type type, const char *tag)
		: driver_device(mconfig, type, tag),
		m_maincpu(*this, "maincpu"),
		m_via1(*this, "via6522_0"),
		m_awacs(*this, "awacs"),
		m_cuda(*this, CUDA_TAG),
		m_ram(*this, RAM_TAG),
		m_539x_1(*this, MAC_539X_1_TAG),
		m_539x_2(*this, MAC_539X_2_TAG)
		{ }

	required_device<cpu_device> m_maincpu;
	required_device<via6522_device> m_via1;
	optional_device<awacs_device> m_awacs;
	required_device<cuda_device> m_cuda;
	required_device<ram_device> m_ram;
	optional_device<ncr539x_device> m_539x_1;
	optional_device<ncr539x_device> m_539x_2;

	virtual void machine_start() override;
	virtual void machine_reset() override;

	/* tells which model is being emulated (set by macxxx_init) */
	enum model_t
	{
		PCIMODEL_MAC_PM5200,
		PCIMODEL_MAC_PM6200,
		PCIMODEL_MAC_PM5300,
		PCIMODEL_MAC_PM7200,
		PCIMODEL_MAC_PM7500,
		PCIMODEL_MAC_PM8500,
		PCIMODEL_MAC_PM9500,
		PCIMODEL_MAC_PM7215,
		PCIMODEL_MAC_PM5260,
		PCIMODEL_MAC_PM5400,
		PCIMODEL_MAC_PM7600,
		PCIMODEL_MAC_PM8200,
		PCIMODEL_MAC_PM6300,
		PCIMODEL_MAC_PM6400,
		PCIMODEL_MAC_PM4400,
		PCIMODEL_MAC_PM5500,
		PCIMODEL_MAC_PM7220,
		PCIMODEL_MAC_PM7300,
		PCIMODEL_MAC_PM6500,
		PCIMODEL_MAC_PM8600,
		PCIMODEL_MAC_PM9600,

		PCIMODEL_MAC_20TH,

		PCIMODEL_MAC_G3_GOSSAMER,
		PCIMODEL_MAC_G3_ALLINONE,

		PCIMODEL_MAC_PB5x0PPC,
		PCIMODEL_MAC_PB1400,
		PCIMODEL_MAC_PB2300,
		PCIMODEL_MAC_PB2400,
		PCIMODEL_MAC_PB3400,
		PCIMODEL_MAC_PB5300,

		PCIMODEL_MAC_PBG3KANGA,
		PCIMODEL_MAC_PBG3WALLST1,
		PCIMODEL_MAC_PBG3WALLST2,

		PCIMODEL_MAC_PIPPIN    // Apple/Bandai Pippin

	};

	model_t m_model;

	// 60.15 Hz timer for RBV/V8/Sonora/Eagle/VASP/etc.
	emu_timer *m_6015_timer;

	// RBV and friends (V8, etc)
	uint8_t m_rbv_regs[256], m_rbv_ier, m_rbv_ifr, m_rbv_type, m_rbv_montype, m_rbv_vbltime;
	uint32_t m_rbv_colors[3], m_rbv_count, m_rbv_clutoffs, m_rbv_immed10wr;
	uint32_t m_rbv_palette[256];
	uint8_t m_sonora_vctl[8];
	emu_timer *m_vbl_timer, *m_cursor_timer;
	uint16_t m_cursor_line;
	uint16_t m_dafb_int_status;
	int m_dafb_scsi1_drq, m_dafb_scsi2_drq;
	uint8_t m_dafb_mode;
	uint32_t m_dafb_base, m_dafb_stride;

	// this is shared among all video setups with vram
	uint32_t *m_vram;

	DECLARE_READ16_MEMBER ( mac_via_r );
	DECLARE_WRITE16_MEMBER ( mac_via_w );
	DECLARE_READ16_MEMBER ( mac_scc_r );
	DECLARE_WRITE16_MEMBER ( mac_scc_w );
	DECLARE_WRITE16_MEMBER ( mac_scc_2_w );

	DECLARE_READ32_MEMBER(mac_read_id);

	DECLARE_READ8_MEMBER(mac_5396_r);
	DECLARE_WRITE8_MEMBER(mac_5396_w);

	DECLARE_WRITE_LINE_MEMBER(irq_539x_1_w);
	DECLARE_WRITE_LINE_MEMBER(drq_539x_1_w);

	DECLARE_WRITE_LINE_MEMBER(cuda_reset_w);
	DECLARE_WRITE_LINE_MEMBER(cuda_adb_linechange_w);

	// hack functions
	DECLARE_READ64_MEMBER ( unk1_r );
	DECLARE_READ64_MEMBER ( unk2_r );

	void init_pippin();
	void pippin(machine_config &config);
	void pippin_mem(address_map &map);
private:
	// wait states for accessing the VIA
	int m_via_cycles;

	// hack
	uint16_t m_unk1_test;

public:
	emu_timer *m_scanline_timer;
	uint32_t screen_update_pippin(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
	TIMER_CALLBACK_MEMBER(mac_6015_tick);
	DECLARE_READ8_MEMBER(mac_via_in_a);
	DECLARE_READ8_MEMBER(mac_via_in_b);
	DECLARE_WRITE8_MEMBER(mac_via_out_a);
	DECLARE_WRITE8_MEMBER(mac_via_out_b);
	DECLARE_READ_LINE_MEMBER(mac_adb_via_in_cb2);
	DECLARE_WRITE_LINE_MEMBER(mac_adb_via_out_cb2);
	DECLARE_WRITE_LINE_MEMBER(mac_via_irq);
	void mac_driver_init(model_t model);
};

#endif // MAME_INCLUDES_MACPCI_H