| end-struct ss% \ stack-state |
end-struct ss% \ stack-state |
| |
|
| struct% |
struct% |
| |
cell% field state-enabled |
| cell% field state-number |
cell% field state-number |
| cell% max-stacks * field state-sss |
cell% max-stacks * field state-sss |
| end-struct state% |
end-struct state% |
| : state ( "name" -- ) |
: state ( "name" -- ) |
| \ create a state initialized with default-sss |
\ create a state initialized with default-sss |
| create state% %allot { s } |
create state% %allot { s } |
| |
s state-enabled on |
| next-state-number @ s state-number ! 1 next-state-number +! |
next-state-number @ s state-number ! 1 next-state-number +! |
| max-stacks 0 ?do |
max-stacks 0 ?do |
| default-ss s state-sss i th ! |
default-ss s state-sss i th ! |
| loop ; |
loop ; |
| |
|
| |
: state-disable ( state -- ) |
| |
state-enabled off ; |
| |
|
| |
: state-enabled? ( state -- f ) |
| |
state-enabled @ ; |
| |
|
| : .state ( state -- ) |
: .state ( state -- ) |
| 0 >body - >name .name ; |
0 >body - >name .name ; |
| |
|
| |
|
| : state-prim1 { in-state out-state prim -- } |
: state-prim1 { in-state out-state prim -- } |
| in-state out-state state-default dup d= ?EXIT |
in-state out-state state-default dup d= ?EXIT |
| |
in-state state-enabled? out-state state-enabled? and 0= ?EXIT |
| in-state to state-in |
in-state to state-in |
| out-state to state-out |
out-state to state-out |
| prim reprocess-simple ; |
prim reprocess-simple ; |