Программа для системной ППЗУ

Программа для системной ППЗУ

Читатели «М-К», собравшие компьютер «Специалист», вероятно, обратили внимание на то обстоятельство, что ввод цифровой информации возможен только в режиме «верхний регистр». Это затрудняет написание программ, например на Бейсике, в котором текст набирается в нижнем регистре, а номера строк, подпрограмм и данные — в верхнем. Такая ситуация приводит к частым ошибкам и увеличивает время ввода программ. Кроме того, на клавиатуре отсутствуют клавиши <АР2>, <F1>, <F2>, <F3>, <F4>, <ТАБ>, часто использующиеся в программах, поэтому возникают трудности при переносе программ с ПЭВМ «Радио-86РК», «Микроша» и аналогичных. Не предусмотрена также возможность ввода строчных букв, необходимых при использовании компьютера и печатающего устройства типа УВВПЧ-30-004 или D-180 для редактирования и печатания текстов.

Вниманию читателей предлагается новая версия программы (далее Загрузчик), записанный в ППЗУ DD52 (см. схему микроЭВМ «Специалист», «М-К», 1987, № 2). Новый Загрузчик существенно облегчает ввод программ и данных при работе с Бейсиком, Редактором, Ассемблером, Дизассемблером и другими программами, поскольку вводить цифры можно независимо от того, в латинском или русском регистре вы работаете. Кроме того, появляется возможность на клавиатуре компьютера ввести клавиши <АР2>, <F1> — <F8>, <ТАБ> и использовать знакогенератор, имеющий прописные и строчные буквы в соответствии с набором КОИ-8.

Переключение регистров «русский — латинский» осуществляется клавишей <HP ФИКС>, работающей в триггерном режиме, то есть каждое нажатие вызывает переключение регистра. Специальные символы, нанесенные на клавиатуре под цифрами, символы «+», «=», «*», «>», «<», «?», а также строчные буквы при работе со знакогенератором КОИ-8 вводятся при нажатии и удержании клавишы <HP>. Клавишу <HP ФИКС> теперь удобнее обозначить <РУС-LAT>,

Новый Загрузчик после обращения к подпрограмме ввода символа с клавиатуры (0С337Н) возвращает в аккумуляторе коды клавиш верхнего ряда (00—07, 8АН) в порядке их расположения на клавиатуре, что можно использовать в любых программах. Коды 00—07 соответствуют клавишам <F1> — <F8>. Раньше этим клавишам соответствовали коды 82Н—89Н, 8АН. В компьютере «Радио-86РК» коды 00—07 вырабатываются при нажатии клавиш <УС> + <А> — <УС> + <Н>, поэтому комбинацию, например, <УС> + <Е>, которую нельзя реализовать на «Специалисте» из-за отсутствия клавиши <УС>, можно заменить клавишей <F5>. Код клавиши <EDIT> оставлен без изменения.

В описываемой программе предусмотрена возможность работы с алфавитно-цифровыми наборами КОИ-7Н2 (включается по сбросу) и КОИ-8. Для реализации последнего надо записать в ПЗУ знакогенератор и вспомогательную программу, кодирующую символы по таблице КОИ-8. Кроме того, во вспомогательной программе имеются подпрограммы-переключатели, позволяющие переходить от одного набора к другому. Обращение к подпрограмме 0D070H (например, из Монитора по директиве G) включает набор КОИ-7Н2, а к подпрограмме 0D080H — КОИ-8. При отсутствии ПЗУ знакогенератор и вспомогательную программу можно разместить в ОЗУ, внеся в нее необходимые изменения.

Загрузчик использует три новые ячейки в служебной области: 8FECH—для хранения признака «РУС-LAT» (8АН—ЗАН) и 8FDFH, 8FE0H — адрес начала вспомогательной программы, если она используется, или адрес служебного перехода Загрузчика.

Теперь о подпрограммах вывода звука. Их было четыре: 0С170Н — вывод звука с частотой и длительностью, заданной в ячейках 8FF1Н и 8FF2H соответственно. 0С195Н— то же самое, но с сохранением в стеке аккумулятора и регистра признаков (RSW). 0С1А0Н и 0С1АВН — вывод звука высокого и низкого тона. В новом Загрузчике подпрограмма 0С170Н теперь тоже сохраняет PSW и, следовательно, необходимость в подпрограмме 0С195Н отпала и на адресе ее начала теперь записана команда «RET», а остальные подпрограммы остались без изменений. Если в ваших программах встречается обращение по адресу 0С195Н, то надо просто заменить этот адрес на 0С170Н.

Как показала практика работы на компьютере «Специалист», для ускорения ввода с клавиатуры желательно сократить длительность звука, сопровождающего нажатие клавиши, а также, в связи с отсутствием индикатора РУС-LAT, для лучшего восприятия включенного регистра уменьшить частоту звука низкого тона.

Обратите внимание на то обстоятельство, что на освободившееся место 0С196Н — 0C19FH перенесена подпрограмма, которая была расположена на адресах 0C354H — 0C35BH. Эта подпрограмма используется Загрузчиком для реализации задержки при вводе символа с клавиатуры.

Новый Загрузчик позволяет ввести в компьютер две дополнительные клавиши, часто используемые в программах,— <ТАБ> и <АР2> (их коды 09 и 1ВН). Чтобы реализовать эти клавиши на клавиатуре компьютера, их надо подключить к свободным участкам на пересечениях линий, расположенных слева от клавиши <ПРОБЕЛ> около резисторов R22 и R23 аналогично остальным клавишам. На линии около R22 будет находиться клавиша <ТАБ>, а около R23 — <АР2>.

