С.П. Таланов (г.Яранск)
Использование программ от БК-0010 на БК-0011
В последнее время на прилавки магазинов поступил компьютер марки БК-0011.
Я не буду останавливаться на его достоинствах и недостатках, они очень хорошо известны всем владельцам, хочу только сказать, что программ для него практически нет, а какой-то "умник" сделал его программно не совместимым с широко распространённым компьютером БК-0010, для которого, по различным данным, существует от 4 тысяч программ.
Что же сделать, чтобы владельцы БК-0011 получили доступ к такому богатству? Оказывается, следует всего-навсего эмулировать БК-0010, т.е. создать среду на БК-0011, в которой программы БК-0010 будут работать без проблем.
Начнём с различий в системном программном обеспечении обоих компьютеров. Как известно, удобным и широко применяемым обращением к функциям системного ПО БК-0010 являются командные прерывания EMT, выполняемые через EMT-диспетчер, представляющий собой часть монитора.
Номера (аргументы) EMT (и во многом выполняемые ими функции) обоих компьютеров совпадают, но различаются входные данные, задаваемые в регистрах общего назначения перед обращением к прерыванию EMT. Попытка запустить программу, написанную в системе команд БК-0010 на БК-0011, как правило, приводит к зависанию, а переделать программу с заменой всех входных данных EMT обычно так сложно, что проще написать её заново.
Покажу различия прерывания EMT на примере часто применяемой команды EMT 20, осуществляющей вывод на экран строки символов.
|
БК-0010 |
БК-0011 |
---|---|---|
Команда: |
EMT 20 |
EMT 20 |
Машинный код: |
104020 |
104020 |
Функция: |
вывод на экран строки символов |
Вывод на экран строки символов |
Входные данные |
R1 - адрес начала строки; |
R0 - адрес начала строки; |
Действие: |
R2 - ограничители строки: мл.байт - длина строки (если 0-20000) ст.байт - код символа - ограничителя строки. Строка выводится на экран: курсор в конце строки. |
строка выводится на экран; курсор в начале строки, если конец строки - код 0, и в конце строки, если конец строки - код 200. |
Как видим, различия так велики, что ни о какой работоспособности программ БК-0010 на БК-0011 не может быть и речи.
Полностью совпадают по входным данным следующие EMT: 4, 6,14, 16, 36, а не совпадают - все остальные.
Кроме того, на БК-0011 отсутствует язык ФОКАЛ.
Несмотря на его невысокое быстродействие, пренебречь наработанными на нём сотнями программ, особенно вычислительного и тестового характера, было бы неправильно. Да и в некоторых системных и игровых программах в кодах используются обращения к функциям ФОКАЛа.
Как же эмулировать архитектуру БК-0010 на БК-0011?
Если у вас есть БК-0010, то проблема решена! Перепишите на магнитную ленту драйвер-мониторную систему и язык ФОКАЛ БК-0010. Для этого нужно выйти в режим отладки БК-0010 (на БК-0010-01 обязательно подключив блок МСТД). Привожу последовательность действий: Р (пробел) Т (ввод) (РУС)ТС. На экране появится знак диалога мониторной системы диагностики БК-0010 "колесо".
Затем дайте директивы:
М3 адрес=100000 длина=20000 ИМЯ=МОНИТ
Мы записали на магнитофон драйвер-мониторую систему. Для записи ФОКАЛа нужно изменить адрес - 120000, а для записи и того и другого сразу изменить длину на 40000.
Итак, у вас на МЛ есть запись монитора БК-0010 с ФОКАЛОМ (или без него)
Включите БК-0011. На экране появится:
БК-0011 KEYBOARD MONITOR 000000
И знак приглашения к диалогу - @. Отведём под монитор и ФОКАЛ третью страниц ОЗУ и загрузим программу:
(лат) 3:1С L NAME FILE? В: (ввод)
(ответ В: означает загрузку первого попавшегося файла в формате БК-0010). После правильной загрузки будет выдано сообщение, например:
100000, 20000-МОНИТ.
После чего остаётся только запустить монитор директивой 100000G. В служебной строке появится надпись ЛАТ, а на экране - знак диалога монитора БК-0010 - "?".
Монитор готов к приёму директив. Каких?
М (ввод) - загрузка файла в кодах, на запрос ИМЯ? - наберите имя файла и нажмите ввод. Если файл загружен неправильно, будет выдано сообщение - "ОШИБКА", если же правильно и если файл снабжён автозапуском, он сразу запустится. Если автозапуска нет, то после загрузки файла будет выдан ответ - "?". Для запуска файла с адреса загрузки дайте директиву S (ввод), а для запуска с любого другого адреса - S (адрес) (ввод), где "адрес" - восьмеричное число. Пробелы в директивах недопустимы, при ошибке набора нажмите (стоп) и повторите ввод директивы заново.
Если вы загрузили монитор вместе с ФОКАЛом, то после запуска 100000G произойдёт выход в ФОКАЛ, появится сообщение "ГОТОВНОСТЬ К РАБОТЕ" и знак диалога ФОКАЛа - "*".
Для загрузки фокал-программ наберите: (лат) L G (имя файла), пробелы после L и после G обязательны. Запуск программ: G (ввод), просмотр листинга - W (ввод).
Если вам нужно перейти из ФОКАЛа в монитор, дайте директивы - (лат) Р М (ввод), для обратного перехода из МОНИТОРА В ФОКАЛ - F (ввод). При выходе в ФОКАЛ содержимое ОЗУ пользователя теряется, кроме зоны адресов 1000....1377.
Некоторые программы используют при работе тест-ПЗУ БК-0010, эмулировать которое на БК-0011 невозможно, и поэтому владельцам БК-0011 придётся о них забыть.
Кроме того, в БК-0011 различаются аппаратные средства подачи звуковых сигналов, поэтому будет "молчать" клавиатура, не будут работать директивы вывода из программ, звуковые эффекты, речь. Эти недостатки можно устранить программно, вставив операторы, записывающие 1 в 11 разряд системного регистра, непосредственно перед подпрограммами вывода и подачи звуковых сигналов в самой программе.
Такую операцию можно выполнить с помощью отладчика.
Опытные программисты могут доработать сам МОНИТОР БК-0010, используя место в его конце, где расположен драйвер телеграфного канала.
Руководствуясь материалом этой статьи, вы получите доступ к обширнейшему программному обеспечению, написанному первоклассными программистами, из которого вы сможете выбрать понравившееся или нужное вам для работы. Равноценный запас ПО БК-0011, скорее всего, не будет наработан никогда.
Программы, в которых предусмотрено управление от джойстика, с равным успехом работают в режиме эмуляции, джойстик подключается к порту БК-0011. Работают также и многие системные программы, в частности отладчик-ассемблер "МИРАЖ" С.М. Зильберштейна (не работает, правда, директива вывода "SAVE").
Конечно, данное краткое описание не даёт полной картины работы в среде БК- 0010, на БК-0011, но навык придёт со временем, а проверяя в работе на БК-0011 все новые программы БК-0010, вы получите подлинное удовольствие от сделанных открытий.
В заключение хочу выразить благодарность Ю.А. Зальцману (г. Алма-Ата) за помощь, оказанную в написании данной статьи.
Эта статья подготовлена для представления в издательство на компьютере БК-0010, в среде редактора МИКРО 10, отпечатана на принтере МС-6313/EPSON.
Заключение рецензента
Описанный С.П. Талановым способ запуска программ в машинных кодах и на ФОКАЛе, разработанных для БК-0010, работоспособен на БК0011. Однако я вынужден разочаровать читателей - владельцев БК-0011, так как по имеющимся у меня сведениям эти компьютеры снимаются с производства, а вместо них запускается новая модель - БК-0011М, полностью несовместимая с БК-0011, но зато гораздо более совместимая с БК-0010 (так какие-либо сложности со звуком в программах БК-0010, описанные в рецензируемой статье, исключаются, кроме того БК-0011М имеет принципиально новую клавиатуру и в отличие от БК-0011 способна работать с магнитофоном в уплотнённых форматах записи, как и БК-0010).
Что касается БК-0011, то я, во-первых, могу предложить использовать для загрузки монитора и фокала не третью, а четвертую страницу ОЗУ, так как в этом случае упрощается переделка звука в программах. Для этого достаточно с помощью любого отладчика найти в программе все обращение по записи к регистру внешних устройств 177716 и прибавить ко всем посылаемым в него данным константу 16000.
Так, например, реализация звуковых эффектов в 90% программ достигается непосредственной записью в регистр 177716 констант 220 и 320. Достаточно изменить их соответственно на 16220 и 16320, и ваша программа "зазвучит" на БК-0011. Точно так же можно переделать в мониторе звук нажатой клавиши и запись на магнитофон. Для этого привожу таблицу изменений в мониторе, предложенных московским программистом В. Савиным, известным многим по компьютерным играм.
Таблица изменений монитора БК-0010 для реализации звука и работы с магнитофоном БК-0011 (используется 4 страница ОЗУ)
Смещение от начала файла монитора |
Значения ячеек в мониторе БК-0010 |
Новые значения ячеек монитора |
---|---|---|
000246/ |
000220 |
016200 |
000450/ |
000220 |
016200 |
002064/ |
000320 |
016300 |
002076/ |
000220 |
016200 |
010342/ |
000220 |
016200 |
016146/ |
000220 |
016200 |
016160/ |
000020 |
016000 |
016230/ |
000220 |
016200 |
016260/ |
000020 |
016000 |
016400/ |
000220 |
016200 |
016406/ |
000160 |
016140 |
016420/ |
000020 |
016000 |
016434/ |
000120 |
016100 |
016446/ |
000060 |
016040 |
016520/ |
000160 |
016140 |
016532/ |
000020 |
016000 |
016546/ |
000120 |
016100 |
016560/ |
000060 |
016040 |
016572/ |
000160 |
016140 |
016604/ |
000020 |
016000 |
016646/ |
000020 |
016000 |
016706/ |
000220 |
016200 |
017532/ |
000220 |
016200 |
017542/ |
000200 |
016200 |
017616/ |
000260 |
016240 |
017674/ |
000220 |
016200 |
В заключение могу несколько скрасить горе владельцев БК-0011, сообщив им, что для переделки их компьютеров в БК-0011М требуется не так уж и много - замена всех ПЗУ и небольшое изменение в схеме. Насколько мне известно, уже несколько фирм занимаются переделкой БК-0011 в БК-0011М.
А.М. Надежин