Д. Батранков (г. Чехов)
Прочитав восьмой номер вашего журнала за 1990 г., я решил дополнить рассказ С.Ю. Синягина о встроенном мониторе.
Для занесения ключей можно не пользоваться командой EMT 12, вот что она из себя представляет (подпрограмма расположена по адресу 1020048):
TST R0 ; проверка номера ключа BLE А ; если<0, то выход СМР R0, #12 ; если BHI А ; больше 128, то выход BNE В ; не равно 12, на метку 13 CLR R0 ; если равно 12, то изменить на 0 В: ASL R0 ; MOV R1,126(R0) ; занесение адреса в память А: RTS PC ; выход
Можно просто где-то написать тексты ключей и занести в ячейки 1268 - 1508 их адреса.
Заключение рецензента
По поводу программного прерывания EMT 12. Это прерывание введено в систему для формирования текстов часто используемых команд, которые затем можно вызвать с помощью нажатия пары клавиш (АР2+ «номер ключа»).
Подпрограмма обработки этого прерывания прошита в ПЗУ по адресу 1020048 для удобства занесения текстов ключей.
Формировать тексты ключей вручную и заносить их адреса в ячейки 1268 - 1508 для БК-0010 можно, но это значительно уменьшает вероятность совместимости написанных таким образом программ с более поздними моделями компьютеров БК. Разработчики системного программного обеспечения, составив команду EMT 12, могут сменить адреса ячеек в системной области ОЗУ, в которых хранятся адреса текстов ключей. Кроме того, при расширении ОЗУ область ПЗУ с монитором обычно смещается в область старших адресов, а значит смещаются и все адреса прошиваемых подпрограмм. Этот последний фактор привёл к тому, что многие игровые и обучающие программы в кодах, использующие такие «хитрости», как предлагает Батранков, не выполняются на БК-0011.
Как системный программист могу порекомендовать почаще соблюдать системные соглашения и использовать стандартные прерывания, чтобы обеспечить переносимость программ на другие типы и модели компьютеров. Реализовывать же все системные средства в своих собственных программах, да ещё при недостатке ОЗУ, нецелесообразно.
«Копание» в ПЗУ само по себе похвально, если это не приводит к концептуально неверному построению прикладных программ.
Л.Н. Жариков