С.Ю.Синягин (г.Дубна)

  1. Что я почерпнул из встроенного монитора. Цвета, выводимые на экран, различаются только кодировкой. Например, 177777 - это красный цвет, 052525 - синий, 000000 - чёрный. Так вот, кодировка текущего цвета должна находиться в ячейке с адресом 212, цвет переднего плана - в ячейке с адресом 214, а стандартная кодировка цветов с красного по чёрному находится в адресах 112026 - 112034.
  2. В моих программах часто применяются две подпрограммы из монитора. Программа по адресу 110340 (можно 110346) запоминает содержимое регистров R0-R4 в стек, а программа по адресу 110362 извлекает их оттуда. Обращаться к ним надо командами JSR R4,@#110346 и JSR R4,@#110362.
  3. В № 9/1988 серии "Вычислительная техника и её применение" на стр. 26 указывалась программа работы с магнитофоном по адресу 100602. Но если покопаться в мониторе, можно обнаружить интересную программу по адресу 100536. Она запрашивает имя файла на чтение и загружает его. В R5 надо указать адрес для чтения. После определённых манипуляций можно заставить эту программу запрашивать имя для записи файла на плёнку.
  4. Интересным свойством обладает последовательность команд:
    EMT 6
    BICB #240, R0

В каком бы режиме вы ни работали - в латинском или русском, заглавных или строчных буквах, - при нажатии буквенной клавиши в младшем байте R0 будет код соответствующей заглавной латинской буквы.

КОММЕНТАРИЙ РЕЦЕНЗЕНТА

На то, что С. Синягин почерпнул, "покопавшись" во встроенном мониторе БК0010 и системной области ОЗУ

  1. Стандартная кодировка цвета фона и цвета переднего плана действительно находится в ячейках с адресами 112026 - 112034, а кодировка текущего цвета фона и цвета переднего плана - в ячейках ОЗУ с адресами 212 и 214 соответственно.

    Что будет в случае произвольного изменения содержимого ячеек 212 и 214, легко можно узнать, сняв защиту с системной области ОЗУ в режиме тестов командой "Щ" и заменив содержимое этих ячеек:

    $ Щ
    $ 212A <фффффф>И, <000000><цццццц> И /BK/.

    Подбирая коды фона <фффффф> и переднего плана <цццццц>, даже в чёрно-белом режиме можно получать интересные эффекты.

  2. Применяя программы из ПЗУ, программист получает возможность более рационально использовать область ОЗУ для своих программ.

    Возможности любителей по использованию подпрограмм из встроенного ПЗУ достаточно широки как в режиме БЕЙСИКа БК0010.01, так и в режиме ФОКАЛа.

    С. Синягин обнаружил в ПЗУ две очень часто используемые подпрограммы сохранения и извлечения содержимого регистров в программном стеке. В связи с этим хочется пожелать программистам не забывать, что эти программы уже имеются в ПЗУ по адресам 110346 и 110362.

  3. С. Синягин нашёл также способ использования подпрограммы по адресу 100536, позволяющий запрашивать имя файла для его чтения или записи. Этот способ можно рекомендовать к использованию.

    Все найденные возможности применения ПЗУ и системной области ОЗУ расширяют диапазон применения БК.

  4. О свойствах последовательности команд EMT 6 и BICB #240,R0.

    Указанная в заголовке последовательность команд действительно обладает интересными свойствами.

    В любом режиме работы при нажатии буквенной клавиши в младшем байте R0 будет код соответствующей заглавной латинской буквы, при этом управляющие клавиши своих функций не меняют. Это очень удобно при программном анализе ответов на запросы программ.

    Во-вторых, добавив к последовательности команд ещё две команды

    А: EMT 6
       BICB #240,R0
       EMT 16
       BR А 

    получим программу, позволяющую перемещать курсор в любую позицию экрана, вводить латинский текст, удалять и вставлять строки и символы и т.д. То есть, получим квазиредактор для одного экрана, позволяющий полностью исследовать свойства указанной С. Синягиным пары команд.

    Выход из программы клавишей СТОП. Вот коротко некоторые возможности клавиш при работе с этой мини-программой:

    2 - переход в левый верхний угол экрана, доступного для редактирования;

    3 - удаление строки, на которой расположен курсор;

    4 - вставка пустой строки перед строкой, на которой размещён курсор:

    5 - перевод курсора на начало следующей строки;

    6 - удаление символа справа от курсора;

    7 - вставка пробела в место расположения курсора;

    9 - перевод курсора вправо на одну позицию и т.д.

    Особенности указанной С. Синягиным пары команд будут интересны пользователям БК0010, разрабатывающим игровые и другие диалоговые программы.

Performed by © gid, 2012-2024.