Инструменты пользователя

Инструменты сайта


msx:basic_dialogue_programming_language:011

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
msx:basic_dialogue_programming_language:011 [2022-10-01 12:47]
GreyWolf [XI.2. Работа с видеопроцессором]
msx:basic_dialogue_programming_language:011 [2023-02-19 16:23] (текущий)
GreyWolf
Строка 6: Строка 6:
 <WRAP group 99%> <WRAP group 99%>
 <WRAP half column> \\ </​WRAP>​ <WRAP half column> \\ </​WRAP>​
-<WRAP half column><​WRAP ​justify>+<WRAP half column><​WRAP ​right>
 Надо понять тот минимум,​ на котором покоится мир, и всё избыточное безжалостно отсекать (бритва Оккама).<​WRAP rightalign>​ Надо понять тот минимум,​ на котором покоится мир, и всё избыточное безжалостно отсекать (бритва Оккама).<​WRAP rightalign>​
 —//​У.Оккам//​ —//​У.Оккам//​
Строка 300: Строка 300:
 <WRAP group 99%> <WRAP group 99%>
 <WRAP half column> \\ </​WRAP>​ <WRAP half column> \\ </​WRAP>​
-<WRAP half column><​WRAP ​justify>+<WRAP half column><​WRAP ​right>
 Они мастера накапливать факты, а вот извлечь из них пользу им удаётся не всегда. Они мастера накапливать факты, а вот извлечь из них пользу им удаётся не всегда.
 <WRAP rightalign>​ <WRAP rightalign>​
Строка 647: Строка 647:
 <WRAP group 99%> <WRAP group 99%>
 <WRAP half column> \\ </​WRAP>​ <WRAP half column> \\ </​WRAP>​
-<WRAP half column><​WRAP ​justify>+<WRAP half column><​WRAP ​right>
 Целью придумавших систему было, очевидно,​ скрыть,​ что в этих значках содержится какой–то смысл.<​WRAP rightalign>​ Целью придумавших систему было, очевидно,​ скрыть,​ что в этих значках содержится какой–то смысл.<​WRAP rightalign>​
 —//​А.Конан Дойль. Пляшущие человечки//​ —//​А.Конан Дойль. Пляшущие человечки//​
Строка 800: Строка 800:
 <WRAP group 99%> <WRAP group 99%>
 <WRAP half column> \\ </​WRAP>​ <WRAP half column> \\ </​WRAP>​
-<WRAP half column><​WRAP ​justify>+<WRAP half column><​WRAP ​right>
 Есть медленно и умеренно,​ не пить во время еды, тщательно разжёвывать пищу и с лёгкостью вставать из–за стола с чувством,​ что мог бы съесть ещё. Есть медленно и умеренно,​ не пить во время еды, тщательно разжёвывать пищу и с лёгкостью вставать из–за стола с чувством,​ что мог бы съесть ещё.
 <WRAP rightalign>​ <WRAP rightalign>​
Строка 1692: Строка 1692:
 Как видите,​ байты, соответствующие палитре 7, изменяются;​ немедленно изменяется и цвет бордюра! Как видите,​ байты, соответствующие палитре 7, изменяются;​ немедленно изменяется и цвет бордюра!
  
 +{{anchor:​color_restore}}
 Разумеется,​ палитры в Таблице PT могут быть изменены и операторами ''​VPOKE''​. Однако следует отметить,​ что изменение Таблицы PT операторами ''​VPOKE''​ само по себе не приводит к изменению цветов. Для считывания содержимого Таблицы PT и присвоения цвета новой палитре существует специальный оператор. Его синтаксис предельно прост: Разумеется,​ палитры в Таблице PT могут быть изменены и операторами ''​VPOKE''​. Однако следует отметить,​ что изменение Таблицы PT операторами ''​VPOKE''​ само по себе не приводит к изменению цветов. Для считывания содержимого Таблицы PT и присвоения цвета новой палитре существует специальный оператор. Его синтаксис предельно прост:
 <WRAP group> <WRAP group>
