valerium, я как раз запускал только на 48k. И там вся проблема была в том, что на экран отображалась страница с адреса $c000. Так как для 48k нет страничной памяти, я в коде вообще убирал проверку порта $7ffd. Увы, не смог отыскать что я там правил, но по памяти вроде где-то 1 на 0 поменял в проверке порта. Смотрел в репе diff как автор добавлял поддержку 128k. На 128k не проверял, завтра найду машинку попробую. На стороне малинки вообще ничего не пробовал править. Спасибо, что разжевал что там происходит в коде!
Исходя из дизассемблера прошивки спека 128k, первая запись в порт $7ffd идет непосредственно сразу после рестарта:
Код:
; --------------------------------------------
; Reset Routine (RST $00 Continuation, Part 1)
; --------------------------------------------
; Continuation from routine at $0000 (ROM 0). It performs a test on all RAM banks.
; This test is crude and can fail to detect a variety of RAM errors.
L00C7: LD B,$08 ; Loop through all RAM banks.
L00C9: LD A,B ;
EXX ; Save B register.
DEC A ; RAM bank number 0 to 7. 128K mode, ROM 0, Screen 0.
LD BC,$7FFD ;
OUT (C),A ; Switch RAM bank.
LD HL,$C000 ; Start of the current RAM bank.
LD DE,$C001 ;
LD BC,$3FFF ; All 16K of RAM bank.
LD A,$FF ;
LD (HL),A ; Store $FF into RAM location.
CP (HL) ; Check RAM integrity.
JR NZ,L0131 ; Jump if RAM error found.
В случае 48k никакой записи нет и защелка не сработает. Может потому у меня и была включена всегда страница RAM7 хотя ее и нет.