aboutsummaryrefslogtreecommitdiff
path: root/amforth-6.5/avr8/words/log2.asm
diff options
context:
space:
mode:
Diffstat (limited to 'amforth-6.5/avr8/words/log2.asm')
-rw-r--r--amforth-6.5/avr8/words/log2.asm26
1 files changed, 26 insertions, 0 deletions
diff --git a/amforth-6.5/avr8/words/log2.asm b/amforth-6.5/avr8/words/log2.asm
new file mode 100644
index 0000000..0dcc511
--- /dev/null
+++ b/amforth-6.5/avr8/words/log2.asm
@@ -0,0 +1,26 @@
+; ( n1 -- n2 )
+; Arithmetics
+; logarithm to base 2 or highest set bitnumber
+VE_LOG2:
+ .dw $ff04
+ .db "log2"
+ .dw VE_HEAD
+ .set VE_HEAD = VE_LOG2
+XT_LOG2:
+ .dw PFA_LOG2
+PFA_LOG2:
+ movw zl, tosl
+ clr tosh
+ ldi tosl, 16
+PFA_LOG2_1:
+ dec tosl
+ brmi PFA_LOG2_2 ; wrong data
+ lsl zl
+ rol zh
+ brcc PFA_LOG2_1
+ jmp_ DO_NEXT
+
+PFA_LOG2_2:
+ dec tosh
+ jmp_ DO_NEXT
+ \ No newline at end of file