.
Дизассемблировал и получил исходник ПЗУ Микроши (совместимого по входам с РК86) из ж.Радио 12.1989, о котором идёт речь в данной теме. В качестве исходного
взял дамп с упомянутого сайта (он называется не "фантом", а "Полигон призраков"). Интересно, что данный файл работает в EMU80, а в EMU виснет, если в конфиге не закомментировать секцию кассетного интерфейса.
Как видите это ПЗУ является почти полной копией ПЗУ РК86 из 1986 (того в котором ещё нет директивы R, которую добавили в 1987). Сам код процедур тот же самый. Но есть незначительные отличия (не считая других адресов БИС).
Отличия в портах A и B клавиатуры (они поменяны в Микроше). Кроме того клавиша РУС/ЛАТ читается в РК86 по биту D7, а в Микроше по биту D5. Похоже, что разработчики сознательно меняли в Микроше не только порты, но и биты спец.клавиш, что вне матрицы PC7<->PC5, чтобы избежать всякой совместимости. Непонятно зачем старались устранить совместимость.
Также есть изменения в подпрограмме вывода звука выходом INTE, дополнительно на порт PC выводятся единицы по всем разрядам. А ВИ53 вообще не инициализируется. Очевидно какой-то бит PC отключает вывод звука с ВИ53 (иначе он пищит при включении питания, т.к не имеет входа сброса). Кстати, проще программно затыкать ВИ53, чем делать это аппаратно. Отличается также размещение клавиш доп.клавиатуры. Также добавлен вектор для одной стандартной подпрограммы на 7653 инициализируемый кодом RET. Подпрограмма PUSK_VG (F82D) не сохраняет регистров.
В данном исходнике ПЗУ Микроши имена меток сделаны такими же, что и в исходнике РК86. Т.е имена цифровых меток не соответствуют адресам в ПЗУ Микроши, а соответствуют адресам в ПЗУ РК86. Удобно сравнивать, например, загрузив в редактор оба исходника (в двух окнах, разбив экран надвое, чтобы сравнивать тексты) и постранично листая в обоих окнах текст, сразу можно видеть, что 99% кода совпадает.
Похоже переделку ПЗУ делал не очень знающий ПО РК программист. В частности, он не совместил не только внутренние нестандартные точки ПЗУ РК (без чего некоторые программы не работают), но даже стандартную точку WARM START не совместил с стандартным РК адресом F86C (а сделал F882). Причём это исправляется легко, т.к до WARMST стоят 17 NOP-ов (очевидно чтобы подогнать размер кода к 2К и чтобы можно было вставить здесь коды инициализации других БИС). В Микроше WARMST тоже иной - это F89D, но совмещаться с ней бесполезно, т.к сам монитор другой. А все внутренние точки ПЗУ РК оказались сдвинуты на 2...10 байтов. Это дополнительная причина несовместимости, которая, впрочем, легко устраняется перекомпоновкой фрагментов.
Этот монитор даёт совместимость только корректных программ, т.е программ работающих с клавиатурой п/п-ми F812, F81B, F803 и не лезущих в нестандартные точки внутри ПЗУ. Хорошие игры опрашивают клавиатуру напрямую через ППА 8000. Проблема не только в том, что ППА по этому адресу в Микроше нет, а в том, что перепутаны порты и биты клавиатуры (хотя сама клавиатура одинаковая). Потому переделка программ не сводится лишь к подстановке другого адреса ППА.
И всё-же такой монитор имеет смысл, т.к многие игры работают с клавиатурой только подпрограммами ПЗУ. Наличие такого ПЗУ избавляет от необходимости при конверсии заменять п/п-ммы РК-ПЗУ, которых нет в Микроше (или они отличаются) отдельными подпрограммами, подключаемыми к адаптируемой программе, что резко упрощает конверсию программ от РК86.
Если надо, то могу переделать это ПЗУ так, чтобы внутренние точки совпадали с РК-ПЗУ и добавить работу с ROM-диском. Это несложно, имея исходник. На всякий случай напомню, что чтобы создавался полный листинг трансляции надо закомментировать директиву
.xlist (в сАмой первой строке).
petrenko wrote:Нуждаемся в коде ентой самой директивы "R" (можно дизассемблированном, можно с комментариями)... также в адресах точек входа и как там передаются параметры
Вопрос хотя и поставлен неконкретно, но Вам ответили так, как поняли вопрос. А двоим ответившим, вместо того, чтобы их поблагодарить, Вы ответили невежливо. Кстати, распространение личных данных, тем более взятых с другого сайта, нарушают правила форума.
Вы получили, что просили. Просили исходник директивы R и его получили. Про параметры подпрограммы я ответил, а адрес виден в листинге трансляции. Если Вам ответили не так, как Вы ожидали, так надо правильно формулировать вопрос или просьбу. Здесь не экстрасены, чтобы догадаться, что подразумевался вовсе не вопрос о исходнике DIR_R, а имелась ввиду просьба встроить директиву R в Ваш монитор.
- - - Добавлено - - -
В дамп исходного ПЗУ и, соответственно в дизассемблированный исходник при получении дампа путём сканирования журнала и конверсией в текст закралась ошибка. По адресу FCA0 вместо байта 01 должен стоять байт D1. В исходнике соответственно метку JJJ_01 надо переименовать в POPREG и вместо команды LD BC,E1C1 вставить три команды
- - - Добавлено - - -
Обновил вложение, исправил ошибку.
You do not have the required permissions to view the files attached to this post.