Ben, > I liked Forth when it was still threaded. You got the DOES> feature. > Do you still have that with the FORTH chips?
All Forth implementations are threaded, but there are several kinds: direct, indirect, token and subroutine. Initially indirect threading was the most popular implementation choice but all Forth chips I am familiar with use subroutine threading instead. Subroutine threading has the highest performance, but it does take up more space (each word uses a CALL opcode as well as the word's address) and it kills CREATE DOES>, which is what you were asking about. There are two solutions to this problem: in Color Forth you can type a word in either green or yellow depending on whether you want its action to happen at runtime or at compile time while in Machine Forth you can define a word in either the normal vocabulary or the macro vocabulary to get a similar effect. The advantage of compile time words (which are different from playing with the COMPILE flag in threaded Forths) is that you can inline the code that would normally be in the DOES> portion of the word, which saves you a call and a return. For a normal processor that might take up more space, but for Forth chips this will almost always be a single instruction which is much smaller than a call so you actually save memory instead. -- Jecel https://en.wikipedia.org/wiki/Threaded_code#Threading_models