trunk/src/emu/machine/6522via.c
r26852 | r26853 | |
1103 | 1103 | |
1104 | 1104 | WRITE_LINE_MEMBER( via6522_device::write_cb2 ) |
1105 | 1105 | { |
1106 | | /* CB2 is in input mode */ |
1107 | | if (CB2_INPUT(m_pcr)) |
| 1106 | /* the new state has caused a transition */ |
| 1107 | if (m_in_cb2 != state) |
1108 | 1108 | { |
1109 | | /* the new state has caused a transition */ |
1110 | | if (m_in_cb2 != state) |
| 1109 | /* CB2 is in input mode */ |
| 1110 | if (CB2_INPUT(m_pcr)) |
1111 | 1111 | { |
1112 | 1112 | /* handle the active transition */ |
1113 | 1113 | if ((state && CB2_LOW_TO_HIGH(m_pcr)) || (!state && CB2_HIGH_TO_LOW(m_pcr))) |
r26852 | r26853 | |
1115 | 1115 | /* mark the IRQ */ |
1116 | 1116 | set_int(INT_CB2); |
1117 | 1117 | } |
1118 | | /* set the new value for CB2 */ |
1119 | | m_in_cb2 = state; |
1120 | 1118 | } |
| 1119 | |
| 1120 | /* set the new value for CB2 */ |
| 1121 | m_in_cb2 = state; |
1121 | 1122 | } |
1122 | 1123 | } |
trunk/src/mess/drivers/clcd.c
r26852 | r26853 | |
45 | 45 | m_col5(*this,"COL5"), |
46 | 46 | m_col6(*this,"COL6"), |
47 | 47 | m_col7(*this,"COL7"), |
48 | | m_special(*this,"SPECIAL") |
49 | | , |
50 | | m_maincpu(*this, "maincpu") { |
| 48 | m_special(*this,"SPECIAL"), |
| 49 | m_maincpu(*this, "maincpu"), |
| 50 | m_via0(*this, "via0") |
| 51 | { |
51 | 52 | } |
52 | 53 | |
53 | 54 | TILE_GET_INFO_MEMBER(get_clcd_tilemap_tile_info) |
r26852 | r26853 | |
202 | 203 | } |
203 | 204 | |
204 | 205 | keyShift = 0x10000; |
| 206 | |
| 207 | m_via0->write_cb2( ( keyData & keyShift ) != 0 ); |
205 | 208 | } |
206 | 209 | } |
207 | 210 | } |
208 | 211 | |
209 | | READ8_MEMBER( via0_pb_r ) |
210 | | { |
211 | | return 0; |
212 | | } |
213 | | |
214 | | READ_LINE_MEMBER( via0_cb2_r ) |
215 | | { |
216 | | return ( keyData & keyShift ) != 0; |
217 | | } |
218 | | |
219 | 212 | WRITE_LINE_MEMBER( via0_cb1_w ) |
220 | 213 | { |
221 | 214 | int newKeyClockState = state & 1; |
r26852 | r26853 | |
226 | 219 | if( keyClockState ) |
227 | 220 | { |
228 | 221 | keyShift >>= 1; |
| 222 | |
| 223 | m_via0->write_cb2( ( keyData & keyShift ) != 0 ); |
229 | 224 | } |
230 | 225 | } |
231 | 226 | } |
r26852 | r26853 | |
249 | 244 | required_ioport m_col7; |
250 | 245 | required_ioport m_special; |
251 | 246 | required_device<cpu_device> m_maincpu; |
| 247 | required_device<via6522_device> m_via0; |
252 | 248 | }; |
253 | 249 | |
254 | 250 | static ADDRESS_MAP_START( clcd_mem, AS_PROGRAM, 8, clcd_state ) |
r26852 | r26853 | |
397 | 393 | MCFG_CPU_PROGRAM_MAP(clcd_mem) |
398 | 394 | |
399 | 395 | MCFG_DEVICE_ADD("via0", VIA6522, 0) |
400 | | MCFG_VIA6522_READPB_HANDLER(READ8(clcd_state, via0_pb_r)) |
401 | | MCFG_VIA6522_READCB2_HANDLER(READLINE(clcd_state, via0_cb2_r)) |
402 | 396 | MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(clcd_state, via0_pa_w)) |
403 | 397 | MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(clcd_state, via0_pb_w)) |
404 | 398 | MCFG_VIA6522_CB1_HANDLER(WRITELINE(clcd_state, via0_cb1_w)) |