Иллюстрированный самоучитель по созданию DVD

Группы и типы команд

Группы команд

Группа Какие основные задачи решают команды группы Могут быть объединены с командами из групп
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, то будет выполнена следующая команда.
== Если сравниваемые значения РАВНЫ, то команда будет выполнена.
!= Если сравниваемые значения НЕ РАВНЫ, то команда будет выполнена.
>= Если результат РАВЕН или БОЛЬШЕ, то команда будет выполнена.
> Если результат БОЛЬШЕ, то команда будет выполнена.
<= Если результат РАВЕН или МЕНЬШЕ, то команда будет выполнена.
< Если результат БОЛЬШЕ, то команда будет выполнена.
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.