Basically looks OK to my untrained eyes, except I wonder if there are sign extension functions in Forth.
In OF, there are <w@ and <l@ , which do loads of signed 16-bit and 32-bit values. For other sign extensions: here, have some:
: >s16 ffff and 8000 xor 8000 - ; : >s32 ffffffff and 80000000 xor 80000000 - ;
Segher