Ejemplo n.º 1
0
Archivo: clamb.c Proyecto: irori/clamb
Cell translate(Cell t)
{
    if (!ispair(t))
	return t;
    if (car(t) == LAMBDA)
	return unabstract(translate(cdr(t)));
    else {
	Cell s;
	PUSH(cdr(t));
	PUSH(translate(car(t)));
	s = translate(PUSHED(1));
	s = pair(TOP, s);
	DROP(2);
	return s;
    }
}
Ejemplo n.º 2
0
static uint16_t WPAD_ButtonsDown(int ictrl) {
    uint16_t btn = 0;

    if (PUSHED(a)) {
        btn |= WPAD_CLASSIC_BUTTON_A;
    }

    if (PUSHED(b)) {
        btn |= WPAD_CLASSIC_BUTTON_B;
    }

    if (PUSHED(x)) {
        btn |= WPAD_CLASSIC_BUTTON_X;
    }

    if (PUSHED(y)) {
        btn |= WPAD_CLASSIC_BUTTON_Y;
    }

    if (PUSHED(up)) {
        btn |= WPAD_CLASSIC_BUTTON_UP;
    }

    if (PUSHED(down)) {
        btn |= WPAD_CLASSIC_BUTTON_DOWN;
    }

    if (PUSHED(left)) {
        btn |= WPAD_CLASSIC_BUTTON_LEFT;
    }

    if (PUSHED(right)) {
        btn |= WPAD_CLASSIC_BUTTON_RIGHT;
    }

//    if (PUSHED(start)) {
//        btn |= WPAD_CLASSIC_BUTTON_START;
//    }
//
//    if (PUSHED(back)) {
//        btn |= WPAD_CLASSIC_BUTTON_BACK;
//    }
//
//    if (PUSHED(logo)) {
//        btn |= WPAD_CLASSIC_BUTTON_LOGO;
//        enableCapture();
//    }
//
//    if (PUSHED(rb)) {
//        btn |= WPAD_CLASSIC_BUTTON_RB;
//    }
//
//    if (PUSHED(lb)) {
//        btn |= WPAD_CLASSIC_BUTTON_LB;
//    }
//
//    if (PUSHED(s1_z)) {
//        btn |= WPAD_CLASSIC_BUTTON_RSTICK;
//    }
//
//    if (PUSHED(s2_z)) {
//        btn |= WPAD_CLASSIC_BUTTON_LSTICK;
//    }
    return btn;
}
Ejemplo n.º 3
0
Archivo: clamb.c Proyecto: irori/clamb
Cell unabstract(Cell t)
{
    if (isint(t)) {
	if (t == mkint(0))
	    return COMB_I;
	else
	    return pair(COMB_K, mkint(intof(t)-1));
    }
    else if (ispair(t)) {
	Cell f, g;
	PUSH(cdr(t));
	PUSH(unabstract(car(t)));
	g = PUSHED(1) = unabstract(PUSHED(1));
	f = TOP;
	if (IS_K1(f)) {
	    if (g == COMB_I) {
		/* S (K x) I => x */
		f = cdr(f);
	    }
	    else if (IS_K1(g)) {
		/* S (K x) (K y) => K (x y) */
		car(g) = cdr(f);	/* x y */
		cdr(f) = g;		/* K (x y) */
	    }
	    else if (IS_B2(g)) {
		/* S (K x) (B y z) => B* x y z */
		car(f) = COMB_BS;	/* B* x */
		car(car(g)) = f;	/* B* x y z */
		f = g;
	    }
	    else {
		/* S (K x) y => B x y */
		car(f) = COMB_B;	/* B x */
		f = pair(f, g);		/* B x y */
	    }
	}
	else if (IS_K1(g)) {
	    if (IS_B2(f)) {
		/* S (B x y) (K z) => C' x y z */
		car(car(f)) = COMB_CP;
		car(g) = f;
		f = g;
	    }
	    else {
		/* S x (K y) => C x y */
		f = cdr(g);
		SET(g, COMB_C, TOP);	/* C x */
		f = pair(g, f);		/* C x y */
	    }
	}
	else if (IS_B2(f)) {
	    /* S (B x y) z => S' x y z */
	    car(car(f)) = COMB_SP;	/* S' x y */
	    f = pair(f, g);		/* S' x y z */
	}
	else {
	    /* S x y */
	    f = pair(COMB_S, f);
	    f = pair(f, PUSHED(1));
	}
	DROP(2);
	return f;
    }
    else
	return pair(COMB_K, t);
}