/ PROGRAM lfield ;oout: .blkw 10. comma=', space=40 tab=11 ;extern oout ; AUTO n ;function main[argc,argv] ;n := lfield["a b c ddd eee,fff,",oout] ;ret AUTO n FUNCTION lfield[in,out] clr n(r5) mov in(r5),r4 mov out(r5),r3 DO FOREVER call skip IF r0 = #0 RET n FI call field call skipt inc n(r5) OD skip: DO FOREVER call getc IF r0 = #0 rts pc FI BREAK IF r0 NE #space AND r0 NE #tab OD rts pc getc: movb (r4)+,r0 IF EQ dec r4 FI rts pc field: call fld rts pc fld: dec r4 mov r4,(r3)+ DO FOREVER call getc SELECT CASE r0 of CASE #comma clrb -1(r4) rts pc CASE #space OR CASE #tab clrb -1(r4) rts pc CASE #0 rts pc ESAC OD skipt: call skip SELECT case r0 of CASE #comma OR CASE #0 BREAK DEFAULT dec r4 ESAC rts pc .end