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/common/words/get-stack.asm | 46 ++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 amforth-6.5/common/words/get-stack.asm (limited to 'amforth-6.5/common/words/get-stack.asm') diff --git a/amforth-6.5/common/words/get-stack.asm b/amforth-6.5/common/words/get-stack.asm new file mode 100644 index 0000000..3127d76 --- /dev/null +++ b/amforth-6.5/common/words/get-stack.asm @@ -0,0 +1,46 @@ +; ( e-addr -- item-n .. item-1 n) +; Tools +; Get a stack from EEPROM + +.if cpu_msp430==1 + HEADER(XT_GET_STACK,9,"get-stack",DOCOLON) +.endif + +.if cpu_avr8==1 +VE_GET_STACK: + .dw $ff09 + .db "get-stack",0 + .dw VE_HEAD + .set VE_HEAD = VE_GET_STACK +XT_GET_STACK: + .dw DO_COLON +.endif + .dw XT_DUP + .dw XT_CELLPLUS + .dw XT_SWAP + .dw XT_FETCHE + .dw XT_DUP + .dw XT_TO_R + .dw XT_ZERO + .dw XT_SWAP ; go from bigger to smaller addresses + .dw XT_QDOCHECK + .dw XT_DOCONDBRANCH + DEST(PFA_N_FETCH_E2) + .dw XT_DODO +PFA_N_FETCH_E1: + ; ( ee-addr ) + .dw XT_I + .dw XT_1MINUS + .dw XT_CELLS ; ( -- ee-addr i*2 ) + .dw XT_OVER ; ( -- ee-addr i*2 ee-addr ) + .dw XT_PLUS ; ( -- ee-addr ee-addr+i + .dw XT_FETCHE ;( -- ee-addr item_i ) + .dw XT_SWAP ;( -- item_i ee-addr ) + .dw XT_TRUE ; shortcut for -1 + .dw XT_DOPLUSLOOP + DEST(PFA_N_FETCH_E1) +PFA_N_FETCH_E2: + .dw XT_2DROP + .dw XT_R_FROM + .dw XT_EXIT + -- cgit v1.2.3