u2_noun // transfer j2_mb(Pt6, fitz)(u2_wire wir_r, u2_noun cor) // retain { u2_noun yaz, wix; if ( (u2_no == u2_mean(cor, u2_cv_sam_2, &yaz, u2_cv_sam_3, &wix, 0)) || (u2_no == u2ud(yaz)) || (u2_no == u2ud(wix)) ) { return u2_bl_bail(wir_r, c3__fail); } else { return j2_mby(Pt6, fitz)(wir_r, yaz, wix); } }
/* u2_unix_io_poll(): update unix IO state. */ void u2_unix_io_poll(void) { u2_unix* unx_u = &u2_Host.unx_u; u2_noun wen = u2_reck_keep(u2A, u2nt(c3__gold, c3__clay, u2_nul)); if ( (u2_nul != wen) && (u2_yes == u2du(wen)) && (u2_yes == u2ud(u2t(wen))) ) { c3_d gap_d = u2_time_gap_ms(u2k(u2A->now), u2k(u2t(wen))); if ( u2_yes == unx_u->alm ) { uv_timer_stop(&unx_u->tim_u); } else unx_u->alm = u2_yes; uv_timer_start(&unx_u->tim_u, _unix_time_cb, gap_d, 0); } else { if ( u2_yes == unx_u->alm ) { uv_timer_stop(&unx_u->tim_u); } unx_u->alm = u2_no; } u2z(wen); }
/* u2_unix_io_poll(): update unix IO state. */ void u2_unix_io_poll(void) { u2_unix* unx_u = &u2_Host.unx_u; u2_noun wen = u2_reck_keep(u2A, u2nt(u2_blip, c3__clay, u2_nul)); if ( (u2_nul != wen) && (u2_yes == u2du(wen)) && (u2_yes == u2ud(u2t(wen))) ) { c3_d gap_d = u2_time_gap_ms(u2k(u2A->now), u2k(u2t(wen))); if ( u2_yes == unx_u->alm ) { uv_timer_stop(&unx_u->tim_u); } else unx_u->alm = u2_yes; if ( gap_d < 1000 ) { gap_d = 1000; } // band-aid on an unknown clay timer bug uv_timer_start(&unx_u->tim_u, _unix_time_cb, gap_d, 0); } else { if ( u2_yes == unx_u->alm ) { uv_timer_stop(&unx_u->tim_u); } unx_u->alm = u2_no; } u2z(wen); }
/* u2_batz_io_poll(): update batz IO state. */ void u2_batz_io_poll(void) { u2_batz* beh_u = &u2_Host.beh_u; u2_noun wen = u2_reck_keep(u2A, u2nt(c3__gold, c3__batz, u2_nul)); if ( (u2_nul != wen) && (u2_yes == u2du(wen)) && (u2_yes == u2ud(u2t(wen))) ) { c3_d gap_d = u2_time_gap_ms(u2k(u2A->now), u2k(u2t(wen))); if ( u2_yes == beh_u->alm ) { uv_timer_stop(&beh_u->tim_u); } else beh_u->alm = u2_yes; uv_timer_start(&beh_u->tim_u, _batz_time_cb, gap_d, 0); } else { if ( u2_yes == beh_u->alm ) { uv_timer_stop(&beh_u->tim_u); } beh_u->alm = u2_no; } u2z(wen); }
/* logic */ u2_bean // transfer j2_mcx(Pt6, ut, conk)(u2_wire wir_r, u2_noun van, // retain u2_noun sut, // retain u2_noun got) // retain { if ( u2_yes == u2ud(got) ) { return j2_mby(Pt6, face)(wir_r, got, sut); } else switch ( u2h(got) ) { default: return u2_cm_bail(c3__fail); case 0: { return u2k(sut); } case 1: { return j2_mby(Pt6, face) (wir_r, u2h(u2t(got)), j2_mcx(Pt6, ut, conk)(wir_r, van, sut, u2t(u2t(got)))); } case 2: { u2_bean vet = u2_frag(j2_ut_van_vet, van); u2_noun hed, tal, ret; if ( u2_yes == vet ) { u2_noun cel = u2nt(c3__cell, c3__noun, c3__noun); if ( u2_no == j2_mcy(Pt6, ut, nest)(wir_r, van, cel, u2_yes, sut) ) { return u2_bl_bail(wir_r, c3__fail); } u2z(cel); } hed = j2_mcy(Pt6, ut, peek)(wir_r, van, sut, c3__both, 2); tal = j2_mcy(Pt6, ut, peek)(wir_r, van, sut, c3__both, 3); ret = j2_mby(Pt6, cell) (wir_r, j2_mcx(Pt6, ut, conk)(wir_r, van, hed, u2h(u2t(got))), j2_mcx(Pt6, ut, conk)(wir_r, van, tal, u2t(u2t(got)))); u2z(hed); u2z(tal); return ret; } } }
/* nock_mool(): fast internal mink interface. Arguments transferred. */ u2_noun _nock_mool(u2_noun bus, u2_noun fol, u2_kode* pon) { u2_noun hib, gal; c3_assert(u2_yes == *pon); while ( 1 ) { u2_tx_did_hop(u2_Wire, 1); if ( u2_no == u2du(fol) ) { *pon = 2; u2z(bus); u2z(fol); return u2_cm_wail(); } else { hib = u2fh(fol); gal = u2ft(fol); } if ( u2_yes == u2du(hib) ) { u2_noun poz, riv; u2_kode h_pon = 0, t_pon = 0; poz = _nock_mool(u2k(bus), u2k(hib), &h_pon); if ( 2 == h_pon ) { *pon = 2; u2z(bus); u2z(fol); return poz; } riv = _nock_mool(bus, u2k(gal), &t_pon); u2z(fol); if ( 2 == t_pon ) { *pon = 2; u2z(poz); return riv; } if ( (1 == h_pon) || (1 == t_pon) ) { u2_noun lal; *pon = 1; if ( 0 == h_pon ) { u2z(poz); lal = riv; } else if ( 0 == t_pon ) { u2z(riv); lal = poz; } else { lal = u2_ckb_weld(poz, riv); } return lal; } return u2_cn_cell(poz, riv); } else switch ( hib ) { default: *pon = 2; u2z(bus); u2z(fol); return u2_cm_wail(); case 0: { if ( u2_no == u2_cr_ud(gal) ) { *pon = 2; u2z(bus); u2z(fol); return u2_cm_wail(); } else { u2_weak pro = u2_cr_at(gal, bus); if ( u2_none == pro ) { *pon = 2; u2z(bus); u2z(fol); return u2_cm_wail(); } else { pro = u2k(pro); u2z(bus); u2z(fol); return pro; } } } case 1: { u2_noun pro = u2k(gal); u2z(bus); u2z(fol); return pro; } c3_assert(!"not reached"); case 2: { if ( (u2_no == u2du(gal)) || (u2_no == u2du(u2fh(gal))) ) { *pon = 2; u2z(bus); u2z(fol); return u2_cm_wail(); } else { u2_noun neb; neb = _nock_mool(bus, u2k(gal), pon); u2z(fol); if ( 0 != *pon ) { return neb; } bus = u2k(u2fh(neb)); fol = u2k(u2ft(neb)); u2z(neb); continue; } } c3_assert(!"not reached"); case 3: { u2_noun gof, pro; gof = _nock_mool(bus, u2k(gal), pon); u2z(fol); if ( 0 != *pon ) { return gof; } pro = u2du(gof); u2z(gof); return pro; } c3_assert(!"not reached"); case 4: { u2_noun gof, pro; gof = _nock_mool(bus, u2k(gal), pon); u2z(fol); if ( 0 != *pon ) { return gof; } if ( u2_none == (pro = u2_rl_vint(u2_Wire, gof)) ) { *pon = 2; u2z(gof); return u2_cm_wail(); } u2z(gof); return pro; } c3_assert(!"not reached"); case 5: { u2_noun gof, pro; gof = _nock_mool(bus, u2k(gal), pon); u2z(fol); if ( 0 != *pon ) { return gof; } if ( u2_no == u2du(gof) ) { *pon = 2; u2z(gof); return u2_cm_wail(); } pro = u2_cr_sing(u2h(gof), u2t(gof)); u2z(gof); return pro; } c3_assert(!"not reached"); case 6: { u2_noun b_gal, cd_gal, c_gal, d_gal; if ( u2_no == u2_cr_cell(gal, &b_gal, &cd_gal) ) { *pon = 2; u2z(bus); u2z(fol); return u2_cm_wail(); } else { u2_noun tys, nex; tys = _nock_mool(u2k(bus), u2k(b_gal), pon); if ( 0 != *pon ) { u2z(bus); u2z(fol); return tys; } if ( u2_no == u2_cr_cell(cd_gal, &c_gal, &d_gal) ) { *pon = 2; u2z(bus); u2z(fol); return u2_cm_wail(); } if ( 0 == tys ) { nex = u2k(c_gal); } else if ( 1 == tys ) { nex = u2k(d_gal); } else { *pon = 2; u2z(bus); u2z(fol); return u2_cm_wail(); } u2z(fol); fol = nex; continue; } } c3_assert(!"not reached"); case 7: { u2_noun b_gal, c_gal; if ( u2_no == u2_cr_cell(gal, &b_gal, &c_gal) ) { *pon = 2; u2z(bus); u2z(fol); return u2_cm_wail(); } else { u2_noun bod, nex; bod = _nock_mool(bus, u2k(b_gal), pon); if ( 0 != *pon ) { u2z(fol); return bod; } nex = u2k(c_gal); u2z(fol); bus = bod; fol = nex; continue; } } c3_assert(!"not reached"); case 8: { u2_noun b_gal, c_gal; // c3_assert(!"got 8 (mink)!"); if ( u2_no == u2_cr_cell(gal, &b_gal, &c_gal) ) { *pon = 2; u2z(bus); u2z(fol); return u2_cm_wail(); } else { u2_noun wib, bod, nex; wib = _nock_mool(u2k(bus), u2k(b_gal), pon); if ( 0 != *pon ) { u2z(bus); u2z(fol); return wib; } bod = u2nc(wib, bus); nex = u2k(c_gal); u2z(fol); bus = bod; fol = nex; continue; } } c3_assert(!"not reached"); case 9: { u2_noun b_gal, c_gal; if ( (u2_no == u2_cr_cell(gal, &b_gal, &c_gal)) || (u2_no == u2ud(b_gal)) ) { *pon = 2; u2z(bus); u2z(fol); return u2_cm_wail(); } else { u2_noun seb; u2_weak xip; seb = _nock_mool(bus, u2k(c_gal), pon); u2z(fol); if ( 0 != *pon ) { return seb; } u2_tx_sys_bit(u2_Wire, u2_yes); xip = u2_ds_find(u2_Wire, seb); u2_tx_sys_bit(u2_Wire, u2_no); if ( u2_none != xip ) { u2_noun pro; u2_tx_sys_bit(u2_Wire, u2_yes); pro = u2_ho_kicq(u2_Wire, xip, seb, b_gal, pon); u2_tx_sys_bit(u2_Wire, u2_no); u2z(seb); if ( u2_none == pro ) { *pon = 2; return u2_cm_wail(); } else return pro; } else { u2_noun nex = u2_cr_at(b_gal, seb); if ( u2_none == nex ) { *pon = 2; u2z(seb); return u2_cm_wail(); } bus = seb; fol = u2k(nex); continue; } } } c3_assert(!"not reached"); case 10: { u2_noun p_gal, q_gal; if ( u2_no == u2_cr_cell(gal, &p_gal, &q_gal) ) { *pon = 2; u2z(bus); u2z(fol); return u2_cm_wail(); } else { u2_noun zep, hod, nex; if ( u2_yes == u2du(p_gal) ) { u2_noun b_gal = u2fh(p_gal); u2_noun c_gal = u2ft(p_gal); u2_noun d_gal = q_gal; hod = _nock_mool(u2k(bus), u2_ct(c_gal), pon); if ( 0 != *pon ) { u2z(fol); return hod; } zep = u2k(b_gal); nex = u2k(d_gal); u2z(fol); } else { u2_noun b_gal = p_gal; u2_noun c_gal = q_gal; zep = u2k(b_gal); hod = u2_nul; nex = u2k(c_gal); u2z(fol); } return _nock_hint(zep, hod, bus, nex, pon); } } case 11: { u2_noun gof; gof = _nock_mool(bus, u2k(gal), pon); u2z(fol); if ( 0 != *pon ) { return gof; } return _nock_pray_mool(gof, pon); } c3_assert(!"not reached"); } } }
/* _nock_cool(): nock, transferring arguments. */ static u2_noun _nock_cool(u2_noun bus, u2_noun fol) { u2_noun hib, gal; while ( 1 ) { u2_tx_did_hop(u2_Wire, 1); if ( u2_no == u2du(fol) ) { return u2_cm_bail(c3__exit); } else { hib = u2fh(fol); gal = u2ft(fol); } if ( u2_yes == u2du(hib) ) { u2_noun poz, riv; poz = _nock_cool(u2k(bus), u2k(hib)); riv = _nock_cool(bus, u2k(gal)); u2z(fol); return u2_cn_cell(poz, riv); } else switch ( hib ) { default: return u2_cm_bail(c3__exit); case 0: { if ( u2_no == u2_cr_ud(gal) ) { return u2_cm_bail(c3__exit); } else { u2_noun pro = u2k(u2at(gal, bus)); u2z(bus); u2z(fol); return pro; } } case 1: { u2_noun pro = u2k(gal); u2z(bus); u2z(fol); return pro; } c3_assert(!"not reached"); case 2: { if ( u2_no == u2du(gal) ) { return u2_cm_bail(c3__exit); } else { u2_noun nex = _nock_cool(u2k(bus), u2k(u2ft(gal))); u2_noun seb = _nock_cool(bus, u2k(u2fh(gal))); u2z(fol); bus = seb; fol = nex; continue; } } c3_assert(!"not reached"); case 3: { u2_noun gof, pro; gof = _nock_cool(bus, u2k(gal)); pro = u2du(gof); u2z(gof); u2z(fol); return pro; } c3_assert(!"not reached"); case 4: { u2_noun gof, pro; gof = _nock_cool(bus, u2k(gal)); if ( (u2_none == (pro = u2_rl_vint(u2_Wire, gof))) ) { return u2_cm_bail(c3__exit); } u2z(gof); u2z(fol); return pro; } c3_assert(!"not reached"); case 5: { if ( u2_no == u2du(gal) ) { return u2_cm_bail(c3__exit); } else { u2_noun wim = _nock_cool(bus, u2k(gal)); u2_noun pro; if ( u2_no == u2du(wim) ) { return u2_cm_bail(c3__exit); } else pro = u2_cr_sing(u2h(wim), u2t(wim)); u2z(wim); u2z(fol); return pro; } } c3_assert(!"not reached"); case 6: { u2_noun b_gal, c_gal, d_gal; u2_cx_trel(gal, &b_gal, &c_gal, &d_gal); { u2_noun tys = _nock_cool(u2k(bus), u2k(b_gal)); u2_noun nex; if ( 0 == tys ) { nex = u2k(c_gal); } else if ( 1 == tys ) { nex = u2k(d_gal); } else return u2_cm_bail(c3__exit); u2z(fol); fol = nex; continue; } } c3_assert(!"not reached"); case 7: { u2_noun b_gal, c_gal; u2_cx_cell(gal, &b_gal, &c_gal); { u2_noun bod = _nock_cool(bus, u2k(b_gal)); u2_noun nex = u2k(c_gal); u2z(fol); bus = bod; fol = nex; continue; } } c3_assert(!"not reached"); case 8: { u2_noun b_gal, c_gal; // c3_assert(!"got 8 (nock)!"); u2_cx_cell(gal, &b_gal, &c_gal); { u2_noun bod = u2nc(_nock_cool(u2k(bus), u2k(b_gal)), bus); u2_noun nex = u2k(c_gal); u2z(fol); bus = bod; fol = nex; continue; } } c3_assert(!"not reached"); case 9: { u2_noun b_gal, c_gal; u2_cx_cell(gal, &b_gal, &c_gal); if ( u2_no == u2ud(b_gal) ) { return u2_cm_bail(c3__exit); } else { u2_noun seb = _nock_cool(bus, u2k(c_gal)); u2_weak xip; u2_tx_sys_bit(u2_Wire, u2_yes); xip = u2_ds_find(u2_Wire, seb); if ( u2_none != xip ) { u2_noun pro = u2_ho_kick(u2_Wire, xip, seb, b_gal); u2_tx_sys_bit(u2_Wire, u2_no); if ( u2_none == pro ) { return u2_cm_bail(c3__exit); } else { u2z(seb); u2z(fol); return pro; } } else { u2_tx_sys_bit(u2_Wire, u2_no); { u2_noun nex = u2_ct(u2at(b_gal, seb)); u2z(fol); bus = seb; fol = nex; continue; } } } } c3_assert(!"not reached"); case 10: { u2_noun p_gal, q_gal; u2_cx_cell(gal, &p_gal, &q_gal); { u2_noun zep, hod, nex, pro; if ( u2_yes == u2du(p_gal) ) { u2_noun b_gal = u2fh(p_gal); u2_noun c_gal = u2ft(p_gal); u2_noun d_gal = q_gal; zep = u2k(b_gal); hod = _nock_cool(u2k(bus), u2_ct(c_gal)); nex = u2_ct(d_gal); } else { u2_noun b_gal = p_gal; u2_noun c_gal = q_gal; zep = u2k(b_gal); hod = u2_nul; nex = u2_ct(c_gal); } u2_cz(fol); pro = _nock_hint(zep, hod, bus, nex, 0); return pro; } } case 11: { u2_noun gof, pro; gof = _nock_cool(bus, u2k(gal)); pro = _nock_pray_cool(gof); u2z(fol); return pro; } c3_assert(!"not reached"); } } }