Example #1
0
void thread_movie_tick()
{
    if (get_new_program_flag())
    {
        reset_new_program_flag();
        reset_program();

        if (auto_mode)
        {
            scene_program_down();
            auto_mode = 0;
            return;
        }
    }

    if (auto_mode)
    {
        if (auto_delay > 0)
        {
            auto_delay--;
            return;
        }

        if (program_next())
        {
            set_led_bright_from_frame(frame_buf);
            auto_delay = (uint32_t)load_delay_from_frame(frame_buf) * scene_speed_get_mult();
        }
        else
        {
            auto_program_index++;
            if (auto_program_index >= count_bin_files)
                auto_program_index = 0;

            auto_reset_program();
        }
    }
    else
    {
        if (delay > 0)
        {
            delay--;
            return;
        }

        if (program_next())
        {
            set_led_bright_from_frame(frame_buf);
            delay = (uint32_t)load_delay_from_frame(frame_buf) * scene_speed_get_mult();
        }
        else
        {
            reset_program();
        }
    }
}
Example #2
0
int main(int argc, char* argv[])
{
	if (argc != 2)
	{
		printf("Bad argument! Just give me a filename of a compiled assembly program.\n");
		return -EINVAL;
	}

	enable_udiv = 1;

	FILE* program;
	if (!(program = fopen(argv[1], "r")))
	{
		printf("Bad argument! File not found.\n");
		return -EINVAL;
	}

	build_symbol_table(argv[1]);

	pc = 0x3000;
	running = 1;
	read_program(program);

	int ch;
	initialize();

	while(ch != KEY_F(1))
	{
		ch = getch();
		switch (ch) {
		case KEY_F(2):
			reset_program(program);
			break;
		case KEY_F(3):
			dbgwin_state = 1;
			break;
		case KEY_F(4):
			break;
		case KEY_F(5):
			step_forward();
			break;
		case KEY_F(6):
			run_program();
			break;
		case KEY_F(7):
			memwin_state = (memwin_state == 2 ? 0 : 2);
			mem_cursor = mem_index;
			break;
		case KEY_F(8):
			dbgwin_state = 2;
			break;
		case KEY_UP:
			if (memwin_state == 2)
				mem_cursor--;
			break;
		case KEY_DOWN:
			if (memwin_state == 2)
				mem_cursor++;
			break;
		case KEY_NPAGE:
			if (memwin_state == 2)
				mem_cursor += (LINES-DEBUGWIN_HEIGHT);
			break;
		case KEY_PPAGE:
			if (memwin_state == 2)
				mem_cursor -= (LINES-DEBUGWIN_HEIGHT);
			break;
		case 0xA:
			if (memwin_state ==2)
				brk[(unsigned short)mem_cursor] ^= 1;
			break;
		}
		refreshall();
	}
quit:
	curs_set(1);
	endwin();
	return 0;
}
Example #3
0
void reset_cpu(cpu* cpu_instance) {
    reset_stack(cpu_instance->stack);
    reset_registers(cpu_instance);
    reset_program(cpu_instance->program);
}
Example #4
0
void thread_movie_init()
{
    reset_program();
    auto_reset_program();
}