aboutsummaryrefslogtreecommitdiff
path: root/amforth-6.5/msp430/words/sm-rem.asm
diff options
context:
space:
mode:
Diffstat (limited to 'amforth-6.5/msp430/words/sm-rem.asm')
-rw-r--r--amforth-6.5/msp430/words/sm-rem.asm12
1 files changed, 12 insertions, 0 deletions
diff --git a/amforth-6.5/msp430/words/sm-rem.asm b/amforth-6.5/msp430/words/sm-rem.asm
new file mode 100644
index 0000000..5415080
--- /dev/null
+++ b/amforth-6.5/msp430/words/sm-rem.asm
@@ -0,0 +1,12 @@
+;C SM/REM d1 n1 -- n2 n3 symmetric signed div
+; 2DUP XOR >R sign of quotient
+; OVER >R sign of remainder
+; ABS >R DABS R> UM/MOD
+; XT_SWAP R> ?NEGATE
+; XT_SWAP R> ?NEGATE ;
+; Ref. dpANS-6 section 3.2.2.1.
+ HEADER(SMSLASHREM,6,"sm/rem",DOCOLON)
+ DW XT_2DUP,XT_XOR,XT_TO_R,XT_OVER,XT_TO_R
+ DW XT_ABS,XT_TO_R,XT_DABS,XT_R_FROM,XT_UMSLASHMOD
+ DW XT_SWAP,XT_R_FROM,XT_QNEGATE,XT_SWAP,XT_R_FROM,XT_QNEGATE
+ DW XT_EXIT