diff --git a/constants/SP2000.inc b/constants/SP2000.inc index bd87a31..27c03b9 100644 --- a/constants/SP2000.inc +++ b/constants/SP2000.inc @@ -905,32 +905,28 @@ HardwareConfiguration EQU #1B ; !!!!! or #36 .Mask.Computer EQU %0001'1000 ; COMPUTER: 0-SPRINTER, 1-SPECTRUM 256, 2-PENTAGON 128, 3-OTHER ;!FIXIT НЕ ИСПОЛЬЗУЕТСЯ -ResetMode EQU #1C ; !!!!! or #35 -; 0-RESET 128 Basic -; 1-RESET 48 Basic & 128 mem -; 2-RESET TR-DOS & 128 mem -; 3-RESET EXPANSION (Disabled) -; 4-RESET TR-DOS & 48 mem -; 5-RESET 48 Basic - ;REGISTER #35 - BASIC SETTING 1 (SYS_PAGE.CONFIG_DE+1 = #C13B on PAGE #FE) -; 0 - RESET TO BASIC 128 -; 1 - RESET TO BASIC 48 (RAM128) -; 2 - RESET TO TRDOS -; 3 - RESET TO EXPANSION (DON'T USE) -; 4 - RESET TO 48 TRDOS -; 5 - RESET TO 48 BASIC (RAM48) +;ZX_RST_TO EQU #1C - old variant +ZX_RST_TO EQU #35 +.BASIC_128 EQU 0 +.BASIC_48_RAM128 EQU 1 +.TRDOS EQU 2 +.EXPANSION EQU 3 ; (DON'T USE) +.TRDOS_48 EQU 4 +.BASIC_48 EQU 5 +;!FIXIT НЕ ИСПОЛЬЗУЕТСЯ ;REGISTER #36 - BASIC SETTING 2 ; старые значения неизвестны ; %0000 0111 -; новые значения: -; 0 - ZX-Sprinter -; 1 - Pentagon 48 -; 2 - Pentagon 128 -; 3 - Pentagon 512 -; 4 - Scorpion 256 -; 5 - ZX Spectrum 48 -; 6 - ZX Spectrum 128 +ZX_CONFIG EQU #36 + ; новые значения: +.ZX_Sprinter EQU 0 +.Pentagon_48 EQU 1 +.Pentagon_128 EQU 2 +.Pentagon_512 EQU 3 +.Scorpion_256 EQU 4 +.ZX_Spectrum_48 EQU 5 +.ZX_Spectrum_128 EQU 6 Options EQU #1D .Mask.RebootMSG EQU %00000010 * 256 + Options @@ -946,7 +942,7 @@ ScreenPosition EQU #1F .Mask.X EQU %1111'0000 * 256 + ScreenPosition .Mask.Y EQU %0000'1111 * 256 + ScreenPosition -CheckSum EQU #3F +CheckSum EQU CMOS.Cell.CheckSum ;----------------------------------------- ENDMODULE @@ -1073,12 +1069,11 @@ WIN_ID_0 Window_Variables = SYS_PAGE.WIN_MAP_IX + Window_Variables * 0 ; ELSE ; ENDIF +;ALTERA EQU #1400 ;адрес в ПЗУ сжатой страницы DCP - -;ALTERA EQU #1400 ;адрес в ПЗУ сжатой страницы DCP - -//////////////////////////////////////////////////////////////////////// +;███████████████████████████████████████████████████████████████████████ MODULE ACEX +;███████████████████████████████████████████████████████████████████████ DEFINE ACEX.RELOAD_STRING 'ACEX_30K_LOADING' LOADER: .String_Address EQU #FEF0 @@ -1106,199 +1101,201 @@ Chip_ID: ;#0D reserved ;#0E reserved ;#0F reserved -VG93_1F EQU #10 ; порт ВГ93 (1F) -VG93_3F EQU #11 ; порт ВГ93 (3F) -VG93_5F EQU #12 ; порт ВГ93 (5F) -VG93_7F EQU #13 ; порт ВГ93 (7F) -VG93_State EQU #14 ; порт на запись - состояние контроллера дисковода (внешний порт #FF) -JOY_VG93 EQU #15 ; порт на чтение - джойстик и IRQ/INTRQ контроллера ВГ93 +VG93_1F EQU #10 ; порт ВГ93 (1F) +VG93_3F EQU #11 ; порт ВГ93 (3F) +VG93_5F EQU #12 ; порт ВГ93 (5F) +VG93_7F EQU #13 ; порт ВГ93 (7F) +VG93_State EQU #14 ; порт на запись - состояние контроллера дисковода (внешний порт #FF) +JOY_VG93 EQU #15 ; порт на чтение - джойстик и IRQ/INTRQ контроллера ВГ93 -; Порт FDD 720 ; #00BD - переключение в 720 - заслать 1. можно LD A,#01 : OUT (#BD),A. Работает c DOS ON либо в CNF_3 с DOS OFF -FDD720 EQU #16 -; Порт FDD 1.44 ; #20BD - переключение в 1.44 - заслать 1. можно LD A,#21 : OUT (#BD),A. Работает c DOS ON либо в CNF_3 с DOS OFF -FDD144 EQU #17 +; Порт FDD 720 ; #00BD - переключение в 720 - заслать 1. можно LD A,#01 : OUT (#BD),A. Работает c DOS ON либо в CNF_3 с DOS OFF +FDD720 EQU #16 +; Порт FDD 1.44 ; #20BD - переключение в 1.44 - заслать 1. можно LD A,#21 : OUT (#BD),A. Работает c DOS ON либо в CNF_3 с DOS OFF +FDD144 EQU #17 -;#18 reserved -;#19 reserved -;#1A reserved +;#18 reserved +;#19 reserved +;#1A reserved -ISA_CTRL EQU #1B ; #9FBD -CMOS_DATA.READ EQU #1C ; #FFBD -CMOS_ADDR.WRITE EQU #1D ; #DFBD -CMOS_DATA.WRITE EQU #1E ; #BFBD -;#1F reserved -;#20 - HDD - регистр данных ; #0050 -;#21 - HDD - регистр состояния/ошибок ; #0051 -;#22 - HDD - рег. кол-ва сек-ов для R/W ; #0052 -;#23 - HDD - регистр сектора ; #0053 -;#24 - HDD - регистр дорожки-low ; #0054 -;#25 - HDD - регистр дорожки-high ; #0055 -;#26 - HDD - рег. heads/выбора mas-slave ; #4052 -;#27 - HDD - регистр команд ; #4053 -IDE_CONTROL_3F6 EQU #28 ; HDD - доп. регистр управления 3F6. внешний #4054 -IDE_STATUS_3F7 EQU #29 ; HDD - доп. регистр состояния 3F7. внешний #4055 -IDE_CHANEL_1 EQU #2A ; HDD - выбирает Secondary IDE, внешний #BC -IDE_CHANEL_2 EQU #2B ; HDD - выбирает Primary IDE, внешний #BC -VSYNC320 EQU #2C ; #40BD -VSYNC312 EQU #2D ; #60BD -RESET EQU #2E ; S_RESET - #40A4 - Reset port -UNKNOWN EQU #2F ; ????? ; #60BC - что-то на запись +ISA_CTRL EQU #1B ; #9FBD +CMOS_DATA.READ EQU #1C ; #FFBD +CMOS_ADDR.WRITE EQU #1D ; #DFBD +CMOS_DATA.WRITE EQU #1E ; #BFBD + +;#1F reserved + +IDE_DATA_1F0 EQU #20 ; HDD - регистр данных. внешний #0050 +IDE_ERROR_1F1 EQU #21 ; HDD - регистр состояния/ошибок. внешний #0051 +IDE_COUNTER_1F2 EQU #22 ; HDD - рег. кол-ва сек-ов для R/W. внешний #0052 +IDE_SECTOR_1F3 EQU #23 ; HDD - регистр сектора. внешний #0053 +IDE_CYLINDER_L_1F4 EQU #24 ; HDD - регистр дорожки-low. внешний #0054 +IDE_CYLINDER_H_1F5 EQU #25 ; HDD - регистр дорожки-high. внешний #0055 +IDE_DEVICE_HEAD_1F6 EQU #26 ; HDD - рег. heads/выбора mas-slave. внешний #4052 +IDE_STATUS_CMD_1F7 EQU #27 ; HDD - регистр команд. внешний #4053 +IDE_CONTROL_3F6 EQU #28 ; HDD - доп. регистр управления 3F6. внешний #4054 +IDE_STATUS_3F7 EQU #29 ; HDD - доп. регистр состояния 3F7. внешний #4055 +IDE_CHANEL_1 EQU #2A ; HDD - выбирает Secondary IDE, внешний #BC +IDE_CHANEL_2 EQU #2B ; HDD - выбирает Primary IDE, внешний #BC +VSYNC320 EQU #2C ; #40BD +VSYNC312 EQU #2D ; #60BD +RESET EQU #2E ; S_RESET - #40A4 - Reset port +UNKNOWN EQU #2F ; ????? ; #60BC - что-то на запись ;#30 - ????? ISA-SLOT 1 - ports R/W ;#31 - ????? ISA-SLOT 2 - ports R/W -ISA_Control EQU #32 ; ISA-signals such as RESET, AEN, A19...A14. Внешний #9FBD +ISA_Control EQU #32 ; ISA-signals such as RESET, AEN, A19...A14. Внешний #9FBD ;#33 - ????? ISA-SLOT 2 - memory R/W -;#34 reserved -;#35 reserved -;#36 reserved -;#37 reserved -;#38 reserved -;#39 reserved -;#3A reserved -;#3B reserved -;#3C reserved -;#3D reserved -;#3E reserved -;#3F reserved -ZX_Keyboard EQU #40 ; ZX-Keyboard (порт FE) -;#41 reserved -;#42 reserved -;#43 reserved -;#44 reserved -;#45 reserved -;#46 reserved -;#47 reserved -;#48 reserved -;#49 reserved -;#4A reserved -;#4B reserved -;#4C reserved -;#4D reserved -;#4E reserved -;#4F reserved -;#50 reserved -;#51 reserved -AY_FFFD_READ EQU #52 ; AY-8910-port (FFFD) чтение данных; ????? -;#53 reserved -;#54 reserved -;#55 reserved -;#56 reserved -;#57 reserved -Kempston_Mouse EQU #58 ; #FADF внешний -;#59 reserved -;#5A reserved -;#5B reserved -;#5C reserved -;#5D reserved -;#5E reserved -;#5F reserved -;#60 reserved -;#61 reserved -;#62 reserved -;#63 reserved -;#64 reserved -;#65 reserved -;#66 reserved -;#67 reserved -;#68 reserved -;#69 reserved -;#6A reserved -;#6B reserved -;#6C reserved -;#6D reserved -;#6E reserved -;#6F reserved -;#70 reserved -;#71 reserved -;#72 reserved -;#73 reserved -;#74 reserved -;#75 reserved -;#76 reserved -;#77 reserved -;#78 reserved -;#79 reserved -;#7A reserved -;#7B reserved -;#7C reserved -;#7D reserved -;#7E reserved -;#7F reserved -;#80 reserved -;#81 reserved -;#82 reserved -;#83 reserved -;#84 reserved -;#85 reserved -;#86 reserved -;#87 reserved -CBL_OUT EQU #88 ; Write to COVOX/COVOX-Blaster -CBL_SYS_PORT EQU #89 ; CBL_DIR -;#8A reserved -;#8B reserved -;#8C reserved 3000 -- AY_D READ -;#8D reserved 2000 -- AY_A WRITE -;#8E reserved 2000 -- AY_D WRITE -ROM_RG EQU #8F ; порт переключения страниц ROM и FastRam, дублируется внешним портом #5C -AY_FFFD_WRITE EQU #90 ; AY-8910-port (FFFD) ;!!!!! запись адреса?????? -AY_BFFD EQU #91 ; AY-8910-port (BFFD) -;#92 reserved -;#93 reserved -;#94 reserved -;#95 reserved -;#96 reserved -;#97 reserved -;#98 reserved -;#99 reserved -;#9A reserved -;#9B reserved -;#9C reserved -;#9D reserved -;#9E reserved -;#9F reserved -;#A0 reserved -;#A1 reserved -;#A2 reserved -;#A3 reserved -;#A4 reserved -;#A5 reserved -;#A6 reserved -;#A7 reserved -;#A8 reserved -;#A9 reserved -;#AA reserved -;#AB reserved -;#AC reserved -;#AD reserved -;#AE reserved -;#AF reserved -;#B0 reserved -;#B1 reserved -;#B2 reserved -;#B3 reserved -;#B4 reserved -;#B5 reserved -;#B6 reserved -;#B7 reserved -;#B8 reserved -;#B9 reserved -;#BA reserved -;#BB reserved -;#BC reserved -;#BD reserved -;#BE reserved -;#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) +;#34 reserved +;#35 reserved +;#36 reserved +;#37 reserved +;#38 reserved +;#39 reserved +;#3A reserved +;#3B reserved +;#3C reserved +;#3D reserved +;#3E reserved +;#3F reserved +ZX_Keyboard EQU #40 ; ZX-Keyboard (порт FE) +;#41 reserved +;#42 reserved +;#43 reserved +;#44 reserved +;#45 reserved +;#46 reserved +;#47 reserved +;#48 reserved +;#49 reserved +;#4A reserved +;#4B reserved +;#4C reserved +;#4D reserved +;#4E reserved +;#4F reserved +;#50 reserved +;#51 reserved +AY_FFFD_READ EQU #52 ; AY-8910-port (FFFD) чтение данных; ????? +;#53 reserved +;#54 reserved +;#55 reserved +;#56 reserved +;#57 reserved +Kempston_Mouse EQU #58 ; #FADF внешний +;#59 reserved +;#5A reserved +;#5B reserved +;#5C reserved +;#5D reserved +;#5E reserved +;#5F reserved +;#60 reserved +;#61 reserved +;#62 reserved +;#63 reserved +;#64 reserved +;#65 reserved +;#66 reserved +;#67 reserved +;#68 reserved +;#69 reserved +;#6A reserved +;#6B reserved +;#6C reserved +;#6D reserved +;#6E reserved +;#6F reserved +;#70 reserved +;#71 reserved +;#72 reserved +;#73 reserved +;#74 reserved +;#75 reserved +;#76 reserved +;#77 reserved +;#78 reserved +;#79 reserved +;#7A reserved +;#7B reserved +;#7C reserved +;#7D reserved +;#7E reserved +;#7F reserved +;#80 reserved +;#81 reserved +;#82 reserved +;#83 reserved +;#84 reserved +;#85 reserved +;#86 reserved +;#87 reserved +CBL_OUT EQU #88 ; Write to COVOX/COVOX-Blaster +CBL_SYS_PORT EQU #89 ; CBL_DIR +;#8A reserved +;#8B reserved +;#8C reserved 3000 -- AY_D READ +;#8D reserved 2000 -- AY_A WRITE +;#8E reserved 2000 -- AY_D WRITE +ROM_RG EQU #8F ; порт переключения страниц ROM и FastRam, дублируется внешним портом #5C +AY_FFFD_WRITE EQU #90 ; AY-8910-port (FFFD) ;!!!!! запись адреса?????? +AY_BFFD EQU #91 ; AY-8910-port (BFFD) +;#92 reserved +;#93 reserved +;#94 reserved +;#95 reserved +;#96 reserved +;#97 reserved +;#98 reserved +;#99 reserved +;#9A reserved +;#9B reserved +;#9C reserved +;#9D reserved +;#9E reserved +;#9F reserved +;#A0 reserved +;#A1 reserved +;#A2 reserved +;#A3 reserved +;#A4 reserved +;#A5 reserved +;#A6 reserved +;#A7 reserved +;#A8 reserved +;#A9 reserved +;#AA reserved +;#AB reserved +;#AC reserved +;#AD reserved +;#AE reserved +;#AF reserved +;#B0 reserved +;#B1 reserved +;#B2 reserved +;#B3 reserved +;#B4 reserved +;#B5 reserved +;#B6 reserved +;#B7 reserved +;#B8 reserved +;#B9 reserved +;#BA reserved +;#BB reserved +;#BC reserved +;#BD reserved +;#BE reserved +;#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) ;#C8 - копия C0 (not used!) ;#C9 - копия C1 (not used!) ;#CA - копия C2 (not used!) -HOLD EQU #CB ; Задаёт значения счётчиков синхронизатора синхроимпульсов. %xxxx'yyyy - позиция экрана +HOLD EQU #CB ; Задаёт значения счётчиков синхронизатора синхроимпульсов. %xxxx'yyyy - позиция экрана ;#CC - копия C4 (not used!) ;#CD - копия C5 (not used!) ;#CE - копия C6 (not used!) @@ -1321,28 +1318,28 @@ HOLD EQU #CB ; ;#DE - vRAM page for 512 kb (окно C000-FFFF) ;#DF - vRAM page for 512 kb (окно C000-FFFF) -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -vROM: ; -.BIOS: EQU #E0 ; vROM page EXPANSION. Port #1FFD bit1=1 (#24 bit6=0, bit0=0) -.TR_DOS: EQU #E1 ; vROM page TR-DOS. PC = #3D00..#3DFF and #1FFD bit1=0 (#24 bit0=0) -.BASIC_128: EQU #E2 ; vROM page BASIC-128. #7FFD bit4=0 and #1FFD bit1=0 (#24 bit0=0) -.BASIC_48: EQU #E3 ; vROM page BASIC-48. #7FFD bit4=1 and #1FFD bit1=0 (#24 bit0=0) -; ; -.BIOS_2: EQU #E4 ; vROM page EXPANSION 2. Port #1FFD bit1=1 (#24 bit6=0, bit0=1) -.TR_DOS_2: EQU #E5 ; vROM page TR-DOS 2. PC = #3D00..#3DFF and #1FFD bit1=0 (#24 bit0=1) -.BASIC_128_2: EQU #E6 ; vROM page BASIC-128 2. #7FFD bit4=0 and #1FFD bit1=0 (#24 bit0=1) -.BASIC_48_2: EQU #E7 ; vROM page BASIC-48 2. #7FFD bit4=1 and #1FFD bit1=0 (#24 bit0=1) -; ; -.BIOS_3 EQU #EB ; vROM page BIOS-3 Port #74 = 0 -.BIOS_4 EQU #EF ; vROM page BIOS-4 Port #74 = 1 -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +vROM: ; +.BIOS: EQU #E0 ; vROM page EXPANSION. Port #1FFD bit1=1 (#24 bit6=0, bit0=0) +.TR_DOS: EQU #E1 ; vROM page TR-DOS. PC = #3D00..#3DFF and #1FFD bit1=0 (#24 bit0=0) +.BASIC_128: EQU #E2 ; vROM page BASIC-128. #7FFD bit4=0 and #1FFD bit1=0 (#24 bit0=0) +.BASIC_48: EQU #E3 ; vROM page BASIC-48. #7FFD bit4=1 and #1FFD bit1=0 (#24 bit0=0) +; ; +.BIOS_2: EQU #E4 ; vROM page EXPANSION 2. Port #1FFD bit1=1 (#24 bit6=0, bit0=1) +.TR_DOS_2: EQU #E5 ; vROM page TR-DOS 2. PC = #3D00..#3DFF and #1FFD bit1=0 (#24 bit0=1) +.BASIC_128_2: EQU #E6 ; vROM page BASIC-128 2. #7FFD bit4=0 and #1FFD bit1=0 (#24 bit0=1) +.BASIC_48_2: EQU #E7 ; vROM page BASIC-48 2. #7FFD bit4=1 and #1FFD bit1=0 (#24 bit0=1) +; ; +.BIOS_3 EQU #EB ; vROM page BIOS-3 Port #74 = 0 +.BIOS_4 EQU #EF ; vROM page BIOS-4 Port #74 = 1 +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -SLOT0 EQU #E8 ; RAM page (окно 0000-3FFF) -SLOT1 EQU #E9 ; RAM page (окно 4000-7FFF) -SLOT2 EQU #EA ; RAM page (окно 8000-BFFF) -;#EC - user's memory cell ; сюда можно сохранить нужное значение -;#ED - user's memory cell ; сюда можно сохранить нужное значение -RET_PORT EQU #EE ; Page set after Soft RESET. Любое, кроме 0, значение - страница куда передастся управление после Soft reset +SLOT0 EQU #E8 ; RAM page (окно 0000-3FFF) +SLOT1 EQU #E9 ; RAM page (окно 4000-7FFF) +SLOT2 EQU #EA ; RAM page (окно 8000-BFFF) +;#EC - user's memory cell ; сюда можно сохранить нужное значение +;#ED - user's memory cell ; сюда можно сохранить нужное значение +RET_PORT EQU #EE ; Page set after Soft RESET. Любое, кроме 0, значение - страница куда передастся управление после Soft reset ; Установка значения в какой либо порт от #F0 до #FF приведет к одному и тому же результату, что и просто установка значения в порт #F0. В схеме сделана ; переадресация номера порта так, что при значении #Fx номер порта берется как #F0+Spectrum_PAGE, где Spectrum_PAGE - номер спектрумовской страницы, адресуемой @@ -1354,7 +1351,7 @@ RET_PORT EQU #EE ; Page set afte ; т.е. записав что-то в порт PAGE3 нужно помнить, какая страница стояла с адреса #C000. Например, если нулевая, то поменяется страница и в адресе ; #0000, если там было установлено ОЗУ. ; -SLOT3 EQU #F0 ; RAM page for 128/256 kb (окно C000-FFFF) +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) @@ -1419,7 +1416,9 @@ Config_PG: ;------------------------; ;;;;;;; ENDMODULE -//////////////////////////////////////////////////////////////////////// +;███████████████████████████████████████████████████████████████████████ +;███████████████████████████████████████████████████████████████████████ + ;