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/doplusloop.asm | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 amforth-6.5/avr8/words/doplusloop.asm (limited to 'amforth-6.5/avr8/words/doplusloop.asm') diff --git a/amforth-6.5/avr8/words/doplusloop.asm b/amforth-6.5/avr8/words/doplusloop.asm new file mode 100644 index 0000000..c34cae5 --- /dev/null +++ b/amforth-6.5/avr8/words/doplusloop.asm @@ -0,0 +1,28 @@ +; ( n1 -- ) (R: loop-sys1 -- loop-sys2| ) +; System +; runtime of +loop +;VE_DOPLUSLOOP: +; .dw $ff07 +; .db "(+loop)" +; .dw VE_HEAD +; .set VE_HEAD = VE_DOPLUSLOOP +XT_DOPLUSLOOP: + .dw PFA_DOPLUSLOOP +PFA_DOPLUSLOOP: + pop zl + pop zh + add zl, tosl + adc zh, tosh + loadtos + brvs PFA_DOPLUSLOOP_LEAVE + ; next cycle +PFA_DOPLUSLOOP_NEXT: + ; next iteration + push zh + push zl + rjmp PFA_DOBRANCH ; read next cell from dictionary and jump to its destination +PFA_DOPLUSLOOP_LEAVE: + pop temp0 + pop temp1 ; remove limit + adiw xl, 1 ; skip branch-back address + jmp_ DO_NEXT -- cgit v1.2.3