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/cmove_g.asm | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 amforth-6.5/avr8/words/cmove_g.asm (limited to 'amforth-6.5/avr8/words/cmove_g.asm') diff --git a/amforth-6.5/avr8/words/cmove_g.asm b/amforth-6.5/avr8/words/cmove_g.asm new file mode 100644 index 0000000..3bcbb4e --- /dev/null +++ b/amforth-6.5/avr8/words/cmove_g.asm @@ -0,0 +1,34 @@ +; (addr-from addr-to n -- ) +; Memory +; copy data in RAM from higher to lower addresses. +VE_CMOVE_G: + .dw $ff06 + .db "cmove>" + .dw VE_HEAD + .set VE_HEAD = VE_CMOVE_G +XT_CMOVE_G: + .dw PFA_CMOVE_G +PFA_CMOVE_G: + push xh + push xl + ld zl, Y+ + ld zh, Y+ ; addr-to + ld xl, Y+ + ld xh, Y+ ; addr-from + mov temp0, tosh + or temp0, tosl + brbs 1, PFA_CMOVE_G1 + add zl, tosl + adc zh, tosh + add xl, tosl + adc xh, tosh +PFA_CMOVE_G2: + ld temp1, -X + st -Z, temp1 + sbiw tosl, 1 + brbc 1, PFA_CMOVE_G2 +PFA_CMOVE_G1: + pop xl + pop xh + loadtos + jmp_ DO_NEXT -- cgit v1.2.3