Строка 1727: Строка 1728:
 <WRAP group 99%> <WRAP group 99%>
 <WRAP half column> \\ </​WRAP>​ <WRAP half column> \\ </​WRAP>​
-<WRAP half column><​WRAP ​justify>+<WRAP half column><​WRAP ​right>
 Вопрос в том, кто за это отвечает?​ Вопрос в том, кто за это отвечает?​
 <WRAP rightalign>​ <WRAP rightalign>​
Строка 1768: Строка 1769:
 <WRAP group 99%> <WRAP group 99%>
 <WRAP half column> \\ </​WRAP>​ <WRAP half column> \\ </​WRAP>​
-<WRAP half column><​WRAP ​justify>+<WRAP half column><​WRAP ​right>
 //​Шаблон//​ (от нем. Schablone — образец,​ модель) — пластина с вырезами,​ очертания которых соответствуют контуру чертежа,​ изделия и т.п.<​WRAP rightalign>​ //​Шаблон//​ (от нем. Schablone — образец,​ модель) — пластина с вырезами,​ очертания которых соответствуют контуру чертежа,​ изделия и т.п.<​WRAP rightalign>​
 —//​Советский Энциклопедический Словарь//​ —//​Советский Энциклопедический Словарь//​
Строка 1833: Строка 1834:
 <WRAP group 99%> <WRAP group 99%>
 <WRAP half column> \\ </​WRAP>​ <WRAP half column> \\ </​WRAP>​
-<WRAP half column><​WRAP ​justify>+<WRAP half column><​WRAP ​right>
 Атрибут (от лат. Attribuo — придаю,​ наделяю),​ необходимое,​ существенное,​ неотъемлемое свойство объекта. Атрибут (от лат. Attribuo — придаю,​ наделяю),​ необходимое,​ существенное,​ неотъемлемое свойство объекта.
 <WRAP rightalign>​ <WRAP rightalign>​
Строка 2191: Строка 2192:
 <WRAP group 99%> <WRAP group 99%>
 <WRAP half column> \\ </​WRAP>​ <WRAP half column> \\ </​WRAP>​
-<WRAP half column><​WRAP ​justify>+<WRAP half column><​WRAP ​right>
 Четыре величайших изобретения в истории человечества:​ Четыре величайших изобретения в истории человечества:​
   - колесо;​   - колесо;​
Строка 2304: Строка 2305:
 <WRAP group 99%> <WRAP group 99%>
 <WRAP half column> \\ </​WRAP>​ <WRAP half column> \\ </​WRAP>​
-<WRAP half column><​WRAP ​justify>+<WRAP half column><​WRAP ​right>
 Нехватка информации восполняется избытком интуиции. Нехватка информации восполняется избытком интуиции.
 <WRAP rightalign>​ <WRAP rightalign>​
Строка 2383: Строка 2384:
  
 {{anchor:​e1121-02}} __//​Пример 2//__. Включение и выключение экрана дисплея \\ {{.examples:​1121-02.bas|}} \\ [[+tab|wmsxbpge>​1121-02.bas]] {{anchor:​e1121-02}} __//​Пример 2//__. Включение и выключение экрана дисплея \\ {{.examples:​1121-02.bas|}} \\ [[+tab|wmsxbpge>​1121-02.bas]]
 +<WRAP group>
 +<WRAP half column>
 <​code>​ <​code>​
 VDP(1)=VDP(1) XOR 64 VDP(1)=VDP(1) XOR 64
 </​code>​ </​code>​
 +</​WRAP>​
 +.
 +<WRAP half column>
 +
 +</​WRAP>​
 +</​WRAP>​
 +
 Эта команда включает экран, если он был выключен,​ и наоборот. Эта команда включает экран, если он был выключен,​ и наоборот.
  
Строка 2428: Строка 2438:
   - установить биты M1, M2, M3, M4, M5;   - установить биты M1, M2, M3, M4, M5;
   - установить начальные адреса Таблиц VRAM в регистрах базовых адресов;​   - установить начальные адреса Таблиц VRAM в регистрах базовых адресов;​
