Не понял, зачем переделывать RK-DOS с целью поменять адреса в самой RK-DOS.Сообщение от Pyk
Так конечно будет работать и без узла совместимости с ОРИОНОМ и РК86 (что переадресует адреса F800...F8FF на C800). Но зачем менять программы, их же много, если 2 диода снимают проблему. ИД7 на область F800...FFFF всё-равно ставить, если пользователь хочет иметь В/У. Когда есть совместимость по вызовам F800, то системные программы для RK-DOS для всех 3-х типов компьютеров с ней (РК, ОРИОН, СП-Т) могут использовать одни и те же программы.
В общем, не понял есть ли в эмуляторе уже узел совместимости или нет. Т.е что будет если сделать CALL F803 - завис или ввод с клавиатуры ?
Не помню такого. Т.е не помню, что бы мне пришлось переделывать ROM-BIOS. Правда я использовал другой ROM-BIOS. А вообще орловский монитор левый, у него есть и другие несовместимости.Сообщение от Pyk
F812 на РК если есть нажатие, считывает символ и кладёт его в однобайтовый буфер. Так, якобы, имитируется аппаратная клавиатура. А авторы ПЗУ ОРИОНА и Орлов этого не знали и не имплементировали. Поэтому, когда скорость CPU мала по F812 возвращается флаг о наличии символа в буфере. Получив флаг готовности CPU лезет в F803, чтобы этот символ забрать, но клавиатуру уже отпустили и он подвесает в F803 до следующего нажатия. Это та же самая проблема, что возникает при попытке использовать игры от РК на ОРИОНЕ.
Позднее, возможно попробую написать монитор C800 более совместимый с РК86, а возможно даже встрою туда эмулятор РК86. Я уже делал так на ОРИОНЕ. Для получения совместимости надо "писать в" и реально использовать все раб.ячейки ПЗУ РК86, а Орлов сделал просто халяву, переадресовал на похожие п/п-ммы загрузчика, хотя принципы совершенно разные.
А экранный эмулятор делается так. Любая из следующих п/п-мм ПЗУ F803, F809, F812, F815, F818, F82D проверяет простейший аппаратный таймер, благодаря чему "узнает", что прошло более 0.4-0.8 секунды. И тогда копирует экран РК86 в экран ОРИОНА. Т.е экран ОРИОНА всегда повторяет экран РК86, даже если туда символы попали прямой наглой записью прямо в экранное ОЗУ. Т.о если и ROM-BIOS работает правильно, то получается 100% совместимость с РК86 (за исключением программ идиотов, которые лезут прямо внутрь ПЗУ F800, к сожалению таких придурков довольно много).
Правда, если на ОРИОНЕ, такой эмулятор даёт полную совместимость не только с программами не лезущими в матрицу через ППА, но и при при крошечной переделке (смене адреса порта клав-ры с 8000 на F400) позволяет использовать даже игры лезущие напрямую к матрице клавишш (т.к клавиатуры одинаковые), то на СПЕЦИАЛИСТЕ простейшая замена адреса порта в этом не поможет (надо менять весь алгоритм сканирования РК-матрицы). Но таких игр не так уж много.
Но в общем-то, спасибо. Хотя это ещё не совсем то (по адресации), но уже по крайней мере хоть что-то можно проверять. Т.е делать все системные вызовы на C803,C806,C809... а на адреса F800 перетранслировать уже при трансляции для реала. Это не проблема, если в ассемблере есть условная трансляция.




Ответить с цитированием