trunk/src/mess/drivers/attache.c
| r23694 | r23695 | |
| 111 | 111 | { |
| 112 | 112 | PIO_SEL_8910_ADDR = 0, |
| 113 | 113 | PIO_SEL_8910_DATA, |
| 114 | PIO_SEL_5832_READ, |
| 114 | 115 | PIO_SEL_5832_WRITE, |
| 115 | | PIO_SEL_5832_READ, |
| 116 | 116 | PIO_SEL_5101_WRITE, |
| 117 | 117 | PIO_SEL_5101_READ, |
| 118 | 118 | PIO_SEL_LATCH, |
| r23694 | r23695 | |
| 510 | 510 | break; |
| 511 | 511 | case PIO_SEL_5832_READ: |
| 512 | 512 | m_rtc->cs_w(1); |
| 513 | | m_rtc->write_w(1); |
| 513 | m_rtc->write_w(0); |
| 514 | 514 | m_rtc->read_w(0); |
| 515 | 515 | m_rtc->address_w((data & 0xf0) >> 4); |
| 516 | 516 | logerror("RTC: write %01x to %01x (read)\n",data & 0x0f,(data & 0xf0) >> 4); |
| r23694 | r23695 | |
| 561 | 561 | // B2-4 = OPERATION SELECT |
| 562 | 562 | // 0 = 8910 ADDR LOAD |
| 563 | 563 | // 1 = 8910 DATA LOAD |
| 564 | | // 2 = 5832 WRITE |
| 565 | | // 3 = 5832 READ |
| 564 | // 2 = 5832 WRITE -- the CP/M BIOS dumped from an actual disc seems to switch the RTC operations around |
| 565 | // 3 = 5832 READ this differs from the BIOS source listings available for both CP/M 2.2.3 and 2.2.5 |
| 566 | 566 | // 4 = 5101 WRITE |
| 567 | 567 | // 5 = 5101 READ |
| 568 | 568 | // 6 = LATCH LOAD |
| r23694 | r23695 | |
| 570 | 570 | //B5 = /'138 OPERATION STROBE |
| 571 | 571 | //B6 = /KEYBOARD DATA IN |
| 572 | 572 | //B7 = /KEYBOARD CLOCK OUT |
| 573 | | m_pio_select = (data & 0x1c) >> 2; |
| 574 | 573 | m_cmos_select = ((data & 0x03) << 4) | (m_cmos_select & 0x0f); |
| 575 | | if((data & 0x20) && !(m_pio_portb & 0x20)) |
| 574 | if(!(data & 0x20) && (m_pio_portb & 0x20)) |
| 575 | { |
| 576 | m_pio_select = (data & 0x1c) >> 2; |
| 576 | 577 | operation_strobe(space,m_pio_porta); |
| 578 | } |
| 577 | 579 | m_pio_portb = data; |
| 578 | 580 | keyboard_clock_w(data & 0x80); |
| 579 | 581 | } |