-  - заполнить ​таблицы видеопамяти необходимыми данными;​+  - заполнить ​Таблицы видеопамяти необходимыми данными;​
   - занести в ячейку памяти с адресом &HFCAF номер режима ''​SCREEN''​.   - занести в ячейку памяти с адресом &HFCAF номер режима ''​SCREEN''​.
  
Строка 2503: Строка 2513:
 <WRAP group 99%> <WRAP group 99%>
 <WRAP half column> \\ </​WRAP>​ <WRAP half column> \\ </​WRAP>​
-<WRAP half column><​WRAP ​justify>+<WRAP half column><​WRAP ​right>
 Мы находимся в положении,​ несколько аналогичном положению человека,​ держащего в руках связку ключей и пытающегося открыть одну за другой несколько дверей. Рано или поздно ему всегда удаётся подобрать ключ к очередной двери, но сомнения относительно взаимнооднозначного соответствия между ключами и дверями у него остаются. Мы находимся в положении,​ несколько аналогичном положению человека,​ держащего в руках связку ключей и пытающегося открыть одну за другой несколько дверей. Рано или поздно ему всегда удаётся подобрать ключ к очередной двери, но сомнения относительно взаимнооднозначного соответствия между ключами и дверями у него остаются.
 <WRAP rightalign>​ <WRAP rightalign>​
-—//Юджин ​Вигнер//​+—//Ю.Вигнер//​
 </​WRAP></​WRAP>​ </​WRAP></​WRAP>​
 </​WRAP></​WRAP>​ </​WRAP></​WRAP>​
  
-Адрес байта видеопамяти кодируется 17–ю двоичными цифрами,​ которые мы будем обозначать Ai, где i=0,​1,​2,​…,​16,​ причём через A16 будем обозначать //​старший//​ бит, через A0 — //​младший//​ бит.+Адрес байта видеопамяти кодируется 17 двоичными цифрами,​ которые мы будем обозначать Ai, где i=0,​1,​2,​…,​16,​ причём через A16 будем обозначать //​старший//​ бит, через A0 — //​младший//​ бит.
  
 ^Старший бит| ​ A16  |  A15  |  A14  |  A13  |  A12  |  A11  |  A10  |  A9  |  A8  |  A7  |  A6  |  A5  |  A4  |  A3  |  A2  |  A1  |  A0  ^Младший бит| ^Старший бит| ​ A16  |  A15  |  A14  |  A13  |  A12  |  A11  |  A10  |  A9  |  A8  |  A7  |  A6  |  A5  |  A4  |  A3  |  A2  |  A1  |  A0  ^Младший бит|
Строка 2623: Строка 2633:
 <WRAP group 99%> <WRAP group 99%>
 <WRAP half column> \\ </​WRAP>​ <WRAP half column> \\ </​WRAP>​
-<WRAP half column><​WRAP ​justify>+<WRAP half column><​WRAP ​right>
 — Вы знаете отличительные способности животного,​ называемого раком?​\\ ​ — Вы знаете отличительные способности животного,​ называемого раком?​\\ ​
 — Да, конечно. Рак — это рыба //​красного цвета//,​ которая ходит боком.\\ ​ — Да, конечно. Рак — это рыба //​красного цвета//,​ которая ходит боком.\\ ​
Строка 2734: Строка 2744:
 70 INPUT "​Частота включения мигания (от 0 до 15)";​TN 70 INPUT "​Частота включения мигания (от 0 до 15)";​TN
 80 INPUT "​Частота выключения мигания (от 0 до 15)";​TK 80 INPUT "​Частота выключения мигания (от 0 до 15)";​TK
-90 VPOKE 2048+10*Y+X/​8,&​B11111111 '​Будуть мигать 8 символов+90 VPOKE 2048+10*Y+X/​8,&​B11111111 '​Будут мигать 8 символов
 100 CLS:LOCATE X,Y:PRINT B$ 100 CLS:LOCATE X,Y:PRINT B$
 110 COL=16*MI+MF:​TIM=16*TN+TK 110 COL=16*MI+MF:​TIM=16*TN+TK
Строка 2756: Строка 2766:
 </​code>​ </​code>​
  
-Период отображения,​находящийся в промежутке между 166 мсек и 2053 мсек, может быть определён для каждой страницы. Для этого необходимо:​+Период отображения,​находящийся в промежутке между 166 мс и 2053 мс, может быть определён для каждой страницы. Для этого необходимо:​
   - задать базовый адрес Таблицы имён шаблонов //​нечётной//​ страницы (регистр с номером 2);   - задать базовый адрес Таблицы имён шаблонов //​нечётной//​ страницы (регистр с номером 2);
   - <​WRAP>​задать время включения (интервал,​ в течение которого отображается //​чётная//​ страница) и время выключения (интервал,​ в течение которого отображается //​нечётная//​ страница) в регистре с номером 13.   - <​WRAP>​задать время включения (интервал,​ в течение которого отображается //​чётная//​ страница) и время выключения (интервал,​ в течение которого отображается //​нечётная//​ страница) в регистре с номером 13.
Строка 2765: Строка 2775:
 ^Назначение|Время включения||||Время выключения|||| ^Назначение|Время включения||||Время выключения||||
 </​WRAP>​ </​WRAP>​
-  - После этого начнётся процесс мигания.+  - после этого начнётся процесс мигания.
  
 {{anchor:​e1123-03}} __//​Пример 3//__. \\ {{.examples:​1123-03.bas|}} \\ [[+tab|wmsxbpge>​1123-03.bas]] {{anchor:​e1123-03}} __//​Пример 3//__. \\ {{.examples:​1123-03.bas|}} \\ [[+tab|wmsxbpge>​1123-03.bas]]
Строка 2773: Строка 2783:
 30 CIRCLE (254,​106),​30,​15 ​     :' рисуем окружность 30 CIRCLE (254,​106),​30,​15 ​     :' рисуем окружность
 40 SET PAGE 1,1: CLS           :'​ А на странице 1 40 SET PAGE 1,1: CLS           :'​ А на странице 1
-50 CIRCLE (254,​106),​60,​15 ​     :' рисуем окружность ​побольше+50 CIRCLE (254,​106),​60,​15 ​     :' рисуем окружность большего радиуса
 60 VDP(13+1)=&​H11 ​             :' Включим смену страниц 60 VDP(13+1)=&​H11 ​             :' Включим смену страниц
 70                             :'​ Окружность ​ п у л ь с и р у е т ! 70                             :'​ Окружность ​ п у л ь с и р у е т !
-80 A$=INPUT$(1) ​               :' ​Немного подождем...+80 A$=INPUT$(1) ​               :' ​Ждем нажатия любой клавиши...
 90 VDP(13+1)=0 ​                :'​ Выключим смену страниц 90 VDP(13+1)=0 ​                :'​ Выключим смену страниц
 </​code>​ </​code>​
  
-Опишем ещё один способ осуществления смены двух графических страниц на экране. +Опишем ещё один способ осуществления смены двух графических страниц на экране. Бит ​EO (второй бит регистра с номером 9), используется для попеременной демонстрации //​двух//​ графических страниц экрана с частотой 60 Гц.
- +
-Бит ​ЕО (второй бит регистра с номером 9), используется для попеременной демонстрации //​двух//​ графических страниц экрана с частотой 60 Гц.+
  
 Для этого необходимо:​ Для этого необходимо:​
Строка 2810: Строка 2818:
 Отображение чётной страницы в первом поле и нечётной страницы во втором поле можно получить,​ выполнив следующее:​ Отображение чётной страницы в первом поле и нечётной страницы во втором поле можно получить,​ выполнив следующее:​
 1) установить бит IL (третий бит регистра с номером 9) в 1; 1) установить бит IL (третий бит регистра с номером 9) в 1;
-2) установить бит ​ЕО (второй бит регистра с номером 9) в 1;+2) установить бит ​EO (второй бит регистра с номером 9) в 1;
 3) задать базовый адрес Таблицы имён шаблонов нечётной страницы (регистр с номером 2). 3) задать базовый адрес Таблицы имён шаблонов нечётной страницы (регистр с номером 2).
  
