\* Some words that should be added to the system: a word for dynamically constructing names that start with a given string and end with a given number; a word for doing sign-extension on n-bit data; and some words for downloading patterns to subcells. *\ \* "name-n" returns a string that combines a string and a number. *\ create asm-name 80 allot create asm-num 10 allot : name-n (s n name.pstr -- pstr ) asm-name "copy (.) asm-num place asm-num asm-name "cat asm-name ; \* "wide" extends the high bit of an n-bit signed number *\ : wide (s value width -- signed-value ) 1 swap 1- << over and negate or ; \* "file>subcell-field" loads a file into a given field of a range of subcells. "file>subcells" loads data into all bits of a range of subcells. *\ : file>subcell-field (s filename.pstr 1st.subcell #subcells -- ) rot gzip>cam init-pipe cam>gzip init-pipe cstr 0 swap gzip2cam gzip>cam cam>gzip ['] stdio-proc-child fork-forth drop stdio-proc-parent layer-mask @ -rot bounds ?do i activate-subcell dup layer-mask ! gzip>cam pipe-read-fd fd>field loop drop 0 activate-subcell cam>gzip pipe-write-fd sys_close gzip>cam pipe-read-fd sys_close wait-return _wait drop ; : file>subcells (s pattern.pstr 1st #sub -- ) cell field file>subcell-field ;