Несколько модифицирована подпрограмма 0С037Н вывода символа на экран, изменена работа клавиши <←>. Если на нее многократно нажимать, курсор будет последовательно перемещаться на одну позицию влево вплоть до начала строки, и при очередном нажатии перейдет в последнюю позицию предыдущей строки. Такая корректировка функции этой клавиши потребовалась для возможности редактирования длинной строки Бейсика или для удаления (забоя) символов, вводимых в текстовый буфер при работе подпрограммы 0C80FH Монитора, опубликованного в «М-К» № 9 за 1988 год.

Программа для системной ППЗУ

Программа для системной ППЗУ

Поясним правила обращения к описанным подпрограммам.

Вывод символа (0С037Н). Предварительно в регистр С поместите код символа, в ячейки 8FFCH и 8FFDH — положение курсора. При желании в ОЗУ можно сформировать новый знакогенератор с любыми символами и перед обращением к подпрограмме вывода указать в ячейках 8FE7H и 8FE8H его адрес, деленный на 8, то есть сдвинутый вправо на три разряда.

Вывод звука (0С170Н): перед обращением в ячейках 8FF1Н и 8FF2H можно задать частоту и длительность звука.

Ввод символа с клавиатуры (0С337Н): подпрограмма возвращает в аккумуляторе код нажатой клавиши.

В Загрузчике имеется еще ряд подпрограмм, которые остались без изменений. Перечислим их с краткими пояснениями.

0С010Н — очистка экрана. Цвет задается в ячейках 8FFAH и 8FFBH.

0С190Н — задержка. Длительность задается в регистре В.

0С254Н — программирование порта клавиатуры: каналы А, С на вывод, В на ввод, режим 0.

0С25АН — то же, но А, С0 — С3 — ввод, В, С4 — С7 — вывод, режим 0.

0С377Н — ввод байта с магнитофона в аккумулятор.

0C3D0H — вывод байта на магнитофон. Выводимый байт поместить в аккумулятор.

0C3F9H — ввод блока произвольной длины с магнитофона с поиском синхробайта. Первые четыре байта воспринимаются как адрес начала и конца программы.

0С422Н — то же самое, но адреса начала и конца программы должны быть заранее заданы в HL и DE соответственно, а все введенные байты, включая первые четыре, воспринимаются как текст программы.

0С427Н — установка признака z, если (HL)=(DE).

0С438Н — вывод сообщения на экран. В HL указать адрес начала. Признак конца — байт 00.

0C42DH — пересылка фрагмента памяти на новое место в ОЗУ. В HL указать адрес начала, в DE — конца, в ВС — адрес пересылки.

В ячейках 0С4А0Н — 0C4FFH — записаны коды клавиш по верхнему регистру, в ячейках 0С500Н — 0C7FFH — знакогенератор КОИ-7Н2.

Перечислим некоторые служебные ячейки Загрузчика и их назначение:

в ячейки 8FE3H, 8FE4H при вводе с магнитофона заносится адрес начала программы, если ее ввод производится подпрограммой 0C3F9H.

8FEDH, 8FEEH — адрес подпрограммы задержки при вводе символа с клавиатуры.

8FE5H, 8FE6H — в новом Загрузчике не используются, а в старом хранят адрес начала программы обработки кодов клавиш. Аналогичную функцию в новом Загрузчике выполняют ячейки 8FDF, 8FE0.

8FE9H — код символа, выведенного на экран.

8FEFH, 8FF0H — код нажатой клавиши по верхнему регистру.

8FF1H, 8FF2H — частота и длительность звука.

8FF3H — признак инвертированного сигнала с магнитофона.

8FF8H, 8FF9H — адрес нижней ячейки из блока ячеек экранной области, предназначенных для вывода символа на экран.

8FFAH, 8FFBH — цвет экрана.

Чтобы получить текст нового Загрузчика, надо перетранслировать старый в ОЗУ, например, начиная с адреса 0000 командой МОНИТОРА ТС000 C7FF 0000, затем по директиве М ввести коды таблицы 1. Если ваш компьютер имеет ОЗУ 48 К, то на адресе 0005 должен быть записан код 7F (для 32 К — 3F). Проверьте контрольную сумму блока 00F0H— 04FFH, она должна быть равна 4523Н.

Теперь при помощи программатора занесите данную программу в ППЗУ К573РФ2 или К573РФ5 и установите ее на место микросхемы DD52. После подачи питания компьютер готов к работе, причем сразу включен латинский регистр.

Коды знакогенератора КОИ-8 и вспомогательной программы приведены в таблице 2. На адресах 0D400H — 0D5FFH записаны коды FF. Если вы собираетесь разместить знакогенератор и вспомогательную программу в ОЗУ, коды знакогенератора следует занести на адреса 8000Н — 87FFH, при этом коды вспомогательной программы изменяются. Текст программы для ОЗУ приведен в таблице 3.

В. ЗВЕРКОВ

Рекомендуем почитать

  • СВЕТИЛЬНИК… С ЕЛКИСВЕТИЛЬНИК… С ЕЛКИ
    Перелистывая подшивку «Моделиста-конструктора» за 1987 год, обратил внимание на подборку статей «Свет в вашем доме». Действительно, в обилии выпускаемых промышленностью люстр, бра,...
  • МиГ-23: ИСТРЕБИТЕЛЬ ТРЕТЬЕГО ПОКОЛЕНИЯМиГ-23: ИСТРЕБИТЕЛЬ ТРЕТЬЕГО ПОКОЛЕНИЯ
    В июле 1967 г. в новом московском аэропорту Домодедово состоялся грандиозный воздушный парад, посвященный полувековому юбилею Октября. Он произвел незабываемое впечатление на тысячи...
Тут можете оценить работу автора: