trunk/src/mess/includes/mac.h
| r242723 | r242724 | |
| 290 | 290 | INT32 m_adb_streaming, m_adb_stream_ptr; |
| 291 | 291 | INT32 m_adb_linestate; |
| 292 | 292 | bool m_adb_srqflag; |
| 293 | #define kADBKeyBufSize 32 |
| 294 | UINT8 m_adb_keybuf[kADBKeyBufSize]; |
| 295 | UINT8 m_adb_keybuf_start; |
| 296 | UINT8 m_adb_keybuf_end; |
| 293 | 297 | |
| 294 | 298 | // Portable/PB100 Power Manager IC comms (chapter 4, "Guide to the Macintosh Family Hardware", second edition) |
| 295 | 299 | UINT8 m_pm_data_send, m_pm_data_recv, m_pm_ack, m_pm_req, m_pm_cmd[32], m_pm_out[32], m_pm_dptr, m_pm_sptr, m_pm_slen, m_pm_state; |
trunk/src/mess/machine/macadb.c
| r242723 | r242724 | |
| 194 | 194 | // if we want to update the current read, do so |
| 195 | 195 | if (update) |
| 196 | 196 | { |
| 197 | if(m_adb_currentkeys[0] != codes[0]) { |
| 198 | m_adb_keybuf[m_adb_keybuf_end] = codes[0]; |
| 199 | m_adb_keybuf_end = (m_adb_keybuf_end+1) % kADBKeyBufSize; |
| 200 | } |
| 201 | if(m_adb_currentkeys[1] != codes[1]) { |
| 202 | m_adb_keybuf[m_adb_keybuf_end] = codes[1]; |
| 203 | m_adb_keybuf_end = (m_adb_keybuf_end+1) % kADBKeyBufSize; |
| 204 | } |
| 197 | 205 | m_adb_currentkeys[0] = codes[0]; |
| 198 | 206 | m_adb_currentkeys[1] = codes[1]; |
| 199 | 207 | } |
| r242723 | r242724 | |
| 388 | 396 | } |
| 389 | 397 | else if (addr == m_adb_keybaddr) |
| 390 | 398 | { |
| 399 | int kbd_has_data = 1; |
| 391 | 400 | #if LOG_ADB || LOG_ADB_TALK_LISTEN |
| 392 | 401 | printf("Talking to keyboard, register %x\n", reg); |
| 393 | 402 | #endif |
| r242723 | r242724 | |
| 402 | 411 | } |
| 403 | 412 | else |
| 404 | 413 | { |
| 405 | | this->adb_pollkbd(1); |
| 414 | kbd_has_data = this->adb_pollkbd(1); |
| 406 | 415 | } |
| 407 | 416 | |
| 408 | 417 | /* if (m_adb_currentkeys[0] != 0xff) |
| r242723 | r242724 | |
| 414 | 423 | printf("Keys[1] = %02x\n", m_adb_currentkeys[1]); |
| 415 | 424 | }*/ |
| 416 | 425 | |
| 417 | | m_adb_buffer[0] = m_adb_currentkeys[1]; |
| 418 | | m_adb_buffer[1] = m_adb_currentkeys[0]; |
| 419 | | m_adb_datasize = 2; |
| 426 | if(kbd_has_data) |
| 427 | { |
| 428 | if(m_adb_keybuf_start == m_adb_keybuf_end) |
| 429 | { |
| 430 | // printf("%s: buffer empty\n", __func__); |
| 431 | m_adb_buffer[0] = 0xff; |
| 432 | m_adb_buffer[1] = 0xff; |
| 433 | } |
| 434 | else |
| 435 | { |
| 436 | m_adb_buffer[1] = m_adb_keybuf[m_adb_keybuf_start]; |
| 437 | m_adb_keybuf_start = (m_adb_keybuf_start+1) % kADBKeyBufSize; |
| 438 | if(m_adb_keybuf_start != m_adb_keybuf_end) |
| 439 | { |
| 440 | m_adb_buffer[0] = m_adb_keybuf[m_adb_keybuf_start]; |
| 441 | m_adb_keybuf_start = (m_adb_keybuf_start+1) % kADBKeyBufSize; |
| 442 | } |
| 443 | else |
| 444 | { |
| 445 | m_adb_buffer[0] = 0xff; |
| 446 | } |
| 447 | } |
| 448 | m_adb_datasize = 2; |
| 449 | } |
| 420 | 450 | break; |
| 421 | 451 | |
| 422 | 452 | // read modifier keys |
| r242723 | r242724 | |
| 633 | 663 | if ((mac->m_adb_direction) && (ADB_IS_BITBANG)) |
| 634 | 664 | { |
| 635 | 665 | mac->adb_talk(); |
| 666 | if((mac->m_adb_last_talk == 2) && mac->m_adb_datasize) { |
| 667 | mac->m_adb_timer_ticks = 8; |
| 668 | mac->m_adb_timer->adjust(attotime(0, ATTOSECONDS_IN_USEC(100))); |
| 669 | } |
| 636 | 670 | } |
| 637 | 671 | } |
| 638 | 672 | else |
| r242723 | r242724 | |
| 1191 | 1225 | { |
| 1192 | 1226 | m_key_matrix[i] = 0; |
| 1193 | 1227 | } |
| 1228 | m_adb_keybuf_start = 0; |
| 1229 | m_adb_keybuf_end = 0; |
| 1194 | 1230 | } |
| 1195 | 1231 | |
| 1196 | 1232 | WRITE_LINE_MEMBER(mac_state::adb_linechange_w) |