mirror of
https://github.com/urbit/shrub.git
synced 2024-12-22 10:21:31 +03:00
kick and tick
This commit is contained in:
parent
0e3180aea0
commit
9c7f855eee
39
noun/nock.c
39
noun/nock.c
@ -892,6 +892,7 @@ _n_burn(c3_y* pog)
|
|||||||
&&do_nock, &&do_noct,
|
&&do_nock, &&do_noct,
|
||||||
&&do_deep, &&do_peep,
|
&&do_deep, &&do_peep,
|
||||||
&&do_bump, &&do_same,
|
&&do_bump, &&do_same,
|
||||||
|
&&do_kick, &&do_tick,
|
||||||
};
|
};
|
||||||
#define BURN() goto *lab[pog[ip_s++]]
|
#define BURN() goto *lab[pog[ip_s++]]
|
||||||
|
|
||||||
@ -985,7 +986,7 @@ _n_burn(c3_y* pog)
|
|||||||
do_quot:
|
do_quot:
|
||||||
_n_toss();
|
_n_toss();
|
||||||
do_quip:
|
do_quip:
|
||||||
_n_push(_n_rean(pog, &ip_s));
|
_n_push(u3k(_n_rean(pog, &ip_s)));
|
||||||
BURN();
|
BURN();
|
||||||
|
|
||||||
do_nock:
|
do_nock:
|
||||||
@ -1025,5 +1026,41 @@ _n_burn(c3_y* pog)
|
|||||||
u3z(x);
|
u3z(x);
|
||||||
u3z(o);
|
u3z(o);
|
||||||
BURN();
|
BURN();
|
||||||
|
|
||||||
|
do_kick:
|
||||||
|
x = _n_rean(pog, &ip_s);
|
||||||
|
top = _n_peek();
|
||||||
|
o = *top;
|
||||||
|
u3t_off(noc_o);
|
||||||
|
*top = u3j_kick(o, x);
|
||||||
|
u3t_on(noc_o);
|
||||||
|
if ( u3_none == *top ) {
|
||||||
|
u3_noun fol = u3r_at(x, o);
|
||||||
|
if ( u3_none == fol ) {
|
||||||
|
return u3m_bail(c3__exit);
|
||||||
|
}
|
||||||
|
gop = _n_find(fol);
|
||||||
|
_n_push(o);
|
||||||
|
*top = _n_burn(gop);
|
||||||
|
}
|
||||||
|
BURN();
|
||||||
|
|
||||||
|
do_tick:
|
||||||
|
x = _n_rean(pog, &ip_s);
|
||||||
|
top = _n_peek();
|
||||||
|
o = *top;
|
||||||
|
u3t_off(noc_o);
|
||||||
|
*top = u3j_kick(o, x);
|
||||||
|
u3t_on(noc_o);
|
||||||
|
if ( u3_none == *top ) {
|
||||||
|
u3_noun fol = u3r_at(x, o);
|
||||||
|
if ( u3_none == fol ) {
|
||||||
|
return u3m_bail(c3__exit);
|
||||||
|
}
|
||||||
|
*top = o;
|
||||||
|
pog = _n_find(fol);
|
||||||
|
ip_s = 0;
|
||||||
|
}
|
||||||
|
BURN();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user