;›; smaller slicker hand-coded line-parsing routine›;›; assemble this with global.m65›;›; _parseline(line, argv) char * line; int * argv;›;›  .globl  __parseli›__parseli:›  ldy  #0›  sty  tmp1    ; use tmp1 as counter›  jsr  popax    ; get argv ptr›  sta  ptr2    ; save into ptr2›  stx  ptr2+1›  jsr  popax    ; get line pointer›  sta  ptr1    ; save in ptr1›  stx  ptr1+1›  cpx  #0›  bne  parse1    ; test line pointer for zero-ness...›  lda  ptr1›  beq  parse8›parse1:        ; skip whitespace›  ldy  #0    ; get a char›  lda  (ptr1),y›  beq  parse8    ; done! finish up and leave›  cmp  #$9B    ; EOL?›  beq  parse8    ; yup, same as nul›  jsr  white_p›  bcc  parse2    ; not white›parse1w:›  inc  ptr1    ; bump string ptr›  bne  parse1›  inc  ptr1+1›  bne  parse1››parse2:        ; remember the ptr, bump arg count›  ldy  #0›  lda  ptr1›  sta  (ptr2),y  ; store ptr lo›  iny›  lda  ptr1+1›  sta  (ptr2),y  ; ... ptr hi›  inc  tmp1    ; and bump arg count›  clc›  lda  ptr2›  adc  #2    ; bump argv ptr›  sta  ptr2›  bcc  parse3›  inc  ptr2+1››parse3:        ; find next whitespace›  ldy  #0›  lda  (ptr1),y  ; get a char›  beq  parse8    ; nul, we're done›  jsr  white_p    ; white?›  bcs  parse4    ; yes, found end of this arg›  inc  ptr1›  bne  parse3›  inc  ptr1+1›  bne  parse3›parse4:›  pha      ; save the char for a sec›  lda  #0›  sta  (ptr1),y  ; zap in eos›  pla      ; get orig char back›  beq  parse8    ; done!›  cmp  #$9B›  bne  parse1w    ; nope, go bump ptr and keep scanning››parse8:        ; load up arg count and return›  ldx  #0›  lda  tmp1›  rts››;›; return cond codes carry set if white, clear if non-white›;›white_p:›  cmp  #$7F    ; > 7F?›  bcs  w_ret1    ; yes, that's white›  cmp  #$21    ; <= space?›  bcs  w_ret0    ; no, it's data.›w_ret1:›  sec›  rts›w_ret0:›  clc›  rts›