From 622f2eef26dac6f3025a189191355f55b4676e8f Mon Sep 17 00:00:00 2001 From: VladislavOstapov Date: Mon, 5 Dec 2022 13:20:29 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A1=D0=BB=D0=B8=D1=8F=D0=BD=D0=B8=D0=B5=20?= =?UTF-8?q?=D0=BA=D0=BE=D0=B4=D0=B0=20=D0=B8=D0=B7=20=D0=BF=D1=80=D0=BE?= =?UTF-8?q?=D0=B5=D0=BA=D1=82=D0=B0=20=D0=B4=D0=BB=D1=8F=20=D0=9F=D0=9B?= =?UTF-8?q?=D0=9A=20=D1=81=20=D1=8D=D1=82=D0=B8=D0=BC=20=D0=BF=D1=80=D0=BE?= =?UTF-8?q?=D0=B5=D0=BA=D1=82=D0=BE=D0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- emulator.h | 4 ---- utils.h | 50 +++++++++++++++++++++++++++----------------------- 2 files changed, 27 insertions(+), 27 deletions(-) diff --git a/emulator.h b/emulator.h index 5f628a4..62a136c 100644 --- a/emulator.h +++ b/emulator.h @@ -44,10 +44,6 @@ extern char button_unload_remove; // Переменные, которые надо добавить в C Global variables -// код для роботов -extern struct robot_code robot1_code; -extern struct robot_code robot2_code; - // lock-зоны, нельзя двигаться за них и за робота extern short robot1_lock_zone; diff --git a/utils.h b/utils.h index eec7a80..a7b0506 100644 --- a/utils.h +++ b/utils.h @@ -128,6 +128,29 @@ struct robot_regs { union robot_regs_dz dz; }; +// NOTE первой командой на любую транзакцию должна стоять команда опустить траверсу (в 22 зоне по идее никогда не закончим) +struct robot_code { + short barrel_id; // нужен ID барабана, если + short PC; // когда -1, код не выполняется + + /* + * система команд, которая нужна: (квадратные скобки - аргумент это младшие 14 бит) + * 0 (смещение: да () ? нет): установить смещение (да - встанет в смещенную позицию, нет - в точную) + * 1 (опция с барабаном) [поднять (1) | опустить]: поднять/опустить траверсу (перед поднятием ожидать если таймер барабана не истек) + * 2 (опция с барабаном) [зона]: съебаться в зону + * 3 [сек]: пауза на нужное количество секунд + * 4 [время]: установить таймер барабану + * 5 (ETCH(1) | GAL (2)) [зона]: установить зону блокировки, умеет использовать автоинкримент зоны гальваники или обезжиривания + * 6 [X(1) | Y(2)]: скорректировать ось + * 15: конец + * + * формат команды: (команда, старший байт) [младший байт, аргумент команды (если есть)] [слово, аргумент если команда требует] + */ + short code[16]; // формат кода: [команды] <команда 0> + +}; + + #ifdef __cplusplus extern "C" { #endif @@ -136,10 +159,14 @@ extern "C" { extern struct barrel barrels[BARRELS_COUNT]; extern struct robot_regs robot1; extern struct robot_regs robot2; +extern struct robot_code robot1_code; +extern struct robot_code robot2_code; #else #define barrels ((struct barrel*)&barrels_array) #define robot1 (*((struct robot_regs*)&robot1_reg_dx)) #define robot2 (*((struct robot_regs*)&robot2_reg_dz)) +#define robot1_code (*((struct robot_code*)&_robot1_code_struct)) +#define robot2_code (*((struct robot_code*)&_robot2_code_struct)) #endif // почему-то компилер говорит что размер структуру сраный @@ -198,29 +225,6 @@ extern struct robot_regs robot2; #define ROBOT_CMD_INC_ZONE(arg) ((ROBOT_CMD_INC_ZONE_code) | (short)(arg)) -// NOTE первой командой на любую транзакцию должна стоять команда опустить траверсу (в 22 зоне по идее никогда не закончим) -struct robot_code { - short barrel_id; // нужен ID барабана, если - short PC; // когда -1, код не выполняется - - /* - * система команд, которая нужна: (квадратные скобки - аргумент это младшие 14 бит) - * 0 (смещение: да () ? нет): установить смещение (да - встанет в смещенную позицию, нет - в точную) - * 1 (опция с барабаном) [поднять (1) | опустить]: поднять/опустить траверсу (перед поднятием ожидать если таймер барабана не истек) - * 2 (опция с барабаном) [зона]: съебаться в зону - * 3 [сек]: пауза на нужное количество секунд - * 4 [время]: установить таймер барабану - * 5 (ETCH(1) | GAL (2)) [зона]: установить зону блокировки, умеет использовать автоинкримент зоны гальваники или обезжиривания - * 6 [X(1) | Y(2)]: скорректировать ось - * 15: конец - * - * формат команды: (команда, старший байт) [младший байт, аргумент команды (если есть)] [слово, аргумент если команда требует] - */ - short code[16]; // формат кода: [команды] <команда 0> - -}; - - /* ======================== IO DEFS ======================== */ #define ROBOT1_X 1