С.Ю.Синягин (г.Дубна)
- Что я почерпнул из встроенного монитора. Цвета, выводимые на экран, различаются только кодировкой. Например, 177777 - это красный цвет, 052525 - синий, 000000 - чёрный. Так вот, кодировка текущего цвета должна находиться в ячейке с адресом 212, цвет переднего плана - в ячейке с адресом 214, а стандартная кодировка цветов с красного по чёрному находится в адресах 112026 - 112034.
- В моих программах часто применяются две подпрограммы из монитора. Программа по адресу 110340 (можно 110346) запоминает содержимое регистров R0-R4 в стек, а программа по адресу 110362 извлекает их оттуда. Обращаться к ним надо командами JSR R4,@#110346 и JSR R4,@#110362.
- В № 9/1988 серии "Вычислительная техника и её применение" на стр. 26 указывалась программа работы с магнитофоном по адресу 100602. Но если покопаться в мониторе, можно обнаружить интересную программу по адресу 100536. Она запрашивает имя файла на чтение и загружает его. В R5 надо указать адрес для чтения. После определённых манипуляций можно заставить эту программу запрашивать имя для записи файла на плёнку.
- Интересным свойством обладает последовательность команд:
EMT 6 BICB #240, R0
В каком бы режиме вы ни работали - в латинском или русском, заглавных или строчных буквах, - при нажатии буквенной клавиши в младшем байте R0 будет код соответствующей заглавной латинской буквы.
КОММЕНТАРИЙ РЕЦЕНЗЕНТА
На то, что С. Синягин почерпнул, "покопавшись" во встроенном мониторе БК0010 и системной области ОЗУ
- Стандартная кодировка цвета фона и цвета переднего плана действительно
находится в ячейках с адресами 112026 - 112034, а кодировка текущего цвета
фона и цвета переднего плана - в ячейках ОЗУ с адресами 212 и 214 соответственно.
Что будет в случае произвольного изменения содержимого ячеек 212 и 214, легко можно узнать, сняв защиту с системной области ОЗУ в режиме тестов командой "Щ" и заменив содержимое этих ячеек:
$ Щ $ 212A <фффффф>И, <000000><цццццц> И /BK/.
Подбирая коды фона <фффффф> и переднего плана <цццццц>, даже в чёрно-белом режиме можно получать интересные эффекты.
- Применяя программы из ПЗУ, программист получает возможность более рационально
использовать область ОЗУ для своих программ.
Возможности любителей по использованию подпрограмм из встроенного ПЗУ достаточно широки как в режиме БЕЙСИКа БК0010.01, так и в режиме ФОКАЛа.
С. Синягин обнаружил в ПЗУ две очень часто используемые подпрограммы сохранения и извлечения содержимого регистров в программном стеке. В связи с этим хочется пожелать программистам не забывать, что эти программы уже имеются в ПЗУ по адресам 110346 и 110362.
- С. Синягин нашёл также способ использования подпрограммы по адресу
100536, позволяющий запрашивать имя файла для его чтения или записи. Этот
способ можно рекомендовать к использованию.
Все найденные возможности применения ПЗУ и системной области ОЗУ расширяют диапазон применения БК.
- О свойствах последовательности команд EMT 6 и BICB #240,R0.
Указанная в заголовке последовательность команд действительно обладает интересными свойствами.
В любом режиме работы при нажатии буквенной клавиши в младшем байте R0 будет код соответствующей заглавной латинской буквы, при этом управляющие клавиши своих функций не меняют. Это очень удобно при программном анализе ответов на запросы программ.
Во-вторых, добавив к последовательности команд ещё две команды
А: EMT 6 BICB #240,R0 EMT 16 BR А
получим программу, позволяющую перемещать курсор в любую позицию экрана, вводить латинский текст, удалять и вставлять строки и символы и т.д. То есть, получим квазиредактор для одного экрана, позволяющий полностью исследовать свойства указанной С. Синягиным пары команд.
Выход из программы клавишей СТОП. Вот коротко некоторые возможности клавиш при работе с этой мини-программой:
2 - переход в левый верхний угол экрана, доступного для редактирования;
3 - удаление строки, на которой расположен курсор;
4 - вставка пустой строки перед строкой, на которой размещён курсор:
5 - перевод курсора на начало следующей строки;
6 - удаление символа справа от курсора;
7 - вставка пробела в место расположения курсора;
9 - перевод курсора вправо на одну позицию и т.д.
Особенности указанной С. Синягиным пары команд будут интересны пользователям БК0010, разрабатывающим игровые и другие диалоговые программы.