diff --git a/constants/SP2000.inc b/constants/SP2000.inc index f2ef939..355c47c 100644 --- a/constants/SP2000.inc +++ b/constants/SP2000.inc @@ -154,34 +154,34 @@ bit5 - CNF_PN[5..0]_RESET by 1 - bit6 - CNF_SC_RESET by 1 - сброс Скорп. порта ; / bit7 - CNF_PN[7..6]_RESET by 0 - сброс Пент-512 ;/ -Переключение страниц vROM: -___________________________________________________________________________ -| Значение | Запись во внешний порт: | -| из внутр. |___________________________________________________________| -| порта | | | | #7C (но rom | | | -| Альтеры | #24 | #74 | #3C | в приоритете) | 1FFD | 7FFD | -| ||| | bit1..0 | bit1..0 | bit1..0 | bit1..0 | bit1 | bit4 | -|_____\|/_____|_________|_________|_________|_______________|______|______| -|E0 | 00 | | 00 | | 1 | ... | -|E1 (+dos_on) | 00 | | 00 | 00 | 0 | ... | -|E2 | 00 | | 00 | 00 | 0 | 0 | -|E3 | 00 | | 00 | | 0 | 1 | -|E4 | 01 | | 01 | | 1 | ... | -|E5 (+dos_on) | 01 | | 01 | 01 | 0 | ... | -|E6 | 01 | | 01 | 01 | 0 | 0 | -|E7 | 01 | | 01 | | 0 | 1 | -|EB | | 00 | | | ... | ... | -|EF | | 01 | | | ... | ... | -|_____________|_________|_________|_________|_______________|______|______| + Переключение страниц vROM: +____________________________________________________ +| Значение | Запись во внешний порт: | +| из внутр. |____________________________________| +| порта | #24 ---- | | | | +| Альтеры | #3C (-rom) | | | | +| ||| | #7C (+rom) | #74 | 1FFD | 7FFD | +| \|/ | bit1..0 | bit1..0 | bit1 | bit4 | +|_____________|____________|_________|______|______| +|E0 | 00 | | 1 | ... | +|E1 (+dos_on) | 00 | | 0 | ... | +|E2 | 00 | | 0 | 0 | +|E3 | 00 | | 0 | 1 | +|E4 | 01 | | 1 | ... | +|E5 (+dos_on) | 01 | | 0 | ... | +|E6 | 01 | | 0 | 0 | +|E7 | 01 | | 0 | 1 | +|EB | | 00 | ... | ... | +|EF | | 01 | ... | ... | +|_____________|____________|_________|______|______| ... - значение роли не играет Стандартные страницы ОЗУ для образов ПЗУ спектрума: -#42 BASIC 128 -#43 BASIC 48 -#44 TR-DOS -#45 BIOS (ZX_EXP) -#46 BIOS (ZX_EXP) -#47 BIOS (ZX_EXP2) - +#42 BASIC 128 #E2 #E6 +#43 BASIC 48 #E3 #E7 +#44 TR-DOS #E1 #E5 +#45 BIOS (ZX_EXP) #E0 #E4 +#46 BIOS (ZX_EXP) #EB +#47 BIOS (ZX_EXP2) #EF SYS_PORT: bit0 - TURBO: on/off или BIOS: Part1/Part0 @@ -1295,16 +1295,16 @@ AY_BFFD EQU #91 ; AY-891 ;#BF reserved Scorp_1FFD EQU #C0 Pent_7FFD EQU #C1 -Border_FE EQU #C2 ; #FE, write only -ALL_MODE EQU #C3 ; Внешний - #204E -PORT_Y EQU #C4 ; #89 -RGMOD EQU #C5 ; #C9 -CNF_PORT EQU #C6 ; #3C / #7C, #24 / #74 -SCALE EQU #C7 ;PGACC - SCALE_PORT (#FC) +Border_FE EQU #C2 ; #FE, write only +ALL_MODE EQU #C3 ; Внешний - #204E +PORT_Y EQU #C4 ; #89 +RGMOD EQU #C5 ; #C9 +CNF_PORT EQU #C6 ; #3C / #7C, #24 / #74 +SCALE EQU #C7 ;PGACC - SCALE_PORT (#FC) ;#C8 - копия C0 или C2??? (not used!) ;#C9 - копия C1 (not used!) ;#CA - копия C2 (not used!) -HOLD EQU #CB ; Задаёт значения счётчиков синхронизатора синхроимпульсов. Активируется в тундере, пишется в него #95. xxxx yyyy - позиция экрана +HOLD EQU #CB ; Задаёт значения счётчиков синхронизатора синхроимпульсов. Активируется в тундере, пишется в него #95. xxxx yyyy - позиция экрана ;#CC - копия C4 (not used!) ;#CD - копия C5 (not used!) ;#CE - копия C6 (not used!) @@ -1327,32 +1327,36 @@ HOLD EQU #CB ; ;#DE - vRAM page for 512 kb (окно C000-FFFF) ;#DF - vRAM page for 512 kb (окно C000-FFFF) -;#E0 - vROM page EXPANSION ; Port #1FFD bit1=1 (#24 bit6=0, bit0=0) -;#E1 - vROM page TR-DOS ; PC = #3D00..#3DFF and #1FFD bit1=0 (#24 bit0=0) -;#E2 - vROM page BASIC-128 ; #7FFD bit4=0 and #1FFD bit1=0 (#24 bit0=0) -;#E3 - vROM page BASIC-48 ; #7FFD bit4=1 and #1FFD bit1=0 (#24 bit0=0) +;#E0 - vROM page EXPANSION ; Port #1FFD bit1=1 (#24 bit6=0, bit0=0) +;#E1 - vROM page TR-DOS ; PC = #3D00..#3DFF and #1FFD bit1=0 (#24 bit0=0) +;#E2 - vROM page BASIC-128 ; #7FFD bit4=0 and #1FFD bit1=0 (#24 bit0=0) +;#E3 - vROM page BASIC-48 ; #7FFD bit4=1 and #1FFD bit1=0 (#24 bit0=0) -;#E4 - vROM page EXPANSION 2 ; Port #1FFD bit1=1 (#24 bit6=0, bit0=1) -;#E5 - vROM page TR-DOS 2 ; PC = #3D00..#3DFF and #1FFD bit1=0 (#24 bit0=1) -;#E6 - vROM page BASIC-128 2 ; #7FFD bit4=0 and #1FFD bit1=0 (#24 bit0=1) -;#E7 - vROM page BASIC-48 2 ; #7FFD bit4=1 and #1FFD bit1=0 (#24 bit0=1) +;#E4 - vROM page EXPANSION 2 ; Port #1FFD bit1=1 (#24 bit6=0, bit0=1) +;#E5 - vROM page TR-DOS 2 ; PC = #3D00..#3DFF and #1FFD bit1=0 (#24 bit0=1) +;#E6 - vROM page BASIC-128 2 ; #7FFD bit4=0 and #1FFD bit1=0 (#24 bit0=1) +;#E7 - vROM page BASIC-48 2 ; #7FFD bit4=1 and #1FFD bit1=0 (#24 bit0=1) -;#E8 - vRAM page (окно 0000-3FFF) ; -;#E9 - vRAM page (окно 4000-7FFF) ; -;#EA - vRAM page (окно 8000-BFFF) ; -;#EB - vROM page BIOS-1 ; Port #74 = 0 -;#EC - vRAM page CASHE ; -;#ED reserved ; -RET_PORT EQU #EE ; Page set after Soft RESET. Любое, кроме 0, значение - страница куда передастся управление после Soft reset -;#EF - vROM page BIOS-2 ; Port #74 = 1 +SLOT0 EQU #E8 ; RAM page (окно 0000-3FFF) +SLOT1 EQU #E9 ; RAM page (окно 4000-7FFF) +SLOT2 EQU #EA ; RAM page (окно 8000-BFFF) +;#EB - vROM page BIOS-1 ; Port #74 = 0 +;#EC - vRAM page CASHE ; ????? +;#ED reserved ; ????? +RET_PORT EQU #EE ; Page set after Soft RESET. Любое, кроме 0, значение - страница куда передастся управление после Soft reset +;#EF - vROM page BIOS-2 ; Port #74 = 1 -; Установка в какой либо порт значения от F0h до FFh приведет к одному и тому же результату, что и просто установка в этот порт значения F0h. В схеме сделана -; переадресация номера порта так, что при значении FXh номер порта берется как F0h+SpectrumPAGE, где -; SpectrumPAGE - номер спектрумовской страницы, адресуемой по портам 7FFD и 1FFD. Таким образом -; достигается совместимость с Пентагоном и Скорпионом по распределению памяти и делается возможным -; установка любого номера страницы спринтеровской памяти для любой страницы Спектрума. +; Установка значения в какой либо порт от #F0 до #FF приведет к одному и тому же результату, что и просто установка значения в порт #F0. В схеме сделана +; переадресация номера порта так, что при значении #Fx номер порта берется как #F0+Spectrum_PAGE, где Spectrum_PAGE - номер спектрумовской страницы, адресуемой +; по портам #7FFD и #1FFD. Таким образом достигается совместимость с Пентагоном и Скорпионом по распределению памяти и делается возможным установка любого +; номера страницы спринтеровской памяти для любой страницы Спектрума. ; -;F0h - RAM page for 128/256 kb (окно C000-FFFF) +; С распределением памяти ситуация такая. Порты страниц - переключают адреса "виртуальных" страниц скорпиона независимо от того, что в этот момент +; подключено в нулевую банку. С третьей банкой наоборот - запись в порт страницы меняет адрес той страницы, какая установлена портами 7FFD,1FFD, +; т.е. записав что-то в порт PAGE3 нужно помнить, какая страница стояла с адреса #C000. Например, если нулевая, то поменяется страница и в адресе +; #0000, если там было установлено ОЗУ. +; +SLOT3 EQU #F0 ; RAM page for 128/256 kb (окно C000-FFFF) ;F1h - RAM page for 128/256 kb (окно C000-FFFF) ;F2h - RAM page for 128/256 kb (окно C000-FFFF) ;F3h - RAM page for 128/256 kb (окно C000-FFFF) @@ -1371,13 +1375,6 @@ RET_PORT EQU #EE ; Page set after Soft RESET. ENDMODULE ; -; С распределением памяти ситуация такая. Порты страниц - переключают адреса -; "виртуальных" страниц скорпиона независимо от того, что в этот момент -; подключено в нулевую банку. С третьей банкой наоборот - запись в порт -; страницы меняет адрес той страницы, какая установлена портами 7FFD,1FFD, -; т.е. записав что-то в порт PAGE3 нужно помнить, какая страница стояла с -; адреса #C000. Например, если нулевая, то поменяется страница и в адресе -; #0000, если там было установлено ОЗУ. ; /* внутренние порты Z84C15: