Важная информация

User Tag List

Страница 11 из 11 ПерваяПервая ... 7891011
Показано с 101 по 109 из 109

Тема: DivMMC

  1. #101
    Member Аватар для valerium
    Регистрация
    03.05.2020
    Адрес
    г. Челябинск
    Сообщений
    123
    Спасибо Благодарностей отдано 
    29
    Спасибо Благодарностей получено 
    28
    Поблагодарили
    17 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от USERHOME Посмотреть сообщение
    ... а заодно и проверить результат
    1. SP (где-то вместо LDIR)
    2. NOP (дополнительный холостой цикл) и JP (HL)
    3. SP на RAM и PUSH HL (без зануления памяти LDIR) и RET
    4. censored Я бы ещё и LD A,1 и OUT (254), A (Шину адреса "пошевелить" для теста, перед JP (HL) ...)
    Что-то не сумел я понять, что при этом должно получиться ((
    Сам тест не использует ОЗУ и не использует стек для своей работы. Для его работы менять указатель стека бессмысленно, а при переходе в ROM48 он все равно будет установлен туда, куда его инитит ROM48. Для перехода к адресу 0001 использовать стек тоже нет смысла, т к для адресов ниже 4000h надо исхитряться с подстановкой в адреса импровизированного стека в ROM48 нужной константы, а адрес перехода можно передать в регистре HL и переход выполнить однобайтной операцией jp (HL).

    Я пока добился следующего: раз прерывания запрещены, то я HALTом попробовал сделать импровизированные брейкпойнты - ставил HALT по адресу 0001 в ROM48 при неизменном тесте testrom3 (ничего не изменилось - страница ROM48 не включалась и проц на эту инструкцию не попадал), а также в exit area в ПЗУ divmmc по адресу 1FFA, куда мы попадаем по нажатию клавиши 1 - по идее после чтения этого опкода должно измениться значение automap на 0 и должен переключиться romcs из 1 в 0 для включения штатного ПЗУ. Эта точка останова работала, но romcs остается единичным.
    Либо все-таки /M1 не работает как надо, либо криво отрабатывает условие формирования romcs. Пока копаюсь дальше.
    Последний раз редактировалось valerium; 19.11.2020 в 23:14.

  2. #102
    Member Аватар для valerium
    Регистрация
    03.05.2020
    Адрес
    г. Челябинск
    Сообщений
    123
    Спасибо Благодарностей отдано 
    29
    Спасибо Благодарностей получено 
    28
    Поблагодарили
    17 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Добился.
    Был досадный косяк в (недо)пайке линии A11 на ПЛИС, при том, что всей на памяти она была заведена и каким-то чудом даже тесты ОЗУ проходили.
    Но из-за нее не отрабатывало условие для exit area:
    Код:
     map1F00 <= '0' when A(15 downto 3) =   "0001111111111"  else '1';
    --                                           ^
    А все остальные идеи с /M1 оказались глупостями.
    Ну зато научился и опробовал способ все это дебажить при помощи доп.индикации и тестовой кнопки, добавляя описание обработки нужных линий (vhdl).
    Сейчас управление страницами памяти работает нормально - входы в ПЗУ divmmc через зоны automap и выходы через exit area, причем даже на Ленине.
    Помимо этого мне удалось добыть вторую 7128 и запустить одновременно Sizif-128 - припаял zxbus и подключался в т.ч. к нему, теперь будет, на чем сравнить.
    Разумеется, нижний ПЗУшный кусок esxdos при старте после сплэша не находит карту с хвостом esxdos (файл esxdos.sys), т.к. карта еще пока не подключена - это вопрос грядущих выходных.
    Последний раз редактировалось valerium; 20.11.2020 в 09:49.

  3. Этот пользователь поблагодарил valerium за это полезное сообщение:

    Djoni (19.11.2020)

  4. #103
    Member Аватар для valerium
    Регистрация
    03.05.2020
    Адрес
    г. Челябинск
    Сообщений
    123
    Спасибо Благодарностей отдано 
    29
    Спасибо Благодарностей получено 
    28
    Поблагодарили
    17 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Запустил, однако.
    На Ленине. Причем только на Ленине, а на Sizif128, где вчера я видел сплэш ESXDOS, почему-то нет даже его - возможно из-за того, что версию 0.8.5 сменил на 0.8.8.
    Тактовую подавал напрямую с 6 ноги процессора прямо на вход ПЛИС без триггеров шмидта и других формирователей, прошивка ПЛИС сейчас от Mario Prato без каких-либо изменений, только пересобранная под EPM7128.
    Нажмите на изображение для увеличения. 

Название:	IMG_20201121_010549.jpg 
Просмотров:	101 
Размер:	44.2 Кб 
ID:	73989Нажмите на изображение для увеличения. 

Название:	IMG_20201121_010558.jpg 
Просмотров:	103 
Размер:	43.9 Кб 
ID:	73987Нажмите на изображение для увеличения. 

Название:	IMG_20201121_010617.jpg 
Просмотров:	111 
Размер:	63.4 Кб 
ID:	73988
    Попробую потом еще поиграть с автономным генератором, вроде как такое возможно.
    Схемы толком нету, надо будет ее отрисовать по-человечьи - если вдруг кто заинтересуется или захочет довести до ума.
    Последний раз редактировалось valerium; 21.11.2020 в 10:04.

  5. Эти 4 пользователя(ей) поблагодарили valerium за это полезное сообщение:

    Djoni (21.11.2020), Mor-Da (21.11.2020), PVV (21.11.2020), r3d (21.11.2020)

  6. #104
    Member Аватар для valerium
    Регистрация
    03.05.2020
    Адрес
    г. Челябинск
    Сообщений
    123
    Спасибо Благодарностей отдано 
    29
    Спасибо Благодарностей получено 
    28
    Поблагодарили
    17 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от valerium Посмотреть сообщение
    ... Причем только на Ленине, а на Sizif128, где вчера я видел сплэш ESXDOS, почему-то нет даже его - возможно из-за того, что версию 0.8.5 сменил на 0.8.8.
    Все было совсем не так. Версия ESXDOS не имела значения, а повлияло то, что кроме него я свою дебаговую прошивку CPLD сменил на "некопанную" первоначальную.
    Сейчас нормально пускается и на ленине, и на sizif128, и даже на втором ленине (который Веста).

    Поэтому пришлось в первоначальную прошивку CPLD внести одну незначительную, как я вначале думал, правку.
    Это проверка уровня сброса (/RESET) и при его активности - обнуление конфигурационного регистра divmmc.
    Код:
    ...
    process(divideio,poweron)
     begin
    --		if poweron ='0' then				-- исходно было вот так
    		if poweron ='0' or reset = '0' then	-- тут добавил условие проверки уровня reset
    		
    			bank   <= "000000";
    			mapram <= '0';
    			conmem <= '0';
    			
    		elsif	rising_edge(divideio) then
    		
    			bank(5 downto 0) <= D(5 downto 0);
    			mapram           <= D(6) or mapram;
    		        conmem          <= D(7);
    		end if;
    	
    end process;	
    ...
    Что это и зачем это.
    У DivIDE, а значит и у DivMMC есть бит mapram в конфигурационном регистре (порт E3h), он отвечает за маппирование третьей страницы ОЗУ DivMMC в качестве подмены его ПЗУ. При включении питания, пока poweron активен (кондер заряжается), все биты конфигурации обнуляются и включается страница ПЗУ, где у нас esxdos, например. Но можно в третью страницу ОЗУ загрузить нечто альтернативное и использовать это вместо ПЗУ - но эту настройку (mapram=1) изменить нельзя до выключения, т.к. сброс mapram в 0 возможен только по активности poweron. Сделано видимо для того, чтобы подмена ПЗУ (друга версия esxdos, например), давала стартовать себя при нажатии сброса и не слетала обратно на ПЗУ.

    Теперь пытаюсь разобраться, почему в некоторых случаях это криво работает.
    По какой-то причине не отрабатывает условие сброса по poweron=0, а когда стартует процессор, у нас в регистре конфигурации находится мусор и включена непонятна какая страница ПЗУ/ОЗУ. Спек рисует зюки и не стартует.
    Импульс /RESET в спеке заметно длиннее poweron в DivMMC (формируются RC-цепочками) - при примерно одинаковом R у нас C отличается на 3 порядка (10 нф в DivMMC и ~10мкф в обычных схемах сброса спека). Возможно, что нужно было удлинить poweron.
    В исправленном варианте прошивки CPLD сброс регистра конфигурации DivMMC сбрасывается при активном /RESET и к старту DivMMC включается нужная страница ПЗУ. Теперь при этом нельзя залить ОЗУ DivMMC подмененным кодом и поставить его вместо ПЗУ на сброс - но я не могу придумать, зачем мне такое было бы нужно применить. Поэтому пока потестирую этот костыль.
    Не исключено что причина распространенного незапуска divmmc на русских клонах именно в этом.
    Я потом попробую поправить прошивку в xilinx-версии платы, которую раньше так и не смог запустить, не исключено, что и она заработает.

    Еще один эксперимент - вместо процессорного CLK на CPLD подавал 4МГц с отдельного генератора. DivMMC работает, карта читается. Так что в той статье на Tynemouth (этот пост, правда ссылка там, кажется, уже неактуальна) была правда - можно использовать отдельный генератор на 3,9-4,2Мгц.
    Так что для работы divmmc вместо всех доделок по коррекции штатного CLK можно просто собрать генератор на трех TTL-инверторах. На 4,0Мгц проверил.

  7. #105
    Member Аватар для valerium
    Регистрация
    03.05.2020
    Адрес
    г. Челябинск
    Сообщений
    123
    Спасибо Благодарностей отдано 
    29
    Спасибо Благодарностей получено 
    28
    Поблагодарили
    17 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Дошли руки до схемы, подсобрал все в архив с исходниками.
    DivMMC_Altera7128.zip
    Последний раз редактировалось valerium; 25.11.2020 в 19:07. Причина: в схеме исправлена ошибка в подключении линий BANK2 и BANK3 в ОЗУ

  8. Эти 5 пользователя(ей) поблагодарили valerium за это полезное сообщение:

    Djoni (24.11.2020), Mor-Da (24.11.2020), PVV (24.11.2020), tm-bd446 (24.11.2020), Uzix (24.11.2020)

  9. #106
    Junior
    Регистрация
    25.12.2019
    Адрес
    г. Санкт-Петербург
    Сообщений
    10
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Добрый день. Рад, что у вас все получилось. Я тоже решил вернуться к запуску DivMMC (nanoSD от Павла на Xilinx) на своем ленине-2. Подправил код, как вы рекомендовали (добавил условие по reset и добавил этот сигнал в процесс в список чувствительности вместе с сигналами divideio,poweron). Ну и .... никаких изменений, как был матрас или мусор, так и остался. У меня вопрос, будет ли работать DivMMC без сигнала CLK? И можно ли вместо ПЗУ с Exdos поставить, к примеру тест 128 Ханонова? Мне как то нужно проверить, что DivMMC стартует. И если нет, на что нужно обратить внимание.

  10. #106
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  11. #107
    Member Аватар для valerium
    Регистрация
    03.05.2020
    Адрес
    г. Челябинск
    Сообщений
    123
    Спасибо Благодарностей отдано 
    29
    Спасибо Благодарностей получено 
    28
    Поблагодарили
    17 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от julbu Посмотреть сообщение
    Добрый день. Рад, что у вас все получилось. Я тоже решил вернуться к запуску DivMMC (nanoSD от Павла на Xilinx) на своем ленине-2. Подправил код, как вы рекомендовали (добавил условие по reset и добавил этот сигнал в процесс в список чувствительности вместе с сигналами divideio,poweron). Ну и .... никаких изменений, как был матрас или мусор, так и остался. У меня вопрос, будет ли работать DivMMC без сигнала CLK? И можно ли вместо ПЗУ с Exdos поставить, к примеру тест 128 Ханонова?
    Я тоже пытался это проделать на той плате sdnano, но тоже мимо. Собственно, у меня там явно какой-то косяк с cpld, т к при снятой перемычке eprom никакая память divmmc не должна мапиться и должно включаться родное пзу, чего не происходит. Сама cpld видится и шьется, пайку уже всю перепроверил, вплоть до того, что прозванивал все линии от ног cpld до разъема и памяти Буду пытаться снять cpld, если сильно пострадает плата (а белую маску, плавно переходящую в горело-коричневую от нагрева феном я видеть не хотел бы), то может попробую собрать еще экземпляр.
    Тест Хахонова прошить можно и я это делал (где-то выше в переписке мелькало). Но если там матрас, то это значит, что просто не выбрано никакое пзу и хоть с каким его содержимым будет матрас.
    Сигнал clk нужен для тактирования чтения карты памяти. А маппинг озу и пзу в нем не нуждается никак. Над этой частью схемы можно пока голову не ломать.

    У тебя тоже плата с двойным вариантом установки пзу - dip и sop ? может в ней какая ошибка есть - перемычка между переходными отверстиями или еще что ? Просто то, что люди собирали и работало, это было на более ранней ревизии платы (где был перекрест входа и выхода sd-карты)
    Последний раз редактировалось valerium; 27.11.2020 в 14:11.

  12. #108
    Junior
    Регистрация
    25.12.2019
    Адрес
    г. Санкт-Петербург
    Сообщений
    10
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от valerium Посмотреть сообщение
    Я тоже пытался это проделать на той плате sdnano, но тоже мимо. Собственно, у меня там явно какой-то косяк с cpld, т к при снятой перемычке eprom никакая память divmmc не должна мапиться и должно включаться родное пзу, чего не происходит. Сама cpld видится и шьется, пайку уже всю перепроверил, вплоть до того, что прозванивал все линии от ног cpld до разъема и памяти Буду пытаться снять cpld, если сильно пострадает плата (а белую маску, плавно переходящую в горело-коричневую от нагрева феном я видеть не хотел бы), то может попробую собрать еще экземпляр.
    Тест Хахонова прошить можно и я это делал (где-то выше в переписке мелькало). Но если там матрас, то это значит, что просто не выбрано никакое пзу и хоть с каким его содержимым будет матрас.
    Сигнал clk нужен для тактирования чтения карты памяти. А маппинг озу и пзу в нем не нуждается никак. Над этой частью схемы можно пока голову не ломать.

    У тебя тоже плата с двойным вариантом установки пзу - dip и sop ? может в ней какая ошибка есть - перемычка между переходными отверстиями или еще что ? Просто то, что люди собирали и работало, это было на более ранней ревизии платы (где был перекрест входа и выхода sd-карты)
    Да, плата с белой маской на два варианта ПЗУ. Я на ней менял CPLD ничего не изменилось. При включении загорается ненадолго светодиод слева (который рядом с кнопкой reset), потом тухнет, причем это нестабильно раз от раза. За все время тестов, один раз загрузился наполовину экран Exsdos и все зависло. Она там ни с чем не может конфликтовать? У меня ленинград-2 с расширением до 128к. Буду проверять на непропай-замыкания. Будет время попробую ваш 5 вольтовый вариант повторить, детали все есть. Других мыслей нет.
    Последний раз редактировалось julbu; 27.11.2020 в 16:03.

  13. #109
    Member Аватар для valerium
    Регистрация
    03.05.2020
    Адрес
    г. Челябинск
    Сообщений
    123
    Спасибо Благодарностей отдано 
    29
    Спасибо Благодарностей получено 
    28
    Поблагодарили
    17 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от julbu Посмотреть сообщение
    У меня ленинград-2 с расширением до 128к. Буду проверять на непропай-замыкания. Будет время попробую ваш 5 вольтовый вариант повторить, детали все есть. Других мыслей нет.
    Нестабильно оно включается в esxdos потому, что весьма редко регистр конфигурации divmmc оказывается в том состоянии, когда с нулевых адресов включено его пзу (это случайно происходит). И почему-то не сбрасывается, как должен. Но хотя бы иногда это было - это плюс.
    А мусор на экране бывает тогда, когда перед стартом процессора вместо пзу в нижние адреса мапятся случайные страницы озу divmmc, они могут оказываться в весьма пестром состоянии.
    Конфликтовать в пустом ленине эта плата ни с чем не должна, это тоже где-то страницами выше уже проверяли. Регистр конфигурации 7ffdh в esxdos первым делом настраивается на основное пзу 48к, нулевой экран (основной) и нулевую страницу озу - это тоже продумано.
    Насколько я увидел из экспериментов, у меня было дело в кривом состоянии регистра конфигурации divmmc e3h после включения, когда активность сигнала /poweron короткая, а /reset у z80 значительно более длинный. Почему его надо сбрасывать по активному /reset и почему мало сброса по /poweron -я сам не могу понять.
    Есть возможность прошить пзу вне платы ? Прошей в него testrom3 (см. сообщения на пару страниц выше) и посмотри, стартует или нет. В нем тесты памяти разные и тест выхода из пзу divmmc по кнопке 1.
    А вообще вместо патча прошивки можно просто подать /reset на оба входа cpld - и reset, и poweron, тогда все должно корректно сбрасываться просто по кнопке сброса ленина - это если все остальное работает правильно, проверь, если есть возможность.
    Последний раз редактировалось valerium; 27.11.2020 в 17:11.

Страница 11 из 11 ПерваяПервая ... 7891011

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. basic128 и DIVMMC EsxDos
    от azx987sa в разделе Внешние накопители
    Ответов: 6
    Последнее: 08.05.2020, 00:18
  2. Ленинград 1 (48К) и Brand new DivMMC EnJOY
    от FSound в разделе Ленинград
    Ответов: 1
    Последнее: 16.12.2016, 15:51

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •