не все так просто,проблема именно в страницах,адреса светятся красным и не переименовываются.
Вид для печати
Покажите мне карту сегментов. Или дайте базу и я покажу что не так.
Вот, пожалуйста, база.
В общем, все проблемы из-за того, что IDA не заточена под банксвитчинг. Несмотря на то, что вы при создании базы присвоили всем переключаемым сегментам адреса 4000-7FFF, IDA этот параметр применяет только к счетчику команд, продолжая использовать реальный адрес сегмента в исходном файле для вычисления относительных адресов. Потому как рушатся только те команды, которые, используют относительную адресацию операнда. Кстати, они не соответствуют Z80. И если отменить распознавание и по чистому запустить сразу, например, в сегменте ROM04, то все ошибочные адреса вылезают в ROM06, что и соответствует правильным адресам, если бы ROM04 реально стоял в 4000, а ROM06 при этом как раз попадает на ОЗУ. У IDA есть вот такое окно:
http://savepic.ru/12838088.png
Это карта видимости сегментов. И согласно мапперу, ROM00 должен видеть всех, а ROM01...ROM1F должны видеть только ROM00 и все верхние сегменты (адреса внутри процессора 8000-FFFF). Если это указать здесь, то часть ошибок уходит, остаются только спецкоманды Шарпа с относительной адресацией. И я не знаю, как это решить здесь, может плагин-маппер нужно написать (не путать с лоадером)?
PS А вот массивы лучше задавать вот с такими параметрами:
http://savepic.ru/12818632.png
И тогда, было:
http://savepic.ru/12815560.png
Стало:
http://savepic.ru/12806344.png
- - - Добавлено - - -
Ах да, куча мест, где код распознан как массив и наоборот (например, массив выше это код). Продолжайте изучать тему дизассемблинга, повышайте свое мастерство. И, быть может, в этом как раз и таится загадка этих ошибочных адресов, которых быть и не должно. Кто знает?
Да, я пытался шаманить в том окне, аналогичным образом, но это, к сожалению, не принесло нужного результата.
Это скорее пожелание к IDA Pro, а не ко мне :) Потому что я предоставил базу сразу после загрузки в неё бинарника и автоматического распознавания без малейшего вмешательства с моей стороны, чтобы полностью исключить нарушение логики переключения банков, включая и окно, о котором шла речь выше. Поэтому, естественно, во многих местах код и массивы автоматически определены неверно.
Там же, где и остальные окна про сегменты.
HardWareMan, ага в версии 6.8 такого нет
Раз уж зашла речь о loaders. Вот вам варианты на Python. Пишем Loader в любом текстовом редакторе, ложем в папку loaders и пользуемся.