Previous 199869 Revisions Next

r26031 Thursday 7th November, 2013 at 03:59:42 UTC by R. Belmont
(MESS) Apple II: Support for Applied Engineering Super Music Synthesizer [R. Belmont]
[src/emu/bus/a2bus]a2alfam2.c a2alfam2.h
[src/mess/drivers]apple2.c

trunk/src/emu/bus/a2bus/a2alfam2.c
r26030r26031
33    a2alfsm2.c
44
55    Implementation of the ALF Apple Music II card (originally marketed as the "MC1")
6    The AE Super Music Synthesizer is a superset of this card (4x76489 instead of 3)
67
78*********************************************************************/
89
r26030r26031
1920//**************************************************************************
2021
2122const device_type A2BUS_ALFAM2 = &device_creator<a2bus_alfam2_device>;
23const device_type A2BUS_AESMS = &device_creator<a2bus_aesms_device>;
2224
2325#define SN1_TAG         "sn76489_1" // left
2426#define SN2_TAG         "sn76489_2" // center
2527#define SN3_TAG         "sn76489_3" // right
28#define SN4_TAG         "sn76489_4" // center?
2629
2730//-------------------------------------------------
2831//  sn76496_config psg_intf
r26030r26031
4750   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "alf_r", 0.50)
4851MACHINE_CONFIG_END
4952
53MACHINE_CONFIG_FRAGMENT( a2aesms )
54   MCFG_SPEAKER_STANDARD_STEREO("alf_l", "alf_r")
55   MCFG_SOUND_ADD(SN1_TAG, SN76489, 1020484)
56   MCFG_SOUND_CONFIG(psg_intf)
57   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "alf_l", 0.50)
58   MCFG_SOUND_ADD(SN2_TAG, SN76489, 1020484)
59   MCFG_SOUND_CONFIG(psg_intf)
60   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "alf_l", 0.50)
61   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "alf_r", 0.50)
62   MCFG_SOUND_ADD(SN3_TAG, SN76489, 1020484)
63   MCFG_SOUND_CONFIG(psg_intf)
64   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "alf_r", 0.50)
65   MCFG_SOUND_ADD(SN4_TAG, SN76489, 1020484)
66   MCFG_SOUND_CONFIG(psg_intf)
67   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "alf_l", 0.50)
68   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "alf_r", 0.50)
69MACHINE_CONFIG_END
70
5071/***************************************************************************
5172    FUNCTION PROTOTYPES
5273***************************************************************************/
r26030r26031
5677//  machine configurations
5778//-------------------------------------------------
5879
59machine_config_constructor a2bus_alfam2_device::device_mconfig_additions() const
80machine_config_constructor a2bus_sn76489_device::device_mconfig_additions() const
6081{
6182   return MACHINE_CONFIG_NAME( a2alfam2 );
6283}
6384
85machine_config_constructor a2bus_aesms_device::device_mconfig_additions() const
86{
87   return MACHINE_CONFIG_NAME( a2aesms );
88}
89
6490//**************************************************************************
6591//  LIVE DEVICE
6692//**************************************************************************
6793
68a2bus_alfam2_device::a2bus_alfam2_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source) :
94a2bus_sn76489_device::a2bus_sn76489_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source) :
6995   device_t(mconfig, type, name, tag, owner, clock, shortname, source),
7096   device_a2bus_card_interface(mconfig, *this),
7197   m_sn1(*this, SN1_TAG),
7298   m_sn2(*this, SN2_TAG),
73   m_sn3(*this, SN3_TAG)
99   m_sn3(*this, SN3_TAG),
100   m_sn4(*this, SN4_TAG)
74101{
75102}
76103
77104a2bus_alfam2_device::a2bus_alfam2_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
78   device_t(mconfig, A2BUS_ALFAM2, "ALF MC1 / Apple Music II", tag, owner, clock, "a2alfam2", __FILE__),
79   device_a2bus_card_interface(mconfig, *this),
80   m_sn1(*this, SN1_TAG),
81   m_sn2(*this, SN2_TAG),
82   m_sn3(*this, SN3_TAG)
105   a2bus_sn76489_device(mconfig, A2BUS_ALFAM2, "ALF MC1 / Apple Music II", tag, owner, clock, "a2alfam2", __FILE__)
83106{
107   m_has4thsn = false;
84108}
85109
110a2bus_aesms_device::a2bus_aesms_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
111   a2bus_sn76489_device(mconfig, A2BUS_ALFAM2, "Applied Engineering Super Music Synthesizer", tag, owner, clock, "a2aesms", __FILE__)
112{
113   m_has4thsn = true;
114}
115
86116//-------------------------------------------------
87117//  device_start - device-specific startup
88118//-------------------------------------------------
89119
90void a2bus_alfam2_device::device_start()
120void a2bus_sn76489_device::device_start()
91121{
92122   // set_a2bus_device makes m_slot valid
93123   set_a2bus_device();
94   m_latch0 = m_latch1 = m_latch2 = 0;
124   m_latch0 = m_latch1 = m_latch2 = m_latch3 = 0;
95125
96126   save_item(NAME(m_latch0));
97127   save_item(NAME(m_latch1));
98128   save_item(NAME(m_latch2));
129   save_item(NAME(m_latch3));
99130}
100131
101void a2bus_alfam2_device::device_reset()
132void a2bus_sn76489_device::device_reset()
102133{
103   m_latch0 = m_latch1 = m_latch2 = 0;
134   m_latch0 = m_latch1 = m_latch2 = m_latch3 = 0;
104135}
105136
106UINT8 a2bus_alfam2_device::read_c0nx(address_space &space, UINT8 offset)
137UINT8 a2bus_sn76489_device::read_c0nx(address_space &space, UINT8 offset)
107138{
108139   // SN76489 can't be read, it appears from the schematics this is what happens
109140   switch (offset)
r26030r26031
116147
117148      case 2:
118149         return m_latch2;
150
151      case 3:
152         return m_latch3;
119153   }
120154
121155   return 0xff;
122156}
123157
124void a2bus_alfam2_device::write_c0nx(address_space &space, UINT8 offset, UINT8 data)
158void a2bus_sn76489_device::write_c0nx(address_space &space, UINT8 offset, UINT8 data)
125159{
126160   switch (offset)
127161   {
r26030r26031
139173         m_sn3->write(space, 0, data);
140174         m_latch2 = data;
141175         break;
176
177      case 3:
178         if (m_has4thsn)
179         {
180            m_sn4->write(space, 0, data);
181            m_latch3 = data;
182         }
183         break;
142184   }
143185}
144186
145bool a2bus_alfam2_device::take_c800()
187bool a2bus_sn76489_device::take_c800()
146188{
147189   return false;
148190}
trunk/src/emu/bus/a2bus/a2alfam2.h
r26030r26031
22
33    a2alfam2.h
44
5    Implementation of the ALF Apple Music II card
5    Implementation of the ALF Apple Music II card and compatibles
66
77*********************************************************************/
88
r26030r26031
1717//  TYPE DEFINITIONS
1818//**************************************************************************
1919
20class a2bus_alfam2_device:
20class a2bus_sn76489_device:
2121   public device_t,
2222   public device_a2bus_card_interface
2323{
2424public:
2525   // construction/destruction
26   a2bus_alfam2_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source);
27   a2bus_alfam2_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
26   a2bus_sn76489_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source);
2827
2928   // optional information overrides
3029   virtual machine_config_constructor device_mconfig_additions() const;
r26030r26031
3231   required_device<sn76489_device> m_sn1;
3332   required_device<sn76489_device> m_sn2;
3433   required_device<sn76489_device> m_sn3;
34   optional_device<sn76489_device> m_sn4;
3535
3636protected:
3737   virtual void device_start();
r26030r26031
4343   virtual bool take_c800();
4444
4545private:
46   UINT8 m_latch0, m_latch1, m_latch2;
46   UINT8 m_latch0, m_latch1, m_latch2, m_latch3;
47
48protected:
49   bool m_has4thsn;
4750};
4851
52class a2bus_alfam2_device : public a2bus_sn76489_device
53{
54public:
55   a2bus_alfam2_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
56};
57
58class a2bus_aesms_device : public a2bus_sn76489_device
59{
60public:
61   a2bus_aesms_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
62
63   virtual machine_config_constructor device_mconfig_additions() const;
64};
65
4966// device type definition
5067extern const device_type A2BUS_ALFAM2;
68extern const device_type A2BUS_AESMS;
5169
5270#endif /* __A2BUS_ALFAM2__ */
trunk/src/mess/drivers/apple2.c
r26030r26031
640640   SLOT_INTERFACE("echoiiplus", A2BUS_ECHOPLUS)    /* Street Electronics Echo Plus (Echo II + Mockingboard clone) */
641641   SLOT_INTERFACE("scsi", A2BUS_SCSI)  /* Apple II SCSI Card */
642642   SLOT_INTERFACE("applicard", A2BUS_APPLICARD)    /* PCPI Applicard */
643   SLOT_INTERFACE("aesms", A2BUS_AESMS)    /* Applied Engineering Super Music Synthesizer */
643644SLOT_INTERFACE_END
644645
645646static SLOT_INTERFACE_START(apple2eaux_cards)

Previous 199869 Revisions Next


© 1997-2024 The MAME Team