diff options
| author | 2023-03-23 20:41:52 +0000 | |
|---|---|---|
| committer | 2023-03-23 20:41:52 +0000 | |
| commit | c18db4be57214903f2b1f6d5a7943eb40f644024 (patch) | |
| tree | d9a89e2f18af23f137a79f46ee68c357c3f679a8 /creole.c | |
| parent | modify reader (diff) | |
add waveform disarm
Diffstat (limited to 'creole.c')
| -rw-r--r-- | creole.c | 14 |
1 files changed, 10 insertions, 4 deletions
@@ -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)); |
