diff options
Diffstat (limited to 'src/devices/cpu/dsp563xx/dsp563xx.lst')
| -rw-r--r-- | src/devices/cpu/dsp563xx/dsp563xx.lst | 594 |
1 files changed, 509 insertions, 85 deletions
diff --git a/src/devices/cpu/dsp563xx/dsp563xx.lst b/src/devices/cpu/dsp563xx/dsp563xx.lst index a054c209d57..d08de057f4c 100644 --- a/src/devices/cpu/dsp563xx/dsp563xx.lst +++ b/src/devices/cpu/dsp563xx/dsp563xx.lst @@ -36,40 +36,212 @@ ....03 tst d - d:acc(3) 2000.. - + 2000.. #i,d - d:fvbr1(16) i:imm8(8) %p $d:w($i); 2000.. s,d - s:fvbr1(13) d:fvbr1(8) - m_tmp1 = $s; + m_tmp1 = $s:h; %p - $d:w(m_tmp1); + $d:wh(m_tmp1); 2040.. ea - ea:eam4(8) + (void)($ea); + 40c0.. x:ea,d - d:fvbr1s(20, 16) ea:eam1(8) + m_tmp1 = m_x.read_dword($ea); + %p + $d:wh(m_tmp1); + 4040.. s,x:ea - s:fvbr1s(20, 16) ea:eam1(8) -40c0.. abs,d - d:fvbr1s(20, 16) abs:eam1a(8) + m_tmp1 = $s:h; + %p + m_x.write_dword($ea, m_tmp1); + +40c0.. x:abs,d - d:fvbr1s(20, 16) abs:eam1a(8) + m_tmp1 = m_x.read_dword($abs); + %p + $d:wh(m_tmp1); + +4040.. s,x:abs - s:fvbr1s(20, 16) abs:eam1a(8) + m_tmp1 = $s:h; + %p + m_x.write_dword($abs, m_tmp1); + 40c0.. #i,d - d:fvbr1s(20, 16) i:eam1i(8) + %p + $d:wh($i); + 4080.. x:aa,d - d:fvbr1s(20, 16) aa:asa6(8) + m_tmp1 = m_x.read_dword($aa); + %p + $d:wh(m_tmp1); + 4000.. s,x:aa - s:fvbr1s(20, 16) aa:asa6(8) + m_tmp1 = $s:h; + %p + m_x.write_dword($aa, m_tmp1); + 1080.. x:ea,d1 s2,d2 - d1:tbrx(18) s2:acc(17) d2:yreg(16) ea:eam1(8) + m_tmp1 = m_x.read_dword($ea); + m_tmp2 = $s2:h; + %p + $d1:wh(m_tmp1); + $d2:wh(m_tmp2); + 1000.. s1,x:ea s2,d2 - s1:tbrx(18) s2:acc(17) d2:yreg(16) ea:eam1(8) + m_tmp1 = $s1:h; + m_tmp2 = $s2:h; + %p + m_x.write_dword($ea, m_tmp1); + $d2:wh(m_tmp2); + 1080.. x:abs,d1 s2,d2 - d1:tbrx(18) s2:acc(17) d2:yreg(16) abs:eam1a(8) -1080.. x:#i,d1 s2,d2 - d1:tbrx(18) s2:acc(17) d2:yreg(16) i:eam1i(8) + m_tmp1 = m_x.read_dword($abs); + m_tmp2 = $s2:h; + %p + $d1:wh(m_tmp1); + $d2:wh(m_tmp2); + +1000.. s1,x:abs s2,d2 - s1:tbrx(18) s2:acc(17) d2:yreg(16) abs:eam1a(8) + m_tmp1 = $s1:h; + m_tmp2 = $s2:h; + %p + m_x.write_dword($abs, m_tmp1); + $d2:wh(m_tmp2); + + +1080.. #i,d1 s2,d2 - d1:tbrx(18) s2:acc(17) d2:yreg(16) i:eam1i(8) + m_tmp1 = $s2:h; + %p + $d2:wh(m_tmp1); + $d1:wh($i); + 0800.. a,x:ea x0,a - ea:eam1(8) + m_tmp1 = get_a(); + m_tmp2 = get_x0(); + %p + m_x.write_dword($ea, m_tmp1); + set_a(m_tmp2); + 0900.. b,x:ea x0,b - ea:eam1(8) + m_tmp1 = get_bh(); + m_tmp2 = get_x0(); + %p + m_x.write_dword($ea, m_tmp1); + set_bh(m_tmp2); + +0800.. a,x:abs x0,a - abs:eam1a(8) + m_tmp1 = get_a(); + m_tmp2 = get_x0(); + %p + m_x.write_dword($abs, m_tmp1); + set_a(m_tmp2); + +0900.. b,x:abs x0,b - abs:eam1a(8) + m_tmp1 = get_bh(); + m_tmp2 = get_x0(); + %p + m_x.write_dword($abs, m_tmp1); + set_bh(m_tmp2); + 48c0.. y:ea,d - d:fvbr1s(20, 16) ea:eam1(8) + m_tmp1 = m_y.read_dword($ea); + %p + $d:wh(m_tmp1); + 4840.. s,y:ea - s:fvbr1s(20, 16) ea:eam1(8) -48c0.. abs,d - d:fvbr1s(20, 16) abs:eam1a(8) + m_tmp1 = $s:h; + %p + m_y.write_dword($ea, m_tmp1); + +48c0.. y:abs,d - d:fvbr1s(20, 16) abs:eam1a(8) + m_tmp1 = m_y.read_dword($abs); + %p + $d:wh(m_tmp1); + +4840.. s,y:abs - s:fvbr1s(20, 16) abs:eam1a(8) + m_tmp1 = $s:h; + %p + m_y.write_dword($abs, m_tmp1); + 48c0.. #i,d - d:fvbr1s(20, 16) i:eam1i(8) + %p + $d:wh($i); + 4880.. y:aa,d - d:fvbr1s(20, 16) aa:asa6(8) + m_tmp1 = m_y.read_dword($aa); + %p + $d:wh(m_tmp1); + 4800.. s,y:aa - s:fvbr1s(20, 16) aa:asa6(8) + m_tmp1 = $s:h; + %p + m_y.write_dword($aa, m_tmp1); + 10c0.. s1,d1 y:ea,d2 - d2:tbry(18) s1:acc(17) d1:xreg(16) ea:eam1(8) + m_tmp1 = $s1:h; + m_tmp2 = m_y.read_dword($ea); + %p + $d1:wh(m_tmp1); + $d2:wh(m_tmp2); + 1040.. s1,d1 s2,y:ea - s2:tbry(18) s1:acc(17) d1:xreg(16) ea:eam1(8) -10c0.. s1,d1 x:abs,d2 - d2:tbry(18) s1:acc(17) d1:xreg(16) abs:eam1a(8) -10c0.. s1,d1 x:#i,d2 - d2:tbry(18) s1:acc(17) d1:xreg(16) i:eam1i(8) + m_tmp1 = $s1:h; + m_tmp2 = $s2:h; + %p + $d1:wh(m_tmp1); + m_y.write_dword($ea, m_tmp2); + +10c0.. s1,d1 y:abs,d2 - d2:tbry(18) s1:acc(17) d1:xreg(16) abs:eam1a(8) + m_tmp1 = $s1:h; + m_tmp2 = m_y.read_dword($abs); + %p + $d1:wh(m_tmp1); + $d2:wh(m_tmp2); + +1040.. s1,d1 s2,y:abs - s2:tbry(18) s1:acc(17) d1:xreg(16) abs:eam1a(8) + m_tmp1 = $s1:h; + m_tmp2 = $s2:h; + %p + $d1:wh(m_tmp1); + m_y.write_dword($abs, m_tmp2); + +10c0.. s1,d1 #i,d2 - d2:tbry(18) s1:acc(17) d1:xreg(16) i:eam1i(8) + m_tmp1 = $s1:h; + %p + $d1:wh(m_tmp1); + $d2:wh($i); + 0880.. a,y:ea y0,a - ea:eam1(8) + m_tmp1 = get_ah(); + m_tmp2 = get_y0(); + %p + m_y.write_dword($ea, m_tmp1); + set_ah(m_tmp2); + 0980.. b,y:ea y0,b - ea:eam1(8) + m_tmp1 = get_bh(); + m_tmp2 = get_y0(); + %p + m_y.write_dword($ea, m_tmp1); + set_bh(m_tmp2); + +0880.. a,y:abs y0,a - abs:eam1a(8) + m_tmp1 = get_ah(); + m_tmp2 = get_y0(); + %p + m_y.write_dword($abs, m_tmp1); + set_ah(m_tmp2); + +0980.. b,y:abs y0,b - abs:eam1a(8) + m_tmp1 = get_bh(); + m_tmp2 = get_y0(); + %p + m_y.write_dword($abs, m_tmp1); + set_bh(m_tmp2); + 40c0.. l:ea,d - d:lmr(19, 16) ea:eam1(8) 40c0.. l:abs,d - d:lmr(19, 16) abs:eam1a(8) 4080.. l:aa,d - d:lmr(19, 16) aa:asa6(8) @@ -94,17 +266,47 @@ c000.. s1,x:eax y:eay,d2 - eax:xyeax(8) eay:xyeay(20, 13, 10) s1:tbrx(18) d2 014080 add #i,d - i:imm6(8) d:acc(3) 0140c0 add #i,d - d:acc(3) i:eximm() 014086 and #i,d - i:imm6(8) d:acc(3) + u64 r = $d:1 & $i; + m_ccr = m_ccr & ~(CCR_V|CCR_Z|CCR_N); + if(!r) { + m_ccr = m_ccr | CCR_Z; + } else if(BIT(m_ccr, 23)) { + m_ccr = m_ccr | CCR_N; + } + $d:w1(r); + 0140c6 and #i,d - d:acc(3) i:eximm() + u64 r = $d:1 & $i; + m_ccr = m_ccr & ~(CCR_V|CCR_Z|CCR_N); + if(!r) { + m_ccr = m_ccr | CCR_Z; + } else if(BIT(m_ccr, 23)) { + m_ccr = m_ccr | CCR_N; + } + $d:w1(r); + 0000b8 andi #i,ctrl - i:imm8(8) ctrl:ctrl(0) $ctrl:w($ctrl & $i); -0c1d00 asl #i,s2,d - i:imm6(1) s2:acc(7) d:acc(0) +0c1d00 asl #i,s2,d - i:shift6(1) s2:acc(7) d:acc(0) 0c1e40 asl s1,s2,d - s2:acc(4) s1:actrl(1) d:acc(0) -0c1c00 asr #i,s2,d - i:imm6(1) s2:acc(7) d:acc(0) +0c1c00 asr #i,s2,d - i:shift6(1) s2:acc(7) d:acc(0) 0c1e60 asr s1,s2,d - s2:acc(4) s1:actrl(1) d:acc(0) -0d1040 bcc x - cc:cc(0) x:expcrel() -050400 bcc x - cc:cc(12) x:pcrel(6, 0) -0d1840 bcc r - r:ar(8) cc:cc(0) +0d1040 bcc x - cc:cc(0) x:expcrel() cond + if($cc) { + m_npc = $x; + } + +050400 bcc x - cc:cc(12) x:pcrel(6, 0) cond + if($cc) { + m_npc = $x; + } + +0d1840 bcc r - r:ar(8) cc:cc(0) cond + if($cc) { + m_npc = m_pc + $r; + } + 0b4000 bchg #n,xy:ea - ea:eam1(8) xy:xyc(6) n:bit5(0) 0b4000 bchg #n,xy:abs - abs:eam1a(8) xy:xyc(6) n:bit5(0) 0b0000 bchg #n,xy:aa - aa:asa6(8) xy:xyc(6) n:bit5(0) @@ -112,10 +314,46 @@ c000.. s1,x:eax y:eay,d2 - eax:xyeax(8) eay:xyeay(20, 13, 10) s1:tbrx(18) d2 014000 bchg #n,xy:qq - qq:asa6q(8) xy:xyc(6) n:bit5(0) 0bc040 bchg #n,d - d:sbr(8) n:bit5(0) 0a4000 bclr #n,xy:ea - ea:eam1(8) xy:xyc(6) n:bit5(0) + u32 t = $xy:m.read_dword($ea); + u32 m = 1 << $n; + if(t & m) { + m_ccr |= CCR_C; + $xy:m.write_dword($ea, t & ~m); + } else { + m_ccr &= ~CCR_C; + } + 0a4000 bclr #n,xy:abs - abs:eam1a(8) xy:xyc(6) n:bit5(0) + u32 t = $xy:m.read_dword($abs); + u32 m = 1 << $n; + if(t & m) { + m_ccr |= CCR_C; + $xy:m.write_dword($abs, t & ~m); + } else { + m_ccr &= ~CCR_C; + } + 0a0000 bclr #n,xy:aa - aa:asa6(8) xy:xyc(6) n:bit5(0) 0a8000 bclr #n,xy:pp - pp:asa6p(8) xy:xyc(6) n:bit5(0) + u32 t = $xy:m.read_dword($pp); + u32 m = 1 << $n; + if(t & m) { + m_ccr |= CCR_C; + $xy:m.write_dword($pp, t & ~m); + } else { + m_ccr &= ~CCR_C; + } + 010000 bclr #n,xy:qq - qq:asa6q(8) xy:xyc(6) n:bit5(0) + u32 t = $xy:m.read_dword($qq); + u32 m = 1 << $n; + if(t & m) { + m_ccr |= CCR_C; + $xy:m.write_dword($qq, t & ~m); + } else { + m_ccr &= ~CCR_C; + } + 0ac040 bclr #n,d - d:sbr(8) n:bit5(0) 0d10c0 bra x - x:expcrel() m_npc = $x; @@ -124,32 +362,50 @@ c000.. s1,x:eax y:eay,d2 - eax:xyeax(8) eay:xyeay(20, 13, 10) s1:tbrx(18) d2 m_npc = $x; 0d18c0 bra r - r:ar(8) - m_npc = $r; - -0c8000 brclr #n,xy:ea,x - ea:eam1(8) xy:xyc(6) n:bit5(0) x:expcrel() -0c8000 brclr #n,xy:abs,x - abs:eam1a(8) xy:xyc(6) n:bit5(0) x:expcrel() -0c8080 brclr #n,xy:aa,x - aa:asa6(8) xy:xyc(6) n:bit5(0) x:expcrel() -0cc000 brclr #n,xy:pp,x - pp:asa6p(8) xy:xyc(6) n:bit5(0) x:expcrel() -048000 brclr #n,xy:qq,x - qq:asa6q(8) xy:xyc(6) n:bit5(0) x:expcrel() -0cc080 brclr #n,s,x - s:sbr(8) n:bit5(0) -000210 brkcc - cc:cc(0) -0c8020 brset #n,xy:ea,x - ea:eam1(8) xy:xyc(6) n:bit5(0) x:expcrel() -0c8020 brset #n,xy:abs,x - abs:eam1a(8) xy:xyc(6) n:bit5(0) x:expcrel() -0c80a0 brset #n,xy:aa,x - aa:asa6(8) xy:xyc(6) n:bit5(0) x:expcrel() -0cc020 brset #n,xy:pp,x - pp:asa6p(8) xy:xyc(6) n:bit5(0) x:expcrel() -048020 brset #n,xy:qq,x - qq:asa6q(8) xy:xyc(6) n:bit5(0) x:expcrel() -0cc0a0 brset #n,s,x - s:sbr(8) n:bit5(0) x:expcrel() -0d1000 bscc x - cc:cc(0) x:expcrel() -050000 bscc x - cc:cc(12) x:pcrel(6, 0) -0d1800 bscc r - r:ar(8) cc:cc(0) -0d8000 bsclr #n,xy:ea,x - ea:eam1(8) xy:xyc(6) n:bit5(0) x:expcrel() -0d8000 bsclr #n,xy:abs,x - abs:eam1a(8) xy:xyc(6) n:bit5(0) x:expcrel() -0d8080 bsclr #n,xy:aa,x - aa:asa6(8) xy:xyc(6) n:bit5(0) x:expcrel() -0dc000 bsclr #n,xy:pp,x - pp:asa6p(8) xy:xyc(6) n:bit5(0) x:expcrel() -048080 bsclr #n,xy:qq,x - qq:asa6q(8) xy:xyc(6) n:bit5(0) x:expcrel() -0dc080 bsclr #n,s,x - s:sbr(8) n:bit5(0) x:expcrel() + m_npc = m_pc + $r; + +0c8000 brclr #n,xy:ea,x - ea:eam1(8) xy:xyc(6) n:bit5(0) x:expcrel() cond +0c8000 brclr #n,xy:abs,x - abs:eam1a(8) xy:xyc(6) n:bit5(0) x:expcrel() cond +0c8080 brclr #n,xy:aa,x - aa:asa6(8) xy:xyc(6) n:bit5(0) x:expcrel() cond +0cc000 brclr #n,xy:pp,x - pp:asa6p(8) xy:xyc(6) n:bit5(0) x:expcrel() cond +048000 brclr #n,xy:qq,x - qq:asa6q(8) xy:xyc(6) n:bit5(0) x:expcrel() cond +0cc080 brclr #n,s,x - s:sbr(8) n:bit5(0) cond +000210 brkcc - cc:cc(0) cond +0c8020 brset #n,xy:ea,x - ea:eam1(8) xy:xyc(6) n:bit5(0) x:expcrel() cond +0c8020 brset #n,xy:abs,x - abs:eam1a(8) xy:xyc(6) n:bit5(0) x:expcrel() cond +0c80a0 brset #n,xy:aa,x - aa:asa6(8) xy:xyc(6) n:bit5(0) x:expcrel() cond +0cc020 brset #n,xy:pp,x - pp:asa6p(8) xy:xyc(6) n:bit5(0) x:expcrel() cond +048020 brset #n,xy:qq,x - qq:asa6q(8) xy:xyc(6) n:bit5(0) x:expcrel() cond +0cc0a0 brset #n,s,x - s:sbr(8) n:bit5(0) x:expcrel() cond +0d1000 bscc x - cc:cc(0) x:expcrel() cond over +050000 bscc x - cc:cc(12) x:pcrel(6, 0) cond over +0d1800 bscc r - r:ar(8) cc:cc(0) cond over +0d8000 bsclr #n,xy:ea,x - ea:eam1(8) xy:xyc(6) n:bit5(0) x:expcrel() cond over +0d8000 bsclr #n,xy:abs,x - abs:eam1a(8) xy:xyc(6) n:bit5(0) x:expcrel() cond over +0d8080 bsclr #n,xy:aa,x - aa:asa6(8) xy:xyc(6) n:bit5(0) x:expcrel() cond over +0dc000 bsclr #n,xy:pp,x - pp:asa6p(8) xy:xyc(6) n:bit5(0) x:expcrel() cond over +048080 bsclr #n,xy:qq,x - qq:asa6q(8) xy:xyc(6) n:bit5(0) x:expcrel() cond over +0dc080 bsclr #n,s,x - s:sbr(8) n:bit5(0) x:expcrel() cond over 0a4020 bset #n,xy:ea - ea:eam1(8) xy:xyc(6) n:bit5(0) + u32 t = $xy:m.read_dword($ea); + u32 m = 1 << $n; + if(t & m) { + m_ccr |= CCR_C; + } else { + m_ccr &= ~CCR_C; + $xy:m.write_dword($ea, t | m); + } + 0a4020 bset #n,xy:abs - abs:eam1a(8) xy:xyc(6) n:bit5(0) + u32 t = $xy:m.read_dword($abs); + u32 m = 1 << $n; + if(t & m) { + m_ccr |= CCR_C; + } else { + m_ccr &= ~CCR_C; + $xy:m.write_dword($abs, t | m); + } + 0a0020 bset #n,xy:aa - aa:asa6(8) xy:xyc(6) n:bit5(0) 0a8020 bset #n,xy:pp - pp:asa6p(8) xy:xyc(6) n:bit5(0) u32 t = $xy:m.read_dword($pp); @@ -162,22 +418,86 @@ c000.. s1,x:eax y:eay,d2 - eax:xyeax(8) eay:xyeay(20, 13, 10) s1:tbrx(18) d2 } 010020 bset #n,xy:qq - qq:asa6q(8) xy:xyc(6) n:bit5(0) + u32 t = $xy:m.read_dword($qq); + u32 m = 1 << $n; + if(t & m) { + m_ccr |= CCR_C; + } else { + m_ccr &= ~CCR_C; + $xy:m.write_dword($qq, t | m); + } + 0ac060 bset #n,d - d:sbr(8) n:bit5(0) -0d1080 bsr x - x:expcrel() -050800 bsr x - x:pcrel(6, 0) -0d1880 bsr r - r:ar(8) -0d8020 bsset #n,xy:ea,x - ea:eam1(8) xy:xyc(6) n:bit5(0) x:expcrel() -0d8020 bsset #n,xy:abs,x - abs:eam1a(8) xy:xyc(6) n:bit5(0) x:expcrel() -0d80a0 bsset #n,xy:aa,x - aa:asa6(8) xy:xyc(6) n:bit5(0) x:expcrel() -0dc020 bsset #n,xy:pp,x - pp:asa6p(8) xy:xyc(6) n:bit5(0) x:expcrel() -0480a0 bsset #n,xy:qq,x - qq:asa6q(8) xy:xyc(6) n:bit5(0) x:expcrel() -0dc0a0 bsset #n,s,x - s:sbr(8) n:bit5(0) x:expcrel() +0d1080 bsr x - x:expcrel() over + inc_sp(); + set_ssh(m_pc+2); + set_ssl(get_sr()); + m_npc = $x; + +050800 bsr x - x:pcrel(6, 0) over + inc_sp(); + set_ssh(m_pc+1); + set_ssl(get_sr()); + m_npc = $x; + +0d1880 bsr r - r:ar(8) over + inc_sp(); + set_ssh(m_pc+1); + set_ssl(get_sr()); + m_npc = m_pc + $r; + +0d8020 bsset #n,xy:ea,x - ea:eam1(8) xy:xyc(6) n:bit5(0) x:expcrel() cond over +0d8020 bsset #n,xy:abs,x - abs:eam1a(8) xy:xyc(6) n:bit5(0) x:expcrel() cond over +0d80a0 bsset #n,xy:aa,x - aa:asa6(8) xy:xyc(6) n:bit5(0) x:expcrel() cond over +0dc020 bsset #n,xy:pp,x - pp:asa6p(8) xy:xyc(6) n:bit5(0) x:expcrel() cond over +0480a0 bsset #n,xy:qq,x - qq:asa6q(8) xy:xyc(6) n:bit5(0) x:expcrel() cond over +0dc0a0 bsset #n,s,x - s:sbr(8) n:bit5(0) x:expcrel() cond over 0b4020 btst #n,xy:ea - ea:eam1(8) xy:xyc(6) n:bit5(0) + u32 t = $xy:m.read_dword($ea); + u32 m = 1 << $n; + if(t & m) { + m_ccr |= CCR_C; + } else { + m_ccr &= ~CCR_C; + } + 0b4020 btst #n,xy:abs - abs:eam1a(8) xy:xyc(6) n:bit5(0) + u32 t = $xy:m.read_dword($abs); + u32 m = 1 << $n; + if(t & m) { + m_ccr |= CCR_C; + } else { + m_ccr &= ~CCR_C; + } + 0b0020 btst #n,xy:aa - aa:asa6(8) xy:xyc(6) n:bit5(0) 0b8020 btst #n,xy:pp - pp:asa6p(8) xy:xyc(6) n:bit5(0) + u32 t = $xy:m.read_dword($pp); + u32 m = 1 << $n; + if(t & m) { + m_ccr |= CCR_C; + } else { + m_ccr &= ~CCR_C; + } + 014020 btst #n,xy:qq - qq:asa6q(8) xy:xyc(6) n:bit5(0) + u32 t = $xy:m.read_dword($qq); + u32 m = 1 << $n; + if(t & m) { + m_ccr |= CCR_C; + } else { + m_ccr &= ~CCR_C; + } + 0bc060 btst #n,d - d:sbr(8) n:bit5(0) + u32 t = $d; + u32 m = 1 << $n; + if(t & m) { + m_ccr |= CCR_C; + } else { + m_ccr &= ~CCR_C; + } + 00c3c0 clb s,d - s:acc(1) d:acc(0) 014085 cmp #i,d - i:imm6(8) d:acc(3) 0140c5 cmp #i,d - d:acc(3) i:eximm() @@ -232,7 +552,7 @@ c000.. s1,x:eax y:eay,d2 - eax:xyeax(8) eay:xyeay(20, 13, 10) s1:tbrx(18) d2 inc_sp(); set_ssh(m_pc+2); set_ssl(get_sr()); - set_la($expr-1); + set_la($expr); m_mr |= MR_LF; 06c010 dor s,expr - s:sbr_nos(8) expr:expcrel() @@ -243,7 +563,7 @@ c000.. s1,x:eax y:eay,d2 - eax:xyeax(8) eay:xyeay(20, 13, 10) s1:tbrx(18) d2 inc_sp(); set_ssh(m_pc+2); set_ssl(get_sr()); - set_la($expr-1); + set_la($expr); m_mr |= MR_LF; 000202 dor forever,expr - expr:expcrel() @@ -253,7 +573,7 @@ c000.. s1,x:eax y:eay,d2 - eax:xyeax(8) eay:xyeay(20, 13, 10) s1:tbrx(18) d2 inc_sp(); set_ssh(m_pc+2); set_ssl(get_sr()); - set_la($expr-1); + set_la($expr); m_mr |= MR_LF; m_emr |= EMR_FV; @@ -268,20 +588,23 @@ c000.. s1,x:eax y:eay,d2 - eax:xyeax(8) eay:xyeay(20, 13, 10) s1:tbrx(18) d2 000008 inc d - d:acc(0) 0c1b00 insert s1,s2,d - s1:actrl(1) s2:dao3b(4) 0c1900 insert #co,s2,d - s2:dao3b(4) d:acc(0) co:exco() -0e0000 jcc x - cc:cc(12) x:pcrel12(0) -0ac0a0 jcc ea - ea:eam1(8) cc:cc(0) -0ac0a0 jcc abs - abs:eam1a(8) cc:cc(0) -0a4080 jclr #n,xy:ea,x - ea:eam1(8) xy:xyc(6) n:bit5(0) x:exabs() -0a0080 jclr #n,xy:aa,x - aa:asa6(8) xy:xyc(6) n:bit5(0) x:exabs() -0a8080 jclr #n,xy:pp,x - pp:asa6p(8) xy:xyc(6) n:bit5(0) x:exabs() +0e0000 jcc x - cc:cc(12) x:abs12(0) cond +0ac0a0 jcc ea - ea:eam1(8) cc:cc(0) cond +0ac0a0 jcc abs - abs:eam1a(8) cc:cc(0) cond +0a4080 jclr #n,xy:ea,x - ea:eam1(8) xy:xyc(6) n:bit5(0) x:exabs() cond + if(!BIT($xy:m.read_dword($ea), $n)) + m_npc = $x; + +0a0080 jclr #n,xy:aa,x - aa:asa6(8) xy:xyc(6) n:bit5(0) x:exabs() cond +0a8080 jclr #n,xy:pp,x - pp:asa6p(8) xy:xyc(6) n:bit5(0) x:exabs() cond if(!BIT($xy:m.read_dword($pp), $n)) m_npc = $x; -018080 jclr #n,xy:qq,x - qq:asa6q(8) xy:xyc(6) n:bit5(0) x:exabs() +018080 jclr #n,xy:qq,x - qq:asa6q(8) xy:xyc(6) n:bit5(0) x:exabs() cond if(!BIT($xy:m.read_dword($qq), $n)) m_npc = $x; -0ac000 jclr #n,s,x - s:sbr(8) n:bit5(0) x:exabs() +0ac000 jclr #n,s,x - s:sbr(8) n:bit5(0) x:exabs() cond if(!BIT($s, $n)) m_npc = $x; @@ -294,40 +617,72 @@ c000.. s1,x:eax y:eay,d2 - eax:xyeax(8) eay:xyeay(20, 13, 10) s1:tbrx(18) d2 0c0000 jmp x - x:abs12(0) m_npc = $x; -0f0000 jscc x - cc:cc(12) x:pcrel12(0) -0bc0a0 jscc ea - ea:eam1(8) cc:cc(0) -0bc0a0 jscc abs - abs:eam1a(8) cc:cc(0) -0b4080 jsclr #n,xy:ea,x - ea:eam1(8) xy:xyc(6) n:bit5(0) x:exabs() -0b0080 jsclr #n,xy:aa,x - aa:asa6(8) xy:xyc(6) n:bit5(0) x:exabs() -0b8080 jsclr #n,xy:pp,x - pp:asa6p(8) xy:xyc(6) n:bit5(0) x:exabs() -01c080 jsclr #n,xy:qq,x - qq:asa6q(8) xy:xyc(6) n:bit5(0) x:exabs() -0bc000 jsclr #n,s,x - s:sbr(8) n:bit5(0) x:exabs() -0a40a0 jset #n,xy:ea,x - ea:eam1(8) xy:xyc(6) n:bit5(0) x:exabs() -0a00a0 jset #n,xy:aa,x - aa:asa6(8) xy:xyc(6) n:bit5(0) x:exabs() -0a80a0 jset #n,xy:pp,x - pp:asa6p(8) xy:xyc(6) n:bit5(0) x:exabs() +0f0000 jscc x - cc:cc(12) x:abs12(0) cond over +0bc0a0 jscc ea - ea:eam1(8) cc:cc(0) cond over +0bc0a0 jscc abs - abs:eam1a(8) cc:cc(0) cond over +0b4080 jsclr #n,xy:ea,x - ea:eam1(8) xy:xyc(6) n:bit5(0) x:exabs() cond over +0b0080 jsclr #n,xy:aa,x - aa:asa6(8) xy:xyc(6) n:bit5(0) x:exabs() cond over +0b8080 jsclr #n,xy:pp,x - pp:asa6p(8) xy:xyc(6) n:bit5(0) x:exabs() cond over +01c080 jsclr #n,xy:qq,x - qq:asa6q(8) xy:xyc(6) n:bit5(0) x:exabs() cond over +0bc000 jsclr #n,s,x - s:sbr(8) n:bit5(0) x:exabs() cond over +0a40a0 jset #n,xy:ea,x - ea:eam1(8) xy:xyc(6) n:bit5(0) x:exabs() cond +0a00a0 jset #n,xy:aa,x - aa:asa6(8) xy:xyc(6) n:bit5(0) x:exabs() cond +0a80a0 jset #n,xy:pp,x - pp:asa6p(8) xy:xyc(6) n:bit5(0) x:exabs() cond if(BIT($xy:m.read_dword($pp), $n)) m_npc = $x; -0180a0 jset #n,xy:qq,x - qq:asa6q(8) xy:xyc(6) n:bit5(0) x:exabs() +0180a0 jset #n,xy:qq,x - qq:asa6q(8) xy:xyc(6) n:bit5(0) x:exabs() cond if(BIT($xy:m.read_dword($qq), $n)) m_npc = $x; -0ac020 jset #n,s,x - s:sbr(8) n:bit5(0) x:exabs() +0ac020 jset #n,s,x - s:sbr(8) n:bit5(0) x:exabs() cond if(BIT($s, $n)) m_npc = $x; -0bc080 jsr ea - ea:eam1(8) -0bc080 jsr abs - abs:eam1a(8) -0d0000 jsr x - x:abs12(0) -0b40a0 jsset #n,xy:ea,x - ea:eam1(8) xy:xyc(6) n:bit5(0) x:exabs() -0b00a0 jsset #n,xy:aa,x - aa:asa6(8) xy:xyc(6) n:bit5(0) x:exabs() -0b80a0 jsset #n,xy:pp,x - pp:asa6p(8) xy:xyc(6) n:bit5(0) x:exabs() -01c0a0 jsset #n,xy:qq,x - qq:asa6q(8) xy:xyc(6) n:bit5(0) x:exabs() -0bc020 jsset #n,s,x - s:sbr(8) n:bit5(0) x:exabs() +0bc080 jsr ea - ea:eam1(8) over +0bc080 jsr abs - abs:eam1a(8) over +0d0000 jsr x - x:abs12(0) over +0b40a0 jsset #n,xy:ea,x - ea:eam1(8) xy:xyc(6) n:bit5(0) x:exabs() cond over +0b00a0 jsset #n,xy:aa,x - aa:asa6(8) xy:xyc(6) n:bit5(0) x:exabs() cond over +0b80a0 jsset #n,xy:pp,x - pp:asa6p(8) xy:xyc(6) n:bit5(0) x:exabs() cond over +01c0a0 jsset #n,xy:qq,x - qq:asa6q(8) xy:xyc(6) n:bit5(0) x:exabs() cond over +0bc020 jsset #n,s,x - s:sbr(8) n:bit5(0) x:exabs() cond over 04c000 lra r,d - r:ar(8) d:fvbr1(0) + $d:w(m_pc + $r); + 044040 lra #i,d - d:fvbr1(0) i:expcrel() + $d:w($i); + 0c1e80 lsl #i,d - i:shift5(1) d:acc(0) + u32 r = ($d:h) << $i; + m_ccr &= ~(CCR_N|CCR_Z|CCR_V|CCR_C); + if(BIT(r, 24)) { + m_ccr |= CCR_C; + } + if(BIT(r, 23)) { + m_ccr |= CCR_N; + } + r &= 0xffffff; + if(!r) { + m_ccr |= CCR_Z; + } + $d:wh(r); + 0c1e10 lsl s,d - s:actrl(1) d:acc(0) + u32 r = ($d:h) << $s; + m_ccr &= ~(CCR_N|CCR_Z|CCR_V|CCR_C); + if(BIT(r, 24)) { + m_ccr |= CCR_C; + } + if(BIT(r, 23)) { + m_ccr |= CCR_N; + } + r &= 0xffffff; + if(!r) { + m_ccr |= CCR_Z; + } + $d:wh(r); + 0c1ec0 lsr #i,d - i:shift5(1) d:acc(0) 0c1e30 lsr s,d - s:actrl(1) d:acc(0) 044000 lua ea,d - ea:eam4(8) d:fvbr1(0) @@ -339,35 +694,86 @@ c000.. s1,x:eax y:eay,d2 - eax:xyeax(8) eay:xyeay(20, 13, 10) s1:tbrx(18) d2 0141c3 macri +#i,s,d - s:damo2(4) d:acc(3) +:sign(2) i:eximm() 0c1b80 merge s,d - s:dao3(1) d:acc(0) 05c020 movec xy:ea,d1 - ea:eam1(8) xy:xyc(6) d1:fvbr2(0) + $d1:wh($xy:m.read_dword($ea)); + 054020 movec s1,xy:ea - ea:eam1(8) xy:xyc(6) s1:fvbr2(0) + $xy:m.write_dword($ea, $s1:h); + 05c020 movec xy:abs,d1 - abs:eam1a(8) xy:xyc(6) d1:fvbr2(0) + $d1:wh($xy:m.read_dword($abs)); + 05c020 movec #i,d1 - i:eam1i(8) d1:fvbr2(0) + $d1:wh($i); + 058020 movec xy:aa,d1 - aa:asa6(8) xy:xyc(6) d1:fvbr2(0) + $d1:wh($xy:m.read_dword($aa)); + 050020 movec s1,xy:aa - aa:asa6(8) xy:xyc(6) s1:fvbr2(0) + $xy:m.write_dword($aa, $s1:h); + 04c0a0 movec s2,d1 - s2:sbr(8) d1:fvbr2(0) + $d1:w($s2); + 0440a0 movec s1,d2 - d2:sbr(8) s1:fvbr2(0) + $d2:w($s1); + 0500a0 movec #i,d1 - i:imm8(8) d1:fvbr2(0) + $d1:w($i); + 07c080 movem p:ea,d - ea:eam1(8) d:sbr(0) + $d:wh(m_p.read_dword($ea)); + 074080 movem s,p:ea - ea:eam1(8) s:sbr(0) + m_p.write_dword($ea, $s:h); + 07c080 movem p:abs,d - abs:eam1a(8) d:sbr(0) + $d:wh(m_p.read_dword($abs)); + +074080 movem s,p:abs - abs:eam1a(8) s:sbr(0) + m_p.write_dword($abs, $s:h); + 078000 movem p:aa,d - aa:asa6(8) d:sbr(0) + $d:wh(m_p.read_dword($aa)); + 070000 movem s,p:aa - aa:asa6(8) s:sbr(0) + m_p.write_dword($aa, $s:h); + 08c080 movep xym:ea,xyp:pp - xyp:xyc(16) ea:eam1(8) xym:xyc(6) pp:asa6p(0) + $xyp:m.write_dword($pp, $xym:m.read_dword($ea)); + 084080 movep xyp:pp,xym:ea - xyp:xyc(16) ea:eam1(8) xym:xyc(6) pp:asa6p(0) + $xym:m.write_dword($ea, $xyp:m.read_dword($pp)); + 08c080 movep xym:abs,xyp:pp - xyp:xyc(16) abs:eam1a(8) xym:xyc(6) pp:asa6p(0) + $xyp:m.write_dword($pp, $xym:m.read_dword($abs)); + 08c080 movep #i,xyp:pp - xyp:xyc(16) i:eam1i(8) pp:asa6p(0) $xyp:m.write_dword($pp, $i); 07c000 movep xym:ea,x:qq - ea:eam1(8) xym:xyc(6) qq:asa6q(0) + m_x.write_dword($qq, $xym:m.read_dword($ea)); + 074000 movep x:qq,xym:ea - ea:eam1(8) xym:xyc(6) qq:asa6q(0) + $xym:m.write_dword($ea, m_x.read_dword($qq)); + 07c000 movep xym:abs,x:qq - abs:eam1a(8) xym:xyc(6) qq:asa6q(0) + m_x.write_dword($qq, $xym:m.read_dword($abs)); + 07c000 movep #i,x:qq - i:eam1i(8) qq:asa6q(0) m_x.write_dword($qq, $i); 078080 movep xym:ea,y:qq - ea:eam1(8) xym:xyc(6) qq:asa6q(0) + m_y.write_dword($qq, $xym:m.read_dword($ea)); + 070080 movep y:qq,xym:ea - ea:eam1(8) xym:xyc(6) qq:asa6q(0) + $xym:m.write_dword($ea, m_y.read_dword($qq)); + 078080 movep xym:abs,y:qq - abs:eam1a(8) xym:xyc(6) qq:asa6q(0) + m_y.write_dword($qq, $xym:m.read_dword($abs)); + 078080 movep #i,y:qq - i:eam1i(8) qq:asa6q(0) + m_y.write_dword($qq, $i); + 08c040 movep p:ea,xyp:pp - xyp:xyc(16) ea:eam1(8) pp:asa6p(0) $xyp:m.write_dword($pp, m_p.read_dword($ea)); @@ -375,26 +781,34 @@ c000.. s1,x:eax y:eay,d2 - eax:xyeax(8) eay:xyeay(20, 13, 10) s1:tbrx(18) d2 m_p.write_dword($ea, $xyp:m.read_dword($pp)); 08c040 movep p:abs,xyp:pp - xyp:xyc(16) abs:eam1a(8) pp:asa6p(0) + $xyp:m.write_dword($pp, m_p.read_dword($abs)); + 00c000 movep p:ea,xyp:qq - xyp:xyc(6) ea:eam1(8) qq:asa6q(0) + $xyp:m.write_dword($qq, m_p.read_dword($ea)); + 008000 movep xyp:qq,p:ea - xyp:xyc(6) ea:eam1(8) qq:asa6q(0) + m_p.write_dword($ea, $xyp:m.read_dword($qq)); + 00c000 movep p:abs,xyp:qq - xyp:xyc(6) abs:eam1a(8) qq:asa6q(0) + $xyp:m.write_dword($qq, m_p.read_dword($abs)); + 08c000 movep s,xyp:pp - xyp:xyc(16) s:sbr(8) pp:asa6p(0) $xyp:m.write_dword($pp, $s); 084000 movep xyp:pp,d - xyp:xyc(16) d:sbr(8) pp:asa6p(0) - $d:w($xyp:m.read_dword($pp)); + $d:wh($xyp:m.read_dword($pp)); 04c080 movep s,x:qq - s:sbr(8) qq:asa6qs(6, 0) - m_x.write_dword($qq, $s); + m_x.write_dword($qq, $s:h); 044080 movep x:qq,d - d:sbr(8) qq:asa6qs(6, 0) - $d:w(m_x.read_dword($qq)); + $d:wh(m_x.read_dword($qq)); 04c020 movep s,y:qq - s:sbr(8) qq:asa6qs(6, 0) - m_y.write_dword($qq, $s); + m_y.write_dword($qq, $s:h); 044020 movep y:qq,d - d:sbr(8) qq:asa6qs(6, 0) - $d:w(m_y.read_dword($qq)); + $d:wh(m_y.read_dword($qq)); 0100c0 mpy +s,#i,d - i:imm4(8) s:damo2(4) d:acc(3) +:sign(2) 012780 mpyss +s1,s2,d - ss:ss1(6) d:acc(5) +:sign(4) s1:damo4_a(0) s2:damo4_b(0) @@ -420,8 +834,18 @@ c000.. s1,x:eax y:eay,d2 - eax:xyeax(8) eay:xyeay(20, 13, 10) s1:tbrx(18) d2 0600a0 rep #i - i:imm12(0, 8) 06c020 rep s - s:sbr(8) 000084 reset - -000004 rti - -00000c rts - + m_icount = 0; + m_npc --; + +000004 rti - out + m_npc = get_ssh(); + set_sr(get_ssl()); + dec_sp(); + +00000c rts - out + m_npc = get_ssh(); + dec_sp(); + 000087 stop - 014084 sub #i,d - i:imm6(8) d:acc(3) 0140c4 sub #i,d - d:acc(3) i:eximm() @@ -429,7 +853,7 @@ c000.. s1,x:eax y:eay,d2 - eax:xyeax(8) eay:xyeay(20, 13, 10) s1:tbrx(18) d2 030000 tcc s1,d1 s2,d2 - cc:cc(12) s2:ar(8) s1:daos3(4, 3) d1:acc(3) d2:ar(0) 020800 tcc s2,d2 - cc:cc(12) s2:ar(8) d2:ar(0) 000006 trap - -000010 trapcc - cc:cc(0) +000010 trapcc - cc:cc(0) cond 0ac0c0 vsl s,i,l:ea - s:acc(16) ea:eam1(8) i:imm1(4) 0ac0c0 vsl s,i,l:abs - s:acc(16) abs:eam1a(8) i:imm1(4) 000086 wait - |
