Browse Source

Add 'R'

master
cancel 6 years ago
parent
commit
0ee5dd21d0
  1. 30
      sim.c

30
sim.c

@ -291,6 +291,7 @@ Usz usz_clamp(Usz val, Usz min, Usz max) {
_('M', 'm', modulo) \
_('O', 'o', offset) \
_('P', 'p', push) \
_('R', 'r', random) \
_('T', 't', track) \
_('U', 'u', uturn) \
_('V', 'v', beam) \
@ -551,6 +552,35 @@ BEGIN_DUAL_PHASE_1(push)
POKE(1, write_val_x[0], PEEK(0, 1));
END_PHASE
BEGIN_DUAL_PHASE_0(random)
REALIZE_DUAL;
BEGIN_DUAL_PORTS
PORT(0, 1, IN);
PORT(0, 2, IN);
PORT(1, 0, OUT);
END_PORTS
END_PHASE
BEGIN_DUAL_PHASE_1(random)
REALIZE_DUAL;
STOP_IF_DUAL_INACTIVE;
Usz a = INDEX(PEEK(0, 1));
Usz b = INDEX(PEEK(0, 2));
// we should ask if this is an ok behavior as defined in the existing js.
Usz min, max;
if (a == b) {
POKE(1, 0, GLYPH(a));
return;
} else if (b > a) {
min = a;
max = b;
} else {
max = a;
min = b;
}
Usz val = (y * 5 + x * 3) * Tick_number % (max - min) + min;
POKE(1, 0, GLYPH(val));
END_PHASE
BEGIN_DUAL_PHASE_0(track)
PSEUDO_DUAL;
Isz read_val_x = 1;

Loading…
Cancel
Save