comparison m68k.cpu @ 1941:9eec86183aae

Implement 68K or and sub instructions in new core
author Michael Pavone <pavone@retrodev.com>
date Fri, 24 Apr 2020 09:23:43 -0700
parents 048442b0cb62
children 7d4df6b74263
comparison
equal deleted inserted replaced
1940:048442b0cb62 1941:9eec86183aae
399 add src dregs.D dregs.D Z 399 add src dregs.D dregs.D Z
400 update_flags XNZVC 400 update_flags XNZVC
401 m68k_prefetch 401 m68k_prefetch
402 402
403 1101DDD1ZZMMMRRR add_dn_ea 403 1101DDD1ZZMMMRRR add_dn_ea
404 invalid M 0
405 invalid M 1
404 invalid M 7 R 2 406 invalid M 7 R 2
405 invalid M 7 R 3 407 invalid M 7 R 3
406 invalid M 7 R 4 408 invalid M 7 R 4
407 invalid M 7 R 5 409 invalid M 7 R 5
408 invalid M 7 R 6 410 invalid M 7 R 6
437 m68k_prefetch 439 m68k_prefetch
438 440
439 00000110ZZMMMRRR addi 441 00000110ZZMMMRRR addi
440 local immed 32 442 local immed 32
441 invalid Z 3 443 invalid Z 3
444 invalid M 1
442 invalid M 7 R 2 445 invalid M 7 R 2
443 invalid M 7 R 3 446 invalid M 7 R 3
444 invalid M 7 R 4 447 invalid M 7 R 4
445 invalid M 7 R 5 448 invalid M 7 R 5
446 invalid M 7 R 6 449 invalid M 7 R 6
688 691
689 0000001000111100 eori_to_ccr 692 0000001000111100 eori_to_ccr
690 #fetch immediate operand 693 #fetch immediate operand
691 m68k_prefetch 694 m68k_prefetch
692 xor prefetch ccr ccr 695 xor prefetch ccr ccr
696 m68k_prefetch
697
698 1000DDD0ZZMMMRRR or_ea_dn
699 invalid M 1
700 invalid M 7 R 5
701 invalid M 7 R 6
702 invalid M 7 R 7
703 invalid Z 3
704 m68k_fetch_src_ea M R Z
705
706 or src dregs.D dregs.D Z
707 update_flags NZV0C0
708 m68k_prefetch
709
710 1000DDD1ZZMMMRRR or_dn_ea
711 invalid M 0
712 invalid M 1
713 invalid M 7 R 2
714 invalid M 7 R 3
715 invalid M 7 R 4
716 invalid M 7 R 5
717 invalid M 7 R 6
718 invalid M 7 R 7
719 invalid Z 3
720 m68k_fetch_dst_ea M R Z
721
722 or dregs.D dst dst Z
723 update_flags NZV0C0
724 m68k_save_dst Z
725 m68k_prefetch
726
727 00000000ZZMMMRRR ori
728 local immed 32
729 invalid Z 3
730 invalid M 1
731 invalid M 7 R 2
732 invalid M 7 R 3
733 invalid M 7 R 4
734 invalid M 7 R 5
735 invalid M 7 R 6
736 invalid M 7 R 7
737 #fetch immediate operand
738 m68k_prefetch
739 switch Z
740 case 2
741 lsl prefetch 16 immed
742 m68k_prefetch
743 or prefetch immed immed
744 default
745 mov prefetch immed
746 end
747 #fetch dst EA
748 m68k_fetch_dst_ea M R Z
749
750 or immed dst dst Z
751 update_flags NZV0C0
752 m68k_save_dst Z
753 m68k_prefetch
754
755 0000000000111100 ori_to_ccr
756 #fetch immediate operand
757 m68k_prefetch
758 or prefetch ccr ccr
759 m68k_prefetch
760
761 1001DDD0ZZMMMRRR sub_ea_dn
762 invalid M 7 R 5
763 invalid M 7 R 6
764 invalid M 7 R 7
765 invalid Z 3
766 m68k_fetch_src_ea M R Z
767
768 sub src dregs.D dregs.D Z
769 update_flags XNZVC
770 m68k_prefetch
771
772 1001DDD1ZZMMMRRR sub_dn_ea
773 invalid M 0
774 invalid M 1
775 invalid M 7 R 2
776 invalid M 7 R 3
777 invalid M 7 R 4
778 invalid M 7 R 5
779 invalid M 7 R 6
780 invalid M 7 R 7
781 invalid Z 3
782 m68k_fetch_dst_ea M R Z
783
784 sub dregs.D dst dst Z
785 update_flags XNZVC
786 m68k_save_dst Z
787 m68k_prefetch
788
789 1001AAAZ11MMMRRR suba
790 invalid M 7 R 5
791 invalid M 7 R 6
792 invalid M 7 R 7
793 local size 16
794 local ext_src 32
795 if Z
796 mov 2 size
797 else
798 mov 1 size
799 end
800 m68k_fetch_src_ea M R size
801 switch size
802 case 1
803 sext 32 src ext_src
804 meta src ext_src
805 end
806
807 sub src aregs.A aregs.A
808 m68k_prefetch
809
810 00000100ZZMMMRRR subi
811 local immed 32
812 invalid Z 3
813 invalid M 1
814 invalid M 7 R 2
815 invalid M 7 R 3
816 invalid M 7 R 4
817 invalid M 7 R 5
818 invalid M 7 R 6
819 invalid M 7 R 7
820 #fetch immediate operand
821 m68k_prefetch
822 switch Z
823 case 2
824 lsl prefetch 16 immed
825 m68k_prefetch
826 or prefetch immed immed
827 default
828 mov prefetch immed
829 end
830 #fetch dst EA
831 m68k_fetch_dst_ea M R Z
832
833 sub immed dst dst Z
834 update_flags XNZVC
835 m68k_save_dst Z
836 m68k_prefetch
837
838 0101III1ZZMMMRRR subq
839 invalid Z 3
840 invalid M 7 R 2
841 invalid M 7 R 3
842 invalid M 7 R 4
843 invalid M 7 R 5
844 invalid M 7 R 6
845 invalid M 7 R 7
846 local src 32
847 switch I
848 case 0
849 mov 8 src
850 default
851 mov I src
852 end
853
854 m68k_fetch_dst_ea M R Z
855 switch M
856 case 1
857 sub src dst dst Z
858 default
859 sub src dst dst Z
860 update_flags XNZVC
861 end
862 m68k_save_dst Z
693 m68k_prefetch 863 m68k_prefetch
694 864
695 00ZZRRRMMMEEESSS move 865 00ZZRRRMMMEEESSS move
696 invalid Z 0 866 invalid Z 0
697 invalid M 1 867 invalid M 1