aboutsummaryrefslogtreecommitdiffstats
path: root/creole.c
diff options
context:
space:
mode:
authorGravatar Peter McGoron 2023-03-23 20:41:52 +0000
committerGravatar Peter McGoron 2023-03-23 20:41:52 +0000
commitc18db4be57214903f2b1f6d5a7943eb40f644024 (patch)
treed9a89e2f18af23f137a79f46ee68c357c3f679a8 /creole.c
parentmodify reader (diff)
add waveform disarm
Diffstat (limited to 'creole.c')
-rw-r--r--creole.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/creole.c b/creole.c
index 0d5c27d..d5994cb 100644
--- a/creole.c
+++ b/creole.c
@@ -62,9 +62,10 @@ static const struct {
defop(CLOOP_READ, 2, TYPE_VAL, TYPE_REG, TYPE_NONE),
defop(CLOOP_WRITE, 2, TYPE_VAL, TYPE_VAL, TYPE_NONE),
defop(WF_LOAD, 2, TYPE_VAL, TYPE_IMM, TYPE_NONE),
- defop(WF_EXEC, 3, TYPE_VAL, TYPE_VAL, TYPE_NONE),
+ defop(WF_EXEC, 3, TYPE_VAL, TYPE_VAL, TYPE_VAL),
defop(SENDVAL, 1, TYPE_VAL, TYPE_NONE, TYPE_NONE),
- defop(SENDDAT, 1, TYPE_IMM, TYPE_NONE, TYPE_NONE)
+ defop(SENDDAT, 1, TYPE_IMM, TYPE_NONE, TYPE_NONE),
+ defop(WF_DISARM, 1, TYPE_VAL, TYPE_NONE, TYPE_NONE)
};
/*************************************************************************
@@ -678,10 +679,15 @@ enum creole_run_ret creole_step(struct creole_env *env, creole_word *sc)
check(read_val(env, &ins, 1, &a1));
upsilon_load_waveform(env, a0, a1);
break;
- case CREOLE_WF_EXEC:
+ case CREOLE_WF_ARM:
check(read_val(env, &ins, 0, &a0));
check(read_val(env, &ins, 1, &a1));
- upsilon_exec_waveform(a0, a1);
+ check(read_val(env, &ins, 2, &a2));
+ upsilon_arm_waveform(a0, a1, a2);
+ break;
+ case CREOLE_WF_DISARM:
+ check(read_val(env, &ins, 0, &a0));
+ upsilon_arm_waveform(a0);
break;
case CREOLE_SENDVAL:
check(read_val(env, &ins, 0, &a0));