diff --git a/math32.tal b/math32.tal index 8a61db3..feed397 100644 --- a/math32.tal +++ b/math32.tal @@ -130,39 +130,35 @@ ( shift right by 0-7 bits ) @right-shift0 ( x** n^ -> x< x< r ) - POP - ;sh/r LDA SFT ;sh/z3 STA ( write z3 ) - #00 ;sh/r LDA SFT2 ;sh/z2 LDA2 ORA2 ;sh/z2 STA2 ( write z2,z3 ) - #00 ;sh/r LDA SFT2 ;sh/z1 LDA2 ORA2 ;sh/z1 STA2 ( write z1,z2 ) - #00 ;sh/z1 LDA ;sh/z2 LDA2 + #08 SUB STH POP + STHkr SFT ;sh/z3 STA ( write z3 ) + #00 STHkr SFT2 #00 ;sh/z3 LDA ORA2 ;sh/z2 STA2 ( write z2,z3 ) + #00 STHr SFT2 #00 ;sh/z2 LDA ORA2 ( compute z1,z2 ) + #00 TOR ;sh/z3 LDA RTN ( shift right by 16-23 bits ) @right-shift2 ( x** n^ -> x< r ) - POP2 - ;sh/r LDA SFT ;sh/z3 STA ( write z3 ) - #00 ;sh/r LDA SFT2 ;sh/z2 LDA2 ORA2 ;sh/z2 STA2 ( write z2,z3 ) - #0000 ;sh/z2 LDA2 + #10 SUB STH POP2 + STHkr SFT ;sh/z3 STA ( write z3 ) + #00 STHr SFT2 #00 ;sh/z3 LDA ORA2 ( compute z2,z3 ) + #0000 SWP2 RTN ( shift right by 16-23 bits ) @right-shift3 ( x** n^ -> x< r ) - POP2 POP #00 SWP #0000 SWP2 ( 00 00 00 x0 ) - ;sh/r LDA SFT + #18 SUB STH POP2 POP ( x0 ) + #00 SWP #0000 SWP2 ( 00 00 00 x0 ) + STHr SFT RTN ( shift left, i.e. << )