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

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


msx:msx2_programming_technique:msx2_programming_technique

Различия

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

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

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
msx:msx2_programming_technique:msx2_programming_technique [2023-02-04 22:24]
GreyWolf [Инструментарий]
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:​]]–интерпретатора,​ который "​видит"​ ошибки только в том операторе,​ который исполняется в текущий момент,​ ассемблер обрабатывает весь текст программы целиком,​
 включая и те ветви алгоритма,​ которые,​ возможно,​ никогда не будут пройдены микропроцессором. Поэтому исходный текст должен быть закончен хотя бы формально:​ всем переходам должны соответствовать метки, незавершенные подпрограммы следует заменить "​заглушками",​ все константы нужно задать и т.д. включая и те ветви алгоритма,​ которые,​ возможно,​ никогда не будут пройдены микропроцессором. Поэтому исходный текст должен быть закончен хотя бы формально:​ всем переходам должны соответствовать метки, незавершенные подпрограммы следует заменить "​заглушками",​ все константы нужно задать и т.д.
  
Строка 46: Строка 47:
 Файлы ''​MSXDOS.SYS''​ и ''​COMMAND.COM''​ находятся на одноименном диске, входящем в комплект Вашего компьютера. Файлы ''​MSXDOS.SYS''​ и ''​COMMAND.COM''​ находятся на одноименном диске, входящем в комплект Вашего компьютера.
  
-     Теперь об ассемблере и других инструментах.+Теперь об ассемблере и других инструментах.
  
 Чтобы постичь основы,​ достаточно приобрести пакет [[msx:​duad:​duad|]],​ который содержит в себе все необходимое. Чтобы постичь основы,​ достаточно приобрести пакет [[msx:​duad:​duad|]],​ который содержит в себе все необходимое.
Строка 68: Строка 69:
 ====== MSX-DOS: минимальные сведения ====== ====== MSX-DOS: минимальные сведения ======
  
-<​code>​ +Любая работа начинается с запуска DOS: для этого достаточно вставить диск с файлами ​''​MSXDOS.SYS'' ​и ''​COMMAND.COM'' ​в дисковод "​А"​ и включить питание компьютера.
-     Любая работа начинается с запуска DOS: для этого доста+
-точно вставить диск с файлами ​ MSXDOS.SYS ​ и  COMMAND.COM ​ в +
-дисковод "​А"​ и включить питание компьютера+
-     ​Первым с диска считывается файл MSXDOS.SYS, который ре- +
-организует память компьютера,​ предоставляя в Ваше распоряже- +
-ние 64K ОЗУ. Затем загружается файл COMMAND.COM,​ который бу- +
-дет принимать с клавиатуры команды DOS, разбирать их и обра- +
-щаться к MSX-DOS, зашитой в постоянную память компьютера. +
-     ​Индикатором успешного запуска системы служит "​приглаше- +
-ние"​ А>. Буква перед угловой скобкой обозначает текущий дис- +
-ковод.+
  
-     В большинстве современных ​дисковых операционных ​систем, +Первым с диска считывается файл ​''​MSXDOS.SYS'', ​который реорганизует ​память компьютера, предоставляя в Ваше распоряжение 64K ОЗУ. Затем загружается файл ''​COMMAND.COM''​который будет принимать с клавиатуры команды DOS, разбирать ​их и обращаться к [[msx:​dos:​|]],​ зашитой в постоянную память ​компьютера.
-как и в MSX-DOS, имя файла имеет следующий вид: ​код дисково+
-да (латинская буква с двоеточием), собственно имя (до 8 сим- +
-волов максимум), ​точка и расширение (до символов). +
-     В имя и расширение можно включать символы-джокеры "​*" ​и +
-"?"​. Звездочка "​*"​ обозначает ​любую группу ​символова "?"​ - +
-любой одиночный символ. Их используют, если ​нужно одним име- +
-нем охватить несколько файлов одновременно. +
-     ​Иногда некоторые элементы имени можно пропускать.+
  
