: n-mask ( n -- mask ) 1 swap lshift ;
: n..0-mask ( n -- mask ) 1 + n-mask 1 - ;
: range-mask ( hi lo -- mask ) 1 - n..0-mask swap n..0-mask xor ;

: @bits ( mask addr -- bits ) @ and ;
: !bits ( value mask addr -- ) dup >r @ over invert and -rot and or r> ! ;