Строка 2879: Строка 2887:
  
 На компьютерах [[msx:​msx_2]] по умолчанию "​содержимое"​ регистра с номером 18 по умолчанию задаётся оператором На компьютерах [[msx:​msx_2]] по умолчанию "​содержимое"​ регистра с номером 18 по умолчанию задаётся оператором
 +<WRAP group>
 +<WRAP half column>
 <​code>​ <​code>​
 SET ADJUST (X,Y) SET ADJUST (X,Y)
 </​code>​ </​code>​
 +</​WRAP>​
 +.
 +<WRAP half column>
 +
 +</​WRAP>​
 +</​WRAP>​
 +
 Значения выражений X и Y принадлежат отрезку [-7,8]. Значения выражений X и Y принадлежат отрезку [-7,8].
 </​WRAP>​ </​WRAP>​
Строка 2927: Строка 2944:
 </​code>​ </​code>​
  
-В //​графических//​ режимах регистр с номером 23 предоставляет другую интересную возможность. Вначале следует вспомнить,​ что доступная высота графического экрана равна 192 или 212 линиям (в зависимости от девятого регистра VDP). ОднакоВы можете,​ воздействуя на VRAM (используя,​ например,​ оператор ''​VPOKE''​),​ сформировать шаблоны 256 линий, просмотрев которые Вы можете,​ использовав регистр с номером 23. Понять,​ как это происходит,​ Вы можете из следующих рисунков:​+В //​графических//​ режимах регистр с номером 23 предоставляет другую интересную возможность. Вначале следует вспомнить,​ что доступная высота графического экрана равна 192 или 212 линиям (в зависимости от девятого регистра VDP). Однако Вы можете,​ воздействуя на VRAM (используя,​ например,​ оператор ''​VPOKE''​),​ сформировать шаблоны 256 линий, просмотрев которые Вы можете,​ использовав регистр с номером 23. Понять,​ как это происходит,​ Вы можете из следующих рисунков:​
  
 <​code>​ <​code>​
Строка 3030: Строка 3047:
 </​WRAP>​ </​WRAP>​
  
-<WRAP centeralign>​Данные в 17–ом регистре не могут быть изменены косвенной адресацией!</​WRAP>​+<WRAP centeralign>​Данные в 17–м регистре не могут быть изменены косвенной адресацией!</​WRAP>​
  
 {{anchor:​n1126}} {{anchor:​n1126}}
Строка 3092: Строка 3109:
             └────────── 01 — признак записи             └────────── 01 — признак записи
 </​code>​ </​code>​
-  - А теперь остаётся прочитать или записать данные в нужный байт: <​code>​+  - а теперь остаётся прочитать или записать данные в нужный байт: <​code>​
 A=INP(&​H98) — чтение A=INP(&​H98) — чтение
 OUT &​H98,​A ​ — запись OUT &​H98,​A ​ — запись
 </​code>​ </​code>​
-  - После чтения или записи данных содержимое адресного счётчика автоматически увеличивается на единицу. При этом, если есть перенос из бита A13, то в режимах ''​SCREEN''​ 4–8 происходит увеличение содержимого регистра с номером 14. В режимах ''​SCREEN''​ 1–3 и в 40–символьном режиме ''​SCREEN 0''​ увеличения содержимого 14–го регистра не происходит.+  - после чтения или записи данных содержимое адресного счётчика автоматически увеличивается на единицу. При этом, если есть перенос из бита A13, то в режимах ''​SCREEN''​ 4–8 происходит увеличение содержимого регистра с номером 14. В режимах ''​SCREEN''​ 1–3 и в 40–символьном режиме ''​SCREEN 0''​ увеличения содержимого 14–го регистра не происходит.
  
 Из сказанного следует,​ что если нужно записать информацию в несколько подряд расположенных ячеек видеопамяти,​ достаточно установить лишь начальный адрес этой группы ячеек. Из сказанного следует,​ что если нужно записать информацию в несколько подряд расположенных ячеек видеопамяти,​ достаточно установить лишь начальный адрес этой группы ячеек.
