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/rec-find.asm | 85 +++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 amforth-6.5/common/words/rec-find.asm (limited to 'amforth-6.5/common/words/rec-find.asm') diff --git a/amforth-6.5/common/words/rec-find.asm b/amforth-6.5/common/words/rec-find.asm new file mode 100644 index 0000000..01a2aa1 --- /dev/null +++ b/amforth-6.5/common/words/rec-find.asm @@ -0,0 +1,85 @@ +; ( addr len -- xt flags dt:xt | dt:null ) +; Interpreter +; search for a word +.if cpu_msp430==1 + HEADER(XT_REC_FIND,8,"rec:find",DOCOLON) +.endif +.if cpu_avr8==1 +VE_REC_FIND: + .dw $ff08 + .db "rec:find" + .dw VE_HEAD + .set VE_HEAD = VE_REC_FIND +XT_REC_FIND: + .dw DO_COLON +PFA_REC_FIND: +.endif + .DW XT_FINDXT + .dw XT_DUP + .dw XT_ZEROEQUAL + .dw XT_DOCONDBRANCH + DEST(PFA_REC_WORD_FOUND) + .dw XT_DROP + .dw XT_DT_NULL + .dw XT_EXIT +PFA_REC_WORD_FOUND: + .dw XT_DT_XT + + .dw XT_EXIT + +; ( -- addr ) +; Interpreter +; actions to handle execution tokens and their flags +.if cpu_msp430==1 + HEADER(XT_DT_XT,6,"dt:xt",DOROM) +.endif + +.if cpu_avr8==1 +VE_DT_XT: + .dw $ff05 + .db "dt:xt",0 + .dw VE_HEAD + .set VE_HEAD = VE_DT_XT +XT_DT_XT: + .dw PFA_DOCONSTANT +PFA_DT_XT: +.endif + .dw XT_R_WORD_INTERPRET + .dw XT_R_WORD_COMPILE + .dw XT_2LITERAL + +; ( XT flags -- ) +; Interpreter +; interpret method for WORD recognizer +.if cpu_msp430==1 + HEADLESS(XT_R_WORD_INTERPRET,DOCOLON) +.endif + +.if cpu_avr8==1 +XT_R_WORD_INTERPRET: + .dw DO_COLON +PFA_R_WORD_INTERPRET: +.endif + .dw XT_DROP ; the flags are in the way + .dw XT_EXECUTE + .dw XT_EXIT + +; ( XT flags -- ) +; Interpreter +; Compile method for WORD recognizer +.if cpu_msp430==1 + HEADLESS(XT_R_WORD_COMPILE,DOCOLON) +.endif +.if cpu_avr8==1 +XT_R_WORD_COMPILE: + .dw DO_COLON +PFA_R_WORD_COMPILE: +.endif + .dw XT_ZEROLESS + .dw XT_DOCONDBRANCH + DEST(PFA_R_WORD_COMPILE1) + .dw XT_COMMA + .dw XT_EXIT +PFA_R_WORD_COMPILE1: + .dw XT_EXECUTE + .dw XT_EXIT -- cgit v1.2.3