Просмотр полной версии : Лешадок помпе: плата расширения для Вектора-06ц
Создал новую тему, чтобы не засорять тему про временные диаграммы.
О май гад! У Svofski остался 1 пин на 4-ом Циклоне, представляю что это будет за котлета!
Моя котлета:
https://lh3.googleusercontent.com/uMhhOeXtNKey1UMyoVpL-W4eggnpMtRsKIM0sy0IQV74gjZk-9hrnJFn8M2xe8-Ps2ItwJJbh19WfgyvDGGCoHvcUxyO1BW9OMWEJcmCV4OkIIkXf qMYS07COETj9oESDrLvl5-zZf0-7na-37SeFrNgIQ7rk76CcVSpzkXivodpEBTpYRAUZS70EGr_GgxWXH hq1SIlN75W7n01jKxJRPdhOO9dNk1cVNvkwbtutH2CG6DGL3r0 JeufKfqGjC0ub5aQouWXUzTwO6EVl4AuTYRCjkCzd0kjszKD8Q LC7LIiw-IcMt9_0BJ383LeCjAMRJM_dgS9PnOMoGOzwe1CuF-he5c7mGFiqe6FtEYfv9rDAD3FsmSY7SkeWZtgbKD-KgXT10Q3bOSAmZZw6kW6bGp6VdiVWiKF2-uwXK5Dffq6xOMWC1zT-A4hGJVTyXqc6HL3Ga7lqZQS1vneuhFwrTsza9sgcMyRloTXbE-wbnMa4l-0hqxf_FtZuwyRaetLeoRnvwB-hMXzs1Jo4aH4efgIxoZJbF-tWGXQ0dn0lCPQXlXcGMOlKSuK3opLvduonyiEx-7wTWmRE1KRSe-YG2eiqgmNb0QN6DmWvhgFN7b_QOUi6-7SOs529jads-3LtIbUT0yBG_hZ3_Sh2LgHruTZrOzHuUvBMQ=w1164-h873-no
Это плата расширения для Вектора-06ц. Функционально это Combodevice (http://zx-pk.ru/threads/22217-combodevice.html) на другой элементной базе. Принципиально отличается от творения Syntal тем, что пока не работает.
Характеристики: FPGA Cyclone IV EP4CE6, со всеми любимым пином 145 по центру. Квазидиск в SDRAM (не видно на фото, чип с обратной стороны). AY и дисковод будут эмулироваться. К AY можно будет подмешивать звук с ВИ. Джойстики, пока даже не знаю какие и как, но возможность оставил. SD карта. ESP12F будет конфигурировать Циклон, затем, если хватит моих сил, терпения и ампер по 3.3В, помогать этому агрегату общаться с миром. В принципе возможности ограничиваются только фантазией. Корованы обязательно можно будет грабить.
Круть! Плата 4 слоя? А на обратной стороне есть чего?
И "ЛЕШАДОК ПОМПЕ" - was ist dast? Простите, я стал забывать родной албанский.
Плата двуслойная. Странная форма объясняется дешевым спецпредложением на jlcpcb при размерах платы ≤ 10х10см. По диагонали разъем ВУ вписывается. Установленная в Вектор плата не достает до стола примерно 8мм.
Название — отсыл к поп-культуре, буквально значит "Шадки качали", на картиночке видно их с насосом. Мультик, который ivagor метко охарактеризовал Flash-анимацией 60-х: Et voilà les Shadoks (https://www.youtube.com/watch?v=tpD0Pdr7oD0).
Пока плата едва и только частично спаяна. Были вроде бы успешные попытки запустить SDRAM. Программа-минимум на ближайшее время: сделать простой квазидиск. У платы получается общаться с Вектором, что-то явно пытается работать, но шалит. Это мой первый опыт связки FPGA с реальным железом.
Сейчас принято выпускать "Making of" до того, как выйдет сам собственно само, так что вот:
Разводка платы [часть 1 (https://www.youtube.com/watch?v=HobtWsqMsTI)] [часть 2 (https://www.youtube.com/watch?v=V7w_Dlr_Jps)]
Не совсем отсюда, но косвенно отвечает на вопрос tnt23: "а откуда такая шикарная 3D модель СНП разъема?" [СНП342 (https://www.youtube.com/watch?v=0hi8xxNJqTc)].
[Update 16.07.18] Сорцы и дизайн файлы: https://github.com/svofski/vector06c-lesshadoks/
Джойстики, пока даже не знаю какие и как, но возможность оставил. Да, джойстики - сложный вопрос. Если сделать аппаратные, то в 02-ом будут одновременно читаться с собственными, какие-то нужно будет отключать.
Для доступа из софта к ESP12 было-бы круто наличие подобия СОМ-интерфейса, кинул байт в порт - отправил, нужно принять байт - прочитал из порта...
crackintosh
10.07.2018, 08:53
А что за софт использовался для проэктирования ПП?
А что за софт использовался для проэктирования ПП?
Рискну предположить, что замечательный во всех отношениях KiCad - http://kicad-pcb.org/
Рискну предположить, что замечательный во всех отношениях KiCad - http://kicad-pcb.org/
Конечно это Кикад. А разъем — Фрикад. В отличие от замечательного во всех отношениях Кикада, которым я только повод ищу попользоваться лишний раз, Фрикад я советую обходить стороной.
Как-то совершенно неожиданно трудно продвигается дело. Сделал основную часть интерфейса с квазом. Пока с блокрамом вместо SDRAM-а, чтобы исключить лишние неизвестные. Вроде все предельно просто и негде закрасться ошибке. Но нет, простейший тест типа записать байт - прочитать байт и вывести на экран - один раз проходит, а в цикле мерцает. Сигналтапом такое не поймать. Чудом заметил в редакторе блокрама, что данные, которые должны быть на экране, попадают в диск. Вах. То есть иногда диск не отключается. Или самопроизвольно включается.
Стал семплировать ЗПЗУ с растяжкой аж на 6 тактов (24 МГц). Невозможная запись в диск вроде бы прошла. То есть либо на ЗПЗУ звон и проскакивают левые записи, либо на ШД звон и записывается левый бит. Тесто стало лучше, но мельтешня на экране равно осталась, то есть это была только одна из вороха проблем. И как так жить? А с другими сигналами, которые требуют быстрой реакции, что делать?
Если это приглашение подумать коллективно, то информации маловато, желательно увидеть фрагмент верилога отвечающий за отлавливание записи. Или ты на 100% уверен что проблема аппаратная (разводка платки, что-то шалит в векторе и т.п.)?
ivagor, нет, это просто выплеск эмоций. Но я подозреваю, что все, кто интерфейсится между FPGA и старым железом сталкиваются с подобными проблемами. Если кто-то вдруг захочет поделиться каким-то общеприменимым опытом, я с благодарностью послушаю. Базовые принципы полной внутренней синхронности и семплирования внешних сигналов я соблюдаю.
svofski, могу навскидку вспомнить неочевидности работы квиксвитчей как проводников тока от 3.3в FPGA в сторону 5в враждебного мира. Сигналтап это хорошо, но аналоговому осциллографу открываются горы пищи для ума.
tnt23, и какие были неочевидности? Я помню что-то про ОК в Амиге. В Векторе по-моему обычные TTL уровни и буфера у меня 74LVX4245, а не кисичи.
tnt23, и какие были неочевидности? Я помню что-то про ОК в Амиге. В Векторе по-моему обычные TTL уровни и буфера у меня 74LVX4245, а не кисичи.
Ну тогда мой горький опыт тебе не будет полезен. В моем случае я пытался длинную и довольно емкостную шину прокачать дохлым 12-миллиамперным выходом второго циклона, да еще через 5 ом свитча.
Sergei Frolov
10.07.2018, 15:15
А контроллер диска - на FPGA?
tnt23, наверное это не тот случай. По-моему у меня проблема скорее в чтении шины, чем в выводе на нее.
Sergei Frolov, контроллер и диск только в эмуляции. Настоящие дискеты не предусмотрены.
симпатяшка
ждется от нее чтонибудь вроде проигрывателя mod
24 bit DAC
ну накрайняк два AY
-)
Вот например (пиксельарт под спойлером):
https://raw.githubusercontent.com/svofski/vector06c-lesshadoks/master/doc/buscaptures/pop-merde.png
Обычно нормально работает цикл раз-RAS, два-CAS, три-ЧТЗУ, ура! Но никто ничего такого не обещал, а я просто посмотрев на диаграммы наивно решил, что так всегда и будет. Тут же второй ЧТЗУ совершенно невпопад. Можно подумать, что это POP, поэтому цикл какой-то особенный. Но нет, другие разы POP сработает совершенно нормально.
- - - Updated - - -
zx_, нестандартного железа напихать можно будет, можно даже четыре AY. Вопрос только в софтовой поддержке. Если миллионы пользователей выразят желание, все будет. Но, как показывает практика, бага в Картотеке остается незамеченной в среднем полгода. А это не доставать и чинить железо, а просто в браузере кликнуть.
Для полной ясности не хватает клока и адресов, наверно они не помещались в память. Предполагаю, что RAS WTF это от регенерации, с адресной шиной было бы однозначно.
BLK_N залип в активном состоянии, почему?
- - - Добавлено - - -
Может BLK гасить по заднему фронту CAS?
BLK_N не залип. Ему не было причин подниматься. Кваз настроен для стека и памяти (port $10 == $30). Адреса между двумя чтениями оба попадают в кваз, поэтому он держит БЛК в нуле. Схемы квазов, которые я штудировал, никак особенно с БЛК не мудрят и делают так же.
RAS WTF в принципе не напрягает. Скорее всего регенерация, да.
Рабочая версия: держать статус валидности декодированного адреса и не запускать чтение, пока валидный адрес не появится. Сбрасывать флаг валидности по положительному фронту RAS.
держать статус валидности декодированного адреса и не запускать чтение, пока валидный адрес не появится. Сбрасывать флаг валидности по положительному фронту RAS.
Чтение из набортного озу до этого запускалось просто по CHTZU (возможно в комбинации со STACK для обращения стеком)? Если добавить проверку валидности адреса, то по крайней мере на этой картинке должно прочитаться.
svofski, время такое и тема, что об этом грустить
лишь бы самому нравилось
а два цапа на портах ау были в реале
Чтение из набортного ОЗУ не требует специального сигнала для собственно чтения. Ему надо подать адрес строки, столбца и подождать. ЧТЗУ для него просто открывает буфера на шину. То есть для него и правда все выглядит хорошо. А мне же нужно получить именно команду "читай!".
- - - Updated - - -
zx_, я как видишь не грущу, а совсем наоборот!
Для контроллера сдрама то надо будет сигнал чтения, я думал что ты, так сказать, эмулируешь.
- - - Добавлено - - -
проигрывателя mod
Интересно бы взглянуть на проигрыватель mod для 8080. Хотя даже при наличии z80 никто не стал бы заниматься портированием проигрывателя (например со спека) на вектор.
ivagor, не, не на 8080
а на четвертом циклоне
Извините за оффтоп. zx_, хорошо пусть проц будет в циклоне (и DMA, конечно, там же). Возникает вопрос - какой проц? Он должен влезть в начальный 4й циклон и под него должен быть проигрыватель мод. И он должен быть свободный/бесплатный. Или есть проигрыватель mod прямо на верилоге или VHDL - если да, то это нечто фантастическое.
При всем многообразии странных софт-процессоров почему-то мне кажется, что больше всего шансов у набившего оскомину 8086. Он противный, в нем сегменты, всем надоели писи, но для него есть средства разработки и нет нехватки адаптируемых mod плееров.
mp3 видел вроде проигрыватели готовые, mod нет
есть куча железок , включая сид , дельта сигма цапы и тд
ага, 8086 и adlib тоже видел
здесь чтото есть
https://svn.pacedev.net/repos/pace/sw/src/component/
crackintosh
11.07.2018, 05:51
Вячеслав, спасибо за видео... очень понравился творческий процесс.
Могу ли я узнать что за музыка на 1.15.50 второго видео? Тут: https://youtu.be/0hi8xxNJqTc?t=4550
Если есть полный плэйлист- киньте в ЛС. Очень понравилась ...
Заранее спасибо.
Оффтоп. Виноват, что лезу вперед svofski
Pete Namlook & Richie Hawtin - Future Surfacing (What Lies Ahead) (https://www.youtube.com/watch?v=PnsWHvd0RMo)
Или в составе альбома (https://youtu.be/JVJJ8CL371E?t=6326)
CodeMaster
11.07.2018, 12:50
Лешадок помпе
буквально значит "Шадки качали"
К теме это не относится ;-) но можно эту фразу увидеть на языке оригинала?
crackintosh, спасибо. Не ожидал интереса с этой стороны, при случае постараюсь дописать в коментариях к видео хотя бы примерно музыку, которая играла. Сейчас пока ivagor даже нашел именно ту ютубу, которую я играл.
CodeMaster, bien sûr! — "Les Shadoks pompaient".
Возвращаясь к онтопику. У меня получилось добиться работы теста push/push/pop/pop (так, чтобы гарантировано разные данные и разные адреса) с блокрамом, но правда скорее неправдами, чем правдами. Что-то на грани фола: работает либо с засунутым сигналтапом, либо с какой-то ядерной оптимизацией. С SDRAM такая же конфигурация работает примерно так в 20% случаев (сужу по мерцанию).
Так получается, что мне приходится разные сигналы довольно существенно задерживать. RAS и CAS, например, не отсемплированные на 2 отсчета + текущий на 24МГц вообще никуда не годятся. В результате выходит, что 24МГц, на которых у меня крутится вся машина, не так уж и много. Тут отсчитать, тут команду подать, тут ответа подождать — к положительному фронту ЧТЗУ, SDRAM может и не успеть (https://www.youtube.com/watch?v=D0yLPvZ483s).
Подозреваю, что придется поднять частоту шинного интерфейса, чтобы располагать большей гибкостью в подборе временных интервалов.
на грани фола
А ты отслеживаешь конкретное значение ошибки, т.е., например, считывает предыдущее значение вместо текущего, или как-то иначе?
CodeMaster
11.07.2018, 13:52
"Les Shadoks pompaient".
Спасибо, а то картинка не складывалась ;-) Тогда, наверное лучше так "Лешадок помпэ́"?
Я вывожу содержимое на экран. Если правильно то в одно место, если неправильно, то в другое. Так что сразу видно и содержимое и правильно-неправильно. Вот сейчас например, я вижу одно из правильных значений, но повторенное два раза. Еще интересно, что после сброса может полсекунды-секунду работать исправно, а потом рухнуть и обратно не вернуться. В инспекторе памяти стабильно значения верные, значит именно считывание вызывает какие-то проблемы.
- - - Updated - - -
Спасибо, а то картинка не складывалась ;-) Тогда, наверное лучше так "Лешадок помпэ́"?
Вдохновение это одно, а у меня уже своя вещь. Она называется так, как названа.
повторенное два раза
Это случается только внутри одного pop (первое значение правильное, второе - повтор), или бывают повторы между попами?
Трудно отвечать на вопросы, потому что все меняется. Но в общем картина такая, что сначала все работает. Потом щелк, и все попы выдают одно и тоже. То есть ломается механизм считывания вообще. (А с подключенным сигналтапом -- не ломается! Вот такой вот корпускулярно-волновой поп).
- - - Updated - - -
(Вспоминается, что в этот момент по закону интернет-форумов седобородые дяди должны спросить: а ты определил ограничения для TimeQuest-а? И на этом разговор всегда заканчивается. Седобородый дядя уходит довольный своей значимостью, а пытливый юноша стесняется продолжить беседу).
crackintosh
11.07.2018, 16:07
SignalTap вешается на какие нибудь используемые вход-выходы?
Может он физически влияет на уровень/форму сигналов ?
crackintosh, разумеется он влияет. Нетипичный случай, потому что обычно он влияет негативно. А тут как-то получилось условно-позитивно. Я пытаюсь понять, в чем именно заключается его влияние. Наверняка дело в том, что он не дает какому-то оптимизатору оптимизировать что-то слишком сильно.
При всей малости и незначительности моего опыта сигналтап (его включение/отключение) у меня тоже влиял на работоспособность при мучениях с ECCшным SRAMом на DE1, а также на высоких частотах SDRAMа.
(Вспоминается, что в этот момент по закону интернет-форумов седобородые дяди должны спросить: а ты определил ограничения для TimeQuest-а? И на этом разговор всегда заканчивается. Седобородый дядя уходит довольный своей значимостью, а пытливый юноша стесняется продолжить беседу).
Для 24 мегагерц-то? у тебя небось и сдрам ишачит на осторожных 100, тут не место для таймквеста.
Положительный сдвиг. Я уже повторяюсь, но ничего. Поскольку принципиальная разница между тем, что работает и тем, что не работает, явно в декодированном адресе, я стал смотреть, что там может быть ненадежно.
Вкратце релевантные фрагменты кода (рад бы показать все, но там сейчас такое поле брани, что даже мне стыдно):
// clk_cpu это никакой не cpu, это 24мгц клок от фапчи
// cинхронизатор
reg [1:0] samp_ras_n;
reg [1:0] samp_cas_n;
always @(posedge clk_cpu) begin: _vu_sampler
samp_ras_n <= {samp_ras_n[0],VU_RAS_N};
samp_cas_n <= {samp_cas_n[0],VU_CAS_N};
end
wire negedge_cas_n = {samp_cas_n,VU_CAS_N} == 3'b100;
wire negedge_ras_n = {samp_ras_n,VU_RAS_N} == 3'b100;
// декодер адреса
reg [7:0] ra;
wire[7:0] ca = VU_SHAP_N;
always @(posedge clk_cpu) begin
if (negedge_ras_n)
ra <= VU_SHAP_N;
// if (negedge_cas_n) -- это работает только если сигналтап
if (~VU_CAS_N) // это работает без сигналтапа, причем без спец опций агрессивной оптимизации
decoded_a <= {ca[6], ~ca[7], ~ra[7], ra[4], ra[3], ra[2], ra[1],ra[0],
ca[5], ca[4], ca[3], ca[2], ca[1], ca[0], ra[6],ra[5]};
end
Вот если у меня написано как сейчас, то у меня тест держится неопределенно долгое время. Может быть что-то другое не работает, но вот это работает.
А если написано так, как мне кажется, что должно быть правильно, то есть закоментированный if, работает только с СигналТапом.
- - - Updated - - -
Для 24 мегагерц-то? у тебя небось и сдрам ишачит на осторожных 100, тут не место для таймквеста.
Ты записан следующий за седобородым старцем ранг.
Осторожно поздравляю с продвижением по пути к. Работает только с внутренней памятью или с сдрам тоже?
always @(posedge clk_cpu) begin
if (negedge_ras_n)
Я тут вижу малость нестыковку... Негедж_кас и негедж_рас же асинхронный вроде как получается...
crackintosh
11.07.2018, 16:57
Если есть хороший осцил, посмотри что происходит с сигналом CAS (особенно его отрицательный фронт) при подключении SignalTap.
Без схемы трудно советовать, но по логике - либо SignalTap становится "подтяжкой лог.уровня", либо "заваливает" фронты сигналов.
BYTEMAN, negedge_ras_n это семплированный сигнал. Не путай с конструкцией negedge.
- - - Updated - - -
Работает только с внутренней памятью или с сдрам тоже?
SDRAM пока никак.
{samp_cas_n,VU_CAS_N} == 3'b100;
а это ж уже комбинаторная штука над сэмплированным сигналом... Ты отсемплировал samp, а потом тут делаешь сравнение (а оно как мне известно комбинаторное), вот тут и задержечка может появиться, не?
svofski, а там в логах и репортах квартуса не видно, вдруг он что-то соптимизировал напроч(tm) полезное или нужное?
- - - Добавлено - - -
а это ж уже комбинаторная штука над сэмплированным сигналом... Ты отсемплировал samp, а потом тут делаешь сравнение (а оно как мне известно комбинаторное), вот тут и задержечка может появиться, не?
Тоже была мысль малодушно зарегать этот wire, но я не настоящий сварщик.
BYTEMAN, задержка относительно предыдущего такта. Проблема может быть только если 1) VU_CAS_N внезапно начинает метастабильничать (то есть мы видим как бы 3'b101) 2) трехбитное сравнение не успевает стабилизироваться за период clk_cpu.
- - - Updated - - -
Объясните мне, как реганье этого вая что-то изменит? С обоснованием.
VU_CAS_N внезапно начинает метастабильничать
Разные клоковые домены? VU_CAS_N это вход извне или выход регистра в том-же клоковом домене?
omercury
11.07.2018, 22:28
А если написано так, как мне кажется, что должно быть правильно
svofski, какова длительность (в тактах) сигналов negedge_cas_n и negedge_ras_n ? ;)
omercury, я надеюсь, что 1, от фронта clk_cpu до фронта clk_cpu. Если VU_CAS_N/VU_RAS_N нестабильны спустя 2 такта после начала фронта, то может быть меньше.
omercury
11.07.2018, 22:59
надеюсь, что 1
И напрасно.
0,5 такта максимум, пока VU_RAS_N и VU_CAS_N находятся в "0".
Уберите их из списка активности, тогда будет целый такт.
Упс.
Извиняюсь, был невнимателен, обычно использую оба фронта, здесь же только положительный.
Попробуйте^
1. пересобрать проект, удалив всю базу Квартуса (весь пинаут, а также некоторые другие настройки можно скопировать из заранее сохранённого в надёжном месте файла .qsf), случаются глюки
2. поменять полярность клока BRAM
это вход извне.
Тогда надо ещё один регистр, использовать внешний вход в комбинаторике, на мой взгляд, неправильно. Возможно, SignalTap тебе неявно регистр добавляет.
omercury, спасибо за апдейт. А то я уже думал, что я совсем спятил с этим квасидиском. Кто бы мне стер всю базу уже.
У меня сейчас успешный захват CAS получается вот так, и никак иначе:
reg [2:0] samp_cas_n; wire negedge_cas_n = {samp_cas_n,VU_CAS_N} == 4'b1100;
В этом случае с BRAM картинка на моем тесте железная и без СигналТапа (может быть в других случаях все плохо, но все же положительный сдвиг). Пытаюсь добиться схожего эффекта с SDRAM-ом, это требует допила контроллера под специфические нужды и тоже легко не дается.
Тогда надо ещё один регистр, использовать внешний вход в комбинаторике, на мой взгляд, неправильно. Возможно, SignalTap тебе неявно регистр добавляет.
Но все же, кроме общего рукоплескания по поводу внешних сигналов из иных миров, чем это ужасно? Я ими не тактирую ничего, лишний клок не протолкнется. А вся риторика по поводу задержек имеет смысл только если сравнивать с другими сигналами, я же ловлю сигнал только относительно самого себя. Задержки относительно чего? Реальная проблема это звон, то есть длительный период метастабильности, который может быть усугубляется входными буферами без ТШ. К сожалению у меня нету инструмента, которым я мог бы померить настоящий звон. Мой осциллограф скорее просто скушает его своей пробой и я ничего не увижу. Кстати на будущее для версии два, подыскать буфера с ТШ, если такие бывают.
(Кстати из какого-то вайтпейпера вспоминаю картинку, где результат выхода синхронизатора XOR-ится с прямым входом и, если на выходе XOR 1, это сигнал ошибки синхронизатора.)
Но все же, кроме общего рукоплескания по поводу внешних сигналов из иных миров, чем это ужасно?
Имеем:
1. сигнал из другого клокового домена
2. прошедший через комбинаторику
3. на высоких частотах
Получаем:
1. метастабильность
2. метастабильность с задержкой, возможно ещё и более длительную
3. метастабильность с большой (в процентном отношении) задержкой, возможно ... ну ты уже прочёл.
Первый бит, где мы ждём 1, чаще всего стабильная 1. Второй бит, где мы ждём 0, часто попадает на период метастабильности. И тут зависит от того, на начало или на конец мы попали. Если на конец, то третий бит (который суть входной сигнал) будет стабильным нулём и всё будет в шоколаде. А вот если мы попали на начало метастабильности, то выходной с комбинаторики сигнал с очень большой вероятностью (учитывая пункт 3), тоже будет метастабильным. На следующем клоке в первом бите уже не 1, так что переход ты не поймал.
У меня сейчас успешный захват CAS получается вот так, и никак иначе:
Я думаю, если в этом 4-х битном сигнале первые два бита складывать по ИЛИ, а последние 2 по И, и только потом сравнивать, то будет ещё стабильнее. Но всё равно рекомендую VU_CAS_N захватывать в регистр (если задержка на 1 клок не такая критичная).
https://www.youtube.com/watch?v=lhD5KIyYhY8
https://i.imgur.com/N6u0o2U.gif
... В отличие от замечательного во всех отношениях Кикада, которым я только повод ищу попользоваться лишний раз, Фрикад я советую обходить стороной. ...
А для чего Фрикад? Он ведь вроде для 3Д моделирования, или речь о другом Фрикаде?
Если для создания 3Д-модели, то почему именно он? Нужен какой-то особенный формат результата?
KTSerg, Фрикад для моделей разъемов. Фрикадом мне приходится и по другим причинам иногда пользоваться, поэтому он мне более-менее привычен и я делал модели разъемов в нем.
KTSerg, Фрикад для моделей разъемов. Фрикадом мне приходится и по другим причинам иногда пользоваться, поэтому он мне более-менее привычен и я делал модели разъемов в нем.
Ясно. Просто я к нему так и не смог привыкнуть, слишком он своеобразный. Для меня в некоторых случаях проще даже хотя-бы OpenSCAD.
слишком он своеобразный
Мягко говоря =)
В случае разъемов OpenSCAD однозначно лучше.
svofski, если не трудно, добавь второй квазидиск на 11 порт и прогони тест "Электронный дождь". У меня почему-то первый квазидиск всегда работал нормально, второй определялся, сначала пахал, а потом вываливалась ошибка. Реализация обоих квазидисков была одинаковая. А лучше вруби сразу 8 квазидисков, порты кажется 10, 11, 20, 21, дальше наверное 40, 41, 80, 81.
Про дождь (http://zx-pk.ru/threads/8669-vektor-06ts-zhelezo.html?p=715346&viewfull=1#post715346)
По поводу работы с SDRAM - не надо изобретать велосипед (https://github.com/stffrdhrn/sdram-controller/blob/master/rtl/sdram_controller.v)...
Вполне рабочий контроллер, работает исправно на высоких частотах.
По поводу работы с SDRAM - не надо изобретать велосипед...
Почему же не надо, есть несколько других исправно работающих контроллеров, один из них (b2ma) давно является моим источником вдохновения (и он значительно компактнее, хотя там есть небольшие отклонения от даташита, которые при желании легко поправляются). Я уж его и так переизобретал и вот этак. На новой DE1 с sdram -6 сделал вариацию того контроллера, работавшую на 168 МГц.
andreil, изобретать велосипед интересно. Это помогает лучше понять, как он устроен. Кроме того, мой велосипед изобретен b2m-ом, переделан ivagor-ом и теперь еще раз мной. Так что это такой домашний, самодельный, теплый ламповый велосипед.
Syntal, дай выходнуть =) Потом как-нибудь обязательно попробую. У меня много лишней памяти, так что все можно.
Meanwhile, прикрутил АЫ, даром что он чуть ли не сам в проект лезет. Демка, которая не требует дисковода, но требует кваза и использует AY -- From Sunset To Dawn. Для меня впервые на реале, со звуком через хайэнд спикер монитора EIZO 8020:
https://youtu.be/HUOo_4UiXrg
Здорово, только внизу в центре полоска хрени.
andreil, изобретать велосипед интересно. Это помогает лучше понять, как он устроен. Кроме того, мой велосипед изобретен b2m-ом, переделан ivagor-ом и теперь еще раз мной. Так что это такой домашний, самодельный, теплый ламповый велосипед.
Syntal, дай выходнуть =) Потом как-нибудь обязательно попробую. У меня много лишней памяти, так что все можно.
Meanwhile, прикрутил АЫ, даром что он чуть ли не сам в проект лезет. Демка, которая не требует дисковода, но требует кваза и использует AY -- From Sunset To Dawn. Для меня впервые на реале, со звуком через хайэнд спикер монитора EIZO 8020:
https://youtu.be/HUOo_4UiXrg
Какая яркая картинка блин....
Здорово, только внизу в центре полоска хрени.
Из реала полоску хрени не выкинешь!
На своем реале на разных тв такой полоски не видел. Есть идеи, что это?
Noname demo (http://sensi.org/scalar/ware/227/) смотрел? Оно имхо послабее, но системные требования те же.
Есть идеи, что это?
Гашение чуть чуть опаздывает относительно начала обратного хода. Ты сомневаешься в аутентичности моего Вектора?
- - - Добавлено - - -
Noname demo смотрел? Оно имхо послабее, но системные требования те же.
До наступления прохладного времени суток я спрятался в терморегулируемую комнату. Но посмотрю обязательно. Еще что-нибудь есть похожее?
Вообще эмуляцию дисковода приделать не сильно сложнее эмуляции АЫ, эти все блоки сто лет как отлажены в v06cc. Но моральные силы надо восстановить.
Гашение чуть чуть опаздывает относительно начала обратного хода. Ты сомневаешься в аутентичности моего Вектора?
У меня в некоторых программах была видна хрень сверху и никогда снизу. Могли твои доработки по согласованию с тв, извините, "опустить хрень"?
Еще что-нибудь есть похожее?
Есть много мелких музыкалок, многим даже КД не нужен. Стоит посмотреть Multicolor (http://sensi.org/scalar/ware/32/), надо же убедиться, что твой вектор аутентичный.
Могли твои доработки по согласованию с тв, извините, "опустить хрень"?
Хрень сильно зависит от того, как выкручены крутилки. У меня крутилки выкручены довольно радикально относительно того, как вообще этот монитор был настроен с MSX, чтобы картинка была умеренно посередине и умеренно не перекошенная (все равно перекошенная и не посередине, но терпимо). Если бы я мог крутить их в более широких пределах, я бы хрень выкрутил за край экрана. Вообще может быть и сейчас можно выкрутить, меня как то не беспокоило просто. Этот монитор вообще потрясающий, просто летающая корова из цирка.
Доработки не представляю как могли бы чего-то сместить, особенно такую вещь, как хрень. Но они могли сделать ее более заметной, потому что гашение и контраст. Видишь, какой у меня готичный черный сверху в загрузчике? Мало Векторов могут похвастаться таким нонконформизмом.
Multicolor да... Но хочется Black Ice.
- - - Добавлено - - -
Хм, а как вообще много квазов поддержаны софтом? Может быть я могу записать Black Ice на второй кваз, и пусть он пользуется первым для памяти, как обычно? Или такой фокус не пройдет?
Был один странный дос Филиппова с поддержкой то ли двух КД, то ли КД + ром-диск с доступом типа КД. b2m, насколько помню, частично его запустил, но не совсем. Можно сказать, что мультиКДшность поддержана только в тесте.
Black Ice c одного КД не запускается (только начальный экран). Теоретически можно было бы попробовать переделать КДшный дос под 11h, но 1) ты быстрее fdd прикрутишь; 2) не факт, что это позволит запустить b-ice
Насчет Black Ice у меня большие сомнения, что он запустится к КД, вроде у него свой (мимо дос) загрузчик с FDD, хотя я уверен не на 100%, надо смотреть.
Да, действительно (http://zx-pk.ru/threads/26199-voprosy-po-vektoru-(dlya-emulyatora).html?p=860832&viewfull=1#post860832). Что за программа, которая не срывает покровы с прикидывающегося досом загрузившего его самозванца.
Это даже смешно, автозаменой "адаптировал" КДшный дос под 11h. В emu, на первый взгляд, работает. Но толку с голого доса маловато.
- - - Добавлено - - -
И, кстати, начальный загрузчик не поддержит загрузку с КД 11h, т.е. нельзя сгенерировать ос на кд, нужно каждый раз грузить или с магнитофона или из внешнего пзу (или с fdd).
ты быстрее fdd прикрутишь
Посмотрим. Тяп-ляп-фдд легко, но я не очень хочу так. Одна причина — надо купить сокет для SD карты. Вторая причина более идейная: я обязательно хочу держать образ диска в SDRAM-е, а для этого надо придумать, как разделять доступ к нему между Вектором и эмулятором флопа.
Хотя и начальный загрузчик несложно пропатчить. Сложнее заменить пзу на реале (тем более такое пзу нужно только для теста, постоянно пользоваться им нет смысла).
- - - Добавлено - - -
хочу держать образ диска в SDRAM-е, а для этого надо придумать, как разделять доступ к нему между Вектором и эмулятором флопа.
С ходу можно предложить отдать fdd часть слотов рефреша.
- - - Добавлено - - -
С досами на альтернативных портах есть засада. Если запускать с них .rom игрушки или демки, то они не смогут отключить режим адресности, т.к. все дружно пишут в 10h.
Был один странный дос Филиппова с поддержкой то ли двух КД, то ли КД + ром-диск с доступом типа КД. ...
Это вот про этот:
--------------------
VECTOR-06C
BIOS FPHR5.1
ABCD-DISK DRIVE
A-PZY DRIVE
B,C-FDD, HDD
D-OZY DRIVE
FILIPPOV,
PZYD,HDD,0ZYD-FROLOV
--------------------
Я даже не представляю, что это такое... Где-то есть инфа?
Это вот про этот
Да, этот. Про hdd я забыл упомянуть.
"Официальной" информации не было, может b2m что-то помнит.
раздался шепот из кустов - моддддд бумц бум бумц -)
а такто есть ведь ERAM до 2 мб
и RTC ;
и стерео ковокс
Похоже, что поддержка мультиквасии больше похожа на стенд для промышленного тестирования, чем на что-то такое, что замышлялось применять в быту. То, что там есть счетчик суток, тоже намекает на серьезность подхода.
Но конечно было бы круто, особенно с батарейной подпиткой. Элегантно так отстегнул квас с последними сорцами, третий с краю, положил в полиэтиленовый пакет, и пошел в гости к товарищу парно попрограммировать. Опережая время лет на 20.
Если учесть, что все диски имели встроенный дешифратор адреса, и настроен он был жестко на один адрес. То судя по всему существовала плата сопряжения, с перекодировкой адресов для каждого слота.
Если бы память была не динамика а статика, то наверное можно было-бы думать о использовании кваза как "переносного диска", но с регенерацией... автомобильный аккумулятор в рюкзаке таскать...
Если учесть, что все диски имели встроенный дешифратор адреса, и настроен он был жестко на один адрес. То судя по всему существовала плата сопряжения, с перекодировкой адресов для каждого слота.
Вот, это наверное и был испытательный стенд.
Про регенерацию.. В любом случае своей схемы регенерации на квазидисках ведь не было. Так что кроме автомобильного аккумулятора нужен еще чемоданчик для транспортировки с активной системой жизнеобеспечения. Положить на лед, так сказать.
хрень
Покрутил ручки. Хрень отсекается одной из крутилок, которая на грани, и выкручивание которой чревато срывом кадровой синхры. Напомню, что монитор строго 60-герцовый и выступает у меня на правах летающей коровы. Туда же про текст на бордюре в Мультиколоре: его видно, но он так сильно перекошен, что прочитать его я бы не сказал, что возможно. Я растянул картинку по вертикали, хрень ушла за рамку.
запустить руки в нутро мониторное пыльное
поправить кадровую на писят херц
svofski, прошу прощения, мой вопрос не по теме. Я изучаю Ваш проект. Посоветуйте, где взять сборку KiCAD что-бы его открыть.
A074MO, KiCad можно скачать тут http://kicad-pcb.org/download/
Если вам только схему, то можно взглянуть на pdf: https://github.com/svofski/vector06c-lesshadoks/blob/master/kicad/shadok-cheap/shadok.pdf (есть кнопка Download для удобства)
Я стараюсь документировать изменения, которые делаю по ходу разработки. Сейчас pdf соответствует действительности.
Именно по этой ссылке и скачал
https://thumb.ibb.co/dBR2id/mess.png (https://ibb.co/dBR2id)
Именно по этой ссылке и скачал
https://thumb.ibb.co/dBR2id/mess.png (https://ibb.co/dBR2id)
Берите последние ночные сборки под Windows тут - http://downloads.kicad-pcb.org/windows/nightly/
tnt23, Я попробовал одну из последних, открывает печатку, но при попытке открыть схему - вылетает без сообщений.
https://thumb.ibb.co/hysszJ/nightly.png (https://ibb.co/hysszJ)
A074MO, у меня версия называется (2018-01-30 revision 342197bb3)-makepkg, release build.
- - - Добавлено - - -
A074MO, попросил проверить на 5.0.0-rc3. Говорят, открывается и схема и плата.
Появилась стабильная версия 5.0.0 от 20го июля.
При попытке открыть в ней схему shadok, сообщает об ошибке - чего-то там с десятичным разделителем. Искать настройки локализации винды (вин7) ?
Если отвечать "нет", окно появляется два раза, потом схема открывается.
Печатку открывает без проблем.
Насколько я могу понять по вестям с полей, все можно открыть? Сам я апгрейдиться в разгаре творческого процесса не собираюсь, так что пока не могу помочь.
У меня в винде открылось без проблем (5.0.0-rc3-dev-2-g101b68b61)
Update 1. (a propos, КиКад/CERN принимает пожертвования на ускорение выхода версии 6 - https://givetokicad.web.cern.ch/. Начинается с $30, думаю сэкономить на завтраках и, если жена разрешит, пожертвовать)
Update 2. А вчера-то, оказывается, вышел релиз KiCAD 5.0!
Update 3. Не могу молчать, там столько всяких вкусностей. Одно выделение объектов чего стоит:
Improvements to drag selection:
A drag from left to right will select items that are completely enclosed
A drag from right to left will select any items that are partially touched by the selection rectangle
Ммм partially touched.
Написал конфигуратор для esp8266. Работает супер, можно по воздуху заливать прошивки для альтеры и для самого esp8266. Одно маленькое но. От esp-шного вайфая Вектор прям мыргает экраном. Когда вайфай уже приконнекчен и ничего не делает он мыргает редко, но все равно неприятно. Это при том, что модуль за импульсным регулятором на 3.3В и обвешан конденсаторами разных номиналов. В выбранном мною SDK нету функции понижения мощности передатчика. Придется портировать на более простой, но полноценный SDK, в котором такая функция есть. Проверено, с ней помеха практически незаметна. Эх, ну ладно.
В процессе экспериментов заметил, что Вектор вообще не очень-то стоек к электромагнитным помехам. У меня старая люминесцентная настольная лампа, такая вездесущая кочерга офисная на струбцине. Не знаю, какой в ней балласт, но она мыргает, когда включается. И в это время у Вектора по экрану бежит яркий желтый снег (from where the huskies go (https://www.youtube.com/watch?v=TLIppgE45wM)).
FCC:
[x] sucks
[ ] rules
Перенес с esp-open-rtos на esp-open-sdk. В целом не зря. Разобрался с кучей вещей, которые мне никогда больше не пригодятся. Самое удивительное открытие: esp8266 не фонит, если ей совсем запретить спать. Хотя, казалось бы... (http://m.tululu.org/bread_81553_86.xhtml)
Мне вот что-то кажется, что esp фонит, возможно не по питанию, а из-за накладки каких-то частот, или гармоник...
KTSerg, видов наводок много разных. Частое сильное смыргивание строк на 10, редкое сильное смыргивание строк на 10, не сразу заметная, но постоянная рябь с шириной полосы опять же строк 10, едва заметное изменение яркости всего экрана.
Из всего этого только последнее наверняка по питанию. Рябь наблюдается, если в noos разрешить процессору спать. Похоже, что тоже питание. А сильные смырги были похожи на радио. Без rtos я их не видел, может быть она глубже засыпает в периодах между посылками маяка, потом просыпается и делает перекалибровку. Это например, я могу только гадать.
В любом случае сейчас я доволен, что смог добиться того, что всех их получилось прогнать. Хочется уже заняться чем-то более в сторону эмуляции дисковода.
А HDD на SD-карте эмулировать не получится?
KTSerg, не изучал вопрос подробно, но не должно быть проблем по идее.
Ещё интересует перспектива использования SD-карты.
Если на ней будут файлы или образы дисков, то нужно управление этими файлами... кнопки, дисплей... или не?
KTSerg, SD карта предусмотрена, физический дисплей и кнопки нет. Код эмуляции дисковода из v06cc, который я надеюсь перетащить с минимальными изменениями, имеет простенький OSD, где можно выбрать образ дискеты. Вероятно он останется, но доступ к нему будет через веб-интерфейс, чтобы например с телефона нащелкать что надо.
Ясно, примерно так и думал.
KTSerg, я еще думал о возможности запускать код выбора образа и вообще всего интерфейса непосредственно на Векторе. Но это пока как-то все очень туманно.
KTSerg, я еще думал о возможности запускать код выбора образа и вообще всего интерфейса непосредственно на Векторе. Но это пока как-то все очень туманно.
Возможны ситуации, когда нужно поменять дискету (образ) не выходя из программы, значит загружаемый интерфейс управления пригоден не во всех случаях.
KTSerg, именно поэтому. В идеале можно было бы сделать что-то вроде как в 1541 Ultimate. Там при нажатии на спец кнопку не знаю, что именно происходит, но весь комод куда-то улетает а на его месте появляется интерфейс эмулятора дисковода. Выбираешь другую сторону дискеты и при возврате даже самые навороченные демки продолжают работу. На Векторе тоже можно узурпировать всю память и даже, поскольку стек нам доступен, аккуратно вернуть потом все на свое место. Это было бы интересно замутить, но когда-нибудь потом.
А модуль ESP будет работать в режиме точки доступа?
Ведь иначе нужно иметь возможность указать WiFi-сеть и ввести пароль, для подключения.
Просто имея на борту WiFi-модуль, было-бы интересно в перспективе иметь возможность используя например FTP, отправлять/забирать файлы... ;)
Она в включается как точка доступа, потом можно настроить как станцию. Пароль вводится. Если добавить какой-то функциональный аналог AT firmware (типа wifi modem), то Вектор сможет через него общаться с внешним миром.
svofski, у тебя esp8266 изначально отвечал на команду at+gmr (показать версию) ?
Мой модуль чёт на неё не отвечает, наверно "левая" прошива залита?
Так разные АТ-команды посылаю, вроде отвечает, правда я с ним ничего серьёзного пока не делал...
KTSerg, не могу проверить. В тех, что у меня подключены, AT-firmware я стер почти сразу. Оно прошивается элементарно через esptool.py (https://github.com/espressif/esptool), сами прошивки тут (https://www.espressif.com/en/support/download/at). В любом случае более подробную информацию о модуле можно получить через esptool.py.
У меня ESP12F, такие маленькие плоские с металлической крышечкой. На них 4МБ QIO флеша, неизвестно какого качества и неизвестно с каким запасом стираний. У меня есть отладочная копия на бредборде, которую если что легко заменить, а ту, что запаяна в Шадков я стараюсь прошивать пореже. Я использую пин GPIO, который нужен для QIO, поэтому флеш настроен в режиме DIO.
В общем у меня об этим модулях такое впечатление.. Прикольно, много чего может, но вообще слегка бесит. Самые базовые вещи могут быть недокументированы просто совсем (например все драйвера SPI чуть ли не методом тыка созданы, вся "документация" от espressif молчит о них как рыба об лед). Все, что описано и работает, работает на самом деле через пень колоду. Просто быть уверенным в состоянии пина невозможно. Пины почему-то в страшном дефиците, причем мультиплексированы прямо от начального включения самым безобразным образом. Все эти SDK это груда хлама. Может быть талантливыми людьми сделанного, но без организации, должной поддержки и документации гниющего. Единственное исключение - это Ардуино для esp8266. Нечеловеческими усилиями его заставили-таки работать и поддерживают активно.
- - - Добавлено - - -
P.S. так написал, что можно подумать, что я ESP8266 просто ненавижу. Не совсем так. Это интересная штука чтобы хакать ее саму по себе. А как модуль, который должен выполнять маленькую, но ответственную функцию в большом проекте, на который и так сил и времени в обрез, не лучший был выбор.
Meanwhile (https://i.imgur.com/EquJHy7.jpg), получилось загрузить пару вещей с SD-карты. Старый эмулятор я сразу стал немного переделывать: взял другое ядро 6502 (https://github.com/Arlet/verilog-6502) и клок поднял до 24МГц. Наверное зря, потому что переделки оказались более значительными, чем я ожидал. Внезапно, когда уже начал работать дисковод, я столкнулся с неожиданной проблемой. Оказалось, что при выполнении кода непосредственно из кваза, временные интервалы на чтение имеют значительный разброс с отклонениями в короткую сторону и мой механизм доступа к SDRAM оказался слишком неповоротливым. Не запускался даже mdos20 для чистого кваза без флопа.
Получилось потеснить немного выделение адреса чтения и сократить время формирования запроса к SDRAM на один такт. mdos20 загрузилась и на вид хорошо работает. Увы, другие зависящие от этой особенности программы хоть и стали подавать больше признаков жизни, не работают. Black Ice стал запускаться, например, но рассыпается прямо на глазах.
Что делать пока не знаю. Где-то надо найти еще буквально 1 такт. Момент защелкивания CAS я подбирал по полклока, вряд ли его можно сильно сместить. SDRAM ускорить с 96 до 120 МГц теоретически возможно, но практически может оказаться неподъёмно. Ускорить на некратную частоту может оказаться еще тяжелее. Вот так странно выходит: времени вагон, а байтик прочитать некогда.
В любом случае это интересный аспект работы квазидиска, который оказался совершенно не учтен тестами:
Тест квазидиска http://sensi.org/scalar/ware/619/
Тест квазидиска http://sensi.org/scalar/ware/620/
Тест устройств http://sensi.org/scalar/ware/621/
Тест квазидиска «Дожж» http://sensi.org/scalar/ware/803/
Все говорят, что все прекрасно. Оно и понятно, в случае обычного DRAM такие проблемы просто не возникали.
А у тебя сколько в итоге вышло триггеров по входу сигналов?
Syntal, я не понял вопрос. Уточни-перефразируй?
Ты же сэмплируешь все входные сигналы, какова глубина сэмплируемой последовательности?
Syntal, так одним словом и не ответишь, к тому же боюсь соврать. Для RA/CA я держу 4 отсчета, то есть у меня 4 семпла ШАП держатся. Все стробирующие сигналы проходят через "антидребезг" с памятью на 8 отсчетов: если состояние было стабильное и изменилось, запоминается новое состояние и держится таким, пока не будет сочтено за новое стабильное. Простое семплирование, как обсуждалось несколько страниц назад, ни в каком виде не давало стабильного результата. Может быть я не все способы испробовал.
После того, как получаю низкий уровень на CAS, на следующий клок выдаю сигнал валидности декодированного адреса (вот это я подвинул вчера, чтобы было сразу: это дало положительный сдвиг, но не исправило всех бед). Это одно из условий формирования команды чтения SDRAM.
Поскольку CAS может обгонять ЧТЗУ, а может опаздывать, все это проходит через еще один автомат, который в зависимости от того, что пришло первым, ждет второго и выдает на выходе собственно команду чтения SDRAM.
Поскольку CAS может обгонять ЧТЗУ, а может опаздывать, все это проходит через еще один автомат, который в зависимости от того, что пришло первым, ждет второго и выдает на выходе собственно команду чтения SDRAM.
Можно чуть-чуть отыграть для варианта прихода cas раньше чтзу - в этом случае можно начинать обращение к сдраму, а когда придет чтзу или зпзу - переходить к соответствующей ветке.
Можно чуть-чуть отыграть для варианта прихода cas раньше чтзу - в этом случае можно начинать обращение к сдраму, а когда придет чтзу или зпзу - переходить к соответствующей ветке.
Любопытная идея. Только вот как быть в другом случае, когда CAS приходит позже — адрес никак не угадать. Ну и вообще сложно, особенно учитывая то, что речь идет о разных клоковых доменах.
К сожалению я не знаю, какие именно ситуации приводят к сходу с рельс. Наверное исходя из того, что mdos20 работает, а T-72 рассыпается, можно сделать какой-то вывод. Как обычно, добавление SignalTap-a все портит, так что на его данные я могу опираться только иногда и очень косвенно.
как быть в другом случае, когда CAS приходит позже — адрес никак не угадать.
Вобще-то если пришел чтзу, но cas еще нет тоже можно начинать читать. Часть адреса с ras, часть с шавв, остальное будет с cas, когда он придет. Тут я фактически повторяю старую идею, которую ты отверг, но вдруг теперь ты созрел.
Упомяну еще один (очевидный) вариант специально для mdos20. Теперь он не очень нужен, но пусть будет перечислен. Можно 16 Кб A000-DFFF из микродосной области (23h в 10h) держать в циклоне. fdd при этом, как я понимаю, не влезет, но mdos20 fdd и не нужен.
"Отверг", страсти-мордасти! Конечно я не хочу так делать, потому что есть большая разница между нормальным читаемым адресом и совершенно неперевариваемой кашей векторовских RA/CA. Моск же сводит от перетасовки бит с добавленной инверсией. Но если никаких других способов не останется, придется сделать так.
... Для RA/CA я держу 4 отсчета, то есть у меня 4 семпла ШАП держатся. Все стробирующие сигналы проходят через "антидребезг" с памятью на 8 отсчетов: если состояние было стабильное и изменилось, запоминается новое состояние и держится таким, пока не будет сочтено за новое стабильное. Простое семплирование, как обсуждалось несколько страниц назад, ни в каком виде не давало стабильного результата. Может быть я не все способы испробовал.
...
А нельзя в "защите от дребезга" учитывать предсказания вероятности появления RAS/CAS ?
Ну к примеру выявить, что ожидаемый сигнал может появляться только в определённом такте машинного цикла...
Я сейчас сам не знаю чего написал...
Но я о том, что может есть какая-то закономерность/зависимость появления ожидаемого сигнала, от фазы/цикла/такта или ещё чего, когда приход сигнала можно с большей вероятностью идентифицировать как "достоверный", а не ждать ещё "4 отсчета" - для уверенности...
KTSerg, они не для уверенности держатся 4 отсчета. Это просто выравнивание времени прихода сигналов. Например, CAS детектировали, знаем, что опоздали на клок, значит взяли значение ШАП 1 клок назад.
Предсказывать это вряд ли.
У меня неожиданно возник наивный вопрос. Слово состояния проца доступно на ШД, там есть и чт/зп и стек и обращение к памяти/портам. Зачем ждать сформированные в векторе управляющие сигналы, фактически все уже известно на этапе слова состояния, остается только адрес. Что я упускаю? С экзотикой, типа адаптера z80 такой финт не пройдет, но с ВМ80/ВМ1 же должен?
- - - Добавлено - - -
Ага, я упустил обращение к пзу, но думаю это можно пережить, по крайней мере для обращения адресностью к КД, там же адреса не пересекаются с пзу.
ivagor, ты повторяешь ход моих мыслей, когда я разводил первый вариант платы и решил что именно так, не буду разводить всю эту ерунду, потому что по стробу она вся и так уже есть, зато у меня будет куча дополнительных пинов. Меня остановило то же самое: что внутри часть этих сигналов еще дополнительно фильтруется и я не всегда знаю, как именно. Но сейчас ты очень кстати это вспомнил, может быть это и поможет.
Отдохнуть от мурни сутки (переключившись на гораздо более адовую мурню) и послушать советы зала помогло. Вырвав ЧТЗУ из слова состояния, получилось загрузить F51, а из него Black Ice. Сбылась мечта идиота - увидеть его на реале.
Надежность всего этого вызывает сомнение, но пересобирать без SignalTap-а сегодня уж точно не буду, чтобы не расстраиваться.
Кстати, может показаться (не знаю отчего), что данные должны устаканиться на шине до поднятия ЧТЗУ. Но на самом деле данные защелкиваются по Ф2 клока процессора в цикле DBIN, а поднятие ЧТЗУ процесс вообще ни на что уже не влияющий.
Очередные острожные промежуточные поздравления!
Возможно я и насчет адаптеров z80 погорячился и с ними такой подход тоже будет работать.
Просьба из зала - покажи фрагмент black ice или skynet (наверняка же его попробуешь) с реала.
Improver
08.08.2018, 09:27
Оказалось, что при выполнении кода непосредственно из кваза, временные интервалы на чтение имеют значительный разброс с отклонениями в короткую сторону и мой механизм доступа к SDRAM оказался слишком неповоротливым.Я извиняюсь за запоздалый вопрос, но хотелось бы узнать, по экспериментам, какая может быть максимальная задержка между получением сигналов CAS+ЧТЗУ и выдачей байта в ШД для нормальной работы квази-диска в mdos? В микро или наносекундах...
- - - Добавлено - - -
Кстати, по поводу сигнала ЧТЗУ... В реальном-железном квазидиске этот сигнал заведён только на ПЗУ РЕ3, и если расчехлить её содержимое, то можно заметить, что этот сигнал, точнее его отсутствие, используется только для подтверждения записи в память квази-диска. Т.е. запись осуществляется только при (^ЧТЗУ = 1)&(^WE = 0)&(^CAS = 0), а чтение из квази-диска осуществляется только по сигналу CAS.
Кстати, по поводу сигнала ЧТЗУ... В реальном-железном квазидиске этот сигнал заведён только на ПЗУ РЕ3, и если расчехлить её содержимое, то можно заметить, что этот сигнал, точнее его отсутствие, используется только для подтверждения записи в память квази-диска. Т.е. запись осуществляется только при (^ЧТЗУ = 1)&(^WE = 0)&(^CAS = 0), а чтение из квази-диска осуществляется только по сигналу CAS.
Вот. Это из того же все идет, что в обычном DRAM (ну и SRAM) чтение это просто действие по умолчанию и специальной команды не требует. Лучше бы вообще ЧТЗУ не выводили, только с толку сбивает.
какая может быть максимальная задержка между получением сигналов CAS+ЧТЗУ и выдачей байта в ШД для нормальной работы квази-диска в mdos? В микро или наносекундах...
При случае я посмотрю в SignalTap-е сколько проходит от CAS до данных на ШД. Доверять этим показаниям будет нельзя, но как верхняя оценка типа "даже так можно" сойдет.
Тогда же и фотки.
Improver
08.08.2018, 12:42
Вот. Это из того же все идет, что в обычном DRAM (ну и SRAM) чтение это просто действие по умолчанию и специальной команды не требует. Лучше бы вообще ЧТЗУ не выводили, только с толку сбивает.Может и так, но по какой-то неведомой причине в той же РЕ3 квази-диска отрабатываются ситуации, когда есть и сигнал на запись WE, и сигнал ЧТЗУ, и тогда приоритетным считается ЧТЗУ.
Хм... Заглянул ещё раз в прошивку РЕ3...
Таблица прошивки формирователя сигналов CAS, WE:
________________
00 08 10 18
________________
FC FA F6 FE
FE FE FE FE
7C 7A 76 6E
7E 7E 7E 7E
DC DA B6 AE
FE FE FE FE
FC FA F6 EE
FE FE FE FE
________________
По адресу 18h стоит значение 0FEh, а это значит, что при обращении к четвёртому банку памяти (11b) и при ЧТЗУ=0, WE=0, CAS=0 не будет производится ни запись, ни чтение... Это правильно, или там просто опечатка и по этому адресу должно быть значение 0EEh?
Могу только сказать, что никогда не видел до сих пор ЧТЗУ и ЗПЗУ вместе. Надеюсь, что так и будет дальше впредь.
Improver
08.08.2018, 13:40
Может и так, но по какой-то неведомой причине в той же РЕ3 квази-диска отрабатываются ситуации, когда есть и сигнал на запись WE, и сигнал ЧТЗУ, и тогда приоритетным считается ЧТЗУ.
Я извиняюсь -- не учёл ещё одну линию с РЕ3, ту, которая идёт на вход ВШ (DCE) микросхемок К589АП26. В случаях с ЧТЗУ=0 и WE=0, а также в случаях с ЧТЗУ=1 и WE=1, туда подаётся единица, т.е. шинные формирователи передают данные с ШД на микросхемы памяти, но записи нет, потому что при этом на память не подаётся сигнал WE. В этих ситуациях, значит, просто ничего не происходит -- ни чтения, ни записи. Собственно, и опечатка в прошивке РЕ3 ни на что не влияла.
А это никак не связано с регенерацией?
Improver
08.08.2018, 14:42
А это никак не связано с регенерацией?Не исключено...
Экранка Black Ice из зала:
https://www.youtube.com/watch?v=W2zLHMI4CNU
- - - Updated - - -
Экранка SkyNet:
https://www.youtube.com/watch?v=fSsIv-jgzFk
Загрузка частей тормозит. Это мой дисковод печатает дебаг инфо за кадром.
svofski, спасибо за кино! Шадки качают, это радует.
Пара вопросов по black ice.
1. "Какого цвета платье". Цвет букв в районе 1:10, когда YES HYPER JUMP видится мне как бело-голубой. В эмуляторах желто-зеленый. Это такие жесткие особенности цветопередачи связки монитор+камера(или телефон или не знаю)? Еще цвет летящих на зрителя точек сначала должен быть желто-красный (потом, с тех же 1:10 - белый), но толком рассмотреть окраску точек на записи с реала затруднительно, это я даже не докапываюсь, просто не могу разглядеть.
2. В районе 0:35-0:36 по экрану пробегает нечто вроде "помехи" - это именно помеха в тот момент, или повторяющаяся особенность?
"Какого цвета платье"
Все цвета обычные, ничего странного в них нет. Проблема в съемке.
В районе 0:35-0:36 по экрану пробегает нечто вроде "помехи" - это именно помеха в тот момент, или повторяющаяся особенность?
Не, это просто разбег кадровой монитора и камеры. Я вообще удивлен, что это фактически видно только в одном месте, нету никаких полос итд.
Из артефактов, присущих реалу. Если присмотреться, есть иногда какие-то едва заметные сдергивания, как будто запись в экран разбегается с лучом, где-то в районе презентации всеми любимой фотографии. Ну и теплые ламповые пульсации геометрии всей картинки в целом в зависимости от содержимого экрана. Кроме того известные вертикальные полосы записи в РУ2 в Black Ice, но на них специально показывать никому уже не надо, они просто есть.
А так вообще объективно ничего удивительного я не увидел. Просто приятное ощущение от того, что вот оригинальное железо и на нем такие крутые штуки вытворяли.
Настроить камеру так, чтобы по всем параметрам получилось сделать видео с экрана так, как оно видится мне, причем при всех вариантах мерцаний, преобладания яркого фона и темного фона итд для меня задача оказалась непростой. Может быть надо снимать в дневное время, когда общее освещение яркое и без выраженных бликов, тогда проще достичь какого-то разумного баланса. Из курьезов: пришлось нарочно расфокусировать объектив, чтобы муар был не такой страшный. И все равно в SkyNet получилось плохо. Кроме того мой фотоаппарат не умеет плоский профиль, так что на коррекцию в постобработке нельзя рассчитывать. В общем делать экранки это какая-то пока для меня неизведанная наука ;)
Надо приделывать хоть какой-то плохонький интерфейс пользователя. А то сейчас мне чтобы сменить дискету надо обновлять прошивку.
Из сегодняшних ужасов. Вот это работает 100%, выдерживает даже пересборку с нуля без сигналтапа:
always @* begin: _cpu_datain
casez(di_select)
6'b1?????: cpu_di <= boot_vec; // boot vector
6'b?????1: cpu_di <= sdram_do; // do not move this line
6'b010000: cpu_di <= lowmem_do;
6'b001000: cpu_di <= bufmem_do;
6'b000100: cpu_di <= ram_do;
6'b000010: cpu_di <= display_idata;
default: cpu_di <= ioports_do;
endcase
end
Вот это нет:
always @* begin: _cpu_datain
casez(di_select)
6'b1?????: cpu_di <= boot_vec; // boot vector
6'b010000: cpu_di <= lowmem_do;
6'b001000: cpu_di <= bufmem_do;
6'b000100: cpu_di <= ram_do;
6'b000010: cpu_di <= display_idata;
6'b?????1: cpu_di <= sdram_do; // fml im ded x_x
default: cpu_di <= ioports_do;
endcase
end
- - - Updated - - -
Да, важный момент, я немного несправедлив к Квартусу, потому что это приоритетный шифратор. То есть по учебнику casez специально для этого предназначен, а я его заставляю работать. sdram_do имеет приоритет над остальными выборками (почему - отдельная история, сейчас неважно). А раз приоритет, будь добр подвинуть строчкой повыше!
Вот это нет:
always @* begin: _cpu_datain
casez(di_select)
6'b1?????: cpu_di <= boot_vec; // boot vector
6'b010000: cpu_di <= lowmem_do;
6'b001000: cpu_di <= bufmem_do;
6'b000100: cpu_di <= ram_do;
6'b000010: cpu_di <= display_idata;
6'b?????1: cpu_di <= sdram_do; // fml im ded x_x
default: cpu_di <= ioports_do;
endcase
end
Какой-то неправильный шифратор. Что у тебя выбирается при 6'b1хххх1? Почему последняя строка не 6'b000001? Почему после еденицы нолики, а не вопросы (в средних строках)?
b2m, приятно, когда твой код читают, даже если за него приходится краснеть.
Эта конструкция транслируется в приоритетный шифратор. В случае, когда есть неоднозначность, приоритет у того, что написано выше. При 6'b1xxxx1 выберется boot_vec. Последняя строка в процитированном тобой фрагменте срабатывает только если 6'b000001, а в случае например 6'b000101 перекидывается на ram_do.
Такая ситуация вообще не должна возникать. А почему вообще так получилось: селекторы обязаны быть (и были раньше) one-hot. Но ядро 6502, которое я использую, при чтении выдает следующий PC на шину адреса на следующем клоке независимо от RDY. От этого мой старый механизм простого выделения селекторов перекосило, и ван-хотом он быть временно перестал. А это хака, чтобы посмотреть как работает чтение-запись в принципе. Ее обязательно надо изжить, но не правя этот шифратор, а переделав селекторы.
а в случае например 6'b000101 перекидывается на ram_do.
Фигушки. ram_do выбирается лишь в одном варианте 6'b000100, конкретно этот вариант попадает лишь под маску 6'b?????1.
Вопросы генерируют множество вариантов, где вместо вопросов либо нули, либо еденицы. На мой взгляд, это лишь сокращённая запись.
Но в одном ты прав - casez может иметь несколько совпадений (если они были сгенерированы вопросами) и в конечном итоге будет действовать тот, что стоит выше.
- - - Добавлено - - -
Проблема там скорее всего в наличии строчки default, которую можно считать вариантом 6'b??????, стоящим на последнем месте.
- - - Добавлено - - -
А может и не на последнем, а вообще случайном. Кто этот кактус знает...
Фигушки. ram_do выбирается лишь в одном варианте 6'b000100, конкретно этот вариант попадает лишь под маску 6'b?????1.
Здравый смысл с тобой согласен. У меня же результат менялся от сборки к сборке. Уверен, что выборка приходилась на ram_do, хотя повторить это уже не захочу. Вывод тем не менее простой: не надо делать такие шифраторы вообще. Раньше по-моему Квартус выдавал хотя бы предупреждения какие-то на этот счет. Сейчас ему тихо сводит моск, а ты сиди и гадай, где слажал.
Здравый смысл с тобой согласен. У меня же результат менялся от сборки к сборке. Уверен, что выборка приходилась на ram_do, хотя повторить это уже не захочу. Вывод тем не менее простой: не надо делать такие шифраторы вообще. Раньше по-моему Квартус выдавал хотя бы предупреждения какие-то на этот счет. Сейчас ему тихо сводит моск, а ты сиди и гадай, где слажал.
Скорее всего в этом виноваты глитчи схемы ;)
То есть какая-то часть в этой сборке отработала быстрее и выдала вектор, а в другой сборке - уже другая.
Входные сигналы на шифратор подай через регистр - и скорее всего проблема исчезнет. Ну и с фронтами поиграться стоит - я у себя сделал тактирование счётчика по положительному фронту, а занесение данных со счётчиков в регистр - по отрицательному. Без регистров была гонка состояний (т.е. "глитч") и работала только каждая третья-четвёртая сборка. Сейчас всё работает стабильно.
andreil, а это в эмуляторе дисковода, где все синхронное. На словах трудно объяснить ситуацию, но результат такой, что селекторы приходят "внахлест". А должны быть строго один из нескольких. Тут нет мистики, это просто особенность конкретного ядра 6502 и того, как я его без учета этой особенности подключил.
Sergei Frolov
17.08.2018, 15:32
Надо будет на докладик сходить.
https://2018.chaosconstructions.ru/events/conf
Всех приглашаю =)
15 часов в воскресенье 26-го, если ничего не изменится. Меня разместили в зал, где преобладает плохо коррелирующая с моим докладом тематика, но это должно быть не страшно.
Всех приглашаю =)
15 часов в воскресенье 26-го, если ничего не изменится. Меня разместили в зал, где преобладает плохо коррелирующая с моим докладом тематика, но это должно быть не страшно.
А видеозапись доклада будет?
Хорошо бы со звуком :)
Я из любопытства нашел запись 2016 (?) года, где я рассказывал про эмуляцию. Несмотря на то, что там вроде бы даже был петличный микрофон, звук как в адском позднелинчевском бреду, а видео как в раннем. Видимо как и в 2017 с Трилобайтами: микшерский пульт, все серьезно, но запись звука с телефона, который стоял на мониторе. Так что на запись от ЦЦ я бы особо не рассчитывал. А тебя вообще я надеялся видеть в чирлидерах.
Я возьму рекордер с собой, но не поставлю в него батарейку, чтобы было как с лекцией в Лермонтовке.
- - - Добавлено - - -
О да, бтв, прошлой ночью впервые у меня получилось выбрать образ дискеты через веб-интерфейс. Загадывать не буду, но может быть даже вживую это удастся показать.
Не жалко EIZO? Крякнет потом будет трудно найти. Может ЖК-шку для экспериментов?
Ратмир, у одного моего друга в детстве у бабушки был цветной телевизор. Его нельзя было включать потому что может сломаться. В общем бабушки давно нет, телевизоры сменили поколения, а тот телевизор так никто и не посмотрел.
Видео с СC пока нет (экшн-камера не выдержала дружеской беседы tnt23 с идолопоклонником от Альтиума (https://www.youtube.com/watch?v=SD0KaAjI0h4), а диктофон оказался хоть и не такой нежный, но все же кончился местом на середине моего рассказа. Был добрый человек, который меня снимал, так что есть надежда, что не все пропало). В общем Шадки научились делать за последнее время вот что:
* Дисковод работает на чтение (запись не проверял)
* Веб интерфейс позволяет выбирать образ дискеты с SD карты
* Вместо того, чтобы цифровать труъ ви53, я просто перехватываю запись в порты и исполняю музыку софтовым ВИ53. Хака, конечно, не нужно лишнего провода.
* Не требуется замена ПЗУ
Мысль про последний пункт совершенно случайно забрела мне в голову. Я не хотел курочить Вектор за день до ЦЦ, а теперь это моя любимая фича Шадков. При нажатии БЛК+ВВОД ПЗУ загрузчика загружается с SD-карты в SDRAM. После чего Шадки нагло отгрызают себе доступ "как ОЗУ", точнее сказать "как ПЗУ" с нулевого адреса. После нажатия БЛК+СБР запускается подменный 2-килобайтный загрузчик. Он работает как ему положено и загружается с дискеты. После двух смыргиваний РУС-ЛАТ Шадковый загрузчик отключается, и все запускается. Надо только теперь сделать так, чтобы подмена случалась по БЛК+ВВОДу, а не после БЛК+СБР, тогда вообще будет не отличить от труъ раскуроченного ПЗУ.
Качество всего этого слегка ужасное, все собрано в стиле настоящего выставочного прототипа. Но как доказательство возможности хотелок по-моему уже неплохо.
а 6502 здесь чем занят?
так недолго и до эмуляции аппле на векторе дойти
На 6502 сделан контроллер, который работает с файловой системой на SD-карте, разговаривает с ESP8266, иными словами выполняет высокоуровневые функции периферии. Apple тут ни при чем.
svofski, я до сих пор пребываю в шоке от неинвазивной подмены ПЗУ.
crackintosh
28.08.2018, 21:48
Последний пункт это шекарное решение! Аплодируем стоя!
6502 сопроцессор ввода-вывода для Вектора
явшоки !
Ну, главное не оставить зрителя равнодушным.
Ну, главное не оставить зрителя равнодушным.
Вячеслав, а можно фото вашей платки в хорошем качестве для того чтобы поближе разглядеть? Человечка хочу поближе увидеть )
dbk, первая фотка в альбоме: https://photos.app.goo.gl/3iWdohm7xXP3ross8
Видео с СC пока нет (экшн-камера не выдержала дружеской беседы tnt23 с идолопоклонником от Альтиума (https://www.youtube.com/watch?v=SD0KaAjI0h4)
Хахаха. Послушал "перепалку" )))) Что-то мне "идолопоклонник от Альтиума" своими "...мы не метим файлы... и т.д." напомнил драгдиллера дающего первую дозу бесплатно ))))
Спасибо за фото.
Значит возможен "не слишком сложный" вариант сменного загрузчика, посаженного на шину "ВУ"... это полезная нифа...
Daniil Chislov 86
29.08.2018, 14:47
Мой вопрос прозвучит странно и даже глупо (так как я знаю для чего этот контроллер), но все же я его задам.
Можно эту плату сделать универсальной ,для разных Шелезяк ?
Daniil Chislov 86, если выкинуть из головы Вектор-06ц и его разъем, то это просто плата с Cyclone IV, буферами для сопряжения с 5В логикой и микроконтроллером с WiFi. В мои планы универсальность не входила, но я буду только рад, если на основе Шадков получится сделать что-то для более широкого применения.
Daniil Chislov 86, если выкинуть из головы Вектор-06ц и его разъем, то это просто плата с Cyclone IV, буферами для сопряжения с 5В логикой и микроконтроллером с WiFi. В мои планы универсальность не входила, но я буду только рад, если на основе Шадков получится сделать что-то для более широкого применения.
AMIGA!!11
Daniil Chislov 86
29.08.2018, 23:02
Немного не в тему,но все же. Остаётся перевести на английский и отправить этим ребятам (https://hackaday.com) хотя кто я такой чтобы советовать.
Вообщем я за проект !
а вот ежель до лешадка дотянуть разьем процессора от вектора, то вполне и z80 зарабоиает с эмулятором спектрума -)
Malheureusement, leurs ailes étaient ridiculement minuscules... Если кто-то на все это найдет время, будет прекрасно. Я надеюсь все-таки допилить свой скромный набор фич до удобного и стабильного состояния. Из исправного состояния проще ломать и переделывать.
Сейчас у меня вагон только софтовых проблем, решенных откровенными затычками в стиле ардуино-хакадея, просто чтобы была возможность похвастаться:
* весь обмен по SPI между SoC и ESP8266 сейчас - это жалкая попытка засинхронихировать рассинхронизацию того, что в принципе рассинхронизироваться не должно. Работает, но спотыкаясь, и передать таким образом целиком образ диска будет очень мучительно. ESP8266 предполагает использование некоего регистра статуса SPI-slave-a, однако попытки его использовать приводят к полному развалу вообще всего. Забавно, что интернеты полны копипасты про регистр статуса, но нигде нет подтверждения того, что это вообще хоть как-то работает. Собственно даже то, что работает согласно различным форумам, тоже, как оказывается, работает только при условии определенных ограничений: одно дело передать несколько байт иногда, совсем другое — слать длинный поток. Я даже думаю, что для передачи образов дискет есть смысл отказаться от обычной семантики SPI и дать ESP8266 побыть мастером на время передачи.
* SoC по большей части копипаста из vector06cc, ей не хватает многих часов доработок для поддержки нескольких дисководов, для загрузки образов квазидиска, дискет в SDRAM итд
* подмена загрузчика тоже основана на хитрости и задержечке тут и там, а ничто не мешает сделать надежно
* элементарная юзабилити типа настройки вайфая итд. Для ЦЦ у меня жестко зашит был хотспот в телефоне, в жизни это не очень удобно. Настройка вайфая из libesphttpd безбожно кривая, надо приделывать нормальную.
Это я скорее для себя записываю, чтобы проще было вспоминать с чего продолжать. Все это труды тривиальные, но требующие времени.
zx_, как раз к следующему цц ;)
Sergei Frolov
04.09.2018, 19:44
https://vk.com/video147509999_170088205
Лешадок XT ISA-8 !
Уже спортировал?
Это заказ. :)
Мне лень паять многоногий чип (это же не сдувать) так что взял готовую DE0-Nano.
Надо ее для начала приделать к ISA-8 через шинные формирователи.
(Но у DE0-Nano есть конфиг-ПЗУ так что все равно сильно переделывать и отвалится функционал программирования из ESP)
AlecV, на самом деле разницы между сдуванием и паянием многоногих чипов просто нет. Но с готовой платой конечно проще.
Наличие конфигурационной флешки не отменяет весь функционал ESP. Просто у ESP одной заботой меньше.
CodeMaster
05.09.2018, 07:56
разницы между сдуванием и паянием многоногих чипов просто нет.
Если руки дрожат есть ;-) Если чип при плавлении припоя сразу не сел на место, то поправить очень сложно. Со сдуванием этих проблем есно нет.
Есть изменения на фронте подмены штатного ПЗУ?
Удалось-ли осуществить "не заметную" подмену?
Интересно, есть ли возможность реализовать такую фишку простыми средствами, на рассыпухе и простой ПЗУ? Чтобы была возможность менять Загрузчик без замены штатной ПЗУ и/или вскрытия Вектора.
KTSerg, с последнего апдейта я сделал джойстики (на нестандартных портах, спасибо ivagor-у за патчи) и начал делать поддержку загрузки отдельных ROM-ов. Потому что утомляет делать образ дискеты каждый раз, когда хочешь загрузить свежий ром.
Подмена ПЗУ с моей точки зрения и так уже вполне себе незаметная. Там есть, что улучшить, но это скорее детали реализации.
Сейчас в работе над Шадками перерыв, рабочее место занято чем-то еще.
... сделал джойстики (на нестандартных портах,...
"Не стандартных" - для кого/чего ?
... начал делать поддержку загрузки отдельных ROM-ов. ...
А разве этот механизм не реализован для Загрузчика ? Достаточно подсунуть нужное имя файла. Или там всё на много страшнее?
"Не стандартных" - для кого/чего ?
Джойстики всех систем находятся на портах ниже $10, а их не перехватить на чтение c ВУ. Устройства на этих портах напрямую висят на шине процессора и их не отключишь через БЛК. Поэтому мой джойстик на порту $2e/2f вместо обычного $e/$f. Это не очень красиво, но я пока лучше решения не вижу. Патченье игрушек задача тривиальная и для известных ромов будет выполняться на ходу.
А разве этот механизм не реализован для Загрузчика ? Достаточно подсунуть нужное имя файла. Или там всё на много страшнее?
Сейчас у меня поддержана только загрузка с образа дискеты. Чтобы сделать загрузку индивидуального рома, требуется сразу много вещей. На самом поверхностном уровне это примерно такие задачи:
* интерфейс загрузки и выбора рома на сд-карте, аналогичный выбору дискеты
* собственно загрузка рома куда-то, где загрузчик его найдет. Проще всего наверное сделать фальшивую дискету.
Просто подпихнуть ром с игрушкой вместо рома загрузчика -- это возможно в порядке хаки, но это не очень-то красиво и практически никак не упростит задачу.
... Просто подпихнуть ром с игрушкой вместо рома загрузчика -- это возможно в порядке хаки, но это не очень-то красиво и практически никак не упростит задачу.
Да, решение получится не очень универсальное...
crackintosh
25.09.2018, 14:16
Поэтому мой джойстик на порту $2e/2f вместо обычного $e/$f. Это не очень красиво, но я пока лучше решения не вижу
Ыыыы... это не удачный выбор решения проблемы. Посмотрите как это сделано в Кишиневском Вектор Ц06.02.
Может это подскажет более удачное решение этой проблемы.
Ыыыы... это не удачный выбор решения проблемы. Посмотрите как это сделано в Кишиневском Вектор Ц06.02.
Может это подскажет более удачное решение этой проблемы.
Так а что там сделано? Я вижу, что там D55,D60 смотрят выходами прямо в шину данных процессора. Как я могу такое изобразить, сидя на ВУ?
Ыыыы... это не удачный выбор решения проблемы. Посмотрите как это сделано в Кишиневском Вектор Ц06.02.
Может это подскажет более удачное решение этой проблемы.
Это схемное решение Вектора 06Ц. Там при чтении из портов с адресом ниже 10h шина данных отключается от ВУ. И к процессору остаются подключенными только ВИ53 и два ВВ55-ых.
- - - Добавлено - - -
...сделал джойстики (на нестандартных портах, спасибо ivagor-у за патчи)...
Вот интересно, что за анализ кода делается, для того чтобы принять решение, на изменение номера порта в коде программы?
Не думаю, что достаточно поиска "in 0Fh" или "in 0Eh". Ведь аналогичная последовательность HEX-кодов может встретиться в картинках, и хорошо если они не сжаты в scr, тогда при распаковке получим полный бардак...
Не думаю, что достаточно поиска "in 0Fh" или "in 0Eh".
Конечно надо смотреть в отладчике, что там за in 0f/oe. Но задача значительно упрощается тем, что поддержка джойстика-с (и -п) в подавляющем большинстве игрушек сделана единообразно.
KTSerg, вручную разумеется.
Есть еще способ. Вынюхать инструкции in можно, слушая шину. А потом, зная где они, подмахивать коды порта. Это технически выполнимо, интересно, но чуть чуть лихо для столь молодого проекта.
... Подмена ПЗУ с моей точки зрения и так уже вполне себе незаметная. Там есть, что улучшить, но это скорее детали реализации. ...
Глянул схемы Вектора. Схемное решение, судя по всему, не позволяет отключить штатное ПЗУ используя внешний сигнал БЛК (с разъёма "ВУ").
Облом-с.
Действительно, только если на шине "ВУ" отслеживать последовательное нажатие ВВОД и СБРОС, а потом блокировать ОЗУ и подменять его внешней памятью, где сидит подставной загрузчик. Но загрузчику нужно уметь закончить свою работу и отключить подмену памяти... тут любой существующий загрузчик не подойдёт...
На ВУ выведены ВВОД СИСТЕМЫ и СБРОС СИСТЕМЫ, так что теоретически их можно вдавить.
Я начинаю подозревать, что видео с ЦЦ может не вылезти на поверхность в ближайшем будущем. В этом нет ничего страшного, потому что есть слайды (https://docs.google.com/presentation/d/e/2PACX-1vSRl8kWX7k0_eeSe5O1vMOXV2BOZlelKLumcoxg0IZE16lAd_ uDoeFn5_czE9sBZnvJ0GnkZpe7Zckx/embed?start=false&loop=false&delayms=3000), в которых и так все написано. Не хватает только мотовила (https://youtu.be/MTVmrIUGTQI?t=2m38s) дискуссии с залом и атмосферы праздника.
Джойстики всех систем находятся на портах ниже $10, а их не перехватить на чтение c ВУ. Устройства на этих портах напрямую висят на шине процессора и их не отключишь через БЛК. Поэтому мой джойстик на порту $2e/2f вместо обычного $e/$f. Это не очень красиво, но я пока лучше решения не вижу. ...
Только сейчас пришла в голову "крамольная мысля"...
В "штатном" загрузчике есть загрузка с "внешней ПЗУ" висящей на адресах F0h-F3h ... Значит эти адреса были "зарезервированы" для ВВ55 посаженной на шину "ВУ" ...
Что мешает перевесить джойстик с "ПУ" на "ВУ" ? (не беря во внимание необходимость замены номеров портов в софте)...
KTSerg, так у меня сейчас вот так и сделано. На ВУ на портах 2e,2f.
svofski, ты же кроме ВУшных 0E,0F->2E,2F еще и ПУшные джойстики тоже переводил 07->27, или это было только в промежуточной версии, а потом убрал?
ivagor, УСПИД на 27 есть, да.
KTSerg, так у меня сейчас вот так и сделано. На ВУ на портах 2e,2f.
Я имел в виду вероятность того что F0-F3 - "штатный" ВВ55 сидящий на "ВУ", соответственно и джойстик вполне может быть "официально" перевешан на эти порты... а не на 2e,2f.
А возможно и не только джойстик, но и другое железо, штатно подключаемое к "ПУ".
KTSerg, я похоже не улавливаю ход мысли. Какая разница, где был гипотетический ВВ55, которого никто никогда не видел?
Выскажу очевидную вещь, что с этой штукой все определяется наличием софта. Под странный ВВ55 на F0-F3 есть загрузчик, под джойстики 27/2E/2F теперь тоже есть некоторое количество новопередельного софта, а вот классического софта с поддержкой джойстиков выше 10h я не видел, интересно было бы посмотреть.
Можно приделать странный ВВ55 на F0-F3, правда я пока слишком плохо представляю, что именно этот загрузчик загружал. Речь идет о 512-байтовом заводском загрузчике?
Речь о хитром загрузчике (http://zx-pk.ru/threads/28939-syurpriz-v-zavodskom-zagruzchike.html), который нашел в одном своем векторе KTSerg.
Daniil Chislov 86
08.02.2019, 08:30
svofski, а видео с Chaos Constructions 2018 с вашей лекцией на эту тему вам прислали уже ?
Daniil Chislov 86, я лично уже ответа не жду. Cледующую лекцию попробую записать на камеру с заряженной батарейкой и вставленной sd-картой ;)
я лично уже ответа не жду
А зря!
https://www.youtube.com/watch?v=YXY-hn4DQ84
https://vk.com/wall-190875464_32
Огромное спасибо Серёже Тряпше за видео! Вот кто умеет заряжать батарейки в камере и вставлять в нее SD-карты.
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot