Сделал реверсирование выложенного ранее исходника, т.е включил условную трансляцию с ключом W_OUT (with OUT). Теперь, если этот ключ поставить не 0, то транслируется версия с командами IN/OUT, т.е, якобы, полный оригинал.
И странслировал чтобы получить оригинал и сравнил с дампом полного оригинала, полученного в 1993 из МП "Лианозово". Оказалось, есть небольшие несовпадения в 3-х местах. Поэтому пришлось с этим разбираться, отчего и ушло больше времени, чем 1 час. Оказалось, что это всё-же по работе полный оригинал, а точнее оригинал с исправленными ошибками и глупостями.
Во-первых исправлена ошибка Е.Седова по адресу E778. Это явная ошибка (что ясно, если рассмотреть алгоритм), - у числа случайно стёрся суффикс H. Эта ошибка не сказывается при формате 5 секторов, но фатальна при другом формате.
Во-вторых в двух местах две команды переставлены местами. А именно там регистр B перед возвратом по RET загружается кодом ошибки. В этих двух местах загрузка B сделана раньше, а именно, перед CALL на подпрограмму (которая B не изменяет). Логично параметр загружать перед его использованием, что делает исходник понятным. Причём и у самого Е.Седова в остальных случаях так и сделано, но в этих двух местах логика нарушена и потому была исправлена (а в тексте оставлена строка "Полный оригинал", что и ввело меня спустя 20 лет в лишние хлопоты).
Так что Вы получили всё-же оригинал по работе. Но чтобы убрать все сомнения я опять переставил эти две команды и получился на самом деле полный оригинал. И если Вы утверждаете, что оригинал RK-DOS у Вас много лет успешно работал, то странслируйте эту версию с ключом W_OUT=1 (или не 0) и получите полный оригинал той RK-DOS, что 20 лет работала на моём РК86 на КР580. Она, предположительно должна работать и на 8085.
Про 8085 ничего не знаю. Что 8085 дублирует адреса порта при командах IN/OUT на старших адресах, также как КР580?
Сообщите, что Вы конкретно транслируете (куда), т.е как Вы проверяете исходник. И интересно как Вы пересылаете файлы из PC в РК86. У меня эта задача не была решена (эта задача не ставилась, т.к РК я практически с 1995 не пользовался, а диски РК86 прекрасно читал ОРИОН, у которого был обмен с PC и по проводной линии и через дискеты в форматах 800К ОРИОНА и 360К и 720К в формате MSDOS)
Скиньте мне пожалуйста код вашей версии RK-DOS, которая много лет работает на 8085, а также коды и других версий RK-DOS (имели хождение много версий RK-DOS, хотя 2.95, кажется, последняя от Е.Седова, но после него этим занимались авторы РК-МАКСИ и доработали её).
PS: Сейчас ключ W_OUT стоит равным 1, т.е транслируется полный оригинал, не для Z80. Для трансляции для Z80 поставьте этот ключ равным 0.
- - - Добавлено - - -
Ради интереса стал искать на сайте код RK-DOS. С трудом нашёл дистрибутив RK-DOS выложенный Cyb в теме "Подключение НГМД". И оказалось, что этот код один в один совпал с моим оригиналом из 1993 года.
Вчера я перепутал и выложил не ту версию монитора для КР580. Архив с именем 'ROM-BIOS КР580' это незаконченная версия, в которой подпрограммы F836/39 есть, но входов в них в таблице входов нет (т.е нет самих JMP-ов в начале ПЗУ - JMP RRAM и JMP WRAM на адресах F836 и F839). Вот та же самая версия, отличающаяся лишь тем, что эти входы теперь есть, а в остальном код идентичен, можете сравнить.




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