:) ну, как для фаната GMX, логика возможно и безупречна :)
Ладно savelij, не будем сотрясать впустую воздух - аргументированно защитить необходимость GMX ты всё равно не можешь, а твои религиозные взгляды меня не интересуют :)
Вид для печати
В этом я с тобой солидарен, токо я специализируюсь на истории развития архитектуры ZX Spectrum, идеологии и концепциях её развития. К сожалению ты в этом не преуспел и поэтому, не иначе как из религиозных соображений, вообще отрицаешь существование этого знания, иначе не писал бы:
Мне нравится заниматься идеологией, концепциями и историей, тебе - ковырять код ПрофПЗУ, но при этом я не заставляю тебя разрабатывать идеологию развития :) . Имхо ты полезней на своём месте, а я на своём :) Вот моё мнение по этому поводу :)
Там черный-черный экран с надписью типа "найдено 2048кб памяти, нажмите "Delete" и будет вам щастье!". Этот экран должен держаться секунду, потом загружается конфиг по умолчанию (вроде бы "1") и рестарт с новым конфигом.
---------- Post added at 20:57 ---------- Previous post was at 20:49 ----------
Тут такая затыка с этим экраном.
Он появляется только в случае, если после сброса/включения бит 0 порта 78FD равен 0. Если там 1, то он не появляется. Но чтобы нам указать ГМХе что мы хотим после старта увидеть конфиг Скорпиона, мы должны указать конфигурацию 1 или 7. У этих чисел бит 0 равен единице. А он - как раз и есть тот самый бит, определяющий будет первый экран или нет. Выбираем "Скорпион" по умолчанию - и экран не видим. Вот так вот как-то.
---------- Post added at 21:01 ---------- Previous post was at 20:57 ----------
Обновил конфиг, теперь он правильный!
Посмотрел загрузчик, обнаружен такой код:
То есть таки через бит 0 порта 78FD читает какой то байт конфигурации. Я так понимаю что читается именно номер дефолтной схемы. В дальнейшем коде несколько раз из этого байта проверяются биты 7,3 и 3-0 как номер для загрузки конфига. Если статично выставляешь 1 то на выхлопе будет байт #FF со всеми вытекающими, для 0 соответственно будет 0. Для загрузки дефолтной схемы я так понимаю этот код должен вернуть значение именно дефолтной схемы. И тут пошли 2 варианта: или ты делаешь нужный битовый плевок или надо менять загрузчик. Но загрузчик придется не по децки перепахивать ибо там контроль целостности содержимого пзу чуть ли не на каждом шагу. Ну или еще как вариант забить на это меню выбора.Цитата:
sub_13F:
xor a
ld bc, 78FDh
out (c), a
ld e, 8
loc_147:
in d, (c)
srl d
rra
dec e
jr nz, loc_147
ld b, 7Ah
in d, (c)
ret
Два кусочка эмулятора:
Запись в в порт xx00h:
Чтение 78FDh:Код:if (comp.p00 & 8)
{
comp.gmx_magic_shift = 0x80 | (comp.p00 & 7);
if (!(comp.p00 & 0x10))
cpu.reset();
}
Код:case 0x78:
tmp = (comp.p78FD & 0x7F) | ((comp.pFE & 2) << 6);
tmp |= (comp.gmx_magic_shift&1);
comp.gmx_magic_shift >>= 1;
return tmp;