Прочитал доки и стал разбираться с видеорежимами и адресацией памяти. Интересно, а можно включить режим 1, похожий на ZX Spectrum с адресаций видеоданных с $4000-$5AFF?
device zxspectrum48
org $8000
begin
ld a,%00001111;MSSppppp, SS - screen mode, ppppp - page#, M=Midi io
out (252),a ;VMPR - Video Memory Page Register
; Page in Vram
ld a,%00001110 ;WRrBBBBB W=Write protect Bank R=rom in high area B=low ram Bank r=ram in low area
out (250),a ;LMPR - Low Memory Page Register
ld sp,$BFFF
; ld a,1,(0),a
jr $
end
display/d,end-begin
savebin "zxs",begin,end-begin
shellexec "mgtman -wc zxs.dsk zxs 32768 32768"
org $8000
begin
ld a,%00001111;MSSppppp, SS - screen mode, ppppp - page#, M=Midi io
out (252),a ;VMPR - Video Memory Page Register
; Page in Vram
ld a,%00001110 ;WRrBBBBB W=Write protect Bank R=rom in high area B=low ram Bank r=ram in low area
out (250),a ;LMPR - Low Memory Page Register
ld sp,$BFFF
; ld a,1,(0),a
jr $
end
display/d,end-begin
savebin "zxs",begin,end-begin
shellexec "mgtman -wc zxs.dsk zxs 32768 32768"
Наверное, можно. /Память разбита на 4 секции A,B,C,D. Запись значения 14 в порт LMPR подключает этот банк 0-$4000, но в секции B будет следующий банк 15. Запись значения 15 в порт VMPR подключит экран по адресу $4000-$8000 -секция B. Исходник и документация тут(Бонус - закладки PDF). Только неясны биты защиты памяти, как ни менял значения, ничего не меняется.
Дополнение. Цвета можно менять, работает при запрещенных прерываниях. В дизассемблере указано, что используется буфер - FFD8, но запись не работает.
di
ld a,102
ld bc,$1F8
pp:
out (c),a
inc b
add a,8
bit 4,b
jr z,pp
ld a,102
ld bc,$1F8
pp:
out (c),a
inc b
add a,8
bit 4,b
jr z,pp
Комментарии
Отправить комментарий