LINUX.ORG.RU

История изменений

Исправление vM, (текущая версия) :

Осталось разобраться как сделать неблокирующим

Поставить timeout(0) или nodelay() для неблокирующего ввода?

https://www.opennet.ru/man.shtml?topic=timeout&category=3

diff --git a/src/machine.c b/src/machine.c
index f75f9a2..d351902 100644
--- a/src/machine.c
+++ b/src/machine.c
@@ -696,6 +696,8 @@ machine_run (struct machine *m)
                int c = wgetch (hex_editor->win);
                debug_input (c);
        } else {
+               int c = wgetch (m->game_screen);
+               machine_input(m, c);
                execute_instruction (m, opcode, b);
        }

diff --git a/src/main.c b/src/main.c
index 76e3abe..210c28d 100644
--- a/src/main.c
+++ b/src/main.c
@@ -106,6 +106,9 @@ main (int argc, char **argv)
                        real_window_height_game,
                        width_term / 2 - real_window_width_game / 2, 0);

+       wtimeout(screen_win, 0);
+
+
        uint32_t hex_editor_width_with_border = width_term;
        uint32_t hex_editor_height_with_border = height_term - real_window_height_game;

Исходная версия vM, :

Осталось разобраться как сделать неблокирующим

Поставить timeout(0) или nodelay() для неблокирующего ввода?

https://www.opennet.ru/man.shtml?topic=timeout&category=3

diff --git a/src/machine.c b/src/machine.c
index f75f9a2..d351902 100644
--- a/src/machine.c
+++ b/src/machine.c
@@ -696,6 +696,8 @@ machine_run (struct machine *m)
                int c = wgetch (hex_editor->win);
                debug_input (c);
        } else {
+               int c = wgetch (m->game_screen);
+               machine_input(m, c);
                execute_instruction (m, opcode, b);
        }

diff --git a/src/main.c b/src/main.c
index 76e3abe..210c28d 100644
--- a/src/main.c
+++ b/src/main.c
@@ -106,6 +106,9 @@ main (int argc, char **argv)
                        real_window_height_game,
                        width_term / 2 - real_window_width_game / 2, 0);

+       wtimeout(screen_win, 0);
+
+
        uint32_t hex_editor_width_with_border = width_term;
        uint32_t hex_editor_height_with_border = height_term - real_window_height_game;