/* functions */ u3_noun u3qc_dor(u3_atom a, u3_atom b) { if ( c3y == u3r_sing(a, b) ) { return c3y; } else { if ( c3y == u3ud(a) ) { if ( c3y == u3ud(b) ) { return u3qa_lth(a, b); } else { return c3y; } } else { if ( c3y == u3ud(b) ) { return c3n; } else { if ( c3y == u3r_sing(u3h(a), u3h(b)) ) { return u3qc_dor(u3t(a), u3t(b)); } else return u3qc_dor(u3h(a), u3h(b)); } } } }
u3_noun u3wa_lth(u3_noun cor) { u3_noun a, b; if ( (c3n == u3r_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0)) || (c3n == u3ud(a)) || (c3n == u3ud(b)) ) { return u3m_bail(c3__exit); } else { return u3qa_lth(a, b); } }
u3_noun u3wf_fitz(u3_noun cor) { u3_noun yaz, wix; if ( (c3n == u3r_mean(cor, u3x_sam_2, &yaz, u3x_sam_3, &wix, 0)) || (c3n == u3ud(yaz)) || (c3n == u3ud(wix)) ) { return u3m_bail(c3__fail); } else { return u3qf_fitz(yaz, wix); } }
u3_noun u3wee_shar(u3_noun cor) { u3_noun pub, sek; if ( (c3n == u3r_mean(cor, u3x_sam_2, &pub, u3x_sam_3, &sek, 0)) || (c3n == u3ud(pub)) || (c3n == u3ud(sek)) ) { return u3m_bail(c3__exit); } else { return u3qee_shar(pub, sek); } }
u3_noun u3wc_met(u3_noun cor) { u3_noun a, b; if ( (c3n == u3r_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0)) || (c3n == u3ud(b)) || (c3n == u3ud(a) && 0 != b) ) { return u3m_bail(c3__exit); } else { return u3qc_met(a, b); } }
u3_noun u3wcp_ind(u3_noun cor) { u3_noun x, a, buf; if ( (c3n == u3r_mean(cor, u3x_sam, &a, u3x_con_sam, &x, 0)) || (c3n == u3du(x)) || (c3n == u3ud(buf = u3t(x))) || (c3n == u3ud(a)) ) { return u3m_bail(c3__exit); } else { return _po_find(buf, a); } }
u3_noun u3we_shas(u3_noun cor) { u3_noun sal, ruz; if ( (u3_none == (sal = u3r_at(u3x_sam_2, cor))) || (u3_none == (ruz = u3r_at(u3x_sam_3, cor))) || (c3n == u3ud(sal)) || (c3n == u3ud(ruz)) ) { return u3m_bail(c3__exit); } else { return u3qe_shas(sal, ruz); } }
/* u3_temp_io_poll(): update temp IO state. */ void u3_temp_io_poll(void) { u3_temp* teh_u = &u3_Host.teh_u; u3_noun wen = u3v_keep(u3nt(u3_blip, c3__temp, u3_nul)); if ( (u3_nul != wen) && (c3y == u3du(wen)) && (c3y == u3ud(u3t(wen))) ) { c3_d gap_d = u3_time_gap_ms(u3k(u3A->now), u3k(u3t(wen))); #if 0 fprintf(stderr, "gap_d %llu, plus %llu\r\n", gap_d, gap_d + (c3_d)teh_u->run_w); #endif gap_d += teh_u->run_w; if ( c3y == teh_u->alm ) { uv_timer_stop(&teh_u->tim_u); } else teh_u->alm = c3y; uv_timer_start(&teh_u->tim_u, _temp_time_cb, gap_d, 0); } else { if ( c3y == teh_u->alm ) { uv_timer_stop(&teh_u->tim_u); } teh_u->alm = c3n; } u3z(wen); }
u3_noun u3we_shal(u3_noun cor) { u3_noun a, b; if ( (u3_none == (a = u3r_at(u3x_sam_2, cor))) || (u3_none == (b = u3r_at(u3x_sam_3, cor))) || (c3n == u3ud(a)) || (c3n == u3a_is_cat(a)) || (c3n == u3ud(b)) ) { return u3m_bail(c3__exit); } else { return u3qe_shal(a, b); } }
/* functions */ u3_noun u3qb_murn(u3_noun a, u3_noun b) { if ( 0 == a ) { return a; } else if ( c3n == u3du(a) ) { return u3m_bail(c3__exit); } else { u3_noun one = u3n_slam_on(u3k(b), u3k(u3h(a))); u3_noun two = u3qb_murn(u3t(a), b); u3_noun nex; switch ( u3ud(one) ) { case c3y: u3z(one); return two; case c3n: nex = u3nc(u3k(u3t(one)), two); u3z(one); return nex; default: u3z(one); u3z(two); return u3_none; } } }
u3_noun u3wc_muk(u3_noun cor) { u3_noun seed, len, key; if ( (c3n == u3r_mean(cor, u3x_sam_2, &seed, u3x_sam_6, &len, u3x_sam_7, &key, 0)) || (c3n == u3ud(seed)) || (c3n == u3ud(len)) || (c3n == u3ud(key)) ) { return u3m_bail(c3__exit); } else { return u3qc_muk(seed, len, key); } }
u3_noun u3wc_rsh(u3_noun cor) { u3_noun a, b, c; if ( (c3n == u3r_mean(cor, u3x_sam_2, &a, u3x_sam_6, &b, u3x_sam_7, &c, 0)) || (c3n == u3ud(a)) || (c3n == u3ud(b)) || (c3n == u3ud(c)) ) { return u3m_bail(c3__exit); } else { return u3qc_rsh(a, b, c); } }
static u3_noun _play_rock(u3_noun odo, u3_noun bob) { if ( c3y == u3ud(bob) ) { return u3nq(c3__atom, u3k(odo), u3_nul, u3k(bob)); } else return u3nt(c3__cell, _play_rock(odo, u3h(bob)), _play_rock(odo, u3t(bob))); }
u3_noun u3wcp_tod(u3_noun cor) { u3_noun x, a, buf; if ( (c3n == u3r_mean(cor, u3x_sam, &a, u3x_con_sam, &x, 0)) || (c3n == u3du(x)) || (c3n == u3ud(buf = u3t(x))) || (c3n == u3ud(a)) || (a >= 256) ) { return u3m_bail(c3__exit); } else { c3_y byt_y[3]; u3r_bytes((a * 3), 3, byt_y, buf); return (byt_y[0] | (byt_y[1] << 8) | (byt_y[2] << 16)); } }
u3_noun u3wc_cut(u3_noun cor) { u3_noun a, b, c, d; if ( (c3n == u3r_mean(cor, u3x_sam_2, &a, u3x_sam_12, &b, u3x_sam_13, &c, u3x_sam_7, &d, 0)) || (c3n == u3ud(a)) || (c3n == u3ud(b)) || (c3n == u3ud(c)) || (c3n == u3ud(d)) ) { return u3m_bail(c3__exit); } else { return u3qc_cut(a, b, c, d); } }
u3_noun u3we_shay(u3_noun cor) { u3_noun a, b; // static int few = 0; // if(few == 0) printf("foo\r\n"); // few++; few %= 1000; if ( (u3_none == (a = u3r_at(u3x_sam_2, cor))) || (u3_none == (b = u3r_at(u3x_sam_3, cor))) || (c3n == u3ud(a)) || (c3n == u3a_is_cat(a)) || (c3n == u3ud(b)) ) { return u3m_bail(c3__exit); } else { return u3qe_shay(a, b); } }
/* logic */ static u3_noun _cqfu_conk(u3_noun van, u3_noun sut, u3_noun got) { if ( c3y == u3ud(got) ) { u3_noun ret = u3qf_face(u3k(got), sut); return ret; } else switch ( u3h(got) ) { default: return u3m_bail(c3__fail); case 0: { return u3k(sut); } case 1: { u3_noun c*k = _cqfu_conk(van, sut, u3t(u3t(got))); u3_noun nux = u3k(u3h(u3t(got))); u3_noun ret = u3qf_face(nux, c*k); u3z(nux); u3z(c*k); return ret; } case 2: { u3_noun vet = u3r_at(u3qfu_van_vet, van); u3_noun hed, tal, deh, lat, ret; if ( c3y == vet ) { u3_noun cel = u3nt(c3__cell, c3__noun, c3__noun); if ( c3n == u3qfu_nest(van, cel, c3y, sut) ) { return u3m_bail(c3__fail); } u3z(cel); } hed = u3qfu_peek(van, sut, c3__both, 2); tal = u3qfu_peek(van, sut, c3__both, 3); deh = _cqfu_conk(van, hed, u3h(u3t(got))); lat = _cqfu_conk(van, tal, u3t(u3t(got))); ret = u3qf_cell(deh, lat); u3z(lat); u3z(deh); u3z(tal); u3z(hed); return ret; } } }
u3_noun u3wc_cap(u3_noun cor) { u3_noun a; if ( (u3_none == (a = u3r_at(u3x_sam, cor))) || (c3n == u3ud(a)) ) { return u3m_bail(c3__exit); } else { return u3qc_cap(a); } }
u3_noun u3wb_slag(u3_noun cor) { u3_noun a, b; if ( (c3n == u3r_mean(cor, u3x_sam_2, &a, u3x_sam_3, &b, 0)) || (c3n == u3ud(a) && u3_nul != b) ) { return u3m_bail(c3__exit); } else { return u3qb_slag(a, b); } }
u3_noun u3we_slot(u3_noun cor) { u3_noun axe, vax; if ( (c3n == u3r_mean(cor, u3x_sam_2, &axe, u3x_sam_3, &vax, 0)) || (c3n == u3ud(axe)) || (c3n == u3du(vax)) ) { return u3m_bail(c3__fail); } else { return u3qf_slot(axe, vax); } }
/* boilerplate */ u3_noun u3wfu_fish(u3_noun cor) { u3_noun sut, axe, van; if ( (c3n == u3r_mean(cor, u3x_sam, &axe, u3x_con, &van, 0)) || (c3n == u3ud(axe)) || (u3_none == (sut = u3r_at(u3x_sam, van))) ) { return u3m_bail(c3__fail); } else { return _cqfu_fish(van, sut, axe); } }
/* boilerplate */ u3_noun u3wfu_nest(u3_noun cor) { u3_noun sut, tel, ref, van; if ( (c3n == u3r_mean(cor, u3x_sam_2, &tel, u3x_sam_3, &ref, u3x_con, &van, 0)) || (c3n == u3ud(tel)) || (tel > 1) || (u3_none == (sut = u3r_at(u3x_sam, van))) ) { return u3m_bail(c3__fail); } else { return _cqfu_nest(van, sut, tel, ref); } }
/* boilerplate */ u3_noun u3wfu_cull(u3_noun cor) { u3_noun sut, axe, pol, ref, van; if ( (c3n == u3r_mean(cor, u3x_sam_2, &pol, u3x_sam_6, &axe, u3x_sam_7, &ref, u3x_con, &van, 0)) || (c3n == u3ud(axe)) || (u3_none == (sut = u3r_at(u3x_sam, van))) ) { return u3m_bail(c3__fail); } else { return _cqfu_cull(van, sut, pol, axe, ref); } }
/* boilerplate */ u3_noun u3wfu_busk(u3_noun cor) { u3_noun sut, cog, hyp, van; if ( (c3n == u3r_mean(cor, u3x_sam_2, &cog, u3x_sam_3, &hyp, u3x_con, &van, 0)) || (c3n == u3ud(cog)) || (u3_none == (sut = u3r_at(u3x_sam, van))) ) { return u3m_bail(c3__fail); } else { return _cqfu_busk(van, sut, cog, hyp); } }
/* _n_mush_in(): see _n_mush(). */ static u3_noun _n_mush_in(u3_noun val) { if ( c3n == u3du(val) ) { return u3_nul; } else { u3_noun h_val = u3h(val); u3_noun ite; if ( c3n == u3ud(h_val) ) { ite = u3nc(c3__leaf, u3_nul); } else { ite = u3nc(c3__leaf, u3qe_trip(h_val)); } return u3nc(ite, _n_mush_in(u3t(val))); } }
/* _unix_delete_mount_point(): remove mount point from list and free */ static void _unix_delete_mount_point(u3_noun mon) { if ( c3n == u3ud(mon) ) { c3_assert(!"mount point must be an atom"); u3z(mon); return; } c3_c* nam_c = u3r_string(mon); u3_umon* mon_u; u3_umon* tem_u; mon_u = u3_Host.unx_u.mon_u; if ( !mon_u ) { uL(fprintf(uH, "mount point already gone: %s\r\n", nam_c)); goto _delete_mount_point_out; } if ( 0 == strcmp(nam_c, mon_u->nam_c) ) { u3_Host.unx_u.mon_u = mon_u->nex_u; _unix_free_mount_point(mon_u); goto _delete_mount_point_out; } for ( ; mon_u->nex_u && 0 != strcmp(nam_c, mon_u->nex_u->nam_c); mon_u = mon_u->nex_u ) { } if ( !mon_u->nex_u ) { uL(fprintf(uH, "mount point already gone: %s\r\n", nam_c)); goto _delete_mount_point_out; } tem_u = mon_u->nex_u; mon_u->nex_u = mon_u->nex_u->nex_u; _unix_free_mount_point(tem_u); _delete_mount_point_out: free(nam_c); u3z(mon); }
/** rake **/ u3_noun u3qfp_rake(u3_noun gen) { u3_noun p_gen, q_gen; if ( c3y == u3ud(gen) ) { return u3nc(u3k(gen), u3_nul); } else switch ( u3h(gen) ) { default: return u3m_error("rake-twig"); case u3_nul: return u3nc(u3k(gen), u3_nul); case c3__cnzy: { return u3nc(u3k(u3t(gen)), u3_nul); } case c3__cnzz: { return u3k(u3t(gen)); } case c3__cnts: { if ( c3n == u3r_cell(u3t(gen), &p_gen, &q_gen) ) { return u3m_bail(c3__fail); } else { if ( u3_nul != q_gen ) { return u3m_bail(c3__fail); } else { return u3k(p_gen); } } } case c3__zpcb: { if ( c3n == u3r_cell(u3t(gen), &p_gen, &q_gen) ) { return u3m_bail(c3__fail); } else return u3qfp_rake(q_gen); } } }
/* _unix_get_mount_point(): retrieve or create mount point */ static u3_umon* _unix_get_mount_point(u3_noun mon) { if ( c3n == u3ud(mon) ) { c3_assert(!"mount point must be an atom"); u3z(mon); return NULL; } c3_c* nam_c = u3r_string(mon); u3_umon* mon_u; for ( mon_u = u3_Host.unx_u.mon_u; mon_u && 0 != strcmp(nam_c, mon_u->nam_c); mon_u = mon_u->nex_u ) { } if ( !mon_u ) { mon_u = malloc(sizeof(u3_umon)); mon_u->nam_c = nam_c; mon_u->dir_u.dir = c3y; mon_u->dir_u.dry = c3n; mon_u->dir_u.pax_c = strdup(u3_Host.dir_c); mon_u->dir_u.par_u = NULL; mon_u->dir_u.nex_u = NULL; mon_u->dir_u.kid_u = NULL; mon_u->nex_u = u3_Host.unx_u.mon_u; u3_Host.unx_u.mon_u = mon_u; } else { free(nam_c); } u3z(mon); return mon_u; }
static u3_noun _play_sand(u3_noun odo, u3_noun bob) { if ( c3y == u3ud(bob) ) { if ( 'n' == odo ) { if ( (bob != 0) ) { return u3m_bail(c3__exit); } else { return u3nq(c3__atom, odo, u3_nul, bob); } } if ( 'f' == odo ) { if ( (bob > 1) ) { return u3m_bail(c3__exit); } else { return _play_bean(); } } return u3nt(c3__atom, u3k(odo), u3_nul); } else return u3nt(c3__cell, _play_rock(odo, u3h(bob)), _play_rock(odo, u3t(bob))); }
/* _n_hint(): process hint. */ static u3_noun _n_hint(u3_noun zep, u3_noun hod, u3_noun bus, u3_noun nex) { switch ( zep ) { default: { // u3m_p("weird zep", zep); u3a_lose(zep); u3a_lose(hod); return _n_nock_on(bus, nex); } case c3__hunk: case c3__lose: case c3__mean: case c3__spot: { u3_noun tac = u3nc(zep, hod); u3_noun pro; u3t_push(tac); #if 0 { static int low_i; if ( !low_i ) { low_i = 1; if ( 0 == (u3R->pro.nox_d % 65536ULL) ) { if ( c3__spot == zep ) { uL(fprintf(uH, "spot %d/%d : %d/%d\r\n", u3h(u3h(u3t(hod))), u3t(u3h(u3t(hod))), u3h(u3t(u3t(hod))), u3t(u3t(u3t(hod))))); } } low_i = 0; } } #endif pro = _n_nock_on(bus, nex); u3t_drop(); return pro; } case c3__live: { if ( c3y == u3ud(hod) ) { u3t_off(noc_o); u3t_heck(hod); u3t_on(noc_o); } else { u3z(hod); } return _n_nock_on(bus, nex); } case c3__slog: { if ( !(u3C.wag_w & u3o_quiet) ) { u3t_off(noc_o); u3t_slog(hod); u3t_on(noc_o); } return _n_nock_on(bus, nex); } case c3__germ: { u3_noun pro = _n_nock_on(bus, nex); if ( c3y == u3r_sing(pro, hod) ) { u3z(pro); return hod; } else { u3z(hod); return pro; } } case c3__fast: { u3_noun pro = _n_nock_on(bus, nex); u3t_off(noc_o); u3j_mine(hod, u3k(pro)); u3t_on(noc_o); return pro; } case c3__memo: { u3z(hod); #if 0 return _n_nock_on(bus, nex); #else { u3_noun pro = u3z_find_2(c3__nock, bus, nex); if ( pro != u3_none ) { u3z(bus); u3z(nex); return pro; } pro = _n_nock_on(u3k(bus), u3k(nex)); if ( &(u3H->rod_u) != u3R ) { u3z_save_2(c3__nock, bus, nex, pro); } u3z(bus); u3z(nex); return pro; } #endif } case c3__sole: { u3z(hod); { u3_noun pro = _n_nock_on(bus, nex); // return u3z_uniq(pro); return pro; } } } }