
Сообщение от
Improver
Я мельком посмотрел Ваши исходники, в принципе DASMX даёт неплохой результат, можно пользоваться. Просто в качестве альтернативы могу поделиться тем, чем пользуюсь сам -- DASM580 (
DASM580_106.7z), который я написал когда-то давно-давно...
Спасибо за ссылочку, посмотрю обязательно !

Сообщение от
Improver
И по поводу патча МДОС, вопрос: если взять полученные Вами исходники без патча (orgD800H_3400H-468EH_BDOS_original.asm), то откомпилированный с них бинарник полностью совпадает с бинарником из MДОС (orgD800H_3400H-468EH_BDOS.rom)? Я бы начал копать отсюда...
Да, я добился идентичности, оригинальный текст компилится, я сравниваю его с вырезанным куском, HEX редактор заявляет об идентичности файлов.

Сообщение от
Improver
Второе, что следует сделать, это разобраться с командами PCHL (их там 5 штук), и дизассемблиролвать подпрограммы, на которые они ссылаются. Вполне возможно, что Ваш патч затрагивает их работу, но из-за того, что в исходнике они показаны, как наборы данных, в них ссылки не исправляются при перекомпиляции и вылезает ошибка.
На счет этого я не подумал, поищу, спасибо за направление!
- - - Добавлено - - -

Сообщение от
b2m
А количество секторов и головок по адресам sectors+1 и heads+1 в коде инициализации устанавливаются?
Вот наверное я на это вчера и наткнулся, это похоже оно и есть, нашел участок кода, как раз там, где были адреса "LXI B, XXX" в LD8F3. там у меня оказался кусок кода, и он постоянно "портился" при анализе в дебагере, ... в итоге, я понял, что по этим адресам что то пишется. Похоже это и есть адреса, осталось только найти от куда они пишутся, или по крайней мере, засунуть в эти места переменные, из которых потом брать эти значения. Сейчас я там просто массив нулей расположил, и обозначил две переменных в этом массиве, код расположил так, чтобы его по этим адресам не было, ну и как раз нулей там столько, чтобы восстановить оригинальные адреса всего оставшегося кода.
Подскажите пожалуйста, sectors+1 и heads+1 - это:
Код:
sectors:
mvi b, 16
mov a,e
call LD879
inr a
out 53h
xra a
heads:
mvi b,4
call LD879
out 56h
mov a,h
out 055h
mov a,l
out 054h
в этом коде... Наверняка я что то не так понимаю... в этом коде вроде не куда патчить адреса... пока не понятно, можете чуть пояснить? И "в коде инициализации" это за пределами BDOS? это тот код, который распределяет по памяти куски системы после загрузки бинарника, он патчит код на предмет адресов ?