trunk/src/emu/machine/pic8259.c
| r18781 | r18782 | |
| 156 | 156 | WRITE_LINE_DEVICE_HANDLER( pic8259_ir6_w ) { pic8259_set_irq_line(device, 6, state); } |
| 157 | 157 | WRITE_LINE_DEVICE_HANDLER( pic8259_ir7_w ) { pic8259_set_irq_line(device, 7, state); } |
| 158 | 158 | |
| 159 | WRITE_LINE_MEMBER( pic8259_device::ir0_w ) { pic8259_set_irq_line(this, 0, state); } |
| 160 | WRITE_LINE_MEMBER( pic8259_device::ir1_w ) { pic8259_set_irq_line(this, 1, state); } |
| 161 | WRITE_LINE_MEMBER( pic8259_device::ir2_w ) { pic8259_set_irq_line(this, 2, state); } |
| 162 | WRITE_LINE_MEMBER( pic8259_device::ir3_w ) { pic8259_set_irq_line(this, 3, state); } |
| 163 | WRITE_LINE_MEMBER( pic8259_device::ir4_w ) { pic8259_set_irq_line(this, 4, state); } |
| 164 | WRITE_LINE_MEMBER( pic8259_device::ir5_w ) { pic8259_set_irq_line(this, 5, state); } |
| 165 | WRITE_LINE_MEMBER( pic8259_device::ir6_w ) { pic8259_set_irq_line(this, 6, state); } |
| 166 | WRITE_LINE_MEMBER( pic8259_device::ir7_w ) { pic8259_set_irq_line(this, 7, state); } |
| 167 | |
| 159 | 168 | int pic8259_acknowledge(device_t *device) |
| 160 | 169 | { |
| 161 | 170 | pic8259_t *pic8259 = get_safe_token(device); |
| r18781 | r18782 | |
| 252 | 261 | } |
| 253 | 262 | |
| 254 | 263 | |
| 264 | READ8_MEMBER( pic8259_device::read ) |
| 265 | { |
| 266 | return pic8259_r(this, space, offset); |
| 267 | } |
| 255 | 268 | |
| 269 | |
| 256 | 270 | WRITE8_DEVICE_HANDLER( pic8259_w ) |
| 257 | 271 | { |
| 258 | 272 | pic8259_t *pic8259 = get_safe_token(device); |
| r18781 | r18782 | |
| 402 | 416 | } |
| 403 | 417 | |
| 404 | 418 | |
| 419 | WRITE8_MEMBER( pic8259_device::write ) |
| 420 | { |
| 421 | pic8259_w(this, space, offset, data); |
| 422 | } |
| 405 | 423 | |
| 424 | |
| 406 | 425 | static DEVICE_START( pic8259 ) |
| 407 | 426 | { |
| 408 | 427 | pic8259_t *pic8259 = get_safe_token(device); |
trunk/src/emu/machine/pic8259.h
| r18781 | r18782 | |
| 34 | 34 | pic8259_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); |
| 35 | 35 | ~pic8259_device() { global_free(m_token); } |
| 36 | 36 | |
| 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 | |
| 37 | 49 | // access to legacy token |
| 38 | 50 | void *token() const { assert(m_token != NULL); return m_token; } |
| 39 | 51 | protected: |
trunk/src/mess/drivers/cbm2.c
| r18781 | r18782 | |
| 844 | 844 | |
| 845 | 845 | static ADDRESS_MAP_START( ext_io, AS_IO, 8, cbm2_state ) |
| 846 | 846 | 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) |
| 848 | 848 | AM_RANGE(0x0020, 0x0027) AM_MIRROR(0x18) AM_DEVREADWRITE(EXT_MOS6525_TAG, tpi6525_device, read, write) |
| 849 | 849 | ADDRESS_MAP_END |
| 850 | 850 | |
| r18781 | r18782 | |
| 1142 | 1142 | |
| 1143 | 1143 | READ8_MEMBER( cbm2_state::sid_potx_r ) |
| 1144 | 1144 | { |
| 1145 | | int sela = BIT(m_cia_pa, 6); |
| 1146 | | int selb = BIT(m_cia_pa, 7); |
| 1145 | UINT8 data = 0xff; |
| 1147 | 1146 | |
| 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 | } |
| 1149 | 1153 | |
| 1150 | | if (sela) data = m_joy1->pot_x_r(); |
| 1151 | | if (selb) data = m_joy2->pot_x_r(); |
| 1152 | | |
| 1153 | 1154 | return data; |
| 1154 | 1155 | } |
| 1155 | 1156 | |
| 1156 | 1157 | READ8_MEMBER( cbm2_state::sid_poty_r ) |
| 1157 | 1158 | { |
| 1158 | | int sela = BIT(m_cia_pa, 6); |
| 1159 | | int selb = BIT(m_cia_pa, 7); |
| 1159 | UINT8 data = 0xff; |
| 1160 | 1160 | |
| 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 | } |
| 1162 | 1167 | |
| 1163 | | if (sela) data = m_joy1->pot_y_r(); |
| 1164 | | if (selb) data = m_joy2->pot_y_r(); |
| 1165 | | |
| 1166 | 1168 | return data; |
| 1167 | 1169 | } |
| 1168 | 1170 | |
| r18781 | r18782 | |
| 1885 | 1887 | m_busen1 = 0; |
| 1886 | 1888 | } |
| 1887 | 1889 | |
| 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)); |
| 1890 | 1892 | } |
| 1891 | 1893 | |
| 1892 | 1894 | static MOS6526_INTERFACE( ext_cia_intf ) |
| r18781 | r18782 | |
| 1915 | 1917 | { |
| 1916 | 1918 | m_tpi1->i0_w(m_todclk); |
| 1917 | 1919 | |
| 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); |
| 1919 | 1921 | |
| 1920 | 1922 | m_todclk = !m_todclk; |
| 1921 | 1923 | } |