words/dodo.asm

Jump to Vocabulary

; ( limit counter -- )
; R( -- limit counter )
; runtime of do
;VE_DODO:
;    .db 4, "(do)", 0
;    .dw VE_HEAD
;    .set VE_HEAD = VE_DODO
XT_DODO:
    .dw PFA_DODO
PFA_DODO:
    ; put the content of the next flash cell on return stack
    ; it is the address of the instruction _after_ the (+)loop
    movw zl, xl
    lsl  zl
    rol  zh
    lpm  temp0, Z+
    lpm  temp1, Z+
    adiw xl, 1    ; adjust to NEXT+1 = jump over <mark (for leave)

    ld temp2, Y+
    ld temp3, Y+
PFA_DODO1:
    push temp1
    push temp0
    push temp3
    push temp2
    push tosh
    push tosl
    loadtos
    rjmp DO_NEXT

Jump to Vocabulary