-     Примеры: +Индикатором ​успешного запуска ​системы служит "​приглашение" ''​А>''​. Буква перед угловой скобкой ​обозначает текущий дисковод.
-*.*      - все файлы ​текущего ​дисковода +
-PROG.1 ​  - файл PROG.1 ​текущего дисковода +
-B:PROG.1 - файл PROG.1 дисковода B: +
-C:PROG.* - все файлы с именем PROG дисковода C: +
-*.TXT    - все файлы ​текущего ​дисковода с расширением TXT +
-???.*    - все файлы, имя которых содержит 3 символа+
  
-     Файлами могут быть: программы,​ массивы данных,​ дисковые +В большинстве современных дисковых операционных систем,​ как и в [[msx:​dos:​|]],​ имя файла имеет следующий вид: код дисковода (латинская буква с двоеточием),​ собственно имя (до 8 символов максимум),​ точка и расширение (до 3 символов). 
-подкаталоги или обычные тексты. + 
-     ​Формат программного файла продиктован особенностями той +В имя и расширение можно включать символы-джокеры "​*"​ и "?"​. Звездочка "​*"​ обозначает любую группу символов,​ а "?"​ — любой одиночный символ. Их используют,​ если нужно одним именем охватить несколько файлов одновременно. 
-операционной системы,​ в которой создавалась программа. Обыч+ 
-но такой файл содержит либо последовательность команд микро+Иногда некоторые элементы имени можно пропускать. 
-процессора,​ либо условные коды высокоуровневых операторов. + 
-     ​Структура файла данных полностью зависит от построившей +Примеры:​ 
-его программы:​ блоки данных могут разделяться условными бай+|''​*.*''​|все файлы текущего дисковода| 
-тами-ограничителями (например,​ запятой ","​),​ или иметь зара+|''​PROG.1''​|файл ''​PROG.1''​ текущего дисковода| 
-нее известную длину (тогда необходимость в разграничении от+|''​B:​PROG.1''​|файл ''​PROG.1''​ дисковода ''​B:''​| 
-падает). Наиболее изощренные программы могут работать с фай+|''​C:​PROG.*''​|все файлы с именем PROG дисковода ''​C:''​| 
-лом как с нерегулярной цепочкой битов. +|''​*.TXT''​|все файлы текущего дисковода с расширением ''​TXT''​| 
-     ​В файле может также храниться подкаталог диска, который +|''???​.*''​|все файлы, имя которых содержит 3 символа| 
-организуется наряду с основным каталогом для удобной класси+ 
-фикации файлов. ​MSX-DOS, из соображений совместимости,​ имеет +Файлами могут быть: программы,​ массивы данных,​ дисковые подкаталоги или обычные тексты. 
-кое-какие рудиментарные возможности для организации подката+ 
-логов, хотя они и остаются невостребованными. Структура под+Формат программного файла продиктован особенностями той операционной системы,​ в которой создавалась программа. Обычно такой файл содержит либо последовательность команд микропроцессора,​ либо условные коды высокоуровневых операторов. 
-каталога полностью повторяет структуру основного (корневого)+ 
 +Структура файла данных полностью зависит от построившей его программы:​ блоки данных могут разделяться условными байтамиограничителями (например,​ запятой ","​),​ или иметь заранее известную длину (тогда необходимость в разграничении отпадает). Наиболее изощренные программы могут работать с файлом как с нерегулярной цепочкой битов. 
 + 
 +В файле может также храниться подкаталог диска, который организуется наряду с основным каталогом для удобной классификации файлов. ​[[msx:​dos:#​v1|]], из соображений совместимости,​ имеет 
 +кое-какие рудиментарные возможности для организации подкаталогов,​ хотя они и остаются невостребованными. Структура подкаталога полностью повторяет структуру основного (корневого)
 каталога. каталога.
-     ​Наконец,​ файл может содержать какой-либо текст. ​ Строки 
-текста хранятся в своем естественном виде; каждая строка за- 
-канчивается байтами 13 и 10, которые названы "​возврат карет- 
-ки" и "​подача строки"​ соответственно. 
-     ​Признаком окончания текстового файла служит код CTRL Z, 
-или, как это принято обозначать,​ ^Z, десятичное значение ко- 
-торого равно 26. 
  
-     ​MSX-DOS способна исполнять три вида команд: внутренние, +Наконец, файл может ​содержать какой-либо текст. Строки текста хранятся в своем естественном ​виде; каждая строка заканчивается байтами 13 и 10которые названы "​возврат каретки" ​и "подача строки" соответственно.
-внешние и пакетные.+
  
-     ​ВНУТРЕННИЕ ​команды содержатся непосредственно  ​в  ​файле +Признаком ​окончания текстового файла служит код <​key>​CTRL Z</​key>​или, как ​это ​принято обозначать, ''​^Z'', ​десятичное ​значение которого равно 26.
-COMMAND.COMпоэтому исполняются немедленно. Самые ​ основные +
-внутренние команды:+
  
-     DIR - просмотреть оглавление диска +[[msx:​dos:#​v1|]] способна исполнять три вида команд: внутренние, внешние и пакетные.
-     TYPE - распечатать содержимое файла +
-     COPY - скопировать файл +
-     ​FORMAT - отформатировать диск +
-     BASIC - передать управление ​BASIC-интерпретатору +
-             ​(для возврата в DOS наберите _SYSTEM) +
-     DEL - уничтожить файл +
-     B: - считать текущим дисковод B: +
-     A: - считать ​текущим дисковод А:+
  
-     ​Параметры ​команд разделяются ​пробелом. +ВНУТРЕННИЕ ​команды содержатся непосредственно в файле ''​COMMAND.COM'',​ поэтому исполняются ​немедленно. Самые основные внутренние команды
-     Действие ​любой ​команды ​можно ​приостановить клавишей ^S, +|''​DIR''​|просмотреть оглавление диска| 
-прервать ​клавишей ^C. Подачей кода ^P можно включить эхо-пе- +|''​TYPE''​|распечатать содержимое файла| 
-чать на принтер, ^N - выключить.+|''​COPY''​|скопировать ​файл
 +|''​FORMAT''​|отформатировать диск| 
 +|''​%%BASIC%%''​|передать управление [[msx:​basic:​|]] (для возврата в DOS наберите ​''​_SYSTEM''​)| 
 +|''​DEL''​|уничтожить файл| 
 +|''​B:''​|считать ​текущим дисковод ''​B:''​| 
 +|''​A:''​|считать текущим дисковод ''​А:''​|
  
-     Примеры+Параметры команд разделяются пробелом.
-DIR +
-DIR *.REL +
-TYPE PROG.TXT +
-COPY B:PROG.1 C:      - с B: на C: +
-COPY B:​PROG.* ​        - с B: на текущий (несколько файлов) +
-COPY *.TXT B:​*.DOC ​   - с текущего на B: (смена расширения)+
  
-     ​ПРИМЕЧАНИЕ. COPY может сцепить несколько файлов в один, +Действие любой команды можно приостановить клавишей <​key>​CTRL s</​key>,​ прервать клавишей <​key>​CTRL c</key>. Подачей ​кода ''​^P''​ можно ​включить эхо-печать на принтер, ''​^N''​ — выключить.
-если ​между их именами указан знак '​+'​. Для ​правильной сцепки +
-текстовых файлов необходимо после каждого ​имени ставить ключ +
-/A. Прочие файлы должны сцепляться по ключу /B. (Ключ управ- +
-ляет ​интерпретацией кода ​^Z).+
  
-     ​Некоторые имена ​файлов зарезервированы и имеют неизмен- +Примеры: 
-ное значение, даже если попытаться снабдить их  ​расширениями +''​DIR''​ 
-или кодами дискодов:​+''​DIR *.REL''​ 
 +''​TYPE PROG.TXT''​ 
 +|''​COPY B:PROG.1 C:''​|с ''​B:'' ​на ''​C:''​| 
 +|''​COPY B:​PROG.*''​|с ''​B:''​ на текущий (несколько файлов)| 
 +|''​COPY *.TXT B:​*.DOC''​|с ​текущего на ''​B:''​ (смена расширения)|
  
-     CON - консоль ​(клавиатура при ​вводеэкран при выводе+ПРИМЕЧАНИЕ. ''​COPY''​ может сцепить ​несколько файлов в одинесли между их именами указан знак '​+'​. Для ​правильной сцепки текстовых файлов ​необходимо после каждого имени ставить ​ключ ''/​A''​. Прочие ​файлы должны сцепляться по ключу ''/​B''​. (Ключ управляет ​интерпретацией кода ''​^Z''​).
-     LST и PRN - принтер (только вывод+
-     ​AUX ​и NUL - несуществующее устройство сегда возвраща- +
- ет признак ​конца ​файла, удобно при ​отладке)+
  
-     Это означает, что в среде MSX-DOS с дисплеем, принтером +Некоторые имена файлов зарезервированы и имеют неизменное ​значение, даже если попытаться снабдить их расширениями или кодами ​дисководов:​ 
-или клавиатурой ​можно работать, как с обычным файлом:+|''​CON''​|консоль (клавиатура при вводе, экран при выводе)| 
 +|''​LST''​ и ''​PRN''​|принтер ​олько вывод)| 
 +|''​AUX'' ​и ''​NUL''​|несуществующее устройство (всегда возвращает признак конца файла, удобно при отладке)|
  
-COPY PROG.TXT PRN распечатать файл PROG.TXT на принтере+Это означает,​ что в среде [[msx:​dos:#​v1|]] с дисплеем,​ принтером или клавиатурой можно работать,​ как с обычным файлом:​ 
 +\\ ''​COPY PROG.TXT PRN''​ — распечатать файл ​''​PROG.TXT'' ​на принтере
  
-     Можно, например,​ набирать тексты безвсяких редакторов +Можно, например,​ набирать тексты безо всяких редакторов (после каждой строки нажимайте клавишу RETURN):
-(после каждой строки нажимайте клавишу RETURN):+
  
-COPY CON A.BAT копировать с клавиатуры в файл A.BAT +|''​COPY CON A.BAT''​|копировать с клавиатуры в файл ​''​A.BAT''​| 
-DIR            ​- ​собственно текст +|''​DIR''​|собственно текст| 
-^Z             - признак конца текстового файла CTRL Z+|''​^Z''​|признак конца текстового файла ​<key>CTRL Z</​key>​|
  
-     Под ВНЕШНЕЙ командой ​MSX-DOS ​понимается любой файл, ко+Под ВНЕШНЕЙ командой ​[[msx:​dos:#​v1|]] ​понимается любой файл, который имеет расширение ​''​COM''​. Вызов внешней команды аналогичен запуску внутренней:​ нужно набрать имя файла (без "​.COM"​) и через пробел перечислить параметры. Вызванная команда загружается с диска в память и получает управление,​ черпая параметры из специальной области. По окончании работы управление 
-торый имеет расширение COM. Вызов внешней команды аналогичен +возвращается ​''​MSXDOS.SYS''​.
-запуску внутренней:​ нужно набрать имя файла (без ​ "​.COM"​) ​ и +
-через пробел перечислить параметры. Вызванная команда загру+
-жается с диска в память и получает управление,​ черпая ​ пара+
-метры из специальной области. По окончании работы управление +
-возвращается MSXDOS.SYS.+
  
-     Осталось познакомиться с ПАКЕТНЫМИ командами ​наиболее +Осталось познакомиться с ПАКЕТНЫМИ командами ​— наиболее приятной сервисной возможностью DOS. Пакетная команда ​— это обычный текстовый файл, в каждой строке которого указана некоторая внутренняя,​ внешняя или пакетная команда. Основным отличием такого файла является расширение ​''​BAT''​
-приятной сервисной возможностью DOS. Пакетная команда ​-  ​это + 
-обычный текстовый файл, в каждой строке которого указана не+Пакетная команда представляет собой своеобразную "​программу",​ которая экономит Ваши усилия при многократном вызове одной и той же последовательности команд. Пример BATфайла,​ 
-которая внутренняя,​ внешняя или пакетная команда. ​ Основыным +содержащего единственную команду ​''​DIR''​, приведен выше. 
-отличием такого файла является расширение BAT. + 
-     ​Пакетная команда представляет собой своеобразную "​прог+Возможности пакетных команд обогащаются наличием команд ​''​REM'' ​(вывод комментария) и ''​PAUSE'' ​(приостановка исполнения).
-рамму",​ которая экономит Ваши усилия при многократном вызове +
-одной и той же последовательности команд. Пример ​ BAT-файла,​ +
-содержащего единственную команду DIR, приведен выше. +
-     ​Возможности пакетных команд обогащаются наличием команд +
-REM (вывод комментария) и PAUSE (приостановка исполнения). +
-     ​Естественно,​ в пакетные команды тоже ​ можно ​ передавать +
-параметры. Положение первого параметра ​ отмечается ​ в  файле +
-значком %1, второго - %2, ..., девятого ​ -  %9.  Имя ​ самого +
-BAT-файла соответствует значку %0. +
-</​code>​+
  
 +Естественно,​ в пакетные команды тоже можно передавать параметры. Положение первого параметра отмечается в файле значком ''​%1'',​ второго — ''​%2'',​ ..., девятого — ''​%9''​. Имя самого
 +BAT—файла соответствует значку ''​%0''​.
  
 ====== Ассемблеры:​ минимальные сведения ====== ====== Ассемблеры:​ минимальные сведения ======
Строка 472: Строка 419:
  
  
-====== BCD aрифметика ====== +====== BCDaрифметика ======
-<​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—числами;​ для этого в системе команд предусмотрена десятичная коррекция ​ результата, которая должна выполняться вслед ​за сложением и  вычитанием ​(операции уменьшения и увеличения на коррекции ​НЕ поддаются!): 
-ревода из 16-ричной системы в десятичную. Если операнды  со+|88h + 04h -> 8Ch|обычное сложение| 
-держат ​"запрещенные" цифры (A...F), ​результат коррекции ока+|8Ch -> 92h|десятичная коррекция|
-зывается непредсказуемым.+
  
-</​code>​+Следует понимать,​ что коррекция отнюдь не выполняет перевода из 16—ричной системы в десятичную. Если операнды ​ содержат "​запрещенные"​ цифры (A...F), результат коррекции оказывается непредсказуемым.
  
 ====== Многоразрядная арифметика ====== ====== Многоразрядная арифметика ======
  
-<​code>​ +Чтобы облегчить обработку многоразрядных чисел, введено понятие БИТА ПЕРЕНОСА. Бит переноса устанавливается в 1, если в процессе вычислений требуется перенести единицу в следующий байт, или "​занять"​ ее там. 
-     Чтобы облегчить обработку многоразрядных чисел, введено + 
-понятие БИТА ПЕРЕНОСА. Бит переноса устанавливается в 1, ес+Наличие команд сложения и вычитания,​ которые учитывают текущее состояние бита переноса,​ позволяет вести вычисление байт за байтом,​ оперируя величинами любой разрядности.
-ли в процессе вычислений требуется перенести единицу в  сле+
-дующий байт, или "​занять"​ ее там. +
-     ​Наличие команд сложения и вычитания,​ которые ​ учитывают +
-текущее состояние бита переноса,​ позволяет вести ​ вычисление +
-байт за байтом,​ оперируя величинами любой разрядности. +
-</​code>​+
  
 ====== Микропроцессор Z80 ====== ====== Микропроцессор Z80 ======
Строка 2130: Строка 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
  
Строка 2174: Строка 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 графических  режимов,​ +
-близких по характеристикам к адаптерам CGAEGA и  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) ======
Строка 3553: Строка 3434:
 ====== Системная область MSX2 ====== ====== Системная область MSX2 ======
  
-<​code>​ +Системная область располагается в третьей странице RAM, начиная с адреса F380h и содержит обширный набор переменных,​ которые используются BIOS и [[msx:​basic:​|]]–интерпретатором. Многие из этих переменных Вам уже хорошо известны.
-     Системная область располагается в третьей странице RAM, +
-начиная с адреса F380h и содержит обширный набор переменных,​ +
-которые используются BIOS и BASIC-интерпретатором. Многие из +
-этих переменных Вам уже хорошо известны. +
-     ​Перед системной областью,​ в этой же странице,​ размещены +
-рабочее пространство DOS и аппаратный стек, размеры ​ которых +
-могут изменяться,​ поэтому предельный адрес пользовательского +
-пространства нужно уточнять с помощью ячейки 0006h. +
-     ​Программист должен следить,​ чтобы системная страница не +
-отключилась в результате некорректного обращения со  слотами +
-или мэппером,​ иначе это приведет к зависанию компьютера. +
-</​code>​+
  
-====== Заключение для пользователей ​MSX ======+Перед системной областью, в этой же странице,​ размещены рабочее пространство DOS и аппаратный стек, размеры которых могут изменяться,​ поэтому предельный адрес ​пользовательского пространства нужно уточнять с помощью ячейки 0006h.
  
-<​code>​ +Программист должен ​следить, чтобы системная страница не отключилась в результате некорректного обращения со слотами или мэппером, иначе это приведет к зависанию ​компьютера.
-     ​Весь ​изложенный в нашей беседе материал можно с успехом +
-применить ​к программированию компьютеров серии MSXесли  ​из +
-предыдущего повествования исключить следующие моменты:​+
  
-     - процедуры, ​находящиеся в SUB-ROM; +====== Заключение для пользователей MSX ======
-     - рассуждения, касающиеся мэппера и его регистров;​ +
-     - режимы бит-мэп и текстовый SCREEN 0:WIDTH 80; +
-     - режим спрайтов 2; +
-     - все, что связано со страницами ​видеопамяти; +
-     - операции, использующие регистры VDP, начиная с 9-го;+
  
-     Кроме того, ​для обращения к VRAM  ​следует  ​использовать +Весь изложенный в нашей беседе материал можно с успехом применить к программированию компьютеров серии MSXесли из предыдущего повествования ​исключить ​следующие моменты: 
-другие подпрограммы ​BIOS (с теми ​же аргументами):+  процедуры,​ находящиеся ​в SUB-ROM; 
 +  ​* ​рассуждения,​ касающиеся мэппера и его регистров; 
 +  * режимы битмэп и текстовый SCREEN 0:WIDTH 80; 
 +  * режим ​спрайтов 2; 
 +  * все, что связано со страницами видеопамяти; 
 +  * операции, использующие регистры VDP, начиная с 9-го;
  
-004Ah чтение байта из VRAM +Кроме того, для обращения к VRAM следует использовать другие подпрограммы BIOS (с теми же аргументами):​ 
-004Dh запись байта во VRAM +|004Ah|чтение байта из VRAM| 
-0050h подготовка к чтению серии байтов +|004Dh|запись байта во VRAM| 
-0053h подготовка к записи серии байтов +|0050h|подготовка к чтению серии байтов| 
-0056h заполнение VRAM константой +|0053h|подготовка к записи серии байтов| 
-</​code>​+|0056h|заполнение VRAM константой|
  
  
 {{tag>​MSX Doc Assembler Oleg_Shamshura}} {{tag>​MSX Doc Assembler Oleg_Shamshura}}
msx/msx2_programming_technique/msx2_programming_technique.1675538659.txt.gz · Последние изменения: 2023-02-04 22:24 — GreyWolf