static unsigned char val;

static void foo(void) {
        val = 5;
}

static void wrap(void) {

        asm("lda #<%v", foo);
        asm("ldx #>%v", foo);
        asm("jmp callax");

}

int main(void) {

        val = 0;
        wrap();

        return val == 5 ? 0 : 1;
}