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

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


msx:maestro:maestro

Различия

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

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

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
msx:maestro:maestro [2022-06-22 19:51]
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 можно объединить несколько разных фрагментов разных источников в один файл — разделителем источников в командной строке является символ '&'​ (см. пример).
   - В качестве отдельных источников в командной строке могут использоваться специальные параметры (без пробелов)   - В качестве отдельных источников в командной строке могут использоваться специальные параметры (без пробелов)
Строка 3222: Строка 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>​ 
msx/maestro/maestro.1655916688.txt.gz · Последние изменения: 2022-06-22 19:51 — GreyWolf