Строка 3103: Строка 3120:
 ==== XI.2.7. Регистры статуса ==== ==== XI.2.7. Регистры статуса ====
  
-Кроме регистров VDP, видеопроцессор работает с группой регистров,​ называемыми регистрами //​статуса//​. ​Данные ​регистры содержат информацию о состоянии видеопроцессора. Из них информацию можно только //​читать//​.+Кроме регистров VDP, видеопроцессор работает с группой регистров,​ называемыми регистрами //​статуса//​. ​Эти ​регистры содержат информацию о состоянии видеопроцессора. Из них информацию можно только //​читать//​.
  
 Текущий номер регистра статуса записывается в регистр VDP с номером //​пятнадцать//​ (регистр–указатель регистра состояния). Текущий номер регистра статуса записывается в регистр VDP с номером //​пятнадцать//​ (регистр–указатель регистра состояния).
Строка 3112: Строка 3129:
 Для доступа к регистрам //​состояния//​ видеопроцессора (с номерами 0,​1,​2,​3,​…,​9) вначале нужно установить номер регистра статуса в регистре с номером 15, а затем прочесть данные через порт &H99. Для доступа к регистрам //​состояния//​ видеопроцессора (с номерами 0,​1,​2,​3,​…,​9) вначале нужно установить номер регистра статуса в регистре с номером 15, а затем прочесть данные через порт &H99.
  
-Для записи в переменную W числа из регистра статуса с номером Sвыполните следующие действия:​+Для записи в переменную W числа из регистра статуса с номером S выполните следующие действия:​
 <​code>​ <​code>​
 VDP(15+1)=S:​W=INP(&​H99):​VDP(15+1)=0 VDP(15+1)=S:​W=INP(&​H99):​VDP(15+1)=0
Строка 3127: Строка 3144:
     │      │     ​│ ​       └ Экранный номер пятого или девятого     │      │     ​│ ​       └ Экранный номер пятого или девятого
     │      │     ​│ ​         (в зависимости от режима SCREEN) спрайта в строке     │      │     ​│ ​         (в зависимости от режима SCREEN) спрайта в строке
-    │      │     ​└─── Флаг, указывающий на столкновение 2–х спрайтов+    │      │     ​└─── Флаг, указывающий на столкновение 2 спрайтов
     │      │     │      │
     │      └───────── Флаг обнаружения пятого (или девятого) спрайта в строке     │      └───────── Флаг обнаружения пятого (или девятого) спрайта в строке
Строка 3170: Строка 3187:
 <​code>​ <​code>​
 10 SCREEN1,2 10 SCREEN1,2
-20 SPRITE$(1)="​Проверка":​SPRITE$(2)="​появления":​SPRITE$(3)="​пятого":​SPRITE$(4)="​спрайта":​SPRITE$(5)="​в строке"​+20 SPRITE$(1)="​Проверка":​SPRITE$(2)="​появления":​SPRITE$(3)="​пятого":​ 
 +   SPRITE$(4)="​спрайта":​SPRITE$(5)="​в строке"​
 30 PUT SPRITE0,​(10,​80),,​5:​PUT SPRITE1,​(20,​80),,​4:​PUT SPRITE2,​(30,​80),,​3:​PUT SPRITE3,​(40,​80),,​2 30 PUT SPRITE0,​(10,​80),,​5:​PUT SPRITE1,​(20,​80),,​4:​PUT SPRITE2,​(30,​80),,​3:​PUT SPRITE3,​(40,​80),,​2
 40 VDP(15+1)=0:​Z=INP(&​H99) 40 VDP(15+1)=0:​Z=INP(&​H99)
Строка 3177: Строка 3195:
 60 PUT SPRITE4,​(50,​80),,​1 60 PUT SPRITE4,​(50,​80),,​1
 70 VDP(15+1)=0:​Z=INP(&​H99) 70 VDP(15+1)=0:​Z=INP(&​H99)
