words/words.asm

Jump to Vocabulary

; ( -- ) Tools
; R( -- )
; emits a list of all (visible) words in the dictionary
VE_WORDS:
    .db $05, "words"
    .dw VE_HEAD
    .set VE_HEAD = VE_WORDS
XT_WORDS:
    .dw DO_COLON
PFA_WORDS:
    .dw XT_HEAD
    .dw XT_EFETCH
PFA_WORDS1:
    .dw XT_DUP           ; ( -- addr addr )
    .dw XT_NOTEQUALZERO  ; ( -- addr f )
    .dw XT_DOCONDBRANCH  ; ( -- addr ) is nfa = counted string
    .dw PFA_WORDS2       ;

    .dw XT_ICOUNT   ; ( -- adr n )
    .dw XT_DOLITERAL
    .dw $1F
    .dw XT_AND      ; mask immediate bit
    .dw XT_OVER
    .dw XT_OVER
    .dw XT_ITYPE    ; ( -- adr n  )

    .dw XT_2SLASH   ; ( -- adr k )
    .dw XT_1PLUS    ; ( -- adr k+1 )
    .dw XT_PLUS     ; ( -- adrk+1 )

    .dw XT_SPACE         ; emit space
    .dw XT_IFETCH        ; ( -- addr )
    .dw XT_DOBRANCH      ; ( -- addr )
    .dw PFA_WORDS1       ; ( -- addr )

PFA_WORDS2:
    .dw XT_DROP          ; ( addr --  )
    .dw XT_EXIT

Jump to Vocabulary