From 2f83a0bea9da444e3d70569eba3d6847ca02be03 Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Fri, 21 Sep 2018 21:59:17 +0200 Subject: ... --- forth/forth/avr/asm-examples.fs | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 forth/forth/avr/asm-examples.fs (limited to 'forth/forth/avr/asm-examples.fs') diff --git a/forth/forth/avr/asm-examples.fs b/forth/forth/avr/asm-examples.fs new file mode 100644 index 0000000..5765ee2 --- /dev/null +++ b/forth/forth/avr/asm-examples.fs @@ -0,0 +1,36 @@ +\ needs asm.txt + +-asmexamples +marker -asmexamples + +\ Top of stack is always cached in R24:R25 + +\ duplicate top of stack +\ identical to DUP on FlashForth +: _dup ( n -- n n ) + [ R25 -Y st, ] + [ R24 -Y st, ] +; inlined + +\ drop top of stack +\ identical to DROP on FlashForth +: _drop ( n -- ) + [ R24 Y+ ld, ] + [ R25 Y+ ld, ] +; inlined + +\ Load constant $1234 to top of stack +: a-number ( -- 1234 ) + dup \ Make space for new TOS value + [ R24 $34 ldi, ] + [ R25 $12 ldi, ] +; + +\ Pop the top of stack to registers R18:R19 +\ R18 and R19 are free to use unless DO..LOOP is used +: tos-to-r18-r19 ( n -- ) + [ R18 R24 movw, ] \ Move TOS to R18:R19 + drop \ load R24:R25 with new TOS +; + + -- cgit v1.2.3