Может быть вместо шинников надо было применить регистры-защелки с буферными элементами? Думаю, это успокоило бы шину.
Вид для печати
Сергей, ты бы свой сайт снова застолбил, а то:
Цитата:
Не получается. Пишет:
"Имя занято, укажите другое или выберите одно из предложенных
orion-z1, orion-z2, orion-z5, orion-z777, orion-z-orion-z, best-orion-z, orion-z-best"
Орион-Зе-Бест порадовало. :)
Вот они, бесплатные сайты. :mad: В-общем, попробую разобраться, а пока можно заходить через orion-z.mylivepage.ru.
Кстати, ссылка вида http://orion-z.hoter.ru/ (без www) нормально отрабатывает - редиректит с hoter.ru на mylivepage.ru
Переходи на "народ". Только там конструктор весьма никакой, ручками надо делать...
---------- Post added at 16:28 ---------- Previous post was at 16:26 ----------
Ты откуда их берёшь???
Народ покупает ПентЭвы с еще более "кривым" FPS 48, и у всех работает :)
Все ретро-поделки с ВГА работают на 50гц, тебе нужно призадуматься о покупке какого-нибудь LCD Acer 15-17" за 500 рублёф. Они работают.
Пожалуй, что да. :)
И шаблоны есть готовые. Надо будет попробовать.
Сейчас с работой поотпустит - займусь миграцией.
---------- Post added at 19:27 ---------- Previous post was at 19:25 ----------
Не столько страшно ручками, сколько корпоративный фильтр. Почему-то на нашем корпоративный прокси закрыта добрая половина "народа".
Где это такие цены за LCD?
Потестировал сегодня ПЗУшки.
ПЗУ 3.3 вольт - работает замечательно, разумеется.
ПЗУ 5-вольтовое, питание 3.3 вольт - как ни странно, прекрасно работает :)
ПЗУ 5-вольтовое, питание 5 вольт - Орион по прежнему работает. Перегрузки не замечено, циклон холодный. Вообщето так и должно быть, циклоны 5в-толерантны, я больше переживал за "помехи" на шине данных. Однако всё нормально.
Собственно, это уже больше к Сергею.
Алгоритм применительно к Z-80 и флешь-ПЗУ уже давно описал Пера Путник. Нужно всего лишь адаптировать его программу для нашего железа.
Прошивание на ПЗУ можно сделать например так:
1. Устанавливаем нужную страницу РОМ-диска кнопкой "ROM_page" F9.
2. Записываем в порт 4F значение с установленным старшим (например) битом.
3. Записываем в порты F501 и F502 адрес.
4. Читаем очередной байт из ОЗУ.
5. Записываем байт по адресу F500. При этом ROM_WE<='0' when csf5='1' and wr_n='0' and p4F(7)='1' else '1'; грубо говоря.
6. Отправили 128 байт в ПЗУ? Если нет, то пункт 3.
7. Пауза 10мс.
8. Пункт 3.
Сергей выкладывал здесь.
Алексей, ты отправлял посылку первым классом или "оленями+вертолёт"? :)
Посмотри по ПИН-коду, где она застряла.
23.06.2010 СПб почтамт цех 11. Сортировка.
Должно уже приехать...
Евгений!
Я хочу вернуться к ранее поднятому вопросу: http://zx.pk.ru/showpost.php?p=294133&postcount=255. Только не в плане программной, а аппаратной реализации. В настоящий момент не опубликованы четкие времянки (а не картинки для общего понимания) работы шины нового Ориона, которые бы позволили самому посчитать и прикинуть, как повесить на шину интерфейс для программирования флешек РОМ-диска.
Ну, не покупать же флешер, чтобы перепрошить РОМ-диск?
Вот здесь, с пеной у рта, я поднимал эту проблему:
http://zx.pk.ru/showpost.php?p=286207&postcount=156
http://zx.pk.ru/showpost.php?p=286307&postcount=158
Вот здесь предлагались различные решения:
http://zx.pk.ru/showpost.php?p=286310&postcount=159
http://zx.pk.ru/showpost.php?p=287420&postcount=178
http://zx.pk.ru/showpost.php?p=287483&postcount=184
Но, в итоге получается, что реальной технической возможности, кроме флешера в настоящий момент, нет на Орионе - хотя столько об этом говорили? Или есть варианты?
Что предложишь, т.Главный Конструктор!
Не вытерпел, залез в Квартус и родил очередную версию :)
Версия 1.07:
- добавлен режим "выключения" видеогенератора при F8 равном 2 или 3.
- добавлен бит 7 в порт 4F. "1" дает сигнал "запись" (ROM_WE='0') на флешьПЗУ при записи в F500. "0" соответственно не разрешает запись (всегда ROM_WE='1').
- Порт F766(4E). При нажатии на клавиатуре кнопки дает сканкод (как и раньше). Но, при отпускании кнопки также дает сканкод с установленной "1" в старшем разряде (метод Error404 :) ). Прерывания вызываются как при нажатии, так и при отпускании кнопок. СДЕЛАЙТЕ УЖЕ ТЕСТИЛКУ ЧТОЛИ! Наугад работаю...
В аттаче файлик .jic новой версии. Мониторы 34 и 35. Извините, кому не угодил :)
П.С. Запись в F500 (при включенном бите 7 в 4F) выствит на шину адреса содержимое F502 & F501, на шину данных пойдут данные с процессора, сигнал ROM_WE сработает по сигналу WR процессора.
Правильно ли я понял алгоритм записи в ROM_Flash?
- ставим перемычке JP2!
- выключаем видеосинхронизатор: F800 (F8H) D1=1
- записываем мл.байт адреса в F501 (29Н)
- записываем ст.байт адреса в F502 (2АН)
- включаем бит 7 в 4F, т.е. D7=1
- записываем байт данных в F500 (28Н)
- выключаем бит 7 в 4F, т.е. D7=0
- готовим след.адрес и т.д.
Скажу сразу - это примитивный "метод"! Мало того, что он аппаратно сложнее в реализации (но, это уже проблемы Евгения!), так еще и не позволяет использовать клавиши E0+X. Я против этого "метода", и настаиваю на создании второго порта, где будет записываться один из трех вариантов: 00, E0, F0. Пусть это будет (если жалко "вентелей") не полноразмерный (8 бит) порт, а только 4 бита в младшей тетраде, где записывается старшая тетрада принятого байта. Тогда сдвижкой вправо через перенос легко проверить, это - E или F, а нулевое значение - и того проще. Думаю, так будет правильно!
Точнее, D2='0', D1='1'. Проще всего просто записать 2 в порт F800.
не надо. Сигнал ROM_WE будет "дергаться" только при "00" на младших адресах шины. Т.е. запись в F501-02 не приведет к ложному срабатыванию.
Остальное - правильно.
не забываем, что запись во флеши делается блочно по 128 байт, затем небольшой перерыв (чтобы флеша успела переписать данные из своего буфера на матрицу памяти).
Я сделал то, что аппаратно вообще почти не потребовало усилий. Два байта - это сложней сделать. Поэтому - не сейчас.
Не понял. Что это значит - "дергаться"?
Как я понял, включив D7(4Fh)=1, не выключаем до полного завершения прог.флешки, делая небольшие задержки после 128 байт? Т.е. пихаем по очереди байты в F501, F502 и F500 и так в цикле 128 +дальше!
Что же здесь сложного - добавить еще восемь разрядов + выпустить на шину? Зато это полноценное решение, а не какие-то извращения.
P.S. После записи байта, содержимое портов F501, F502 сохраняется, или надо обновлять постоянно? Я имею ввиду старший байт в F502 ?
переключаться по сигналу WR процессора
Да, верно.
Я не вижу сложностей в запуске табуретки в космос. Поскольку не представляю как это делается :)
Я использую готовый альтеровский + самодельный контроллеры, которые в куче не предназначены для выдачи произвольного числа байтов, а только одного. Для выделения префиксов как раз и требуются пляски с бубном.
Нет, регистры там хранят данные до выключения питания или перезаписи.
---------- Post added at 21:17 ---------- Previous post was at 20:27 ----------
Как я буду делать второй байт - идеи есть. Тем паче, что это полностью стыкуется с моим стремлением полноценно задействовать всю клавиатуру (сейчас цифровое поле не интерпретируется как цифры).
Буду отслеживать последовательность поступивших сканкодов в стейт-машине и ставить "флаги", на выходе это даст последний сканкод + флаги префиксов, на основе которых станет доступна почти вся клавиатура. Это дает возможность также передать в драйвер непосредственно сами префиксы (или просто биты состояния). Не очень представляю пока, в какой порт выдавать префикс. Для PS/2 мы используем F766 (4E). Но следующий порт F767 (4F) уже занят портом конфигурации.
Извини, не правильно поставил акцент. Я не понял: "только при "00" на младших адресах шины". Как ROM_WE связан со значением "00" в мл.адресах?
Как я понял, "твой" нынешний контроллер принимает два байта по очереди. Получив в первом байте F0 (и проанализировав, что это именно F0!), ты запоминаешь где-то "1" и затем получив второй байт - принудительно устанавливаешь D7=1. Тогда что мешает переписать весь первый байт в какой-то дополнительный регистр без какого-либо анализа, а не устраивать проверку одного его разряд? А уже затем, этот дополнительный регистр выпустить на шину с другим адресом.
П.С. Когда нас покидаешь, и уже к тебе можно не адресоваться на форуме?
---------- Post added at 21:31 ---------- Previous post was at 21:21 ----------
Ты немного опередил меня с ответом.
У нас пока не утверждены ни какие "стандарты". Можешь лопатить как хочешь и переделать все адреса портов по своему усмотрению.
Просто команда LD (F500),A запишет содержимое А в ячейку ОЗУ с адресом F500.
Но если мы включим бит 7 порта 4F, то по приведенной выше команде события пойдут по другому - данные с процессора также пойдут на внешнюю шину данных (на которой висят и ОЗУ и ПЗУ), но одновременно состояние сигнала WR процессора будет передано на вход WE флеш-ПЗУ (а не WE ОЗУ). Учитывая, что при выборе адресного пространства F500-F502 на шину адреса поступают не адреса с процессора, а адреса из регистров pF502 & pF501, получаем "законченную картину". На адресные входы ПЗУ идут заранее записанные адреса из регистров РОМдиска, на входы данных идут непосредственно данные с процессора, сигнал OE='1' (поскольку мы не читаем, а пишем), на вход WE идет сигнал процессора WR. Байтик записан. Далее спокойно обновляем адрес в порту pF501 (на шине адреса процессора младшие разряды ="01") или в pF502 ( ="10" соответственно). Поскольку это не "00", то эти данные запишутся только в порты, на входе WE ПЗУ будет висеть "1".
Нет. Он принимает ВСЕ байты последовательно (до 6 байт). Но специальный "механизм" - statemachine - отслеживает всю цепочку кодов с целью пропустить все "лишние" коды и выдать в результате один-единственный последний сканкод. при этом стейт-машина отслеживает префикс F0 перед последним сканкодом, и в соответствии с ним "замыкает" или "размыкает" сигналы на матрице, имитирующей реальную РК-клавиатуру. Такая технология позволяет иметь до шести одновременно нажатых кнопок.
Естесственно, чтобы выдать в порт PS2 данные с установленным или сброшенным старшим битом, мне достаточно просто "добавить один проводок" от флага нажатия/отпускания до старшего разряда данных сканкода.
До вечера понедельника я буду торчать на форуме. С вечера вторника буду заглядывать в свой почтовый ящик. Со 2-го августа я снова здесь.
---------- Post added at 21:57 ---------- Previous post was at 21:55 ----------
Тогда можно "прилопатить" на тот же F767. Мы же его пока только записываем. А на чтение можно и префиксы читать :)
Т.е. порт F500 - это фикция. В действительности читается/пишется сразу в процессор?
Вот здесь не въезжаю! Что-то очень мудро. Ведь есть же адрес РОМ-диска=0000?
Я все понял. Важно другое - наши намерения и желания совпадают. А техническая реализация - это детали.
Приятно! Значит еще есть время поболтать...
Думаю, делать порты (особенно служебные) только на запись - это дурной тон. В этом случае приходится определять ячейку, в которой надо хранить копию записанной инфо в порт. Я двадцать раз себя проклинал в том, что пошел на поводу редакции и сделал распортовку, похожую на РК86 - отсутствие возможности читать порты. Это была (были и другие) самая большая глупость. Так вот, порты I/O должны писаться и читаться. Думаю, для клавиатуры ты найдешь другие свободные адреса. Кроме того, следует иметь запас адресов для портов - ведь со временем что-то еще придумается. Куда вешать?
Разумеется. Такого порта нет в принципе. На самом деле - это прямой канал на шину данных.
Есть. Только с адресной шиной процессора у него нет ничего общего. Мы ведь пишем БАЙТ ДАННЫХ 00000000 в порт F501 или F502 :)
Одна из "деталей" - при отпускании кнопки ПРАВЫЙ CTRL (к примеру), мы получаем не два, а три байта - F0 E0 14. Как будем жить? ;) И таких кнопок много...
Согласен.
Пока Error404 пьянствует и безобразия хулиганит, давай займем диапазон 50-5F :)
С Орион-про это не пересекается?
---------- Post added at 23:37 ---------- Previous post was at 23:31 ----------
Предлагаю все же не лохматить бабушку, а сигнализировать просто битами.
если принять -
00 - 00
E0 - 01
F0 - 10
- то нам понадобится всего два бита для полной передачи информации драйверу.
Т.е. драйвер получит сам сканкод 14, а также два бита установленных в единицу (префикс E0 есть, префикс F0 есть). Ёжики поймут, что отпущен правый CTRL.
---------- Post added at 23:39 ---------- Previous post was at 23:37 ----------
не очень хотелось бы. Усложнение мультиплексоров. Как бы глюки не полезли на высокой частоте. Попробовать можно.
Ты неправ. При отпускании, байты распределяются так: E0 F0 14. А значит второй байт так же F0. Это упрощает анализ - следить надо только за вторым байтом. См. картинку внизу. Это из таблицы, которую ты сам выкладывал.
Адреса 30-9F свободны. Я прицепил бы книгу Орион-ПРО, но она почти 2Мб. Посмотри еще сам в http://zx.pk.ru/showpost.php?p=229897&postcount=4.
Полностью согласен с таким подходом.
Смотри сам. Получится - значит получится, а нет..., но хорошо бы!
P.S. Порты (в Орион-ПРО) 2C-2F (D3-D0) - выделены под переключение страниц РОМ-диска. А у тебя только клавиша F8? Хорошо бы продублировать, тогда можно попробовать модернизировать ОРДОС, чтобы она управляла страницами РОМ-диска.
Господа, а зачем вы пытаетесь возложить анализ нажатий и отжатий на ПЛИС? Почему нельзя сделать как в PC: один байт - одно прерывание, а дальше анализ в драйвере самого Ориона. Все равно драйвер заново писать.