From 67d25d837ac55f28a366c0a3b262e439a6e75fc3 Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Sat, 19 Aug 2017 12:15:28 +0200 Subject: Add AmForth --- amforth-6.5/avr8/words/umstar.asm | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 amforth-6.5/avr8/words/umstar.asm (limited to 'amforth-6.5/avr8/words/umstar.asm') diff --git a/amforth-6.5/avr8/words/umstar.asm b/amforth-6.5/avr8/words/umstar.asm new file mode 100644 index 0000000..ee53c87 --- /dev/null +++ b/amforth-6.5/avr8/words/umstar.asm @@ -0,0 +1,37 @@ +; ( u1 u2 -- d) +; Arithmetics +; multiply 2 unsigned cells to a double cell +VE_UMSTAR: + .dw $ff03 + .db "um*",0 + .dw VE_HEAD + .set VE_HEAD = VE_UMSTAR +XT_UMSTAR: + .dw PFA_UMSTAR +PFA_UMSTAR: + movw temp0, tosl + loadtos + ; result: (temp3*temp1)* 65536 + (temp3*temp0 + temp1*temp2) * 256 + (temp0 * temp2) + ; low bytes + mul tosl,temp0 + movw zl, r0 + clr temp2 + clr temp3 + ; middle bytes + mul tosh, temp0 + add zh, r0 + adc temp2, r1 + adc temp3, zeroh + + mul tosl, temp1 + add zh, r0 + adc temp2, r1 + adc temp3, zeroh + + mul tosh, temp1 + add temp2, r0 + adc temp3, r1 + movw tosl, zl + savetos + movw tosl, temp2 + jmp_ DO_NEXT -- cgit v1.2.3