Previous 199869 Revisions Next

r18599 Friday 19th October, 2012 at 11:29:07 UTC by Robbbert
williams system3 wip
[src/mame/drivers]s3.c

trunk/src/mame/drivers/s3.c
r18598r18599
3434
3535   DECLARE_READ8_MEMBER(dac_r);
3636   DECLARE_WRITE8_MEMBER(dac_w);
37   DECLARE_WRITE8_MEMBER(dig0_w);
38   DECLARE_WRITE8_MEMBER(dig1_w);
39   DECLARE_WRITE8_MEMBER(lamp0_w);
40   DECLARE_WRITE8_MEMBER(lamp1_w);
41   DECLARE_READ8_MEMBER(switch_r);
42   DECLARE_WRITE8_MEMBER(switch_w);
3743   DECLARE_READ_LINE_MEMBER(cb1_r);
3844   TIMER_DEVICE_CALLBACK_MEMBER(irq);
3945protected:
r18598r18599
5258private:
5359   UINT8 m_t_c;
5460   UINT8 m_sound_data;
61   UINT8 m_strobe;
5562   bool m_cb1;
5663};
5764
r18598r18599
8592{
8693   DEVCB_NULL,      /* port A in */
8794   DEVCB_NULL,      /* port B in */
88   DEVCB_NULL,      /* line CA1 in */
89   DEVCB_NULL,      /* line CB1 in */
95   DEVCB_LINE_GND,      /* line CA1 in */
96   DEVCB_LINE_GND,      /* line CB1 in */
9097   DEVCB_NULL,      /* line CA2 in */
9198   DEVCB_NULL,      /* line CB2 in */
9299   DEVCB_NULL,      /* port A out */
r18598r18599
97104   DEVCB_CPU_INPUT_LINE("maincpu", M6800_IRQ_LINE)      /* IRQB */
98105};
99106
107WRITE8_MEMBER( s3_state::lamp0_w )
108{
109   m_maincpu->set_input_line(M6800_IRQ_LINE, CLEAR_LINE);
110}
111
112WRITE8_MEMBER( s3_state::lamp1_w )
113{
114   //printf("1=%X ",data);
115}
116
100117static const pia6821_interface pia1_intf =
101118{
102119   DEVCB_NULL,      /* port A in */
103120   DEVCB_NULL,      /* port B in */
104   DEVCB_NULL,      /* line CA1 in */
105   DEVCB_NULL,      /* line CB1 in */
121   DEVCB_LINE_GND,      /* line CA1 in */
122   DEVCB_LINE_GND,      /* line CB1 in */
106123   DEVCB_NULL,      /* line CA2 in */
107124   DEVCB_NULL,      /* line CB2 in */
108   DEVCB_NULL,      /* port A out */
109   DEVCB_NULL,      /* port B out */
125   DEVCB_DRIVER_MEMBER(s3_state, lamp0_w),      /* port A out */
126   DEVCB_DRIVER_MEMBER(s3_state, lamp1_w),      /* port B out */
110127   DEVCB_NULL,      /* line CA2 out */
111128   DEVCB_NULL,      /* port CB2 out */
112129   DEVCB_CPU_INPUT_LINE("maincpu", M6800_IRQ_LINE),      /* IRQA */
113130   DEVCB_CPU_INPUT_LINE("maincpu", M6800_IRQ_LINE)      /* IRQB */
114131};
115132
133WRITE8_MEMBER( s3_state::dig0_w )
134{
135   m_strobe = data;
136}
137
138WRITE8_MEMBER( s3_state::dig1_w )
139{
140   static const UINT8 patterns[16] = { 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0, 0, 0, 0, 0, 0 }; // MC14558
141   // player 1, 2, credits, balls
142   output_set_digit_value(m_strobe, patterns[data&15]);
143   // player 3 and 4
144   output_set_digit_value(m_strobe+20, patterns[data>>4]);
145}
146
116147static const pia6821_interface pia2_intf =
117148{
118149   DEVCB_NULL,      /* port A in */
r18598r18599
121152   DEVCB_NULL,      /* line CB1 in */
122153   DEVCB_NULL,      /* line CA2 in */
123154   DEVCB_NULL,      /* line CB2 in */
124   DEVCB_NULL,      /* port A out */
125   DEVCB_NULL,      /* port B out */
155   DEVCB_DRIVER_MEMBER(s3_state, dig0_w),      /* port A out */
156   DEVCB_DRIVER_MEMBER(s3_state, dig1_w),      /* port B out */
126157   DEVCB_NULL,      /* line CA2 out */
127158   DEVCB_NULL,      /* port CB2 out */
128159   DEVCB_CPU_INPUT_LINE("maincpu", M6800_IRQ_LINE),      /* IRQA */
129160   DEVCB_CPU_INPUT_LINE("maincpu", M6800_IRQ_LINE)      /* IRQB */
130161};
131162
163READ8_MEMBER( s3_state::switch_r )
164{
165   return 0xff;
166}
167
168WRITE8_MEMBER( s3_state::switch_w )
169{
170
171}
172
132173static const pia6821_interface pia3_intf =
133174{
134   DEVCB_NULL,      /* port A in */
175   DEVCB_DRIVER_MEMBER(s3_state, switch_r),      /* port A in */
135176   DEVCB_NULL,      /* port B in */
136   DEVCB_NULL,      /* line CA1 in */
137   DEVCB_NULL,      /* line CB1 in */
177   DEVCB_LINE_GND,      /* line CA1 in */
178   DEVCB_LINE_GND,      /* line CB1 in */
138179   DEVCB_NULL,      /* line CA2 in */
139180   DEVCB_NULL,      /* line CB2 in */
140181   DEVCB_NULL,      /* port A out */
141   DEVCB_NULL,      /* port B out */
182   DEVCB_DRIVER_MEMBER(s3_state, switch_w),      /* port B out */
142183   DEVCB_NULL,      /* line CA2 out */
143184   DEVCB_NULL,      /* port CB2 out */
144185   DEVCB_CPU_INPUT_LINE("maincpu", M6800_IRQ_LINE),      /* IRQA */
r18598r18599
165206static const pia6821_interface pia4_intf =
166207{
167208   DEVCB_NULL,      /* port A in */
168   DEVCB_NULL,      /* port B in */
209   DEVCB_DRIVER_MEMBER(s3_state, dac_r),      /* port B in */
169210   DEVCB_NULL,      /* line CA1 in */
170211   DEVCB_DRIVER_LINE_MEMBER(s3_state, cb1_r),      /* line CB1 in */
171212   DEVCB_NULL,      /* line CA2 in */
r18598r18599
180221
181222TIMER_DEVICE_CALLBACK_MEMBER( s3_state::irq)
182223{
183   if (m_t_c > 0x10)
224   if (m_t_c > 0x70)
184225      m_maincpu->set_input_line(M6800_IRQ_LINE, ASSERT_LINE);
185226   else
186227      m_t_c++;
187   m_maincpu->set_input_line(M6800_IRQ_LINE, CLEAR_LINE);
188228}
189229
190230static MACHINE_CONFIG_START( s3, s3_state )

Previous 199869 Revisions Next


© 1997-2024 The MAME Team