#include #include #include #include #include #include #include "m68k.h" #include "run.h" #include "sym.h" #include "tests.h" static void test_c9version_end(void) { uint8_t *ctx, *b; ctx = mem+m68k_get_reg(NULL, M68K_REG_A0); assert_ptr_equal(ctx, mem+Ctx); b = mem+Begindst; assert_int_equal(ru32le(b), bufsz); // size assert_int_equal(b[4], EXPR_Tversion); // type assert_int_equal(ru16le(b+5), 0xffff); // tag assert_int_equal(ru32le(b+7), Msize); // msize assert_memory_equal(b+11, "\x06\x00""9P2000", 8); assert_int_equal(b[19], fill); executed |= End; } void test_c9version(void **state) { uint8_t *ctx; int i; uint16_t sr; (void)state; ctx = mem+Ctx; initctx(ctx, 0); c9begin = generic_begin; c9end = test_c9version_end; memset(ctx+5*4, 1|4|16|64, EXPR_C9ctxsz-5*4); m68k_set_reg(M68K_REG_A0, Ctx); m68k_set_reg(M68K_REG_D0, Msize); executed = 0; jsr(Progstart+SYM_c9version); sr = m68k_get_reg(NULL, M68K_REG_SR); assert_false(sr & SR_C); // check the context assert_int_equal(ru32be(ctx+EXPR_C9ctx_msize), Msize); assert_int_equal(ru16be(ctx+EXPR_C9ctx_freetag), 0); // no tags allocated for(i = 0; i < EXPR_C9maxtags/8; i++) assert_int_equal(ctx[EXPR_C9ctx_tags+i], 0); assert_int_equal(ctx[EXPR_C9ctx_dummy], 0xff); // check if the data buffer was used assert_int_equal(executed, Begin|End); }