aboutsummaryrefslogtreecommitdiff
path: root/amforth-6.5/common/words/parse.asm
blob: 0e51c05fe84a7df150cf93b4ebb884e7a6924b58 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
; ( char "ccc<char>" -- 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