Конечно. Почти все приличные игры написанные специально для Специалиста клавиатуру опрашивают прямым доступом к ППА клавиатуры. Я потому и написал, что только игры от РК будут работать при такой упрощённой эмуляции клавиатуры.
Вообще-то, благодаря скорости опроса клавиатуры, для программ в которых не используются двойные нажатия нужды писать свои процедуры опроса не было. Быстрее, чем это сделал А.Волков всё-равно не получится.
Проблема была в том, что п/п-мму INKEY (аналог эр-кашной п/п-ммы F81B) для Специалиста не стандартизовали, хотя физически она есть. А т.к игры в подавляющем большинстве писались так, чтобы работать только при наличии одного ПЗУ, т.наз. загрузчика (не требуя на C800 наличия эр-ка подобных входов), то по причине отсутствия в загрузчике п/п-ммы "чтения на лету" (F81B), и приходилось писать свой опрос матрицы.
А вот игры от РК конвертировались уже почти всегда с использованием входов C800, потому нужды в собственном опросе не было. И даже РК-игры, в которых был собственный опрос с бегущим нулём, приходилось переделывать на стандартный опрос с использованием C81B (т.к без наличия диодов в схеме матрицы сканирование нулём не работало).
Кстати, чтобы введя ПЗУ C800 не требовалось переделывать РК-программы, достаточно было применить 2 диода, чтобы по адресу F800...F8FF читалось ПЗУ C800...C8FF.
Но в данном контексте речь шла о том, чтобы для начала получить хотя бы частично работающую версию этой конструкции. Всегда полезно, когда есть промежуточные успехи (добавляет энтузиазм). Глупо стремиться сразу всё сделать хорошо и идеально. Это как при разработке программы. Сначала на большинство функций ставятся бутафорские заглушки или имитация. Благодаря чему отлаживается ядро программы, основная петля. А затем уже бутафория заменяется на реально работающие процедуры.
Теоретически да, но на практике нет. Да, игры в основном грамотно делали так, чтобы они работали при наличии только загрузчика (т.к не все были настолько богаты, чтобы позволить себе истратить лишние 3-5 рублей на покупку второй 573 РФ2). Но я и предлагал перехватывать точку внутри загрузчика, а не вход C81B.
Но для системных программ это не так. Потому что, что ни говори, а базовый загрузчик Волкова/Зверкова имеет три фатальных недостатка и множество мелких.
Во-первых, C037 ради крошечного ускорения выводит по OR без очистки знакоместа. Таким образом при выводе на нечистый экран на экран выводится просто мусор. Знакоместо очищает только Забой. Потому п/п-мма C809, чтобы не писать полностью новую процедуру вывода символа делает так. Она выводит забой, затем возвращает курсор на место и затем передает управление на C037. Потому системные программы, чтобы вывод был таким же как во всех остальных компьютерах в мире вызывают C809, а не C037.
Во-вторых, вообще нет ролика экрана. По выводу ВК в последней строке экрана, курсор перескакивает на первую строку. Потому Орлову пришлось писать свой ролик для подпрограммы C809 (причём он сделал его тормозным, т.е без использования стека).
Ясно, что для системных программ такое поведение неприемлемо. Потому все системные программы (кроме самого раннего бейсика) используют и требуют наличия ПЗУ C800 с орловским (или совместимым) монитором. Таким образом ПЗУ C800 это не монитор, а тоже ROM-BIOS, т.к содержит стандартные входные точки.
Получается, что если хочешь только играть в игры, тебе достаточно ПЗУ в 2 кб. Но если нужны системные программы, то без ПЗУ C800 не обойтись. Потому только самые несерьёзные пользователи Специалиста не имели ПЗУ C800.
Кстати, третий недостаток п/п-ммы C037 загрузчика в том, что она не обрабатывает искейп-коды. И даже прямое позиционирование курсора отсутствует, что вообще нонсенс. Отпозиционировать курсор можно только некорректно залезая в служебные ячейки ПЗУ POSX,POSY, но которые в свою очередь неудобные для программиста, т.к не абсолютные в значениях координат, а в виде абстрактных экранных данных.
Кстати Орлов, эту ошибку тоже не исправил, хотя ESC+Y в ПЗУ РК86 обслуживается. Это как раз и вызывает несовместимость с ПО от РК86. Таким образом делали новый ROM-BIOS с целью обеспечить совместимость, но даже столь важную вещь как совместимость самой главной подпрограммы не обеспечили.
В четвёртых, не обслуживаются упр.коды 8A, 8B позволяющие включить/выключить вывод символов в инверсии, что снова заставляет нагло напрямую лезть в служебные ячейки ПЗУ.
Все эти и другие ошибки базовых ПЗУ были исправлены в более грамотных версиях ПЗУ, причём при сохранении совместимости. Например, в ПЗУ C800 совмещены 18 стандартных и более 20 недокументированных (хотя иногда сдуру кое-кем используемых) входов в п/п-ммы ПЗУ.