
Сообщение от
USERHOME
Файл testrom3_8kb_for_divide.rom
байт с #F9 на #FA
В смысле сменить точку перехода в exit area на 1FFA, про это речь ?
Код:
074a 210100 ld hl,0001h ;подготавливаем в HL адрес перехода = 0001h
074d c3f91f jp 1ff9h ;переходим в exit area
...
1ff8 c9 ret
1ff9 e9 jp (hl) ;вот сюда мы переходим, отсюда читается 1-байтный опкод и сразу должен отключиться маппинг ПЗУ DivMMC
>> 1ffa c7 rst 00h ;а поскольку переход выполняется не в адрес автоматического маппирования 0000, а в 0001, то это не ловится DivMMC
1ffb c7 rst 00h ;и должен выполняться штатный ROM48k
1ffc c7 rst 00h
1ffd c7 rst 00h
1ffe c7 rst 00h
1fff c7 rst 00h
Тогда при переходе по этому адресу по идее отключится ПЗУ DivMMC, но там выполнится RST 0 и это приведет к переходу по адресу 0000, на который опять сработает ловушка для automap и внешнее ПЗУ тут же включится обратно.
Суть хитрости, сделанной здесь - в том, чтоб зайти в штатное ПЗУ не с 0000, а с 0001.
Собственно, переход-то в этой тестовой прошивке написан правильно (иначе б не был выпущен релиз), вопрос в том, где у меня железо не соответствует ))

Сообщение от
USERHOME
Вот этот момент не очень понятен
где же храниться , на какой адрес он указывает рег. SP ?
0743 01ffbf ld bc,0bfffh
0746 75 ld (hl),l
0747 edb0 ldir ;выполняем-таки зачистку всех 48к ОЗУ
А здесь нам SP уже не важен. К этому моменту нет ни одного незавершенного вызова, из которого надо RET-ом вернуться по адресу в стеке. Дальше выполняется LDIR (и ему не нужен стек), а потом просто JP. Поэтому ни стек, ни указатель стека уже не будут использоваться до инициализации штатного ROM.