trunk/src/emu/cpu/hmcs40/hmcs40.c
| r244971 | r244972 | |
| 570 | 570 | m_i = BITSWAP8(m_op,7,6,5,4,0,1,2,3) & 0xf; // reversed bit-order for immediate param |
| 571 | 571 | increment_pc(); |
| 572 | 572 | |
| 573 | // handle opcode |
| 574 | switch (m_op) |
| 575 | { |
| 573 | 576 | /* |
| 574 | 577 | |
| 575 | 578 | op_ayy(); - |
| r244971 | r244972 | |
| 585 | 588 | op_blem(); - 267 024 |
| 586 | 589 | op_lay(); - 118 |
| 587 | 590 | |
| 591 | |
| 588 | 592 | */ |
| 589 | 593 | |
| 590 | | // handle opcode |
| 591 | | switch (m_op) |
| 592 | | { |
| 593 | 594 | case 0x118: |
| 594 | 595 | op_lay(); // probably lay |
| 595 | 596 | break; |
| 597 | |
| 598 | case 0x046: |
| 599 | op_daa(); |
| 600 | break; |
| 601 | case 0x045: |
| 602 | op_das(); |
| 603 | break; |
| 604 | |
| 605 | |
| 596 | 606 | case 0x267: |
| 597 | | op_blem(); break; // bnem or blem |
| 607 | op_blem(); // bnem or blem |
| 608 | break; |
| 609 | |
| 598 | 610 | case 0x124: |
| 599 | 611 | op_alem(); // alem or anem |
| 600 | 612 | break; |
| 601 | 613 | case 0x324: |
| 602 | | op_anem(); break; // " |
| 614 | op_anem(); // " |
| 615 | break; |
| 616 | |
| 603 | 617 | case 0x024: |
| 604 | 618 | //op_nega(); |
| 605 | 619 | //op_am(); |
| 606 | 620 | op_illegal(); |
| 607 | 621 | break; |
| 608 | | case 0x234: |
| 609 | | // sm? |
| 610 | | #if 0 |
| 611 | | m_a = ram_r() - m_a; |
| 612 | | m_s = ~m_a >> 4 & 1; |
| 613 | | m_a &= 0xf; |
| 614 | | #else |
| 615 | | op_am(); |
| 616 | | #endif |
| 622 | |
| 623 | case 0x04b: |
| 624 | op_illegal(); |
| 625 | //op_rec(); |
| 617 | 626 | break; |
| 618 | 627 | case 0x04c: |
| 619 | | op_illegal(); |
| 620 | | //m_c ^= 1; |
| 621 | | //op_lat(); |
| 628 | op_rec(); |
| 622 | 629 | break; |
| 623 | 630 | |
| 631 | case 0x030: |
| 632 | op_amc(); |
| 633 | break; |
| 634 | case 0x034: |
| 635 | //op_illegal(); |
| 636 | op_amc(); // mirror? |
| 637 | break; |
| 624 | 638 | |
| 639 | case 0x230: |
| 640 | op_smc(); |
| 641 | break; |
| 642 | case 0x234: |
| 643 | //op_illegal(); |
| 644 | op_smc(); // mirror? |
| 645 | break; |
| 625 | 646 | |
| 626 | 647 | |
| 648 | |
| 649 | |
| 650 | |
| 651 | |
| 652 | |
| 627 | 653 | /* 0x000 */ |
| 628 | 654 | |
| 629 | 655 | case 0x000: case 0x001: case 0x002: case 0x003: |
| r244971 | r244972 | |
| 637 | 663 | /* ok */ op_lmiiy(); break; |
| 638 | 664 | case 0x020: case 0x021: case 0x022: case 0x023: |
| 639 | 665 | op_lbm(); break; |
| 640 | | case 0x030: |
| 641 | | op_amc(); break; |
| 642 | 666 | case 0x03c: |
| 643 | 667 | op_lta(); break; |
| 644 | 668 | |
| 645 | 669 | case 0x040: |
| 646 | 670 | /* ok */ op_lxa(); break; |
| 647 | | case 0x04b: |
| 648 | | op_rec(); break; |
| 649 | 671 | case 0x04f: |
| 650 | 672 | op_sec(); break; |
| 651 | 673 | case 0x050: |
| r244971 | r244972 | |
| 751 | 773 | /* ok */ op_rotr(); break; |
| 752 | 774 | case 0x225: |
| 753 | 775 | /* ok */ op_rotl(); break; |
| 754 | | case 0x230: |
| 755 | | op_smc(); break; |
| 756 | 776 | case 0x23c: |
| 757 | 777 | op_lat(); break; |
| 758 | 778 | |
trunk/src/emu/cpu/hmcs40/hmcs40op.inc
| r244971 | r244972 | |
| 662 | 662 | if (o & 0x100) |
| 663 | 663 | { |
| 664 | 664 | // B3 B2 B1 B0 A0 A1 A2 A3 |
| 665 | | m_a = BITSWAP8((UINT8)o,7,6,5,4,0,1,2,3) & 0xf; |
| 665 | m_a = BITSWAP8(o,7,6,5,4,0,1,2,3) & 0xf; |
| 666 | 666 | m_b = o >> 4 & 0xf; |
| 667 | 667 | } |
| 668 | 668 | if (o & 0x200) |
| 669 | 669 | { |
| 670 | 670 | // R20 R21 R22 R23 R30 R31 R32 R33 |
| 671 | | o = BITSWAP8((UINT8)o,0,1,2,3,4,5,6,7); |
| 671 | o = BITSWAP8(o,0,1,2,3,4,5,6,7); |
| 672 | 672 | write_r(2, o & 0xf); |
| 673 | 673 | write_r(3, o >> 4 & 0xf); |
| 674 | 674 | } |