virtualizes evalution of the boot sequence, prints on failure

This commit is contained in:
Joe Bryan 2019-01-30 02:32:10 -05:00
parent 2cf8a81517
commit 3c5548b4ed

View File

@ -29,16 +29,35 @@ _cv_nock_wish(u3_noun txt)
void
u3v_boot(u3_noun eve)
{
u3_noun cor;
// ensure zero-initialized kernel
//
// So that u3t_slog won't try to print tanks.
//
u3A->roc = 0;
// lifecycle formula
//
u3_noun lyf = u3nt(2, u3nc(0, 3), u3nc(0, 2));
u3_noun cor = u3n_nock_on(eve, lyf);
{
// default namespace function: |=(a/{* *} ~)
//
u3_noun gul = u3nt(u3nt(1, 0, 0), 0, 0);
// lifecycle formula
//
u3_noun lyf = u3nt(2, u3nc(0, 3), u3nc(0, 2));
// evalute lifecycle formula against the boot sequence
// in a virtualization context
//
u3_noun pro = u3m_soft_run(gul, u3n_nock_on, eve, lyf);
if ( 0 != u3h(pro) ) {
fprintf(stderr, "boot: failed: invalid boot sequence (from pill)\r\n");
u3z(pro);
return;
}
cor = u3k(u3t(pro));
u3z(pro);
}
// save the Arvo core (at +7 of the Arvo gate)
//