trunk/src/emu/cpu/tms32051/tms32051.c
| r32040 | r32041 | |
| 162 | 162 | m_cbsr2 = 0; |
| 163 | 163 | m_cber2 = 0; |
| 164 | 164 | memset(&m_timer, 0, sizeof(m_timer)); |
| 165 | memset(&m_serial, 0, sizeof(m_serial)); |
| 165 | 166 | |
| 166 | 167 | state_add( TMS32051_PC, "PC", m_pc).formatstr("%04X"); |
| 167 | 168 | state_add( TMS32051_ACC, "ACC", m_acc).formatstr("%08X"); |
| r32040 | r32041 | |
| 374 | 375 | case 0x04: return m_imr; |
| 375 | 376 | case 0x06: return m_ifr; |
| 376 | 377 | |
| 377 | | case 0x07: // PMST |
| 378 | case 0x07: // PMST |
| 378 | 379 | { |
| 379 | 380 | UINT16 r = 0; |
| 380 | 381 | r |= m_pmst.iptr << 11; |
| r32040 | r32041 | |
| 388 | 389 | return r; |
| 389 | 390 | } |
| 390 | 391 | |
| 391 | | case 0x09: return m_brcr; |
| 392 | | case 0x10: return m_ar[0]; |
| 393 | | case 0x11: return m_ar[1]; |
| 394 | | case 0x12: return m_ar[2]; |
| 395 | | case 0x13: return m_ar[3]; |
| 396 | | case 0x14: return m_ar[4]; |
| 397 | | case 0x15: return m_ar[5]; |
| 398 | | case 0x16: return m_ar[6]; |
| 399 | | case 0x17: return m_ar[7]; |
| 400 | | case 0x18: return m_indx; |
| 401 | | case 0x19: return m_arcr; |
| 402 | | case 0x1a: return m_cbsr1; |
| 403 | | case 0x1b: return m_cber1; |
| 404 | | case 0x1c: return m_cbsr2; |
| 405 | | case 0x1d: return m_cber2; |
| 406 | | case 0x1e: return m_cbcr; |
| 407 | | case 0x1f: return m_bmar; |
| 408 | | case 0x24: return m_timer.tim; |
| 409 | | case 0x25: return m_timer.prd; |
| 392 | case 0x09: return m_brcr; |
| 393 | case 0x10: return m_ar[0]; |
| 394 | case 0x11: return m_ar[1]; |
| 395 | case 0x12: return m_ar[2]; |
| 396 | case 0x13: return m_ar[3]; |
| 397 | case 0x14: return m_ar[4]; |
| 398 | case 0x15: return m_ar[5]; |
| 399 | case 0x16: return m_ar[6]; |
| 400 | case 0x17: return m_ar[7]; |
| 401 | case 0x18: return m_indx; |
| 402 | case 0x19: return m_arcr; |
| 403 | case 0x1a: return m_cbsr1; |
| 404 | case 0x1b: return m_cber1; |
| 405 | case 0x1c: return m_cbsr2; |
| 406 | case 0x1d: return m_cber2; |
| 407 | case 0x1e: return m_cbcr; |
| 408 | case 0x1f: return m_bmar; |
| 409 | |
| 410 | case 0x20: return m_serial.drr; |
| 411 | case 0x21: return m_serial.dxr; |
| 410 | 412 | |
| 411 | | case 0x26: // TCR |
| 413 | case 0x24: return m_timer.tim; |
| 414 | case 0x25: return m_timer.prd; |
| 415 | |
| 416 | case 0x26: // TCR |
| 412 | 417 | { |
| 413 | 418 | UINT16 r = 0; |
| 414 | 419 | r |= (m_timer.psc & 0xf) << 6; |
| r32040 | r32041 | |
| 416 | 421 | return r; |
| 417 | 422 | } |
| 418 | 423 | |
| 419 | | case 0x28: return 0; // PDWSR |
| 424 | case 0x28: // PDWSR |
| 425 | return 0; |
| 420 | 426 | |
| 421 | 427 | default: |
| 422 | 428 | if (!space.debugger_access()) |
| r32040 | r32041 | |
| 430 | 436 | { |
| 431 | 437 | switch (offset) |
| 432 | 438 | { |
| 433 | | case 0x00: break; |
| 434 | | case 0x04: m_imr = data; break; |
| 435 | | case 0x06: // IFR |
| 439 | case 0x00: break; |
| 440 | case 0x04: m_imr = data; break; |
| 441 | |
| 442 | case 0x06: // IFR |
| 436 | 443 | { |
| 437 | 444 | for (int i = 0; i < 16; i++) |
| 438 | 445 | { |
| r32040 | r32041 | |
| 444 | 451 | break; |
| 445 | 452 | } |
| 446 | 453 | |
| 447 | | case 0x07: // PMST |
| 454 | case 0x07: // PMST |
| 448 | 455 | { |
| 449 | 456 | m_pmst.iptr = (data >> 11) & 0x1f; |
| 450 | 457 | m_pmst.avis = (data & 0x80) ? 1 : 0; |
| r32040 | r32041 | |
| 457 | 464 | break; |
| 458 | 465 | } |
| 459 | 466 | |
| 460 | | case 0x09: m_brcr = data; break; |
| 461 | | case 0x0e: m_treg2 = data; break; |
| 462 | | case 0x0f: m_dbmr = data; break; |
| 463 | | case 0x10: m_ar[0] = data; break; |
| 464 | | case 0x11: m_ar[1] = data; break; |
| 465 | | case 0x12: m_ar[2] = data; break; |
| 466 | | case 0x13: m_ar[3] = data; break; |
| 467 | | case 0x14: m_ar[4] = data; break; |
| 468 | | case 0x15: m_ar[5] = data; break; |
| 469 | | case 0x16: m_ar[6] = data; break; |
| 470 | | case 0x17: m_ar[7] = data; break; |
| 471 | | case 0x18: m_indx = data; break; |
| 472 | | case 0x19: m_arcr = data; break; |
| 473 | | case 0x1a: m_cbsr1 = data; break; |
| 474 | | case 0x1b: m_cber1 = data; break; |
| 475 | | case 0x1c: m_cbsr2 = data; break; |
| 476 | | case 0x1d: m_cber2 = data; break; |
| 477 | | case 0x1e: m_cbcr = data; break; |
| 478 | | case 0x1f: m_bmar = data; break; |
| 479 | | case 0x24: m_timer.tim = data; break; |
| 480 | | case 0x25: m_timer.prd = data; break; |
| 467 | case 0x09: m_brcr = data; break; |
| 468 | case 0x0e: m_treg2 = data; break; |
| 469 | case 0x0f: m_dbmr = data; break; |
| 470 | case 0x10: m_ar[0] = data; break; |
| 471 | case 0x11: m_ar[1] = data; break; |
| 472 | case 0x12: m_ar[2] = data; break; |
| 473 | case 0x13: m_ar[3] = data; break; |
| 474 | case 0x14: m_ar[4] = data; break; |
| 475 | case 0x15: m_ar[5] = data; break; |
| 476 | case 0x16: m_ar[6] = data; break; |
| 477 | case 0x17: m_ar[7] = data; break; |
| 478 | case 0x18: m_indx = data; break; |
| 479 | case 0x19: m_arcr = data; break; |
| 480 | case 0x1a: m_cbsr1 = data; break; |
| 481 | case 0x1b: m_cber1 = data; break; |
| 482 | case 0x1c: m_cbsr2 = data; break; |
| 483 | case 0x1d: m_cber2 = data; break; |
| 484 | case 0x1e: m_cbcr = data; break; |
| 485 | case 0x1f: m_bmar = data; break; |
| 481 | 486 | |
| 482 | | case 0x26: // TCR |
| 487 | case 0x20: m_serial.drr = data; break; |
| 488 | case 0x21: m_serial.dxr = data; break; |
| 489 | case 0x22: m_serial.spc = data; break; |
| 490 | |
| 491 | case 0x24: m_timer.tim = data; break; |
| 492 | case 0x25: m_timer.prd = data; break; |
| 493 | |
| 494 | case 0x26: // TCR |
| 483 | 495 | { |
| 484 | 496 | m_timer.tddr = data & 0xf; |
| 485 | 497 | m_timer.psc = (data >> 6) & 0xf; |
| r32040 | r32041 | |
| 492 | 504 | break; |
| 493 | 505 | } |
| 494 | 506 | |
| 495 | | case 0x28: break; // PDWSR |
| 507 | case 0x28: // PDWSR |
| 508 | break; |
| 496 | 509 | |
| 497 | 510 | default: |
| 498 | 511 | if (!space.debugger_access()) |