-80 ? RIGHT$("​00000000"​+BIN$(Z),​8);"​◀─ Появился 5-ый спрайт в строке!"​+80 ? RIGHT$("​00000000"​+BIN$(Z),​8);"​◀─ Появился 5-й спрайт в строке!"​
 </​code>​ </​code>​
  
Строка 3211: Строка 3229:
 <WRAP group 99%> <WRAP group 99%>
 <WRAP half column> \\ </​WRAP>​ <WRAP half column> \\ </​WRAP>​
-<WRAP half column><​WRAP ​justify>+<WRAP half column><​WRAP ​right>
 Боги открыли людям не все.\\ Боги открыли людям не все.\\
 В поиск пустившись,​ люди сами открыли немало. В поиск пустившись,​ люди сами открыли немало.
Строка 3293: Строка 3311:
 </​WRAP>​ </​WRAP>​
  
-{{anchor:​e1132-00}}Однако прежде чем начать "​работать"​ в этом режиме,​ его надо инициализировать следующим образом:​+{{anchor:​e1132-00}}Однакопрежде чем начать "​работать"​ в этом режиме,​ его надо инициализировать следующим образом:​
 \\ {{.examples:​1132-00.bas|}} \\ [[+tab|wmsxbpge>​1132-00.bas]] \\ {{.examples:​1132-00.bas|}} \\ [[+tab|wmsxbpge>​1132-00.bas]]
 <​code>​ <​code>​
Строка 3316: Строка 3334:
 100 CLEAR 100,&​HD000 100 CLEAR 100,&​HD000
 110 SCREEN 1:WIDTH 32:​DEFUSR=&​H7E:​A=USR(0) 110 SCREEN 1:WIDTH 32:​DEFUSR=&​H7E:​A=USR(0)
-120 A$="21000011BF1B1ACD1CD03EF0CBECCD1CD0CBAC13237CD608C206D0C947CD4D00CBDC78CD4D00CB9CCBE478CD4D00CBA4C9"+120 A$="21000011BF1B1ACD1CD03EF0CBECCD1CD0CBAC13237CD608C 
 +        206D0C947CD4D00CBDC78CD4D00CB9CCBE478CD4D00CBA4C9"
 130 FOR X=0 TO 48:POKE &​HD000+X,​VAL("&​h"​+MID$(A$,​X*2+1,​2)):​NEXT 130 FOR X=0 TO 48:POKE &​HD000+X,​VAL("&​h"​+MID$(A$,​X*2+1,​2)):​NEXT
 140 DEFUSR=&​HD000:​A=USR(0) 140 DEFUSR=&​HD000:​A=USR(0)
Строка 3359: Строка 3378:
 |  &​H1A00 ​ |Таблица имён образов (строки 16–23)| |  &​H1A00 ​ |Таблица имён образов (строки 16–23)|
 |  &​H1B00 ​ |Таблица атрибутов спрайтов| |  &​H1B00 ​ |Таблица атрибутов спрайтов|
-|  &​H2000 ​ |Таблица цветов символов,​ расположенных с 0–ой по 7–ю строку.\\ На каждый символ отводится 8 байтов. На каждую строку символа отводится 1 байт, старший полубайт которого отвечает за цвет установленных бит в Таблице шаблонов символов| +|  &​H2000 ​ |Таблица цветов символов,​ расположенных с 0–й по 7–ю строку.\\ На каждый символ отводится 8 байтов. На каждую строку символа отводится 1 байт, старший полубайт которого отвечает за цвет установленных бит в Таблице шаблонов символов| 
-|  &​H2800 ​ |Таблица цветов символов,​ расположенных с 8–ой по 15–ю строку| +|  &​H2800 ​ |Таблица цветов символов,​ расположенных с 8–й по 15–ю строку| 
-|  &​H3000 ​ |Таблица цветов символов,​ расположенных с 16–ой по 23–ю строку|+|  &​H3000 ​ |Таблица цветов символов,​ расположенных с 16–й по 23–ю строку|
 |  &​H3800 ​ |Таблица шаблонов спрайтов| |  &​H3800 ​ |Таблица шаблонов спрайтов|
 </​WRAP>​ </​WRAP>​
   - В режиме ''​SCREEN''​ 1–2 разрешено использование как текстовых,​так и графических операторов,​ т.е. "​совмещённый"​ режим ''​SCREEN''​ 1–2 может находиться в двух "​состояниях"​.   - В режиме ''​SCREEN''​ 1–2 разрешено использование как текстовых,​так и графических операторов,​ т.е. "​совмещённый"​ режим ''​SCREEN''​ 1–2 может находиться в двух "​состояниях"​.
  
