Mercurial > repos > blastem
changeset 2622:adff015dc94f
Implement chk and trapv in new 68K core
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Sat, 22 Feb 2025 19:29:18 -0800 |
parents | ce9386a7b21e |
children | 07faf0f5466f |
files | m68k.cpu |
diffstat | 1 files changed, 49 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/m68k.cpu Sat Feb 22 01:31:51 2025 -0800 +++ b/m68k.cpu Sat Feb 22 19:29:18 2025 -0800 @@ -2630,6 +2630,48 @@ m68k_prefetch +0100DDDZZ0MMMRRR chk + invalid M 1 + invalid M 7 R 5 + invalid M 7 R 6 + invalid M 7 R 7 + invalid Z 0 + invalid Z 1 + local tmp 8 + local src_alt 32 + switch Z + case 2 + meta size 2 + case 3 + meta size 1 + end + m68k_fetch_src_ea M R size + if src_is_mem + src_alt = src + meta src src_alt + end + m68k_prefetch + cmp dregs.D src size + update_flags NZVC + tmp = vflag + tmp |= nflag + cmp 0 dregs.D size + update_flags NZV0C0 + if tmp + # D > src (signed) + pc -= 2 + m68k_trap 6 + else + cycles 2 + if nflag + # D < 0 + pc -= 2 + m68k_trap 6 + else + cycles 2 + end + end + 0100DDD111MMMRRR lea invalid M 0 invalid M 1 @@ -2716,6 +2758,13 @@ cycles 4 m68k_prefetch +0100111001110110 trapv + if vflag + m68k_trap 7 + else + m68k_prefetch + end + 0100111001110111 rtr #Read saved CCR scratch1 = a7