1 \ Display dictionary contents
4 DUP @ ( get the flags/length byte )
5 F_LENMASK AND ( mask out the flags - just want the length )
10 SWAP 1+ ( addr len -- len addr+1 )
11 DUP @ ( len addr -- len addr char | get the next character)
12 DUP 32 >= OVER 127 <= AND IF
13 EMIT ( len addr char -- len addr | and print it)
19 SWAP 1- ( len addr -- addr len-1 | subtract one from length )
25 1+ ( skip over the link pointer )
26 @ ( get the flags/length byte )
27 F_HIDDEN AND ( mask the F_HIDDEN flag and return it (as a truth value) )
30 1+ ( skip over the link pointer )
31 @ ( get the flags/length byte )
32 F_IMMED AND ( mask the F_IMMED flag and return it (as a truth value) )
37 LATEST @ ( start at LATEST dictionary entry )
39 ?DUP ( while link pointer is not null )
41 DUP ?HIDDEN NOT IF ( ignore hidden words )
42 DUP 1+ .NAME ( but if not hidden, print the word )
45 @ ( dereference the link pointer - go to previous word )