-//​Во–первых//,​ это — //​текстовый//​ режим.В нем "​работают"​ все операторы текстового экрана. Однакоон отличается от текстового режима ''​SCREEN 1''​ в следующих моментах:​+//​Во–первых//,​ это — //​текстовый//​ режим.В нем "​работают"​ все операторы текстового экрана. Однако он отличается от текстового режима ''​SCREEN 1''​ в следующих моментах:​
   - весь экран разбит на //три// горизонтальных окна;   - весь экран разбит на //три// горизонтальных окна;
   - символ,​ вообще говоря,​ раскрашен //​одновременно//​ в 16 цветов (по два цвета на линию);​   - символ,​ вообще говоря,​ раскрашен //​одновременно//​ в 16 цветов (по два цвета на линию);​
Строка 3468: Строка 3487:
 в какой — писать. в какой — писать.
  
-Для тогочтобы рисовать в какой–либо части экрана,​ её надо предварительно подготовить следующим образом:​+Для того чтобы рисовать в какой–либо части экрана,​ её надо предварительно подготовить следующим образом:​
 <WRAP group> <WRAP group>
 <WRAP half column> <WRAP half column>
Строка 3485: Строка 3504:
 Таким образом,​ Вы инициализируете участки Таблиц PNT, CT и PGT, отвечающие за изображение в нужном окне экрана. Таким образом,​ Вы инициализируете участки Таблиц PNT, CT и PGT, отвечающие за изображение в нужном окне экрана.
  
-Теперь в приготовленной части экрана можно применять графические операторы. Однакоих можно применять только после выполнения оператора:​+Теперь в приготовленной части экрана можно применять графические операторы. Однако их можно применять только после выполнения оператора:​
 <WRAP group> <WRAP group>
 <WRAP half column> <WRAP half column>
Строка 3512: Строка 3531:
  
 Нужно постоянно помнить о том, что Ваши рисунки могут "​портиться",​ так как любой символ,​ напечатанный в графической части экрана,​ портит рисунок. Нужно постоянно помнить о том, что Ваши рисунки могут "​портиться",​ так как любой символ,​ напечатанный в графической части экрана,​ портит рисунок.
-Однакорисунок можно восстановить,​ применив операторы:​+Однако рисунок можно восстановить,​ применив операторы:​
 <​code>​ <​code>​
 FOR T=0 TO 255:VPOKE BASE(5)+256*N+T,​T:​NEXT FOR T=0 TO 255:VPOKE BASE(5)+256*N+T,​T:​NEXT
Строка 3552: Строка 3571:
 </​code>​ </​code>​
  
-Все сказанное о режиме ''​SCREEN''​ 1–2распространяется и на режим ''​SCREEN''​ 1–4. Остаётся только добавить,​ что структура видеопамяти в "​совмещённом"​ режиме ''​SCREEN''​ 1–4 полностью совпадает со структурой VRAM в режиме ''​SCREEN 4''​ для компьютеров серии [[msx:​msx_1]].+Все сказанное о режиме ''​SCREEN''​ 1–2 распространяется и на режим ''​SCREEN''​ 1–4. Остаётся только добавить,​ что структура видеопамяти в "​совмещённом"​ режиме ''​SCREEN''​ 1–4 полностью совпадает со структурой VRAM в режиме ''​SCREEN 4''​ для компьютеров серии [[msx:​msx_1]].
  
 {{anchor:​examples11}} {{anchor:​examples11}}
msx/basic_dialogue_programming_language/011.1664617672.txt.gz · Последние изменения: 2022-10-01 12:47 — GreyWolf