User Tag List

Показано с 1 по 10 из 1362

Тема: Орион-128: Разное

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #10

    Регистрация
    05.10.2016
    Адрес
    г. Санкт-Петербург
    Сообщений
    1,080
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    5
    Поблагодарили
    5 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Дизассемблировал в полноценный исходник М4. Теперь могу сказать из чего и как он получен и что из себя представляет.

    Итак, получено это не из М3.1 для КР580, а из моего ПЗУ М3 Z80 из 1994, версий до 3.605. Т.к в версии 3.605 уже форма курсора меняется в зависимости от регистра клавиатуры, а здесь курсор большой, но неизменной формы (а версии М3 из 1992 от А.Новгородова вообще имеют маленький курсор как в М2).

    Что сделано в этом ПЗУ? Добавлена новая входная точка F3C0. Там стоит переход на WARM BOOT F86C. Автор понял, что ещё один JMP ниже F3C3 умещается, но истратил его на ерунду, т.к стандартный вход WARM BOOT в советских компьютерах это F86C. Ячейка F3C1 в M3 это TMPSP (в М2 TMPSP это F3DF, что в M3 вектор AINT). Чтобы освободить ячейки F3C0, F3C1, F3C2 для ненужного входа WARM BOOT, автор поставил TMPSP на F3E1,что в М2 и М3 резервный адрес COUTC (для непонятных целей введённый в М2).

    Естественно, при обратном переводе с Z80 на КР580 произведена замена JR команд на JP, убраны DJNZ, команды BIT и сдвиги регистров изменены на сдвиги в аккумуляре. Однако в п/п-мме ролика экрана, использовались команды LDI, поэтому эта часть заменена на п/п-мму ролика из М3.0 для КР580.

    В подпрограмме вывода символов в М2 и М3 до 1994 как рабочая используется ячейка OSTAT F3DD. Но в моих М3-Z80 эта ячейка не используется, вместо неё используется IXL половинка индекного регистра. Это было сделано не ради освобождения ячейки F3DD, а потому что так достигается экономия объёма кода. Естественно, при обратном переходе на КР580 пришлось изыскивать свободную ячейку. Но автор М4 не изучал разные ПЗУ для КР580 и не знал, что ячейка OSTAT F3DD именно для этих целей и служит. Поэтому он ввёл ещё одну служебную ячейку OSTAT F3F2, выполняющую ту же самую функцию, что в М1 M2 M3 КР580 выполняет ячейка OSTAT F3DD (которая в М4, естественно, свободна).

    Даже если бы не было полной идентичости кода с M3 Z80, это однозначно свидетельствует, что получено из ПЗУ для Z80. Об этом же свидетельствует использование новгородовской п/п-ммы XF81B, которая совершенно другая, чем п/п-раммы В.Сугоняко и В.Ивинских. К чести автора следует сказать, что он не просто заимствовал, а изучил код и сумел изменить константу в п/п-мме ввода с клавиатуры.

    Выкинуты все МГ-подпрограммы. Выкинута проверка и автостарт M3-EXT. Выкинут CCP М3 (п/п-мма ввода строки и конверсия HEX-текстов в их значения). Директивы I и G, как ни странно остались, но делают теперь совсем иное (не запуск с указанного адреса и не ввод с магнитофона). Их надо нажимать при сбросе.

    Внесены некоторые изменения в стандартные входы. О смещениях стандартной входной точки WBOOT я уже упоминал. П/п-ммы F81B F80F F812 оставлены векторизованными, как в М3-Z80 (что чревато проблемами с программами идиотов, что в качестве обычных ячеек хранения используют ячейки F3F0...F3FF, предназначенные для ROM-BIOS). Вместо READ RAMTOP F830 вставлена своя новая подпрограмма XXXXXX непонятного назначения. (меняет байты в банках). Вместо запроса RAMTOP теперь стоит подпрограмма INILOCK (инициализация рабочих ячеек). Это именно то, чего не хватало в М2 и М3, т.к позволяет без проблем отгружать драйвера. В моих ПЗУ это тоже есть, но входная точка не тратится (точка за 3 байта до F86C). Введена новая стандартная входная точка F842. Эта п/п-мма служит для того, чтобы задать номер банки куда будет просходить возврат из п/п-рамм RDRAM и WRRAM (чтения из записи байта в банки). Это позволяет использовать п/п-ммы F836/39 из любой банки, а не только из нулевой. Но лучше это достигается дублированием содержимого портов F8, F9, FA, FB в адресах F3F8, F3F9, F3FA, F3FB.

    Что введено? Если ROM-диск есть, то происходит выход в ORDOS. Если ROM-диска нет, то выводится промпт "? R/F/H" ?". По нажатию на R грузится ORDOS с ROM-диска, по F стартует загрузчик дисковода от ОРИОНСОФТ (адреса F710/F714 и другой оффсет байта в BOOT-секторе с номером банки ДОС). Если же нажать H, то происходит загрузка с винчестера, который установлен по адресу F750...F75F. Так как винчестер был не сильно распространён, то несложно вычислить автора этого ПЗУ М4.

    Долго "трахался", чтобы получить полноценный исходник, хотя это ПЗУ не стоило и минуты моего труда. За час можно наштамповать таких десяток, причём лучшего качества, засунув в них загрузчики чего угодно. Чтобы мой труд не пропадал впустую, я исправлю в этом ПЗУ явные ненужности и несоответствия стандартам М2 и выкину загрузчик винчестера стоящего по адресу F750, а также все добавленные нестандартные подпрограммы неизвестного назначения (это не "горит", так что сделаю такое ПЗУ позднее). Можете изучить исходник и выяснить самостоятельно зачем введены новые подпрограммы и что они полезного дают.
    Вложения Вложения
    Последний раз редактировалось barsik; 04.05.2017 в 17:04.

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Специалист: Разное
    от Splinter в разделе Специалист
    Ответов: 171
    Последнее: 09.05.2018, 07:50
  2. Видео про спекрум новое разное
    от AAA в разделе Новости
    Ответов: 19
    Последнее: 05.08.2016, 22:57
  3. Куплю Поиск, Радио - 86, Орион, БК
    от luzanov в разделе Барахолка (архив)
    Ответов: 23
    Последнее: 03.04.2007, 17:50
  4. Ответов: 4
    Последнее: 05.10.2006, 20:18
  5. Я готов купить Радио и Орион
    от Shaos в разделе Барахолка (архив)
    Ответов: 7
    Последнее: 18.12.2005, 22:15

Метки этой темы

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •