Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
msx:msx2_programming_technique:msx2_programming_technique [2023-02-04 22:55] GreyWolf [MSX-DOS: минимальные сведения] |
msx:msx2_programming_technique:msx2_programming_technique [2023-02-04 23:28] (текущий) GreyWolf [Видеопроцессор (VDP) MSX-VIDEO] |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
====== 📖 MSX2: Техника программирования ====== | ====== 📖 MSX2: Техника программирования ====== | ||
+ | FIXME | ||
Олег Шамшура 1989-1990 | Олег Шамшура 1989-1990 | ||
Строка 5: | Строка 6: | ||
{{:msx:msx2_programming_technique:oleg_shamshura-msx2doc.zip|Исходные файлы}} | {{:msx:msx2_programming_technique:oleg_shamshura-msx2doc.zip|Исходные файлы}} | ||
- | Любой микропроцессор (в том числе Z80, на котором строится компьютер MSX/MSX2), имеет достаточно развитую систему команд, предписывающих ему то или иное действие. К числу таких команд обычно относятся: сложение, вычитание, условные и безусловные переходы, работа с памятью, логические операции над битами и пр. Фактически, команда - это определенный числовой код, который активизирует соответствующие счетно-логические схемы микропроцессора. | + | Любой микропроцессор (в том числе Z80, на котором строится компьютер MSX/MSX2), имеет достаточно развитую систему команд, предписывающих ему то или иное действие. К числу таких команд обычно относятся: сложение, вычитание, условные и безусловные переходы, работа с памятью, логические операции над битами и пр. Фактически, команда — это определенный числовой код, который активизирует соответствующие счетно-логические схемы микропроцессора. |
Последовательность таких кодов, совместно с числовыми и символьными операндами, образует программу. Несмотря на примитивный характер команд, с их помощью можно построить алгоритм любой сложности (например, интерпретатор языка BASIC). | Последовательность таких кодов, совместно с числовыми и символьными операндами, образует программу. Несмотря на примитивный характер команд, с их помощью можно построить алгоритм любой сложности (например, интерпретатор языка BASIC). | ||
Строка 16: | Строка 17: | ||
Таким образом, процесс разбивается на несколько последовательных этапов: | Таким образом, процесс разбивается на несколько последовательных этапов: | ||
* исходный текст набирается в любом экранном РЕДАКТОРЕ; | * исходный текст набирается в любом экранном РЕДАКТОРЕ; | ||
- | * затем АССЕМБЛЕР превращает его в готовую к исполнению программу или промежуточный REL-файл (это зависит от версии ассемблера). Во втором случае REL-файлы, имеющие отношение к одному проекту, сцепляются воедино при помощи КОМПОНОВЩИКА. (Такой подход удобен при создании крупных проектов, содержащих десятки тысяч команд: он позволяет разрабатывать программу по частям, не затрагивая уже завершенных фрагментов). В процессе ассемблирования/компоновки выявляются грубые синтаксические ошибки; | + | * затем АССЕМБЛЕР превращает его в готовую к исполнению программу или промежуточный REL–файл (это зависит от версии ассемблера). Во втором случае REL–файлы, имеющие отношение к одному проекту, сцепляются воедино при помощи КОМПОНОВЩИКА. (Такой подход удобен при создании крупных проектов, содержащих десятки тысяч команд: он позволяет разрабатывать программу по частям, не затрагивая уже завершенных фрагментов). В процессе ассемблирования/компоновки выявляются грубые синтаксические ошибки; |
* полученная программа тестируется в ОТЛАДЧИКЕ или непосредственно, и при необходимости весь процесс повторяется. | * полученная программа тестируется в ОТЛАДЧИКЕ или непосредственно, и при необходимости весь процесс повторяется. | ||
- | В отличие от MSX-BASIC-интерпретатора, который "видит" ошибки только в том операторе, который исполняется в текущий момент, ассемблер обрабатывает весь текст программы целиком, | + | В отличие от [[msx:basic:]]–интерпретатора, который "видит" ошибки только в том операторе, который исполняется в текущий момент, ассемблер обрабатывает весь текст программы целиком, |
включая и те ветви алгоритма, которые, возможно, никогда не будут пройдены микропроцессором. Поэтому исходный текст должен быть закончен хотя бы формально: всем переходам должны соответствовать метки, незавершенные подпрограммы следует заменить "заглушками", все константы нужно задать и т.д. | включая и те ветви алгоритма, которые, возможно, никогда не будут пройдены микропроцессором. Поэтому исходный текст должен быть закончен хотя бы формально: всем переходам должны соответствовать метки, незавершенные подпрограммы следует заменить "заглушками", все константы нужно задать и т.д. | ||
Строка 68: | Строка 69: | ||
====== MSX-DOS: минимальные сведения ====== | ====== MSX-DOS: минимальные сведения ====== | ||
- | <code> | + | Любая работа начинается с запуска DOS: для этого достаточно вставить диск с файлами ''MSXDOS.SYS'' и ''COMMAND.COM'' в дисковод "А" и включить питание компьютера. |
- | + | ||
- | Любая работа начинается с запуска DOS: для этого достаточно вставить диск с файлами ''MSXDOS.SYS'' и ''COMMAND.COM'' в дисковод "А" и включить питание компьютера. | + | |
- | Первым с диска считывается файл ''MSXDOS.SYS'', который реорганизует память компьютера, предоставляя в Ваше распоряжение 64K ОЗУ. Затем загружается файл ''COMMAND.COM'', который бу- | + | Первым с диска считывается файл ''MSXDOS.SYS'', который реорганизует память компьютера, предоставляя в Ваше распоряжение 64K ОЗУ. Затем загружается файл ''COMMAND.COM'', который будет принимать с клавиатуры команды DOS, разбирать их и обращаться к [[msx:dos:|]], зашитой в постоянную память компьютера. |
- | дет принимать с клавиатуры команды DOS, разбирать их и обращаться к [[msx:dos:|]], зашитой в постоянную память компьютера. | + | |
Индикатором успешного запуска системы служит "приглашение" ''А>''. Буква перед угловой скобкой обозначает текущий дисковод. | Индикатором успешного запуска системы служит "приглашение" ''А>''. Буква перед угловой скобкой обозначает текущий дисковод. | ||
- | В большинстве современных дисковых операционных систем, как и в [[msx:dos:|]], имя файла имеет следующий вид: код дисковода (латинская буква с двоеточием), собственно имя (до 8 сим- | + | В большинстве современных дисковых операционных систем, как и в [[msx:dos:|]], имя файла имеет следующий вид: код дисковода (латинская буква с двоеточием), собственно имя (до 8 символов максимум), точка и расширение (до 3 символов). |
- | волов максимум), точка и расширение (до 3 символов). | + | |
В имя и расширение можно включать символы-джокеры "*" и "?". Звездочка "*" обозначает любую группу символов, а "?" — любой одиночный символ. Их используют, если нужно одним именем охватить несколько файлов одновременно. | В имя и расширение можно включать символы-джокеры "*" и "?". Звездочка "*" обозначает любую группу символов, а "?" — любой одиночный символ. Их используют, если нужно одним именем охватить несколько файлов одновременно. | ||
Строка 102: | Строка 99: | ||
каталога. | каталога. | ||
- | Наконец, файл может содержать какой-либо текст. Строки текста хранятся в своем естественном виде; каждая строка заканчивается байтами 13 и 10, которые названы "возврат каретки" и "подача строки" соответственно. | + | Наконец, файл может содержать какой-либо текст. Строки текста хранятся в своем естественном виде; каждая строка заканчивается байтами 13 и 10, которые названы "возврат каретки" и "подача строки" соответственно. |
Признаком окончания текстового файла служит код <key>CTRL Z</key>, или, как это принято обозначать, ''^Z'', десятичное значение которого равно 26. | Признаком окончания текстового файла служит код <key>CTRL Z</key>, или, как это принято обозначать, ''^Z'', десятичное значение которого равно 26. | ||
Строка 108: | Строка 105: | ||
[[msx:dos:#v1|]] способна исполнять три вида команд: внутренние, внешние и пакетные. | [[msx:dos:#v1|]] способна исполнять три вида команд: внутренние, внешние и пакетные. | ||
- | ВНУТРЕННИЕ команды содержатся непосредственно в файле ''COMMAND.COM'', поэтому исполняются немедленно. Самые основные внутренние команды: | + | ВНУТРЕННИЕ команды содержатся непосредственно в файле ''COMMAND.COM'', поэтому исполняются немедленно. Самые основные внутренние команды: |
|''DIR''|просмотреть оглавление диска| | |''DIR''|просмотреть оглавление диска| | ||
|''TYPE''|распечатать содержимое файла| | |''TYPE''|распечатать содержимое файла| | ||
|''COPY''|скопировать файл| | |''COPY''|скопировать файл| | ||
|''FORMAT''|отформатировать диск| | |''FORMAT''|отформатировать диск| | ||
- | |''BASIC''|передать управление [[msx:basic:|]] (для возврата в DOS наберите ''_SYSTEM'')| | + | |''%%BASIC%%''|передать управление [[msx:basic:|]] (для возврата в DOS наберите ''_SYSTEM'')| |
|''DEL''|уничтожить файл| | |''DEL''|уничтожить файл| | ||
|''B:''|считать текущим дисковод ''B:''| | |''B:''|считать текущим дисковод ''B:''| | ||
Строка 132: | Строка 129: | ||
ПРИМЕЧАНИЕ. ''COPY'' может сцепить несколько файлов в один, если между их именами указан знак '+'. Для правильной сцепки текстовых файлов необходимо после каждого имени ставить ключ ''/A''. Прочие файлы должны сцепляться по ключу ''/B''. (Ключ управляет интерпретацией кода ''^Z''). | ПРИМЕЧАНИЕ. ''COPY'' может сцепить несколько файлов в один, если между их именами указан знак '+'. Для правильной сцепки текстовых файлов необходимо после каждого имени ставить ключ ''/A''. Прочие файлы должны сцепляться по ключу ''/B''. (Ключ управляет интерпретацией кода ''^Z''). | ||
- | <code> | + | Некоторые имена файлов зарезервированы и имеют неизменное значение, даже если попытаться снабдить их расширениями или кодами дисководов: |
- | Некоторые имена файлов зарезервированы и имеют неизменное значение, даже если попытаться снабдить их расширениями или кодами дискодов: | + | |''CON''|консоль (клавиатура при вводе, экран при выводе)| |
+ | |''LST'' и ''PRN''|принтер (только вывод)| | ||
+ | |''AUX'' и ''NUL''|несуществующее устройство (всегда возвращает признак конца файла, удобно при отладке)| | ||
- | CON - консоль (клавиатура при вводе, экран при выводе) | + | Это означает, что в среде [[msx:dos:#v1|]] с дисплеем, принтером или клавиатурой можно работать, как с обычным файлом: |
- | LST и PRN - принтер (только вывод) | + | \\ ''COPY PROG.TXT PRN'' — распечатать файл ''PROG.TXT'' на принтере |
- | AUX и NUL - несуществующее устройство (всегда возвращает признак конца файла, удобно при отладке) | + | |
- | Это означает, что в среде MSX-DOS с дисплеем, принтером | + | Можно, например, набирать тексты безо всяких редакторов (после каждой строки нажимайте клавишу RETURN): |
- | или клавиатурой можно работать, как с обычным файлом: | + | |
- | COPY PROG.TXT PRN - распечатать файл PROG.TXT на принтере | + | |''COPY CON A.BAT''|копировать с клавиатуры в файл ''A.BAT''| |
+ | |''DIR''|собственно текст| | ||
+ | |''^Z''|признак конца текстового файла <key>CTRL Z</key>| | ||
- | Можно, например, набирать тексты безo всяких редакторов | + | Под ВНЕШНЕЙ командой [[msx:dos:#v1|]] понимается любой файл, который имеет расширение ''COM''. Вызов внешней команды аналогичен запуску внутренней: нужно набрать имя файла (без ".COM") и через пробел перечислить параметры. Вызванная команда загружается с диска в память и получает управление, черпая параметры из специальной области. По окончании работы управление |
- | (после каждой строки нажимайте клавишу RETURN): | + | возвращается ''MSXDOS.SYS''. |
- | COPY CON A.BAT - копировать с клавиатуры в файл A.BAT | + | Осталось познакомиться с ПАКЕТНЫМИ командами — наиболее приятной сервисной возможностью DOS. Пакетная команда — это обычный текстовый файл, в каждой строке которого указана некоторая внутренняя, внешняя или пакетная команда. Основным отличием такого файла является расширение ''BAT''. |
- | DIR - собственно текст | + | |
- | ^Z - признак конца текстового файла CTRL Z | + | |
- | Под ВНЕШНЕЙ командой MSX-DOS понимается любой файл, ко- | + | Пакетная команда представляет собой своеобразную "программу", которая экономит Ваши усилия при многократном вызове одной и той же последовательности команд. Пример BAT–файла, |
- | торый имеет расширение COM. Вызов внешней команды аналогичен | + | содержащего единственную команду ''DIR'', приведен выше. |
- | запуску внутренней: нужно набрать имя файла (без ".COM") и | + | |
- | через пробел перечислить параметры. Вызванная команда загру- | + | |
- | жается с диска в память и получает управление, черпая пара- | + | |
- | метры из специальной области. По окончании работы управление | + | |
- | возвращается MSXDOS.SYS. | + | |
- | Осталось познакомиться с ПАКЕТНЫМИ командами - наиболее | + | Возможности пакетных команд обогащаются наличием команд ''REM'' (вывод комментария) и ''PAUSE'' (приостановка исполнения). |
- | приятной сервисной возможностью DOS. Пакетная команда - это | + | |
- | обычный текстовый файл, в каждой строке которого указана не- | + | Естественно, в пакетные команды тоже можно передавать параметры. Положение первого параметра отмечается в файле значком ''%1'', второго — ''%2'', ..., девятого — ''%9''. Имя самого |
- | которая внутренняя, внешняя или пакетная команда. Основыным | + | BAT—файла соответствует значку ''%0''. |
- | отличием такого файла является расширение BAT. | + | |
- | Пакетная команда представляет собой своеобразную "прог- | + | |
- | рамму", которая экономит Ваши усилия при многократном вызове | + | |
- | одной и той же последовательности команд. Пример BAT-файла, | + | |
- | содержащего единственную команду DIR, приведен выше. | + | |
- | Возможности пакетных команд обогащаются наличием команд | + | |
- | REM (вывод комментария) и PAUSE (приостановка исполнения). | + | |
- | Естественно, в пакетные команды тоже можно передавать | + | |
- | параметры. Положение первого параметра отмечается в файле | + | |
- | значком %1, второго - %2, ..., девятого - %9. Имя самого | + | |
- | BAT-файла соответствует значку %0. | + | |
- | </code> | + | |
====== Ассемблеры: минимальные сведения ====== | ====== Ассемблеры: минимальные сведения ====== | ||
Строка 439: | Строка 419: | ||
- | ====== BCD - aрифметика ====== | + | ====== BCD–aрифметика ====== |
- | <code> | + | |
- | Неистребимая приверженность человечества к десятичной | + | Неистребимая приверженность человечества к десятичной системе счисления породила странный гибрид — BCD–арифметику, которая почти полностью аналогична шестнадцатиричной, но за |
- | системе счисления породила странный гибрид - BCD-арифметику, | + | |
- | которая почти полностью аналогична шестнадцатиричной, но за | + | |
малым исключением: в ней наложен запрет на цифры А,B,...,F. | малым исключением: в ней наложен запрет на цифры А,B,...,F. | ||
- | Так, например, операция 88h + 04h дает вместо 8Ch число | ||
- | 92h. Сложение же чисел 99h и 01h приводит к результату 100h, | ||
- | от которого остается 00h плюс все прежние выкладки. | ||
- | Микропроцессор умеет оперировать BCD-числами; для этого | ||
- | в системе команд предусмотрена десятичная коррекция резуль- | ||
- | тата, которая должна выполняться вслед за сложением и вычи- | ||
- | танием (операции уменьшения и увеличения на 1 коррекции НЕ | ||
- | поддаются!): | ||
- | 1) 88h + 04h -> 8Ch - обычное сложение | + | Так, например, операция 88h + 04h дает вместо 8Ch число 92h. Сложение же чисел 99h и 01h приводит к результату 100h, от которого остается 00h плюс все прежние выкладки. |
- | 2) 8Ch -> 92h - десятичная коррекция | + | |
- | Следует понимать, что коррекция отнюдь не выполняет пе- | + | Микропроцессор умеет оперировать BCD—числами; для этого в системе команд предусмотрена десятичная коррекция результата, которая должна выполняться вслед за сложением и вычитанием (операции уменьшения и увеличения на 1 коррекции НЕ поддаются!): |
- | ревода из 16-ричной системы в десятичную. Если операнды со- | + | |88h + 04h -> 8Ch|обычное сложение| |
- | держат "запрещенные" цифры (A...F), результат коррекции ока- | + | |8Ch -> 92h|десятичная коррекция| |
- | зывается непредсказуемым. | + | |
- | </code> | + | Следует понимать, что коррекция отнюдь не выполняет перевода из 16—ричной системы в десятичную. Если операнды содержат "запрещенные" цифры (A...F), результат коррекции оказывается непредсказуемым. |
====== Многоразрядная арифметика ====== | ====== Многоразрядная арифметика ====== | ||
Строка 2091: | Строка 2058: | ||
====== BIOS ====== | ====== BIOS ====== | ||
- | <code> | ||
- | В каждый без исключения компьютер MSX2 встроено большое | ||
- | количество подпрограмм со стандартными правилами вызова, за- | ||
- | готовленных практически на любой случай жизни: | ||
- | - опрос мануальных устройств (клавиатуры, мыши, трекбо- | ||
- | ла, джойстика, светового пера, тач-панели и пр.); | ||
- | - работа с графикой (смена режимов экрана, точечно-век- | ||
- | торная и растровая графика, регулировка палитры, прямой дос- | ||
- | туп к VDP, спрайты, скоростные пересылки фрагментов, гашение | ||
- | дисплея и пр.); | ||
- | - ввод и вывод строк, управление координатами и стилем | ||
- | курсора; | ||
- | - музыкально-шумовые эффекты, битовый ввод-вывод звука, | ||
- | прямой доступ к AUDIO; | ||
- | - математический пакет (разбор выражений, арифметика с | ||
- | плавающей точкой, тригонометрия); | ||
- | - обслуживание слотов, принтера, видеотайзера, таймера; | ||
- | Этот набор носит сокращенное название BIOS и размещает- | + | В каждый без исключения компьютер MSX2 встроено большое количество подпрограмм со стандартными правилами вызова, заготовленных практически на любой случай жизни: |
- | ся в двух ROM, именуемых MAIN-ROM (есть и у MSX, и у MSX2) и | + | * опрос мануальных устройств (клавиатуры, мыши, трекбола, джойстика, светового пера, тач-панели и пр.); |
- | SUB-ROM (только у MSX2). Каждая ROM имеет стандартный список | + | * работа с графикой (смена режимов экрана, точечно-векторная и растровая графика, регулировка палитры, прямой доступ к VDP, спрайты, скоростные пересылки фрагментов, гашение |
- | входных точек, к которым и производится обращение. | + | * дисплея и пр.); |
- | BIOS составляет основу всей "философии MSX": если Ваша | + | * ввод и вывод строк, управление координатами и стилем курсора; |
- | программа все свои операции проводит строго через BIOS, она | + | * музыкально-шумовые эффекты, битовый ввод–вывод звука, прямой доступ к AUDIO; |
- | полностью застрахована от коллизий, связанных с переходом на | + | * математический пакет (разбор выражений, арифметика с плавающей точкой, тригонометрия); |
- | другую модель компьютера или непредвиденным изменением его | + | * обслуживание слотов, принтера, видеотайзера, таймера; |
- | конфигурации. | + | |
- | Доступ к входным точкам MAIN-ROM и SUB-ROM открывается, | + | Этот набор носит сокращенное название BIOS и размещается в двух ROM, именуемых [[msx:bios#main|MAIN-ROM]] (есть и у MSX, и у MSX2) и [[msx:bios#sub|SUB-ROM]] (только у MSX2). Каждая ROM имеет стандартный список входных точек, к которым и производится обращение. |
- | благодаря межслотовым процедурам. Требуемый номер слота для | + | |
- | MAIN-ROM содержится по адресу FCC1h, для SUB-ROM - по адресу | + | |
- | FAF8h, поэтому корректный вызов точки BIOS выглядит так: | + | |
+ | BIOS составляет основу всей "философии MSX": если Ваша программа все свои операции проводит строго через BIOS, она полностью застрахована от коллизий, связанных с переходом на | ||
+ | другую модель компьютера или непредвиденным изменением его конфигурации. | ||
+ | |||
+ | Доступ к входным точкам [[msx:bios#main|MAIN-ROM]] и [[msx:bios#sub|SUB-ROM]] открывается,благодаря межслотовым процедурам. Требуемый номер слота для [[msx:bios#main|MAIN-ROM]] содержится по адресу FCC1h, для [[msx:bios#sub|SUB-ROM]] — по адресу | ||
+ | FAF8h, поэтому корректный вызов точки BIOS выглядит так: | ||
+ | <code> | ||
; вызов подпрограммы из MAIN-ROM | ; вызов подпрограммы из MAIN-ROM | ||
Строка 2135: | Строка 2087: | ||
ld iy,(0FAF7h) | ld iy,(0FAF7h) | ||
call 001Ch | call 001Ch | ||
- | |||
- | Кстати, машины MSX не имеют SUB-ROM, поэтому в их ячей- | ||
- | ке FAF8h содержится 0, что позволяет отличать их от MSX2. | ||
- | |||
- | Важно отчетливо осознавать, что стандартом закреплены | ||
- | только адреса входных точек, правила их вызова и выполняемые | ||
- | ими действия, в то время как расположение и содержание самих | ||
- | подпрограмм имеет право изменяться от машины к машине: в том | ||
- | и заключается миссия BIOS, чтобы компенсировать аппаратные | ||
- | различия компьютеров программным путем. | ||
- | Попутно заметим, что интерпретатор языка BASIC не явля- | ||
- | ется частью BIOS (как и любая другая программа, содержащаяся | ||
- | во внешнем или резидентном катридже), поэтому любые адреса и | ||
- | процедуры в теле BASIC-ROM имеют право радикально изменяться | ||
- | вместе с моделью компьютера. | ||
</code> | </code> | ||
+ | Кстати, машины MSX не имеют SUB-ROM, поэтому в их ячейке FAF8h содержится 0, что позволяет отличать их от MSX2. | ||
+ | Важно отчетливо осознавать, что стандартом закреплены только адреса входных точек, правила их вызова и выполняемые ими действия, в то время как расположение и содержание самих | ||
+ | подпрограмм имеет право изменяться от машины к машине: в том и заключается миссия BIOS, чтобы компенсировать аппаратные различия компьютеров программным путем. | ||
+ | |||
+ | Попутно заметим, что интерпретатор языка [[msx:basic:|]] не является частью BIOS (как и любая другая программа, содержащаяся во внешнем или резидентном катридже), поэтому любые адреса и процедуры в теле BASIC-ROM имеют право радикально изменяться вместе с моделью компьютера. | ||
====== Видеопроцессор (VDP) MSX-VIDEO ====== | ====== Видеопроцессор (VDP) MSX-VIDEO ====== | ||
- | <code> | + | |
- | Рассуждая о графических возможностях машин MSX2, трудно | + | Рассуждая о графических возможностях машин MSX2, трудно воздержаться от восхищенных эпитетов в адрес видеопроцессора (VDP) [[msx:yamaha_v9938:yamaha_v9938|V9938]] MSX-VIDEO, благодаря которому компьютеры MSX2 не уступили в мультипликационной графике мощным 16/32-разрядным |
- | воздержаться от восхищенных эпитетов в адрес видеопроцессора | + | |
- | (VDP) V9938 MSX-VIDEO, благодаря которому компьютеры MSX2 не | + | |
- | уступили в мультипликационной графике мощным 16/32-разрядным | + | |
персональным машинам. | персональным машинам. | ||
- | MSX-VIDEO - это не просто графический адаптер, задача | ||
- | которого сводится только лишь к отображению памяти на экран. | ||
- | Это независимый процессор, самостоятельно выполняющий массу | ||
- | специфических операций, для обстоятельного изучения которых | ||
- | нужен отдельный разговор. Попытаемся хотя бы перечислить их. | ||
- | MSX-VIDEO синтезирует экранное изображение на основе | + | MSX-VIDEO — это не просто графический адаптер, задача которого сводится только лишь к отображению памяти на экран. |
- | данных, находящихся в отдельной видеопамяти (VRAM), выдавая | + | Это независимый процессор, самостоятельно выполняющий массу специфических операций, для обстоятельного изучения которых нужен отдельный разговор. Попытаемся хотя бы перечислить их. |
- | на разъемы сигнал RGB и композитный телесигнал в стандарте | + | |
- | PAL или NTSC. Он имеет 2 текстовых и 8 графических режимов, | + | |
- | близких по характеристикам к адаптерам CGA, EGA и VGA. Его | + | |
- | цветовая палитра содержит 512 градаций, причем на экране мо- | + | |
- | гут сосуществовать 256 цветов. Благодаря режиму interlace, | + | |
- | максимальная дискретность достигает 512 x 424. | + | |
- | MSX-VIDEO умеет самостоятельно рисовать точки, отрезки, | + | |
- | прямоугольники и переносить фрагменты изображений, выполняя | + | |
- | разнообразные операции над цветами. Исключительно компактная | + | |
- | знакоместная графика позволяет упаковать в RAM изображение, | + | |
- | превосходящее площадь экрана в сотни раз, а в сочетании со | + | |
- | спрайтами обеспечивает высокоскоростную мультипликацию. | + | |
- | VDP может изменять цвет рамки экрана, гасить и включать | + | |
- | экран, плавно скроллировать его в вертикальном направлении, | + | |
- | генерировать прерывания в заданной строке развертки, мерцать | + | |
- | символами, автоматически переключать страницы VRAM, смещать | + | |
- | изображение относительно экранных границ, регистрировать на- | + | |
- | ложение спрайтов, переходить в монохромный режим, изменять | + | |
- | частоту развертки, оцифровывать внешний сигнал, смешивать с | + | |
- | ним свой сигнал и многое другое. | + | |
- | Поскольку VDP имеет 39 внутренних управляющих регистров | + | MSX-VIDEO синтезирует экранное изображение на основе данных, находящихся в отдельной видеопамяти (VRAM), выдавая на разъемы сигнал RGB и композитный телесигнал в стандарте |
- | (со сложным битовым форматом), целесообразно оставить заботу | + | PAL или NTSC. Он имеет 2 текстовых и 8 графических режимов, близких по характеристикам к адаптерам CGA, EGA и VGA. Его цветовая палитра содержит 512 градаций, причем на экране мо- |
- | обо всех тонкостях управления VDP процедурам BIOS и заняться | + | гут сосуществовать 256 цветов. Благодаря режиму interlace, максимальная дискретность достигает 512×424. |
+ | |||
+ | MSX-VIDEO умеет самостоятельно рисовать точки, отрезки, прямоугольники и переносить фрагменты изображений, выполняя разнообразные операции над цветами. Исключительно компактная | ||
+ | знакоместная графика позволяет упаковать в RAM изображение, превосходящее площадь экрана в сотни раз, а в сочетании со спрайтами обеспечивает высокоскоростную мультипликацию. | ||
+ | |||
+ | VDP может изменять цвет рамки экрана, гасить и включать экран, плавно скроллировать его в вертикальном направлении, генерировать прерывания в заданной строке развертки, мерцать символами, автоматически переключать страницы VRAM, смещать изображение относительно экранных границ, регистрировать наложение спрайтов, переходить в монохромный режим, изменять частоту развертки, оцифровывать внешний сигнал, смешивать с ним свой сигнал и многое другое. | ||
+ | |||
+ | Поскольку VDP имеет 39 внутренних управляющих регистров (со сложным битовым форматом), целесообразно оставить заботу обо всех тонкостях управления VDP процедурам BIOS и заняться | ||
более общими принципами графики MSX2. | более общими принципами графики MSX2. | ||
- | </code> | ||
====== Структура видеопамяти (VRAM) ====== | ====== Структура видеопамяти (VRAM) ====== |