From b59638c1041af6ecc4f9397df72f0c8df8578c81 Mon Sep 17 00:00:00 2001 From: cancel Date: Sat, 1 Dec 2018 18:02:59 +0900 Subject: [PATCH] Add 'C' --- sim.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/sim.c b/sim.c index 09012b0..c35a73c 100644 --- a/sim.c +++ b/sim.c @@ -298,6 +298,7 @@ Usz usz_clamp(Usz val, Usz min, Usz max) { _('Z', 'z', southeast) \ _('A', 'a', add) \ _('B', 'b', banger) \ + _('C', 'c', clock) \ _('D', 'd', delay) \ _('F', 'f', if) \ _('G', 'g', generator) \ @@ -391,6 +392,26 @@ BEGIN_DUAL_PHASE_1(banger) POKE(1, 0, result); END_PHASE +BEGIN_DUAL_PHASE_0(clock) + REALIZE_DUAL; + BEGIN_DUAL_PORTS + // This is set as haste in js, but not used during .haste(). Mistake? + // Replicating here anyway. + PORT(0, -1, IN | HASTE); + PORT(0, 1, IN); + PORT(1, 0, OUT); + END_PORTS +END_PHASE +BEGIN_DUAL_PHASE_1(clock) + REALIZE_DUAL; + STOP_IF_DUAL_INACTIVE; + Usz mod_num = index_of(PEEK(0, 1)); + if (mod_num == 0) mod_num = 10; + Usz rate = usz_clamp(index_of(PEEK(0, -1)), 1, 16); + Glyph g = glyph_of(Tick_number / rate % mod_num); + POKE(1, 0, g); +END_PHASE + BEGIN_DUAL_PHASE_0(delay) PSEUDO_DUAL; bool out_is_nonlocking = false;