Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
msx:maestro:maestro [2022-06-20 14:45] GreyWolf [Ссылки] |
msx:maestro:maestro [2024-03-07 11:13] (текущий) GreyWolf |
||
---|---|---|---|
Строка 9: | Строка 9: | ||
С помощью ПС «Маэстро» автор создал [[msx:maestro:pac:|]] и [[msx:ar_games:ar_games|эти игры]]. | С помощью ПС «Маэстро» автор создал [[msx:maestro:pac:|]] и [[msx:ar_games:ar_games|эти игры]]. | ||
+ | /* | ||
Страница на официальном сайте автора: [[http://rodionov.info/software.shtml#MAESTRO_Intro|Программное средство «МАЭСТРО» — аннотация]] | Страница на официальном сайте автора: [[http://rodionov.info/software.shtml#MAESTRO_Intro|Программное средство «МАЭСТРО» — аннотация]] | ||
+ | |||
[[http://forum.rodionov.info:8080/forums/msx.36/|Форум на сайте автора]] | [[http://forum.rodionov.info:8080/forums/msx.36/|Форум на сайте автора]] | ||
+ | */ | ||
Основные главы: | Основные главы: | ||
Строка 23: | Строка 26: | ||
~~TOC_HERE~~ | ~~TOC_HERE~~ | ||
~~TOC 1-3 wide~~ | ~~TOC 1-3 wide~~ | ||
+ | |||
{{anchor:grplib}} | {{anchor:grplib}} | ||
Строка 28: | Строка 32: | ||
FIXME | FIXME | ||
- | Графическая Библиотека MSX для BDS C версия 3.02 | + | {{anchor:grplib_disk}} |
- | \\ MSX Graphic Library for BDS C v3.02 | + | Графическая Библиотека MSX для BDS C версия 3.05 |
+ | \\ MSX Graphic Library for BDS C v3.05 | ||
+ | |||
+ | {{:msx:maestro:devdisk_-_msx_graphic_lib_3.05.dsk|Образ диска с версией 3.05}} | ||
(C) МЭВЦ 1988 | (C) МЭВЦ 1988 | ||
Строка 104: | Строка 111: | ||
В частности, раздел библиотеки [[#GRPLIB2]] содержит функции ТОЛЬКО для [[msx:msx_2|MSX2]] и НЕ ДОЛЖЕН использоваться при написании программ для [[msx:msx_1|MSX1]], а раздел [[#GRPLIB5]] и заголовок ''GRPMSX1.H'' ДОЛЖНЫ быть подключены к программе, если она рассчитана на компьютер MSX с 16 кбайт видеопамяти и без [[msx:bios#subrom|SubROM]] (дополнительного 16-кбайтного расширения ПЗУ, обеспечивающего большинство функций [[msx:msx_2|MSX2]] со 128 кбайт видеопамяти и энергонезависимой памятью для календаря, часов, пароля и т.п.). | В частности, раздел библиотеки [[#GRPLIB2]] содержит функции ТОЛЬКО для [[msx:msx_2|MSX2]] и НЕ ДОЛЖЕН использоваться при написании программ для [[msx:msx_1|MSX1]], а раздел [[#GRPLIB5]] и заголовок ''GRPMSX1.H'' ДОЛЖНЫ быть подключены к программе, если она рассчитана на компьютер MSX с 16 кбайт видеопамяти и без [[msx:bios#subrom|SubROM]] (дополнительного 16-кбайтного расширения ПЗУ, обеспечивающего большинство функций [[msx:msx_2|MSX2]] со 128 кбайт видеопамяти и энергонезависимой памятью для календаря, часов, пароля и т.п.). | ||
- | Абсолютно необходимым условием успешного применения функций библиотеки является знание программистом архитектуры и особенностей компьютеров [[msx:msx_1|MSX1]] и [[msx:msx_2|MSX2]], операционной системы [[msx:dos|]] и основных принципов работы со знакоместной и битмэп-графикой. Кроме этого, совершенно необходимо знание языка Си и особенностей его конкретной реализации в системе [[bds_c:bds_c|]] (смотри {{:bds_c:bds_c_v1.50a_users_guide_addenda_jul83.pdf|C Compiler v1.5 Users Guide, Copyright (c) 1982 by Leor Zolman BD Software}}). | + | Абсолютно необходимым условием успешного применения функций библиотеки является знание программистом архитектуры и особенностей компьютеров [[msx:msx_1|MSX1]] и [[msx:msx_2|MSX2]], операционной системы [[msx:dos:|]] и основных принципов работы со знакоместной и битмэп-графикой. Кроме этого, совершенно необходимо знание языка Си и особенностей его конкретной реализации в системе [[bds_c:|]] (смотри {{:bds_c:bds_c_v1.50a_users_guide_addenda_jul83.pdf|C Compiler v1.5 Users Guide, Copyright (c) 1982 by Leor Zolman BD Software}}). |
Для нормальной работы большинства функций Библиотеки требуется выделение и инициализация специальной системной рабочей области памяти. Эта рабочая область выделяется автоматически при ОБЯЗАТЕЛЬНОМ включении в создаваемую программу одного из двух | Для нормальной работы большинства функций Библиотеки требуется выделение и инициализация специальной системной рабочей области памяти. Эта рабочая область выделяется автоматически при ОБЯЗАТЕЛЬНОМ включении в создаваемую программу одного из двух | ||
Строка 176: | Строка 183: | ||
</code> | </code> | ||
Примечания: | Примечания: | ||
- | * точка «.» может быть использована в [[msx:dos|]] вместо ''REM''; | + | * точка «.» может быть использована в [[msx:dos:|]] вместо ''REM''; |
* если в файле ''GRO.CRL'' (результат работы компилятора [[bds_c:bds_c|]]) появляются функции с именами, такими же как и в файлах Библиотеки ''GRPLIB4.CRL'' … ''GRPLIB1.CRL'' — они заменяют соответствующие функции Библиотеки, так как находятся в командной строке ''clink'' ДО переключателя ''-f'' (см. [[bds_c:bds_c|]] ''clink'') (этот приём используется для подключения функций пользователя вместо стандартных системных заглушек, находящихся в библиотеке (''[[#process1() … process9()]]'', ''[[#tickexit()]]'' — ), а также для исключения нежелательных библиотечных функций, которые подключаются автоматически (путём написания заглушек пользователем)); | * если в файле ''GRO.CRL'' (результат работы компилятора [[bds_c:bds_c|]]) появляются функции с именами, такими же как и в файлах Библиотеки ''GRPLIB4.CRL'' … ''GRPLIB1.CRL'' — они заменяют соответствующие функции Библиотеки, так как находятся в командной строке ''clink'' ДО переключателя ''-f'' (см. [[bds_c:bds_c|]] ''clink'') (этот приём используется для подключения функций пользователя вместо стандартных системных заглушек, находящихся в библиотеке (''[[#process1() … process9()]]'', ''[[#tickexit()]]'' — ), а также для исключения нежелательных библиотечных функций, которые подключаются автоматически (путём написания заглушек пользователем)); | ||
* порядок следования библиотечных файлов по убыванию их номеров <code>… -f grplib5 grplib4 grplib3 grplib2 grplib1 grpliba …</code> является существенным для ''clink'', так как в противном случае ''clink'' не найдёт функции, на которые появятся отсылки «назад» (см. [[bds_c:bds_c|]] ''clink''). | * порядок следования библиотечных файлов по убыванию их номеров <code>… -f grplib5 grplib4 grplib3 grplib2 grplib1 grpliba …</code> является существенным для ''clink'', так как в противном случае ''clink'' не найдёт функции, на которые появятся отсылки «назад» (см. [[bds_c:bds_c|]] ''clink''). | ||
Строка 206: | Строка 213: | ||
char mode, *msg1, *msg2; | char mode, *msg1, *msg2; | ||
</code> | </code> | ||
- | Аварийный выход из программы в [[msx:dos|]] с установкой (без установки) ''Screen 0'' и выдачей сообщения (сообщений). | + | Аварийный выход из программы в [[msx:dos:|]] с установкой (без установки) ''Screen 0'' и выдачей сообщения (сообщений). |
Значения ''mode'' | Значения ''mode'' | ||
Строка 402: | Строка 409: | ||
char mode; | char mode; | ||
</code> | </code> | ||
- | Отладочная функция, которая обычно стандартно подключается к каждой программе и вызывается диспетчером параллельных процессов с параметром 0 (''showpage(0)''). В этом режиме функция проверяет нажатие клавиш <key>STOP</key> и <key>SELECT</key> и, если они нажаты, захватывает управление. После этого, нажатие функциональных клавиш <key>F1</key>...<key>F4</key> даёт возможность визуально проверить состояние всех страниц VRAM с плавным просмотром каждой страницы при помощи клавиш курсора, <key>F5</key> возвращает управление в прерванную программу, <key>STOP</key> и <key>F5</key> — возвращает управление [[msx:dos|]] с выдачей статистики использования процессов и состояний почтовых ящиков. | + | Отладочная функция, которая обычно стандартно подключается к каждой программе и вызывается диспетчером параллельных процессов с параметром 0 (''showpage(0)''). В этом режиме функция проверяет нажатие клавиш <key>STOP</key> и <key>SELECT</key> и, если они нажаты, захватывает управление. После этого, нажатие функциональных клавиш <key>F1</key>...<key>F4</key> даёт возможность визуально проверить состояние всех страниц VRAM с плавным просмотром каждой страницы при помощи клавиш курсора, <key>F5</key> возвращает управление в прерванную программу, <key>STOP</key> и <key>F5</key> — возвращает управление [[msx:dos:|]] с выдачей статистики использования процессов и состояний почтовых ящиков. |
ВНИМАНИЕ! Для сокращения объёма уже отлаженной программы можно исключить эту функцию на этапе компоновки, написав в тексте вашей программы заглушку с тем же именем: | ВНИМАНИЕ! Для сокращения объёма уже отлаженной программы можно исключить эту функцию на этапе компоновки, написав в тексте вашей программы заглушку с тем же именем: | ||
Строка 1496: | Строка 1503: | ||
''diskdir()'' возвращает количество точек входа, помещённых в ''buf1700'', и релевантных ''dirmask'' | ''diskdir()'' возвращает количество точек входа, помещённых в ''buf1700'', и релевантных ''dirmask'' | ||
- | ''dirmask'' является символической строкой (оканчивающейся двоичным нулём) в стандартной нотации [[msx:dos|]]: | + | ''dirmask'' является символической строкой (оканчивающейся двоичным нулём) в стандартной нотации [[msx:dos:|]]: |
<code> | <code> | ||
[drive:]filename[.suffix]\0 | [drive:]filename[.suffix]\0 | ||
Строка 1657: | Строка 1664: | ||
char count; | char count; | ||
</code> | </code> | ||
- | Вывести на принтер ''count'' байт начиная с адреса ''adr'' непосредственно через [[msx:dos|]] (не используя ''lprintf()'' [[bds_c:bds_c|]]). Эту функцию, в том числе, удобно использовать для посылки кодов управления принтером. | + | Вывести на принтер ''count'' байт начиная с адреса ''adr'' непосредственно через [[msx:dos:|]] (не используя ''lprintf()'' [[bds_c:bds_c|]]). Эту функцию, в том числе, удобно использовать для посылки кодов управления принтером. |
=== lprint2() === | === lprint2() === | ||
Строка 1694: | Строка 1701: | ||
Функция ''alloc()'' [[bds_c:bds_c|]] (в отличие от ''sbrk()'') не может выделять память блоками более 32 кбайт — это связано с тем, что одна из переменных в ''alloc()'' описана как int вместо unsigned. | Функция ''alloc()'' [[bds_c:bds_c|]] (в отличие от ''sbrk()'') не может выделять память блоками более 32 кбайт — это связано с тем, что одна из переменных в ''alloc()'' описана как int вместо unsigned. | ||
- | Это ЕДИНСТВЕННАЯ ошибка(?), которую автор Библиотеки обнаружил в [[bds_c:bds_c|]] v1.50a за более чем три года интенсивной эксплуатации этой системы. Здесь же отметим, что ошибочная ситуация со стеком при автоматическом вызове ''cc2.com'' из ''cc.com'' порождена отличием [[msx:dos#v1x|MSX-DOS]] 1.03 от [[msx:cp_m:cp_m|CP/M]], а не ошибкой [[bds_c:bds_c|]]. | + | Это ЕДИНСТВЕННАЯ ошибка(?), которую автор Библиотеки обнаружил в [[bds_c:bds_c|]] v1.50a за более чем три года интенсивной эксплуатации этой системы. Здесь же отметим, что ошибочная ситуация со стеком при автоматическом вызове ''cc2.com'' из ''cc.com'' порождена отличием [[msx:dos:|]] 1.03 от [[msx:cp_m:|]], а не ошибкой [[bds_c:|]]. |
Это отличие компенсировано автором Библиотеки небольшим изменением кода ''cc.com'' (вместе с добавлением обнуления счётчиков времени для утилиты [[#DURATION.COM]]). Изменённую версию ''cc.com'' можно идентифицировать по номеру версии, выводимому на экран во время выполнения ''cc.com'' (v1.50aR вместо v1.50a). | Это отличие компенсировано автором Библиотеки небольшим изменением кода ''cc.com'' (вместе с добавлением обнуления счётчиков времени для утилиты [[#DURATION.COM]]). Изменённую версию ''cc.com'' можно идентифицировать по номеру версии, выводимому на экран во время выполнения ''cc.com'' (v1.50aR вместо v1.50a). | ||
Строка 2240: | Строка 2247: | ||
/* macro */ | /* macro */ | ||
</code> | </code> | ||
- | FIXME Выход в [[msx:dos|]] с восстановлением Screen 0 и параметров цвета экрана из энергонезависимой памяти MSX2 или GRPMSX1.H MSX1 | + | FIXME Выход в [[msx:dos:|]] с восстановлением Screen 0 и параметров цвета экрана из энергонезависимой памяти MSX2 или GRPMSX1.H MSX1 |
=== PAUSE() === | === PAUSE() === | ||
Строка 2708: | Строка 2715: | ||
===== Условия применения утилит ===== | ===== Условия применения утилит ===== | ||
- | Для работы утилит требуется MSX компьютер с 64 кбайт оперативной памяти и как минимум одним дисководом. Большинство утилит может выполняться как на [[msx:msx_1|MSX]] так и на [[msx:msx_2|MSX2]]. Случаи использования [[msx:msx_2|MSX2]] оговариваются особо. Операционная система: [[msx:dos#v1x|MSX-DOS 1]] версии 1.03 (''COMMAND.COM'' 1.11). | + | Для работы утилит требуется MSX компьютер с 64 кбайт оперативной памяти и как минимум одним дисководом. Большинство утилит может выполняться как на [[msx:msx_1|MSX]] так и на [[msx:msx_2|MSX2]]. Случаи использования [[msx:msx_2|MSX2]] оговариваются особо. Операционная система: [[msx:dos:|]] версии 1.03 (''COMMAND.COM'' 1.11). |
Внимание! Для нестандартных модификаций операционной системы и консольного процессора нормальная работа утилит не гарантируется. | Внимание! Для нестандартных модификаций операционной системы и консольного процессора нормальная работа утилит не гарантируется. | ||
Строка 2735: | Строка 2742: | ||
^Формат командной строки|<code>blade [<fileset>]</code>| | ^Формат командной строки|<code>blade [<fileset>]</code>| | ||
^Параметры|<WRAP> | ^Параметры|<WRAP> | ||
- | * ''<fileset>'' — любая стандартная маска набора файлов [[msx:dos|]] с расширением «!» — [and] not. Если не указан — ''*.*'' | + | * ''<fileset>'' — любая стандартная маска набора файлов [[msx:dos:|]] с расширением «!» — [and] not. Если не указан — ''*.*'' |
</WRAP>| | </WRAP>| | ||
^Особенности|Файлы, релевантные маске, сортируются по алфавиту и проверяются на наличие FE в первом байте файла. В случае присутствия FE на экран выводится имя файла и три шестнадцатеричных слова: адрес загрузки, адрес конца и адрес передачи управления.| | ^Особенности|Файлы, релевантные маске, сортируются по алфавиту и проверяются на наличие FE в первом байте файла. В случае присутствия FE на экран выводится имя файла и три шестнадцатеричных слова: адрес загрузки, адрес конца и адрес передачи управления.| | ||
Строка 2763: | Строка 2770: | ||
^Параметры|<WRAP> | ^Параметры|<WRAP> | ||
* ''/p'' — вывод копии экрана на принтер. | * ''/p'' — вывод копии экрана на принтер. | ||
- | * ''<fileset>'' — любая стандартная маска набора файлов [[msx:dos|]] с расширением «!» — [and] not. Если не указан — *.* | + | * ''<fileset>'' — любая стандартная маска набора файлов [[msx:dos:|]] с расширением «!» — [and] not. Если не указан — *.* |
</WRAP>| | </WRAP>| | ||
^Особенности|Файлы, релевантные маске, выводятся на экран в отсортированном по алфавиту суффиксов, а внутри них — по именам файлов виде.| | ^Особенности|Файлы, релевантные маске, выводятся на экран в отсортированном по алфавиту суффиксов, а внутри них — по именам файлов виде.| | ||
Строка 2829: | Строка 2836: | ||
</WRAP>| | </WRAP>| | ||
^Особенности|<WRAP> | ^Особенности|<WRAP> | ||
- | - Нажатие любой клавиши останавливает/продолжает дамп. Нажатие клавиши <key>STOP</key> приводит к выходу в [[msx:dos|]]. | + | - Нажатие любой клавиши останавливает/продолжает дамп. Нажатие клавиши <key>STOP</key> приводит к выходу в [[msx:dos:|]]. |
- При помощи утилиты DUMP можно объединить несколько разных фрагментов разных источников в один файл — разделителем источников в командной строке является символ '&' (см. пример). | - При помощи утилиты DUMP можно объединить несколько разных фрагментов разных источников в один файл — разделителем источников в командной строке является символ '&' (см. пример). | ||
- В качестве отдельных источников в командной строке могут использоваться специальные параметры (без пробелов) | - В качестве отдельных источников в командной строке могут использоваться специальные параметры (без пробелов) | ||
Строка 3206: | Строка 3213: | ||
{{msx_maestro_02.jpg?1000|}} \\ [[https://pic.maxiol.com/images2/1613586053.1054456127.72j.jpg|оригинал]]\\ | {{msx_maestro_02.jpg?1000|}} \\ [[https://pic.maxiol.com/images2/1613586053.1054456127.72j.jpg|оригинал]]\\ | ||
Реклама в журнале "Микропроцессорные средства и системы" №6, 1988 | Реклама в журнале "Микропроцессорные средства и системы" №6, 1988 | ||
+ | </hidden> | ||
+ | |||
+ | {{anchor:mpc0398}} | ||
+ | <hidden Реклама в журнале "Мир ПК №3, 1989"> | ||
+ | Файл предоставил **Артем Читайло** | ||
+ | |||
+ | {{:msx:maestro:mpc0398_maestro.jpg|}} | ||
</hidden> | </hidden> | ||
Строка 3215: | Строка 3229: | ||
{{tag>MSX Programming Rodionov_A_B}} | {{tag>MSX Programming Rodionov_A_B}} | ||
- | |||
- | <PRELOAD> | ||
- | <!-- Yandex.Metrika counter --> | ||
- | <script type="text/javascript" > | ||
- | (function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)}; | ||
- | m[i].l=1*new Date();k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)}) | ||
- | (window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym"); | ||
- | |||
- | ym(86679439, "init", { | ||
- | clickmap:true, | ||
- | trackLinks:true, | ||
- | accurateTrackBounce:true | ||
- | }); | ||
- | </script> | ||
- | <noscript><div><img src="https://mc.yandex.ru/watch/86679439" style="position:absolute; left:-9999px;" alt="" /></div></noscript> | ||
- | <!-- /Yandex.Metrika counter --> | ||
- | </PRELOAD> |