С.П. Таланов (г.Яранск)

Использование программ от БК-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М.

А.М. Надежин

Performed by © gid, 2012-2024.