Порты #B3 (cylinder low) и #BB (drive/head) DivIDE пересекаются с General Sound.
Вид для печати
Порты #B3 (cylinder low) и #BB (drive/head) DivIDE пересекаются с General Sound.
Осталось прикрутить OSD меню для настройки всего, как к примеру в unreal. Эти и не только функции (ВГ93, RTC, отладчик, leds, 128KB - 16MB, работа с образами на SD с их привязкой к дикам A..D и Tape...) ляжут на плечи второго проца NZ80@50MHz. Или все это привязать к T80, тогда с TurboSound, GeneralSound, Soundrive, MP3, OGG, AAC, WMA, FLAC, MIDI, заиграет и SID Blaster :) Только смотрю плеер придется писать самому... Базовые наработки от shurik-ua уже есть.
Обновил конфигурацию Speccy http://zx.pk.ru/showpost.php?p=619825&postcount=894
vlad - а чего там новенького ?
В версии 0.8.6 стараюсь настроить видео режим под Pentagon и ZX-Spectrum 48K/128K. По Pentagon все попытки в теме: Пентагоновский режим экрана на Робике.
Также из нового:
- Добавил рамку (вкл. кнопкой 'F7') для удобства настройки позиции кадра. Сейчас мне просто необходима.
http://zx-pk.ru/attachment.php?attac...1&d=1394351663- Начал разработку периферийного контроллера на базе N80CPU, для эмуляции периферии - FDC (работа с образами TRD, SCL, UDI, FDI... на SD карте), RTC, TAPE... Возможно будет встроенный отладчик (вкл. кнопкой 'F8'), для этого добавил цветной текстовый режим 80х30. При включении платы пока выводит информацию о версии и сканит в/в. Дальше добавлю настройку всей системы через меню и возможно файловик типа FAR.
Вложение 46366
В общем будет видно. Возможности платы пока для этого есть.
Пытаюсь запустить DivMMC. При включении намертво вешает спек. Такое впечатление что проц заваливается в цикл. Просмотрев rom наткнулся на порт #1FFD с установкой 3-го бита, и #FFFD ?
Написано, что переключение страницы должно сработать в начале цикла REFRESH после загрузки кода операции (после цикла М1) от 0000h, 0008h, 0038h, 0066h, 04C6h и 0562h. И также происходит мгновенно при исполнении кода операции из 3D00h-3DFFh по заднему фронту /MREQ. Отключение страницы в цикле /REFRESH при чтении команды из 1FF8h-1FFFh «офф-область».
Т.е. я правильно понял, что переключение происходит после цикла M1, когда код команды был считан? И после переключения порты divmmc стают доступны?
Привет Влад,
я некоторое время назад наконец-то победил DivMMC!
Да, именно так. Переключение происходит сразу ПОСЛЕ чтения опкода из указанной области, и, например, если за опкодом следуют какие либо операнды, то они считаются уже из ROM/RAM DivMMC.
Вот куски из моего кода, надеюсь поможет...
Если нужно, могу выложить рабочий проект для DE2-115Код:process(CLK)
begin
if rising_edge(CLK) and TICK = "010" and CPU_MREQ = '0' then
if CPU_M1 = '0' and CPU_A(15 downto 3) = "0001111111111" then
MAPCOND <= '0';
elsif (CPU_M1 = '0' and (CPU_A = X"0000" or CPU_A = X"0008" or CPU_A = X"0038" or CPU_A = X"0066" or CPU_A = X"04C6" or CPU_A = X"0562")) or (CPU_M1 = '0' and CPU_A(15 downto 8) = X"3D") then
MAPCOND <= '1';
end if;
if MAPCOND = '1' or (CPU_M1 = '0' and CPU_A(15 downto 8) = X"3D") then
AUTOMAP <= '1';
else
AUTOMAP <= '0';
end if;
end if;
end process;
process(CLK)
begin
if rising_edge(CLK) and TICK = "010" then
if CPU_IORQ = '0' and CPU_WR = '0' then
if CPU_A(0) = '0' then
BORDER <= CPU_DO(2 downto 0);
elsif CPU_A(7 downto 0) = X"E3" then
BANK <= CPU_DO(5 downto 0);
CONMEM <= CPU_DO(7);
MAPRAM <= CPU_DO(6) or MAPRAM;
LEDG(6) <= CPU_DO(7);
end if;
end if;
end if;
end process;
CPU_NMI <= '0' when KEY(3) = '0' and MAPCOND = '0' else '1';
RAM_WR <= '1' when CPU_MREQ = '0' and CPU_WR = '0' and CPU_A(15 downto 14) /= "00" else '0';
ESXRAM1_WR <= '1' when CPU_MREQ = '0' and CPU_WR = '0' and CPU_A(15 downto 13) = "001" and (AUTOMAP = '1' or CONMEM = '1') and BANK(2) = '0' else '0';
ESXRAM2_WR <= '1' when CPU_MREQ = '0' and CPU_WR = '0' and CPU_A(15 downto 13) = "001" and (AUTOMAP = '1' or CONMEM = '1') and BANK(2) = '1' else '0';
VRAM_WR <= '1' when CPU_MREQ = '0' and CPU_WR = '0' and CPU_A(15 downto 13) = "010" else '0';
CPU_DI <= ROM_DO when CPU_A(15 downto 14) = "00" and CPU_MREQ = '0' and AUTOMAP = '0' and CONMEM = '0'
else ESXDOS_DO when CPU_A(15 downto 13) = "000" and CPU_MREQ = '0' and (AUTOMAP = '1' or CONMEM = '1') -- ESXDOS ROM
else ESXRAM1_DO when CPU_A(15 downto 13) = "001" and CPU_MREQ = '0' and (AUTOMAP = '1' or CONMEM = '1') and BANK(2) = '0' -- ESXDOS RAM 1
else ESXRAM2_DO when CPU_A(15 downto 13) = "001" and CPU_MREQ = '0' and (AUTOMAP = '1' or CONMEM = '1') and BANK(2) = '1' -- ESXDOS RAM 2
else RAM_DO when CPU_A(15 downto 14) /= "00" and CPU_MREQ = '0'
else "111" & KEYB_DO when CPU_A(0) = '0' and CPU_IORQ = '0'
else in_reg when CPU_A(7 downto 0) = X"EB" and CPU_IORQ = '0'
else "11111111";
Спек очень кастрированный, но DivMMC в связке с EsxDOS работает.
Мне в принципе только это и надо было, так как полноценный спек с обкатанными модулями будет сразу писаться под Aeon Lite.
ILoveSpeccy,
Выложи пожалуйста для de2-115.
Спасибо.
Sent from my VS980 4G using Tapatalk