Previous 199869 Revisions Next

r18782 Tuesday 30th October, 2012 at 15:33:49 UTC by Curt Coder
pic8259: Added modern accessors. (nw)
[src/emu/machine]pic8259.c pic8259.h
[src/mess/drivers]cbm2.c

trunk/src/emu/machine/pic8259.c
r18781r18782
156156WRITE_LINE_DEVICE_HANDLER( pic8259_ir6_w ) { pic8259_set_irq_line(device, 6, state); }
157157WRITE_LINE_DEVICE_HANDLER( pic8259_ir7_w ) { pic8259_set_irq_line(device, 7, state); }
158158
159WRITE_LINE_MEMBER( pic8259_device::ir0_w ) { pic8259_set_irq_line(this, 0, state); }
160WRITE_LINE_MEMBER( pic8259_device::ir1_w ) { pic8259_set_irq_line(this, 1, state); }
161WRITE_LINE_MEMBER( pic8259_device::ir2_w ) { pic8259_set_irq_line(this, 2, state); }
162WRITE_LINE_MEMBER( pic8259_device::ir3_w ) { pic8259_set_irq_line(this, 3, state); }
163WRITE_LINE_MEMBER( pic8259_device::ir4_w ) { pic8259_set_irq_line(this, 4, state); }
164WRITE_LINE_MEMBER( pic8259_device::ir5_w ) { pic8259_set_irq_line(this, 5, state); }
165WRITE_LINE_MEMBER( pic8259_device::ir6_w ) { pic8259_set_irq_line(this, 6, state); }
166WRITE_LINE_MEMBER( pic8259_device::ir7_w ) { pic8259_set_irq_line(this, 7, state); }
167
159168int pic8259_acknowledge(device_t *device)
160169{
161170   pic8259_t   *pic8259 = get_safe_token(device);
r18781r18782
252261}
253262
254263
264READ8_MEMBER( pic8259_device::read )
265{
266   return pic8259_r(this, space, offset);
267}
255268
269
256270WRITE8_DEVICE_HANDLER( pic8259_w )
257271{
258272   pic8259_t   *pic8259 = get_safe_token(device);
r18781r18782
402416}
403417
404418
419WRITE8_MEMBER( pic8259_device::write )
420{
421   pic8259_w(this, space, offset, data);
422}
405423
424
406425static DEVICE_START( pic8259 )
407426{
408427   pic8259_t   *pic8259 = get_safe_token(device);
trunk/src/emu/machine/pic8259.h
r18781r18782
3434   pic8259_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
3535   ~pic8259_device() { global_free(m_token); }
3636
37   DECLARE_READ8_MEMBER( read );
38   DECLARE_WRITE8_MEMBER( write );
39
40   DECLARE_WRITE_LINE_MEMBER( ir0_w );
41   DECLARE_WRITE_LINE_MEMBER( ir1_w );
42   DECLARE_WRITE_LINE_MEMBER( ir2_w );
43   DECLARE_WRITE_LINE_MEMBER( ir3_w );
44   DECLARE_WRITE_LINE_MEMBER( ir4_w );
45   DECLARE_WRITE_LINE_MEMBER( ir5_w );
46   DECLARE_WRITE_LINE_MEMBER( ir6_w );
47   DECLARE_WRITE_LINE_MEMBER( ir7_w );
48
3749   // access to legacy token
3850   void *token() const { assert(m_token != NULL); return m_token; }
3951protected:
trunk/src/mess/drivers/cbm2.c
r18781r18782
844844
845845static ADDRESS_MAP_START( ext_io, AS_IO, 8, cbm2_state )
846846   ADDRESS_MAP_GLOBAL_MASK(0xff)
847   AM_RANGE(0x0000, 0x0001) AM_MIRROR(0x1e) AM_DEVREADWRITE_LEGACY(EXT_I8259A_TAG, pic8259_r, pic8259_w)
847   AM_RANGE(0x0000, 0x0001) AM_MIRROR(0x1e) AM_DEVREADWRITE(EXT_I8259A_TAG, pic8259_device, read, write)
848848   AM_RANGE(0x0020, 0x0027) AM_MIRROR(0x18) AM_DEVREADWRITE(EXT_MOS6525_TAG, tpi6525_device, read, write)
849849ADDRESS_MAP_END
850850
r18781r18782
11421142
11431143READ8_MEMBER( cbm2_state::sid_potx_r )
11441144{
1145   int sela = BIT(m_cia_pa, 6);
1146   int selb = BIT(m_cia_pa, 7);
1145   UINT8 data = 0xff;
11471146
1148   UINT8 data = 0;
1147   switch (m_cia_pa >> 6)
1148   {
1149   case 1: data = m_joy1->pot_x_r(); break;
1150   case 2: data = m_joy2->pot_x_r(); break;
1151   case 3: break; // TODO pot1 and pot2 in series
1152   }
11491153
1150   if (sela) data = m_joy1->pot_x_r();
1151   if (selb) data = m_joy2->pot_x_r();
1152
11531154   return data;
11541155}
11551156
11561157READ8_MEMBER( cbm2_state::sid_poty_r )
11571158{
1158   int sela = BIT(m_cia_pa, 6);
1159   int selb = BIT(m_cia_pa, 7);
1159   UINT8 data = 0xff;
11601160
1161   UINT8 data = 0;
1161   switch (m_cia_pa >> 6)
1162   {
1163   case 1: data = m_joy1->pot_y_r(); break;
1164   case 2: data = m_joy2->pot_y_r(); break;
1165   case 3: break; // TODO pot1 and pot2 in series
1166   }
11621167
1163   if (sela) data = m_joy1->pot_y_r();
1164   if (selb) data = m_joy2->pot_y_r();
1165
11661168   return data;
11671169}
11681170
r18781r18782
18851887      m_busen1 = 0;
18861888   }
18871889
1888   pic8259_ir0_w(m_ext_pic, !BIT(data, 6));
1889   pic8259_ir7_w(m_ext_pic, BIT(data, 7));
1890   m_ext_pic->ir0_w(!BIT(data, 6));
1891   m_ext_pic->ir7_w(BIT(data, 7));
18901892}
18911893
18921894static MOS6526_INTERFACE( ext_cia_intf )
r18781r18782
19151917{
19161918   m_tpi1->i0_w(m_todclk);
19171919
1918   if (m_ext_pic) pic8259_ir2_w(m_ext_pic, m_todclk);
1920   if (m_ext_pic) m_ext_pic->ir2_w(m_todclk);
19191921
19201922   m_todclk = !m_todclk;
19211923}

Previous 199869 Revisions Next


© 1997-2024 The MAME Team