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/parse.asm | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 amforth-6.5/common/words/parse.asm (limited to 'amforth-6.5/common/words/parse.asm') diff --git a/amforth-6.5/common/words/parse.asm b/amforth-6.5/common/words/parse.asm new file mode 100644 index 0000000..0e51c05 --- /dev/null +++ b/amforth-6.5/common/words/parse.asm @@ -0,0 +1,33 @@ +; ( char "ccc" -- c-addr u ) +; String +; in input buffer parse ccc delimited string by the delimiter char. + +.if cpu_msp430==1 + HEADER(XT_PARSE,5,"parse",DOCOLON) +.endif + +.if cpu_avr8==1 +VE_PARSE: + .dw $ff05 + .db "parse",0 + .dw VE_HEAD + .set VE_HEAD = VE_PARSE +XT_PARSE: + .dw DO_COLON +PFA_PARSE: +.endif + .dw XT_TO_R ; ( -- ) + .dw XT_SOURCE ; ( -- addr len) + .dw XT_TO_IN ; ( -- addr len >in) + .dw XT_FETCH + .dw XT_SLASHSTRING ; ( -- addr' len' ) + + .dw XT_R_FROM ; ( -- addr' len' c) + .dw XT_CSCAN ; ( -- addr' len'') + .dw XT_DUP ; ( -- addr' len'' len'') + .dw XT_1PLUS + .dw XT_TO_IN ; ( -- addr' len'' len'' >in) + .dw XT_PLUSSTORE ; ( -- addr' len') + .dw XT_ONE + .dw XT_SLASHSTRING + .dw XT_EXIT -- cgit v1.2.3