Группы и типы команд
Группы команд
Группа | Какие основные задачи решают команды группы | Могут быть объединены с командами из групп |
---|---|---|
Link (Соединить) | Старт видео в текущем домене | Set, Compare и SetSystem |
Jump | Старт видео в указанном домене | Compare |
GoTo | Переход к другой команде навигации | Compare |
Compare | Сравнивает указанные параметры | Jump, GoTo, Set, Link и SetSystem |
SetSystem | Устанавливает навигационные параметры | Link и Compare |
Set | Задает значения GPRM | Link и Compare |
Типы команд
Всего существуют три типа команд согласно DVD стандарту. Это:
- Первый тип (Type 1) – команды этого типа всегда состоят только из одной инструкции.
- Второй тип (Type 2) – команды этого типа состоят из 2-х инструкций.
- Третий тип (Type 3) – команды этого типа включают в себя команды из групп Compare, Set и Link to SubInstruction и тем самым состоят из трех инструкций.
Правила использования команд различных типов сведены в таблицу:
Команда | Тип | Описание | Количество инструкций в команде |
---|---|---|---|
GoTo | 1 | Меняет порядок выполнения инструкций | 1 |
Link | 1 | Начинает выполнение указанного действия внутри домена (включая выделение кнопки) | 1 |
Jump | 1 | То же самое, что и Link, но в другом домене | 1 |
Compare GoTo | 1 | Если результат сравнения истина (true), то выполнение команды GoTo | 1 |
Compare Link | 1 | Если результат сравнения истина (true), то выполнение команды Link | 1 |
Compare Jump | 1 | Если результат сравнения истина (true), то выполнение команды Jump | 1 |
SetSystem | 2 | Установка навигационных параметров (регистров) GPRM и SPRM | 2 |
Set | 2 | Установка GPRM | 2 |
Compare SetSystem | 2 | Если результат сравнения истина (true), то выполнение команды SetSystem | 2 |
Compare Set | Если результат сравнения истина (true), то выполнение команды Set | 2 | |
SetSystem Link | 2 | Сначала выполнение команды SetSystem, затем Link | 2 |
Set Link | 2 | Сначала выполнение команды Set, затем Link | 2 |
Set Compare LinkSIns | 3 | Сначала выполняется команда Set, затем, если результат сравнения по команде Compare истина (true), то переход к выполнению команды LinkSIns | 3 |
Compare & Set – LinkSIns | 3 | Сначала выполняется команда сравнения Compare и, если результат сравнения истина (true), то затем последовательно выполняются команды Set и LinkSIns | 3 |
Compare – Set & LinkSIns | 3 | Сначала выполняется команда сравнения Compare и, если результат сравнения истина (true), то затем последовательно выполняются команды Set и LinkSIns, причем LinkSIbs в этом случае игнорирует результат сравнения | 3 |
Для того, чтобы дальнейшая работа с командами в Scenarist была более понятной, позволим себе напомнить некоторые азы булевой алгебры, без которых освоение программирования в Scenarist будет затруднено. Итак, для начала рассмотрим операцию AND (И), которая в Scenarist (и не только в нем, конечно) также обозначается символом &. Эта операция также может называться логическим умножением. Scenarist всегда подразумевает, что данные в регистрах будут сравниваться побитово. Операция AND для каждого бита выполняется следующим образом:
- 0 & 0 = 0 (False – ложь)
- 0 & 1 = 0 (False – ложь)
- 1 & 0 = 0 (False – ложь)
- 1 & 1 = 1 (True – истина)
Поясним это на примере. Допустим, вы хотите сравнить значения по AND в двух регистрах. В одном из них десятичное число 25 (оно же двоичное 00011010, оно же шестнадцатиричное 1A) с другим, в котором содержится десятичное число 9 (оно же двоичное 00001001, оно же шестнадцатиричное 09). Результат будет таким:
00011010 00001001 ------------- 00001000 = True (Истина)
Результат оказался true, поскольку одна единица появилась в результате. В противном случае результат был бы False (Ложь). Расшифровка обозначений операций сравнения в Scenarist приведена в таблице ниже:
& | Логическое AND (И). Результат будет true (истина), если в нем есть хотя бы одна единица. В противном случае он будет равен false (ложь). Если результат true, то будет выполнена следующая команда. |
== | Если сравниваемые значения РАВНЫ, то команда будет выполнена. |
!= | Если сравниваемые значения НЕ РАВНЫ, то команда будет выполнена. |
>= | Если результат РАВЕН или БОЛЬШЕ, то команда будет выполнена. |
> | Если результат БОЛЬШЕ, то команда будет выполнена. |
<= | Если результат РАВЕН или МЕНЬШЕ, то команда будет выполнена. |
< | Если результат БОЛЬШЕ, то команда будет выполнена. |