trunk/src/emu/machine/mc68681.c
| r29625 | r29626 | |
| 239 | 239 | write_outport(OPR ^ 0xff); |
| 240 | 240 | } |
| 241 | 241 | |
| 242 | // timer driving any serial channels? |
| 243 | if (BIT(ACR, 7) == 1) |
| 244 | { |
| 245 | UINT8 csr = m_chanA->get_chan_CSR(); |
| 246 | |
| 247 | if ((csr & 0xf0) == 0xd0) // tx is timer driven |
| 248 | { |
| 249 | m_chanA->tx_clock_w(half_period); |
| 250 | } |
| 251 | if ((csr & 0x0f) == 0x0d) // rx is timer driven |
| 252 | { |
| 253 | m_chanA->rx_clock_w(half_period); |
| 254 | } |
| 255 | |
| 256 | csr = m_chanB->get_chan_CSR(); |
| 257 | if ((csr & 0xf0) == 0xd0) // tx is timer driven |
| 258 | { |
| 259 | m_chanB->tx_clock_w(half_period); |
| 260 | } |
| 261 | if ((csr & 0x0f) == 0x0d) // rx is timer driven |
| 262 | { |
| 263 | m_chanB->rx_clock_w(half_period); |
| 264 | } |
| 265 | } |
| 266 | |
| 242 | 267 | if (!half_period) |
| 243 | 268 | { |
| 244 | 269 | ISR |= INT_COUNTER_READY; |
| r29625 | r29626 | |
| 594 | 619 | baud_rate = baud_rate_ACR_1[data & 0x0f]; |
| 595 | 620 | } |
| 596 | 621 | |
| 597 | | if ( baud_rate == 0 ) |
| 622 | if ((baud_rate == 0) && ((data & 0xf) != 0xd)) |
| 598 | 623 | { |
| 599 | 624 | LOG(( "Unsupported transmitter clock: channel %d, clock select = %02x\n", ch, data )); |
| 600 | 625 | } |
| r29625 | r29626 | |
| 693 | 718 | |
| 694 | 719 | void mc68681_channel::tra_complete() |
| 695 | 720 | { |
| 696 | | // printf("%s ch %d Tx complete\n", tag(), m_ch); |
| 721 | // printf("%s ch %d Tx complete\n", tag(), m_ch); |
| 697 | 722 | tx_ready = 1; |
| 698 | 723 | SR |= STATUS_TRANSMITTER_READY; |
| 699 | 724 | |
| r29625 | r29626 | |
| 1112 | 1137 | { |
| 1113 | 1138 | write_chan_reg(1, CSR); |
| 1114 | 1139 | } |
| 1140 | |
| 1141 | UINT8 mc68681_channel::get_chan_CSR() |
| 1142 | { |
| 1143 | return CSR; |
| 1144 | } |
| 1145 | |