Просмотр полной версии : ОРИОН-2010 на ПЛИС.
Где это такие цены за LCD?
В Петербурге за 1000 продаются б/у. В Москве думаю что подешевле можно найти.
Потестировал сегодня ПЗУшки.
ПЗУ 3.3 вольт - работает замечательно, разумеется.
ПЗУ 5-вольтовое, питание 3.3 вольт - как ни странно, прекрасно работает :)
ПЗУ 5-вольтовое, питание 5 вольт - Орион по прежнему работает. Перегрузки не замечено, циклон холодный. Вообщето так и должно быть, циклоны 5в-толерантны, я больше переживал за "помехи" на шине данных. Однако всё нормально.
Потестировал сегодня ПЗУшки.
ПЗУ 3.3 вольт - работает замечательно, разумеется.
ПЗУ 5-вольтовое, питание 3.3 вольт - как ни странно, прекрасно работает :)
ПЗУ 5-вольтовое, питание 5 вольт - Орион по прежнему работает. Перегрузки не замечено, циклон холодный. Вообщето так и должно быть, циклоны 5в-толерантны, я больше переживал за "помехи" на шине данных. Однако всё нормально.
А можно список 5-вольтовых ПЗУ в корпусе PLCC-32, которые прошиваются FLASHERом ?
И какой у них объем.
А можно список 5-вольтовых ПЗУ в корпусе PLCC-32, которые прошиваются FLASHERом
Точно те же, которые и DIP-40 :)
Потестировал сегодня ПЗУшки.
Евгений, ты не мог бы написать кусочек программы, которая бы программировала ПЗУшку РОМ-диска с Ориона?
Евгений, ты не мог бы написать кусочек программы, которая бы программировала ПЗУшку РОМ-диска с Ориона?
Собственно, это уже больше к Сергею.
Алгоритм применительно к 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.
Алгоритм применительно к Z-80 и флешь-ПЗУ уже давно описал Пера Путник. Нужно всего лишь адаптировать его программу для нашего железа.
Если есть этот алгоритм в виде ассемблерного текста, то тогда проблем нет. Кинь мне его (или ссылочку) - я по соображаю.
Кинь мне его (или ссылочку) - я по соображаю.
Сергей выкладывал здесь (http://www.zx.pk.ru/showpost.php?p=287433&postcount=181).
Алексей, ты отправлял посылку первым классом или "оленями+вертолёт"? :)
Посмотри по ПИН-коду, где она застряла.
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
Но, в итоге получается, что реальной технической возможности, кроме флешера в настоящий момент, нет на Орионе - хотя столько об этом говорили? Или есть варианты?
Что предложишь, т.Главный Конструктор!
Я хочу вернуться к ранее поднятому вопросу
Отпуск, отпуск... :v2_smoke: :v2_cheer: :v2_walkm:
Error404
16.07.2010, 12:58
Но, в итоге получается, что реальной технической возможности, кроме флешера в настоящий момент, нет на Орионе - хотя столько об этом говорили? Или есть варианты?
Приедет мой Орион, попробую вот этот вариант реализовать (есть идеи, сделать будет несложно - самая сложная часть собственно проггер):
Можно сделать вообще как на ПентЭве - на SD иметь загрузчик-проггер и файл прошивки флешьПЗУ. Вставили SD в комп, включили питание, нажали F8. Стартует М35, далее стартует проггер с SD, далее - понятно :)
сделать будет несложно - самая сложная часть собственно проггер):
согласен. Придумайте, кстати, в каком порте занять битик для переключения в режим флешера.
При этом видеоконтроллер будет вырубаться. Или как и планировали, задействует режим 2 или 3 порта цвета?
Отпуск, отпуск... :
Все! все! Совсем забыл... Извини! Но, компьютер, похоже, под мышкой увез?
Но, компьютер, похоже, под мышкой увез?
неа. Был бы ТВ-выход, то вполне реально с собой брать :)
неа. Был бы ТВ-выход, то вполне реально с собой брать :)
Я имел ввиду ноутбук, а не Орион!
Кстати, бандероль ушла на сортировку в цех-4 (все еще в вашем городе)!
Я имел ввиду ноутбук, а не Орион!
ааа... не, я еще дома прохлаждаюсь. На все проекты забил, собираю чемодан.
Не вытерпел, залез в Квартус и родил очередную версию :)
Версия 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 процессора.
П.С. Запись в 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
- готовим след.адрес и т.д.
- Порт F766(4E). При нажатии...(метод Error404)
Скажу сразу - это примитивный "метод"! Мало того, что он аппаратно сложнее в реализации (но, это уже проблемы Евгения!), так еще и не позволяет использовать клавиши E0+X. Я против этого "метода", и настаиваю на создании второго порта, где будет записываться один из трех вариантов: 00, E0, F0. Пусть это будет (если жалко "вентелей") не полноразмерный (8 бит) порт, а только 4 бита в младшей тетраде, где записывается старшая тетрада принятого байта. Тогда сдвижкой вправо через перенос легко проверить, это - E или F, а нулевое значение - и того проще. Думаю, так будет правильно!
- выключаем видеосинхронизатор: F800 (F8H) D1=1
Точнее, D2='0', D1='1'. Проще всего просто записать 2 в порт F800.
- выключаем бит 7 в 4F, т.е. D7=0
не надо. Сигнал ROM_WE будет "дергаться" только при "00" на младших адресах шины. Т.е. запись в F501-02 не приведет к ложному срабатыванию.
Остальное - правильно.
не забываем, что запись во флеши делается блочно по 128 байт, затем небольшой перерыв (чтобы флеша успела переписать данные из своего буфера на матрицу памяти).
Мало того, что он аппаратно сложнее в реализации
Я сделал то, что аппаратно вообще почти не потребовало усилий. Два байта - это сложней сделать. Поэтому - не сейчас.
Сигнал ROM_WE будет "дергаться" только при "00" на младших адресах шины.
Не понял. Что это значит - "дергаться"?
Как я понял, включив D7(4Fh)=1, не выключаем до полного завершения прог.флешки, делая небольшие задержки после 128 байт? Т.е. пихаем по очереди байты в F501, F502 и F500 и так в цикле 128 +дальше!
Я сделал то, что аппаратно вообще почти не потребовало усилий. Два байта - это сложней сделать. Поэтому - не сейчас.
Что же здесь сложного - добавить еще восемь разрядов + выпустить на шину? Зато это полноценное решение, а не какие-то извращения.
P.S. После записи байта, содержимое портов F501, F502 сохраняется, или надо обновлять постоянно? Я имею ввиду старший байт в F502 ?
Не понял. Что это значит - "дергаться"?
переключаться по сигналу WR процессора
Как я понял,
Да, верно.
Что же здесь сложного - добавить еще восемь разрядов + выпустить на шину?
Я не вижу сложностей в запуске табуретки в космос. Поскольку не представляю как это делается :)
Я использую готовый альтеровский + самодельный контроллеры, которые в куче не предназначены для выдачи произвольного числа байтов, а только одного. Для выделения префиксов как раз и требуются пляски с бубном.
Я имею ввиду старший байт в F502 ?
Нет, регистры там хранят данные до выключения питания или перезаписи.
---------- Post added at 21:17 ---------- Previous post was at 20:27 ----------
Как я буду делать второй байт - идеи есть. Тем паче, что это полностью стыкуется с моим стремлением полноценно задействовать всю клавиатуру (сейчас цифровое поле не интерпретируется как цифры).
Буду отслеживать последовательность поступивших сканкодов в стейт-машине и ставить "флаги", на выходе это даст последний сканкод + флаги префиксов, на основе которых станет доступна почти вся клавиатура. Это дает возможность также передать в драйвер непосредственно сами префиксы (или просто биты состояния). Не очень представляю пока, в какой порт выдавать префикс. Для PS/2 мы используем F766 (4E). Но следующий порт F767 (4F) уже занят портом конфигурации.
Сигнал ROM_WE будет "дергаться" только при "00" на младших адресах шины.
Извини, не правильно поставил акцент. Я не понял: "только при "00" на младших адресах шины". Как ROM_WE связан со значением "00" в мл.адресах?
Я не вижу сложностей в запуске табуретки...
Как я понял, "твой" нынешний контроллер принимает два байта по очереди. Получив в первом байте F0 (и проанализировав, что это именно F0!), ты запоминаешь где-то "1" и затем получив второй байт - принудительно устанавливаешь D7=1. Тогда что мешает переписать весь первый байт в какой-то дополнительный регистр без какого-либо анализа, а не устраивать проверку одного его разряд? А уже затем, этот дополнительный регистр выпустить на шину с другим адресом.
П.С. Когда нас покидаешь, и уже к тебе можно не адресоваться на форуме?
---------- Post added at 21:31 ---------- Previous post was at 21:21 ----------
Не очень представляю пока, в какой порт выдавать префикс. Для PS/2 мы используем F766 (4E). Но следующий порт F767 (4F) уже занят портом конфигурации.
Ты немного опередил меня с ответом.
У нас пока не утверждены ни какие "стандарты". Можешь лопатить как хочешь и переделать все адреса портов по своему усмотрению.
Как ROM_WE связан со значением "00" в мл.адресах?
Просто команда 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. Мы же его пока только записываем. А на чтение можно и префиксы читать :)
На адресные входы ПЗУ идут заранее записанные адреса из регистров РОМдиска, на входы данных идут непосредственно данные с процессора, сигнал OE='1' (поскольку мы не читаем, а пишем), на вход WE идет сигнал процессора WR. Байтик записан.
Т.е. порт F500 - это фикция. В действительности читается/пишется сразу в процессор?
Далее спокойно обновляем адрес в порту pF501 (на шине адреса процессора младшие разряды ="01") или в pF502 ( ="10" соответственно). Поскольку это не "00", то эти данные запишутся только в порты, на входе WE ПЗУ будет висеть "1".
Вот здесь не въезжаю! Что-то очень мудро. Ведь есть же адрес РОМ-диска=0000?
- Как я буду делать второй байт - идеи есть. Тем паче, что это полностью стыкуется с моим стремлением полноценно задействовать всю клавиатуру...
- Нет. Он принимает ВСЕ байты...
Я все понял. Важно другое - наши намерения и желания совпадают. А техническая реализация - это детали.
До вечера понедельника я буду торчать на форуме...
Приятно! Значит еще есть время поболтать...
Тогда можно "прилопатить" на тот же F767. Мы же его пока только записываем. А на чтение можно и префиксы читать
Думаю, делать порты (особенно служебные) только на запись - это дурной тон. В этом случае приходится определять ячейку, в которой надо хранить копию записанной инфо в порт. Я двадцать раз себя проклинал в том, что пошел на поводу редакции и сделал распортовку, похожую на РК86 - отсутствие возможности читать порты. Это была (были и другие) самая большая глупость. Так вот, порты I/O должны писаться и читаться. Думаю, для клавиатуры ты найдешь другие свободные адреса. Кроме того, следует иметь запас адресов для портов - ведь со временем что-то еще придумается. Куда вешать?
Т.е. порт F500 - это фикция. В действительности читается/пишется сразу в процессор?
Разумеется. Такого порта нет в принципе. На самом деле - это прямой канал на шину данных.
Вот здесь не въезжаю! Что-то очень мудро. Ведь есть же адрес РОМ-диска=0000?
Есть. Только с адресной шиной процессора у него нет ничего общего. Мы ведь пишем БАЙТ ДАННЫХ 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 ----------
Так вот, порты I/O должны писаться и читаться
не очень хотелось бы. Усложнение мультиплексоров. Как бы глюки не полезли на высокой частоте. Попробовать можно.
Одна из "деталей" - при отпускании кнопки ПРАВЫЙ CTRL (к примеру), мы получаем не два, а три байта - F0 E0 14. Как будем жить? ;) И таких кнопок много...
Ты неправ. При отпускании, байты распределяются так: 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: один байт - одно прерывание, а дальше анализ в драйвере самого Ориона. Все равно драйвер заново писать.
dmtr, они хотят уменьшить количество прерываний, их там достаточно, а дальнейшее увеличение может привести к уменьшению производительности
Это упрощает анализ - следить надо только за вторым байтом.
Владислав, подумай еще раз :)
У нас есть кнопки 14 и E014, 72 и E072 и так далее. Для контроля отпускания мы не можем обойтись только двумя байтами.
Ты неправ. При отпускании, байты распределяются так: E0 F0 14.
Извини, очепятка :)
Полностью согласен с таким подходом.
Т.е. думать в этом направлении - сигнализировать битами в комплекте с основным сканкодом, одно прерывание?
Почему нельзя сделать как в PC: один байт - одно прерывание,
Я описывал работу контроллера парой постов выше. Мне проще упростить жизнь драйверу, чем гнать ему побайтово все данные.
---------- Post added at 13:13 ---------- Previous post was at 13:12 ----------
dmtr, они хотят уменьшить количество прерываний,
ага. Я вообще прерываний побаиваюсь, оставил бы только INT50 для игрушек и часов :)
---------- Post added at 13:30 ---------- Previous post was at 13:13 ----------
А у тебя только клавиша F8?
Ээээ.... Лучше сделать так:
F8 - переключение "мониторов" с одновременным сбросом.
F9 - переключение страниц РОМдиска
F10 - режим 2.5Мгц
F11 - режим турбо 5Мгц (по умолчанию)
F12 - режим супертурбо 10Мгц
Scroll Lock - сброс
Владислав, подумай еще раз :)
У нас есть кнопки 14 и E014, 72 и E072 и так далее. Для контроля отпускания мы не можем обойтись только двумя байтами.
С точки зрения построения алгоритма драйвера, проблем, вроде бы, не вижу. Действо будет происходить по нажатию клавиши. Контроль за F0 нам нужен только для того, чтобы это прерывание пропустить (а что обрабатывать? Пока не представляю!) - отпустили клавишу, ну и черт с ней! А вот Е0 - это очень важный флаг: 14 - это левый CTRL, а Е0+14 - это правый CTRL.
Структурно, драйверная система будет выглядеть так: п/п KBRD (F803) проверяет всего-лишь ячейку. Если в ней 00(или FF?) - значит нет нажатой клавиши. Тоже относится и к п/п INKEY. А вся "кухня" с прерыванием будет вариться внутри и раскладывать результат по ячейкам.
Старые драйвера Ориона обрабатывали ситуацию одновременного нажатия нескольких клавиш, как защиту, а не полезную последовательность. С новым драйвером мы можем (если это будет актуальным - дождемся реакции Сергея!) сделать "новый" вектор, где все нажатия будут заноситься в буфер, а уж программа должна сама разгребать ситуацию.
Т.е. думать в этом направлении - сигнализировать битами в комплекте с основным сканкодом, одно прерывание?
Да! Иначе утонем в прерываниях. Z80 - это не AVR, где мощный и хорошо продуманный механизм прерываний. Только все равно придется сделать еще один порт, где можно будет читать эти флаги. И еще, грамотно расставить флаги на биты, чтобы было проще программно анализировать. Может быть на D7 и D0 - тогда можно анализировать через перенос. Что скажет Сергей? Я плохо владею командами Z80 - так уж исторически получилось.
Я вообще прерываний побаиваюсь, оставил бы только INT50 для игрушек и часов :)
К примеру, в микроконтроллерах без них нечего делать. Поэтому, в нашем случае, все зависит от того, как сделан сам контроллер прерываний, насколько грамотно расставлены приоритеты прерываний. Не исключено, что еще придется выуживать его прорехи и недостатки. А сами по себе прерывания - это прекрасный механизм!. Кроме того, одновременно работать, практически постоянно, будут два прерывания: INT50 и PS/2. Понятно, что INT50 будет бесцеремонно вмешиваться (будут вложения и совпадения) в PS/2. Здесь надо проанализировать (кроме тебя, Евгений, - никто!) "схемотехнику" контроллера, чтобы не пропадали прерывания PS/2 при совпадении с INT50. Конечно, INT50 должен иметь самый высокий приоритет - иначе грош ему цена, как датчику реального времени.
---------- Post added at 14:27 ---------- Previous post was at 14:17 ----------
Ээээ.... Лучше сделать так:
...
F9 - переключение страниц РОМдиска
F10 - режим 2.5Мгц
F11 - режим турбо 5Мгц (по умолчанию)
F12 - режим супертурбо 10Мгц
Это можно дублировать в порту 4F!
Приоритеты -
if eoc='1' then //RS-232, высший приоритет
vector<="11111101";
elsif (int_keyb='1' and int_buf='0') then //PS2, средний приоритет
vector<="11111011";
elsif (interr='1' and int_buf='0' and int_keyb='0') then //INT50, низший приоритет.
vector<="11111111";
end if;
INT50 должен иметь самый высокий приоритет - иначе грош ему цена, как датчику реального времени.
У меня абсолютно другое мнение. Потеря прерывания по INT50 совершенно не страшна (1/50 секунды погоды не сделает), потеря нажатия клавиши куда как неприятнее, а потеря байта по USART вообще недопустима.
D7 и D0 - тогда можно анализировать через перенос. Что скажет Сергей?
Это уже ваше дело. Только ИМХО команда BIT N,a куда как проще чем возиться со сдвигами, а какой бит проверять - ей все равно.
а что обрабатывать? Пока не представляю!
Т.е. факт отпускания клавиши вам вообще не интересен? Странный подход...
Я так думал, что вы будете вести в драйвере что-то вроде таблички на 6 байт, где прописаны нажатые в данный момент клавиши. И факт отпускания кнопки нужен для удаления символа из таблицы. А как вы мыслите это?
---------- Post added at 14:37 ---------- Previous post was at 14:36 ----------
Это можно дублировать в порту 4F!
Можно. А зачем???
Потеря прерывания по INT50 совершенно не страшна
хм... тогда может так случиться что часы будут отставать очень сильно(500-200 раз по 1/50с это 10-4с.)
Приоритеты... У меня абсолютно другое мнение...
Думаю, ты прав только отчасти, со своей "колокольни".
Смотрим М.Гук "Аппаратные средства IBM PC" 2-е изд., стр. 240. В порядке последовательной очередности: INT02-немаск.прерывание, INT08-таймер, INT09-клавиатура и т.д. USART - вообще не имеет своего собственного прерывания и внесен в общую таблицу распределения прерываний.
Что у нас? Если рассматривать работу в реальном масштабе времени, то INT50 - самый важный вектор. Кроме того, по этому вектору можно обрабатывать много чего, в том числе и клавиатуру, если не срастется с PS/2. Далее, должна идти клавиатура PS/2 - естественно необходима возможность безоговорочно вмешиваться в ситуацию. А вот при работе USART можно все остальное отключить, если будут глюки. И то, если будет использоваться синхронная передача. При асинхронной, пакетной с подтверждением (а еще как для надежности!?), то это уже не имеет большого значения. Можно повторить передачу последнего сбойного пакета. То, что придумано в настоящий момент для передачи файлов по USART - это временное явление по бедности, но не предел необходимого. Думаю у кого-то дойдут руки и будут сделаны нормальные программы для передачи файлов.
Кроме того, еще раз подчеркиваю: потеряно/не потеряно прерывание всецело зависит от схемотехники контроллера прерываний. От приоритета - только очередность обработки. И не более! Так что, Евгений, все в твоих руках!
Т.е. факт отпускания клавиши вам вообще не интересен? ...Я так думал, что вы будете вести в драйвере что-то вроде таблички на 6 байт...
Вести, конечно будем. Но даже в ПС, если ты нажал клавишу, то отменить на нее реакцию уже не возможно - даже если ты ее и отпустил! Она все равно будет записана в буфер, и программа, анализируя, выполнит то что эта клавиша предписала. Поэтому для системных п/п работы с клавиатурой, факт отпускания клавиши мало значим, и необходим, чтобы сортировать прерывания. А вот прикладные программы могут изгаляться с фактом отпускания клавиши, как им заблагорассудится!
Можно. А зачем???
Не "можно", а нужно!
1. Вот здесь http://zx.pk.ru/showpost.php?p=300150&postcount=279 в последнем абзаце "P.S. Порты..." я это объяснил.
2. Сергей мечтал (а ты ему это обещал!) уходя в СРМ включать максимальную "скорость". Он что, тоже обязан будет нажимать только клавишу F12? Автоматически (по своему желанию выбирать частоту) это сделать будет не возможно?
3. Это так сложно сделать, чтобы нажимая клавиши "Fx" автоматически менялись флаги в 4F? А при включении питания устанавливалась в РОМ-диске страница 00 и частота 2,5 Мгц. Думаю нет!
хм... тогда может так случиться что часы будут отставать очень сильно(500-200 раз по 1/50с это 10-4с.)
Делать часы на этом прерывании - это бутафория. Для часов применяют спец.микросхемы.
---------- Post added at 16:17 ---------- Previous post was at 16:03 ----------
Вести, конечно будем.
Кроме всего прочего, не забывайте, что программы написанные для Ориона по своей логике не учитывают наличие прерываний. Они чисто программно обращаются (когда им нужно!) к клавиатуре. Поэтому, применение клавиатуры с прерыванием, при вводе символов, ничего внешне не изменит в поведении того же редактора текста. Поэтому можно будет нажать несколько клавиш (в это время редактор что выполняет свое!), а используемой окажется последняя клавиша, которую он заметил, обратившись к п/п клавиатуры.
Реальный эффект (со старыми программами) можно будет увидеть только при нажатии управляющих комбинаций клавиш. Например CTRL+ALT+DEL (будем надеяться, что удастся воплотить!) и... Орион, плюнув на все, ушел на перезагрузку, даже если он при этом и "висел"!
То, что придумано в настоящий момент для передачи файлов по USART - это временное явление по бедности, но не предел необходимого
Ну, то что сейчас сделано в плане пакетной передачи - ахтунг полнейший. Повторов много, бывало даже что файл не проходил. При обычной побайтовой передаче все идет без ошибок :)
то INT50 - самый важный вектор. Кроме того, по этому вектору можно обрабатывать много чего, в том числе и клавиатуру, если не срастется с PS/2.
Дык пожалуйста. Давали бы изначально четкие инструкции...
Так что, Евгений, все в твоих руках!
Прерывания будут теряться при одновременной активности сигналов. Лепить настоящий мегаконтроллер я не буду.
Это так сложно сделать, чтобы нажимая клавиши "Fx" автоматически менялись флаги в 4F?
Хорошо, сделаю.
Сергей мечтал (а ты ему это обещал!) уходя в СРМ включать максимальную "скорость".
Не особо он и мечтал. А сделать это можно за полминуты. У меня изначально так и было, потом убрал перед релизом.
что программы написанные для Ориона по своей логике не учитывают наличие прерываний.
Не забываем, что большая и лучшая часть ПО - со спектрума. Прерывания им необходимы. Софт СР/М-й также подразумеваю что был бы не прочь попользоваться прерываниями.
даже если ты ее и отпустил! Она все равно будет записана в буфер, и программа, анализируя, выполнит то что эта клавиша предписала.
Владислав, вы как-то упускаете из виду что программам (особенно игровым) требуется знать - нажата кнопка или уже отпущена. Сколько кнопок нажато, в какой последовательности они отпущены... В РК-клавиатуре это прекрасно видно по состоянию матрицы, здесь же матрицы не будет. Поэтому с PS2 нужно иметь хотя бы табличку на несколько кнопок и в реалтайме держать там сведения о клавиатуре.
Версия 1_08.
Порт 4F.
Помимо описанных битов D0-D2 (конфигурация памяти) и D7 (разрешене ROM_WE) добавлено:
D4..D3 - ROM_SEG (страницы ROM-диска)
D6..D5 - скорость процессора. 00 - 5Мгц, 01 - 10Мгц, 10 - 2,5Мгц.
В целях безопасности - биты 0..2 и 7 записываются только как порт 4F, прочие биты записываются и как порт 4F, и как ячейка F767. Забавно рулить скоростью и РОМдиском из Монитора :)
Прочитать содержимое порта можно и как порт 4F, и как ячейка F767.
При этом считываются не записанные когда-то данные, а реальные на данный момент.
Обновлен мануал по Ориону.
Ну, то что сейчас сделано в плане пакетной передачи - ахтунг полнейший.
Значит есть проблема. Надо будет разруливать. Просто все сразу не осилить - придет время и дойдут руки. А сейчас, пока, пусть будет так.
Прерывания будут теряться при одновременной активности сигналов. Лепить настоящий мегаконтроллер я не буду.
Ну, в какой-то момент ты все переделаешь то, что сейчас планируем. Потом тебе станет скучно от "безделья", и ... зачешутся руки сделать что-то "мега". Просто надо подождать твое вдохновение! И не более!
Не забываем, что большая и лучшая часть ПО - со спектрума. Прерывания им необходимы. Софт СР/М-й также подразумеваю что был бы не прочь попользоваться прерываниями.
Давай, пока, оставим как есть с прерываниями и приоритетами, а там посмотрим. Еще ничего руками не потрогали.
... программам (особенно игровым) требуется знать - нажата кнопка или уже отпущена. Сколько кнопок нажато, в какой последовательности они отпущены... В РК-клавиатуре это прекрасно видно по состоянию матрицы, здесь же матрицы не будет. Поэтому с PS2 нужно иметь хотя бы табличку на несколько кнопок и в реалтайме держать там сведения о клавиатуре.
Разве мы убираем порт F40х, где реализована матрица? Собственно, игрушкам она и нужна, а не п/п обработки клавиатуры. Кроме того, что мешает подгрузить "старый" Монитор для "любимой" игрушки?
---------- Post added at 23:16 ---------- Previous post was at 22:49 ----------
Ну, наконец! Бандероль уже в Москве. День-два и будет у меня! До твоего возвращения что-либо перепрошивать не буду - повожусь с тем что есть, по соображаю!
Ну, наконец! Бандероль уже в Москве. День-два и будет у меня!
Ну слава Ктулху! :)
До твоего возвращения что-либо перепрошивать не буду - повожусь с тем что есть, по соображаю!
Думаю, что лучше будет как раз прошить 1,08. И для тренировки, и заодно прошивка поинтересней (и в теории - надежней, видеогенератор переделан) :). Только учти, что в ней вместо монитора М37 стоит М34.
Кстати, негласный тест на косяки в железе (я обязательно делаю) - в М256 делаем DUMP F600. На всём поле дампа должно быть FF. Если иначе - конфликтуют сигналы на шинах. Залив новую версию прошивки, лучше не полениться и проверить дамп.
Разве мы убираем порт F40х, где реализована матрица? Собственно, игрушкам она и нужна, а не п/п обработки клавиатуры. Кроме того, что мешает подгрузить "старый" Монитор для "любимой" игрушки?
Ну ладно, мои контраргументы закончились. Тогда подтверждай:
1. Сигнал прерывания возникает ТОЛЬКО при нажатии кнопки на клавиатуре.
2. Контроллер отправляет драйверу сканкод кнопки + префикс E0 если он есть.
3. Отпускание кнопки никак не передается драйверу.
4. префикс Е0 передается как байт в новом порту (или "1" в старшем разряде сканкода, для экономии?).
Выносите вердикт. И в будущем желательно получать такие же четкие инструкции от вас с Сергеем :)
Потом тебе станет скучно от "безделья"
Мммм... маловероятно, конечно... За последние два года я напрочь забыл слово "скука" :)
Только из текущих проектов у меня помимо Ориона еще и ScorpEvo (http://www.zx.pk.ru/showthread.php?t=13345). И поддержка еще парочки готовых, модезверствование на половине форума и помощь в чужих проблемах :v2_devil: 24 часов в сутках не хватает :v2_slee2:
Но всё может быть.
---------- Post added 19.07.2010 at 00:06 ---------- Previous post was 18.07.2010 at 23:58 ----------
Значит есть проблема. Надо будет разруливать.
Тонко так намекну, что существующие модели USART на ПЛИС должны иметь ошибки в работе если не принять специальных мер (типа специального кварца на 11.0592 Мгц). На скорости 20Мгц разумеется, делается коррекция, но при пакетной передаче вероятность ошибки должна накапливаться и "прорываться". При побайтовой передаче приемник и передатчик каждый раз синхронизируются заново, потому ошибки и не возникают. Я не спец в этом, но вроде это так.
При побайтовой передаче приемник и передатчик каждый раз синхронизируются заново, потому ошибки и не возникают.
там передача всегда побайтово, для каждого байта отправляется СТАРТ-ДАННЫЕ-(ЧЕТНОСТЬ)-СТОП. Ошибки возникают из-за того что приемник и передатчик не синхронизированны одним сигналом, для того чтоб небыло ошибок тактовые частоты приемника и передатчика должны быть строго одинаковы, тут "как бы" есть два генератора синхросигналов, у приемника и передатчика свой, но оба они "начинают работать" по выдаче/приему СТАРТ бита, и если их частоты различаются то и появляется вероятность того что какойто бит будет пропущен или защелкнут дважды...
Keeper, я имею ввиду, что для передачи десятка бит разница в тактовых частотах может быть значительной (относительно). Но при передаче по протоколу это уже недопустимо. Я видел где-то табличку с расчетом процентов на ошибку в зависимости от кварца. Так там 0% давался лишь для упомянутого мною 11.0592.
Я видел где-то табличку с расчетом процентов на ошибку в зависимости от кварца.
На 99% уверен что в даташыте на AVRки :) Например для ATmega8515 со страницы 160. Раздел называется USART > Examples of Baud Rate Setting
Ну ладно, мои контраргументы закончились...
И в будущем желательно получать такие же четкие инструкции...
Друг ты мой сердешный! Мы, что идем на второй круг?
Ты уже все сам предложил ранее:
Сообщение от Ewgeny7
Предлагаю все же не лохматить бабушку, а сигнализировать просто битами.
если принять -
00 - 00
E0 - 01
F0 - 10
- то нам понадобится всего два бита для полной передачи информации драйверу.
Т.е. драйвер получит сам сканкод 14, а также два бита установленных в единицу (префикс E0 есть, префикс F0 есть).
Ёжики поймут, что отпущен правый CTRL.
Уточню:
1. прерывание по нажатию и отпусканию.
2. читаем два байта: сканкод+флаги
2.1 при нажатии клавиши получаем сканкод+флаг 00 или 01 (E0)
2.2 при отпускании клавиши получаем сканкод+флаг 10 (F0)
3. с адресами портов ты собирался разобраться сам!
4. у клавиатуры должны быть два порта: один для сканкода, второй - для флагов!
Следующее:
1. расставить приоритеты прерываний:
PS/2 - самый высокий (не уверен, что должен быть самый высокий - посмотрим)
Int50 - средний
USART- низший
2. поправь файл "Arhitektura_Orion-2010". Он изрядно устарел.
P.S. Что вдруг случилось, что ты перешел на "ВЫ"?
Внес исправления!
Error404
19.07.2010, 12:07
Но даже в ПС, если ты нажал клавишу, то отменить на нее реакцию уже не возможно - даже если ты ее и отпустил! Она все равно будет записана в буфер, и программа, анализируя, выполнит то что эта клавиша предписала. Поэтому для системных п/п работы с клавиатурой, факт отпускания клавиши мало значим, и необходим, чтобы сортировать прерывания. А вот прикладные программы могут изгаляться с фактом отпускания клавиши, как им заблагорассудится!
Думаю, только прерыванием по нажатию (без отображения отпускания клавиши) мы не обойдемся. Даже примитивному CP/M-овскому или Мониторовскому драйверу клавиатуры (на прерываниях, а не на матрице), не возвращающему пользователю статус одновременно нажатых кнопок, для своей внутренней логики отпускание обязательно надо отслеживать. Иначе как он узнает и обработает комбинацию "функциональная кнопка + символьная кнопка". Например, получив статус нажатия "клавиш регистров" (Ctrl, Alt, Shift) при последующем прерывании вида "символьная кнопка" драйверу нужно надежно знать - нажаты "клавиши регистров" до сих пор или уже отпущены. И в зависимости от этого добавлять смещение к коду, возвращаемому драйвером пользователю, или не добавлять.
Т.е. вариантов два: или делать анализ отпускания, или писать драйвер так чтобы от работал гибридно (т.е. несистемно) - и прерывания обрабатывал бы, и в в порт F402 лазал бы за состоянием Ctrl, Рус\Lat, Shift. С другой стороны, из F402 кроме трех функциональных кнопок нельзя прочитать Alt, и много еще чего.
---------- Post added at 12:07 ---------- Previous post was at 12:04 ----------
Уточню:
1. прерывание по нажатию и отпусканию.
Я поторопился с ответом (или долго набирал? :) как посмотреть), можно было не набирать вышеприведенное. :)
В целом, выглядит достаточно удобно.
Друг ты мой сердешный! Мы, что идем на второй круг?
Ага :)
Просто мне переделывать еще раз не хочется. Я предложил - ты вроде как не против.
Раз не против, уточняю уже детали реализации. тем более, что расхождения снова появились:
1. прерывание по нажатию и отпусканию.
2.2 при отпускании клавиши получаем сканкод+10 (F0)
2. поправь файл "Arhitektura_Orion-2010". Он изрядно устарел.
Не понял... Я его вчера редактировал.
P.S. Что вдруг случилось, что ты перешел на "ВЫ"?
"вы" с Сергеем :)
Обновление 1.09. Клавиатурное.
Изменения в портах.
Ногами сильно не пинайте, после отпуска номера скорректируем.
Сейчас:
10..12 - F400..F402
20..22 - F500..F502
40..4F - F760..F76F
Изменения вызваны необходимостью расширить порты F76x без усложнения дешифраторов.
Порт конфигурации 4F теперь соответственно называется 47.
Порт чтения сканкода - F768 (48) - сканкод клавиши
Порт чтения префикса - F769 (49) - префикс 00, E0, F0.
при нажатии префикс равен соответственно 00 или Е0. При отпускании - F0.
Включение прерывания PS/2 как и ранее, запись в D6 порта F766 (46). Надеюсь, работает.
Извините, что вмешиваюсь, есть предложение по поводу клавиатуры.
Я думаю, что правильнее всего будет сделать FIFO-буфер, в который последовательно записываются генерируемые клавиатурой коды, вместе с префиксами и суффиксами. При поступлении первых данных в буфер генерируем прерывание, а соответствующий вектор должен будет эти скан-коды обработать (конечный автомат с таблицей перекодировки клавиш) и отдать остальным потребителям.
Обработчик прерывания работает до тех пор, пока не извлечет все данные из буфера, т.е. если в процессе обработки скан-кодов поступят новые, то обработчик должен будет дочитать и их, но дополнительного прерывания от клавиатуры естественно не выставится.
В этом случае нам потребуется один 8-разрядный порт в адресном пространстве и биты состояния FIFO - пустой или переполнение.
Извините, что вмешиваюсь...
Конечно, подобный алгоритм имеет право на жизнь. Но это перечеркивает все, что до этого было сделано. Вы беретесь помогать:
1. Переписать значительную часть алгоритма, обрабатывающего PS/2 в Альтере (используется готовая библиотека открытого кода). Кроме того изыскать ресурсы ПЛИС на создание FIFO-буфера и автомата, управляющего им. Не нужно забывать, что ПЛИС - это всего-лишь схемотехника и этот автомат придется собирать на "вентилях и триггерах".
2. Переделать контроллер прерываний (так же используется готовая библиотека открытого кода). Проблемы те же -переделывать схемотехнику, и все это связывать воедино.
Что выигрываем, кардинально?
Один порт в адресном пространстве? (у нас, что катастрофический недостаток адресного пространства для портов?)
Что еще? Только существенного, кроме новой идеи!?
Нет секрета в том, что данный проект держится на опыте и знаниях ПЛИС Ewgeny7. Он очень способный, но не Господь (прости, что в суе)! Проект постепенно улучшается, по мере накопления им знаний и опыта. И с этим приходится считаться. Кроме того, и с его бескорыстием для всех. Возможно придет время, и он согласится воплотить Ваше предложение. Но, кроме этого, надо, чтобы кто-то еще написал драйвер клавиатуры под ваш алгоритм работы PS/2. Вы за это беретесь?
У нас, знаете-ли, существует негласное правило: идеи предлагаются, пока есть не решенная проблема. А когда она решена, то ее замена на новую идею - только с предложением реального собственного участия. А мы будем помогать, если ваша идея лучше. Все исходники выкладываются, поэтому нет проблем с участием и переделкой какого-то узла "Ориона-2010".
И последнее. Я совсем не ставил цель Вас обидеть, и был бы рад (и все мы вместе!), если Вы активно подключитесь к нашему проекту.
Конечно, подобный алгоритм имеет право на жизнь. Но это перечеркивает все, что до этого было сделано.
Я это понимаю, поэтому ни в коем случае не навязываю и не требую к исполнению.
Что выигрываем, кардинально?
Один порт в адресном пространстве? (у нас, что катастрофический недостаток адресного пространства для портов?)
Что еще? Только существенного, кроме новой идеи!?
Выигрываем всего лишь то, что уменьшаем количество клавиатурных прерываний и можем использовать все сканкоды, генерируемые клавиатурой.
Нет секрета в том, что данный проект держится на опыте и знаниях ПЛИС Ewgeny7. ... Возможно придет время, и он согласится воплотить Ваше предложение. Но, кроме этого, надо, чтобы кто-то еще написал драйвер клавиатуры под ваш алгоритм работы PS/2. Вы за это беретесь?
Вот, ключевое слово "придет время". Ни в коем случае не ломать уже сделанное. А соответствующие вектора монитора и обработчик прерывания написать конечно могу, только надо вспомнить ассемблер 8080, ибо сейчас все x86 да ARM...
Все исходники выкладываются, поэтому нет проблем с участием и переделкой какого-то узла "Ориона-2010".
И последнее. Я совсем не ставил цель Вас обидеть, и был бы рад (и все мы вместе!), если Вы активно подключитесь к нашему проекту.
Да я не обидчивый. :) Просто на данном этапе я только могу запустить проект Ориона-2010 разве что в ModelSim-е или в подобном ему. В нашей "деревне на 400 тысяч душ" даже самой завалящей альтеры не найдешь, не говоря уж о специализированных кристаллах. Сам думал заказать печатку по схеме Евгения, но потом понял, что комплектацию я буду ждать еще пол года от наших барыг. :(
Сам думал заказать печатку по схеме Евгения, но потом понял, что комплектацию я буду ждать еще пол года от наших барыг.
После 2 августа должен появиться Евгений. Поговорите с ним - возможно он согласится, на каких-то условиях, помочь Вам с комплектовкой.
Комплектовка пока отдыхает. Для основных позиций нужен заказ от 3 штук. Будет трое (или более) собирающих, тогда - другой разговор.
-------------------------------------------------------------
Здравствуйте снова! :) Я приплыло в родной Петербург.
Гидэ отчеты от Сергея? Доехала посылка вообще, и что там с ней?
pvlad, спасибо за краткие отзывы :)
Насчет разъема RS-232 - я специально искал именно "папы", ибо так написано было в спецификации с комплектующими. Кроме того, нуль-модемный кабель как раз должен быть с двумя "мамами" на концах.
Насчет сохранения в ОРДОСе ты прав, я как-то относительно недавно пинал Сергея на предмет "сохранялки" на SD.
aviator, делайте на здоровье, исходники открыты :)
Error404
03.08.2010, 22:58
Я в отпуске на море до 16-го. :) На момент отъезда посылка еще не доехала :(
На момент отъезда посылка еще не доехала
Посылко была отправлена первым классом, однако...
Послеотпускной апдейт проекта - версия 1.10. Полноценно задействуется вся клавиатура, цифровое поле работает именно как цифровое поле (а не дублер курсорных кнопок).
Маленький трик проекта - давно заметил, что при подключенном байтбластере содержимое ОЗУ не сбрасывается при выключении питания Ориона. Замерил напряжение на шине питания (3.3в) при этом - 1,05 вольт.
Вот вам и РАМдиск бесплатный :)
Подключаем батарейку-таблетку 1.5 вольта через диодик на шину питания 3.3в. При выключении питания наше статическое ОЗУ прекрасно сохранит свои данные, при этом прочие чипы будут теоретически "заперты" и ток потребления будет малый.
Надо проверить это как следует...
Здравствуйте снова! :) Я приплыло в родной Петербург.
Я очень рад, что ты снова на боевом посту. На форуме была тишина и... тоска.
А меня только 9-го обещали выписать из больницы. Хорошо, что есть Интернет, а то от тоски можно повеситься. Свои обязательства по посылке помню. О работоспособности платы 001 - докладывал!
Насчет разъема RS-232 - я специально искал именно "папы", ибо так написано было в спецификации с комплектующими.
Не в обиду. А если на заборе будет написано "..." - тоже верить. Думаю, Алексей не задумываясь поставил элемент, который подходит по посадочному месту и габаритам. И он прав. А что распаивается: "папа" или "мама" - определяет Главный конструктор.
Кроме того, нуль-модемный кабель как раз должен быть с двумя "мамами" на концах.
А вот это, как догму, подтвердить не могу. За свою жизнь, я только один раз (и то в 90-х) видел нуль-модемный кабель, с двумя "мамами" на концах, в комплекте с каким-то модемом. Думаю, фирма сгородила отсебятину. А вообще все СОМ-кабели "папа-мама".
А вообще все СОМ-кабели "папа-мама".
Это вероятно обычные "СОМ-удлинители". Расчет делался на нуль-модем с "перекрученными" Tx и Rx. Как вариант, можно было сделать и папа-мама с "прямыми" сигналами, но тогда на плате нужно было поменять местами сигналы на контактах 2 и 3. А это уже прерогатива "разводящего". Но все-таки, это "колхоз", ИМХО.
---------- Post added at 14:29 ---------- Previous post was at 14:27 ----------
А меня только 9-го обещали выписать из больницы.
Я тоже готовлюсь... Позвоночник задолбал уже, буду пару недель на стационаре. Когда - еще не знаю.
---------- Post added at 14:35 ---------- Previous post was at 14:29 ----------
Комплектовка пока отдыхает.
Отправил запрос в ЭФО на три комплекта ПЛИС+конфПЗУ+ОЗУ. В наличии нет, заказ - месяц. На всякий случай запросил точную цену. Устроит - буду заказывать.
Послеотпускной апдейт проекта - версия 1.10.
Это в замыслах? Или уже есть?
Подключаем батарейку... Вот вам и РАМдиск бесплатный...
Это конечно хорошо по бедности, но как ты говоришь: "колхоз ИМХО"!
Позвоночник задолбал уже....
Мне это очень знакомо. Собрат по несчастью! Сидишь помногу и малоподвижно. Не исключено, что на табуретке и без спинки. Теперь спасать может только широкий пояс. У меня внутри он еще выложен собачьей шерстью. Конечно дискомфортно и колется, но зато жить можно!
Это в замыслах? Или уже есть?
Уже есть. Не выкладываю, поскольку сейчас кроме меня оно и не нужно никому. Ты в больнице, Сергей по морю заплывы делает, Алексей пропал куда-то...
Это конечно хорошо по бедности,
Это да... Жду с нетерпением подвига от Сергея :)
Сидишь помногу и малоподвижно. Не исключено, что на табуретке и без спинки.
Нет. Как раз наоборот, от физических нагрузок в несколько направильном положении. На работе частенько приходится коробки/бочки таскать, а позвоночник с рождения имеет дефект - некачественное сцепление трех позвонков. Вот и поехало...
Ладно, еще какие мысли будут по Ориону, пока у меня отпуск?
Error404
05.08.2010, 09:27
По-прежнему хочется AY. :) Ты ведь уже делал недавно в плис-спеке?
По-прежнему хочется AY. Ты ведь уже делал недавно в плис-спеке?
Искажение частоты устроит? ;) АУке надо 6Мгц, могу предложить только 5 или 10.
to Ewgeny7
1. Ты не мог бы рассказать про методику + инструментарий для загрузки(выгрузки) файлов(блоков) памяти через USART. На РОМ-диске есть твои две программы(!) для этих целей, как я понял.
Я пробовал экспериментировать с перекачкой файлов. Процесс сам по себе получается, но достоверности никакой. Поэтому, пока Сергей не совершит "подвиг" - работа через USART, пока, единственный (как мне видится) надежный способ сохранять информацию под ОРДОС.
2. Мне очень хочется, чтобы ты набрался смелости, и разрисовал реальную времянку (с конкретными цифрами) работы шины с внешними портами I/O. Перед твоим отъездом (в отпуск!) мы этот вопрос уже поднимали.
Кроме того, твое видение дешифрации (внешней) портов и, возможно, даже пример схемотехники этого дешифратора(ов) + какой-то порт. Дело в том, что ты в ходе разработки проекта рассказывал столько страстей о "бешенной шине", что теперь я нахожусь в смятении - как к ней подступиться. Думаю, такой ликбез будет "архи важен"!
Вот временные диаграммы Z80 из книги В.Ф.Королева "Микропроцессор Zilog Z*80". Какие отличия у тебя? Только, если можешь, конкретно.
1. Ты не мог бы рассказать про методику + инструментарий для загрузки(выгрузки) файлов(блоков) памяти через USART. На РОМ-диске есть твои две программы(!) для этих целей, как я понял.
Я пробовал экспериментировать с перекачкой файлов. Процесс сам по себе получается, но достоверности никакой. Поэтому, пока Сергей не совершит "подвиг" - работа через USART, пока, единственный (как мне видится) надежный способ сохранять информацию под ОРДОС.
Тут всё просто как три рубля.
Программа TRANS(MIT) отправляет 64 килобайта данных с диска С на ПЦ. В качестве приемного терминала используется встроенный терминал программы CodeVision, дистрибутив которой я выкладывал. Скорость передачи не настраивается и равна 38400. В настройках терминала CodeVision выбирается скорость 38400, без контроля, терминал TTY. Запускаем на терминале прием данных кнопочкой RECEIVE, указываем имя файла .BIN, затем запускаем прогу TRANS на Орионе. Принятый терминалкой файл должен быть ровно 65536 байт.
Программа RECEI на Орионе выполняет прием данных с ПЦ и размещает их также на диск С. Размер блока так же равен 65536 байт. Запускаем RECEI на Орионе, затем в терминалке жмем кнопку TRANSMIT и указываем файл .BIN для передачи на Орион. Всё. При успешном приеме Орион вернет управление в ОрДОС/VC.
2. Мне очень хочется, чтобы ты набрался смелости, и разрисовал реальную времянку (с конкретными цифрами) работы шины с внешними портами I/O. Перед твоим отъездом (в отпуск!) мы этот вопрос уже поднимали.
Я могу нарисовать тайминги применительно к захвату шин видеогенератором и РОМ-Диском. Как реально работает процессор на шинах - неизвестно, поскольку он является софтядром, а значит - работать в точности как реальный Z80 - не обязан. Информации о таймингах его шин нету.
---------- Post added at 13:25 ---------- Previous post was at 13:11 ----------
Можно только предположить, что тайминги в общем соответствуют реальному процессору.
Поэтому селект внешних устройств должен производиться по адрес+М1_n+IORQ.
Внешние регистры должны защелкивать информацию по заднему фронту WR.
Информацию с шины данных процессор защелкивает по заднему фронту своего же сигнала RD. Вмешательство видеогенератора на процесс чтения не влияет, поскольку этот фронт "отодвигается" путем задержки тактового сигнала.
В общем, надо банально пробовать, диаграммы и рассуждения не помогут.
Error404
05.08.2010, 14:10
С мобилки не могу цитировать. :)
5 наверное устроит. А вариант 20/3 (6,6) возможен? Экспер-но выбрать что лучше звучит.
5 наверное устроит. А вариант 20/3 (6,6) возможен? Экспер-но выбрать что лучше звучит.
А если частоту помножить, а потом поделить? (20*3/10=6 или 10*3/5=6 или 5*6/5=6)
АУке надо 6Мгц
В Вашей реализации AY в ПЛИС 6 МГц соответствует примерно 1,77 Мгц на реальном AY или как?
А если частоту помножить, а потом поделить? (20*3/10=6 или 10*3/5=6 или 5*6/5=6)
На п/п не предусмотрена обвязка для работы PLL. Можно только попробовать его запустить, результат неизвестен.
В Вашей реализации AY в ПЛИС 6 МГц соответствует примерно 1,77 Мгц на реальном AY или как?
Чорд его знает. Я использовал готовый модуль (широко известный) YM2149.
Что то они сильно отличаются от нарисованных в даташите и наблюдаемых на реальном проце.
Возможно это более реальные диаграмы
По крайней мере работать над музыкой начал. Ваяю DAC ШИМ 8=>1.
Использую ранее опробованный мною принцип заполнения "строки" из 256 бит "единицами" в соответствии с поданным числом. Есть у кого-нибудь рекомендации по поводу частоты "строк"? Верен ли принцип, что больше - не хуже, а только лучше?
---------- Post added at 17:07 ---------- Previous post was at 16:11 ----------
Заработало...
Частота дискретизации, так сказать, 20 000 000 / 256 = 78кГц.
Вроде как неплохо.
---------- Post added at 17:11 ---------- Previous post was at 17:07 ----------
Заработало в смысле DAC а не АУ :)
Пишем в ячейку F76A число, на выходе ПЛИС замеряем напряжение.
При FF получаем 3,26в, при 4E - 1.0в, при 00 - соответственно 0в.
---------- Post added at 18:15 ---------- Previous post was at 17:11 ----------
Бэмссс...
Превышение лимита на LE 111%, на ячейки RAM - 109%.
По-русски говоря, AY не влез в ПЛИС. Отбой.
Error404
05.08.2010, 21:16
Сколько ле занимают крайние доработки пзу и клав-ры? Реально вынести это в модуль и по желанию менять на модуль AY?
Удалив один из мониторов, получим сободные ячейки RAM. Продолжив компиляцию есть небольшая вероятность что оптимизация впихнет таки всё в ПЛИС. Если нет, то нужно будет по сусекам выбирать "лишнее".
---------- Post added at 23:39 ---------- Previous post was at 21:56 ----------
Выдрал из проекта второй монитор, RS-232, сканкоды и префиксы клавиатуры, все прерывания кроме INT50, чтение системных регистров, что-то там еще...
Впихнулось. Готовлюсь к запуску :)
---------- Post added at 23:44 ---------- Previous post was at 23:39 ----------
Забавное звучание! Мне понравилось! :v2_walkm:
Опробовал на BallBreaker. Какие еще игрушки у нас есть с AYкой? :v2_rolley
Error404
06.08.2010, 08:38
Rs232 бы впихнуть... :) . На моей mylivepage страничке есть архив с кучей муз файлов
Stm, asm. Проигрыватель - Unipl28.com
Rs232 бы впихнуть...
USART занимает около 5% места на ПЛИС. Невпихуемое не запихачить :( Буду пробовать, но скорее всего не получится.
Алексей пропал куда-то...Я наблюдатель... Большую часть времени строю гараж.
Послеотпускной апдейт проекта - версия 1.10.Где лежит?
Насчет разъема RS-232 - я специально искал именно "папы", ибо так написано было в спецификации с комплектующими. Кроме того, нуль-модемный кабель как раз должен быть с двумя "мамами" на концах.
А что их искать?http://www.chipdip.ru/product0/38071.aspx Как грязи...
А что распаивается: "папа" или "мама" - определяет Главный конструктор.Папа на плате - это Стандарт для RS232 (см. любое устройство с RS232 кроме модемов). А кабель - стандартный нуль-модем. Не надо изобретать велосипед!
А что их искать?
Не поверишь, нету их в питерских чип-дипах.
версия 1.10 в аттаче.
А я продолжаю борьбу с rs232 в версии 1_AY. Все оптимизаторы выкрутил до предела, убрал все "свистелки и перделки", что только можно убрать из проекта.
Не хватает 52 ячейки, хоть убейся. Даже убрал счетчик INT50 (сейчас прерывания от кадрового счетчика 56гц)... :v2_confu:
Извиняюсь, обновил вложение.
Нашел досадную ошибку, исключающую вывод данных на внешние порты :(
Исправил.
Выложу пожалуй вариант for fun со встроенным AY-сопроцессором.
Из проекта удалено всё "лишнее", т.е. он пригоден для игр и музплееров. "Профессиональных наворотов" там нет, также нет USART, к сожалению.
Звук с AY берем с ноги 29 альтеры. Можно через конденсатор микрофарад так 10 припаять на штатный выход звука (биппер). Серьезно этот вариант не тестировался.
Error404
06.08.2010, 21:38
Жаль, что к варианту классик+Ay не лезет Rs232 - это все, что мне хотелось бы. Может, подрезать Т80? Напр, вырезать все относящ к busreq?
Напр, вырезать все относящ к busreq?
И не надейся, оно и так не входило в проект :)
Всё что лишнее - уже убрано.
Переделываю проект под ТВ. Усё сделал, долечиваю режим 10Мгц.
Так! Надоели "самоволки"! "Демобилизовался" раньше - просто сил больше нет торчать еще и выходные! Начнем эксперименты...
Обновление 1.09. Клавиатурное.
Изменения в портах. Ногами сильно не пинайте, после отпуска номера скорректируем.
Уже есть и 1.10 обновление! Может быть ты черканешь небольшое эссе насчет портов и подробностей работы клавиатуры? Кроме того уточни, какие клавиши что переключают, применительно к "1.10". А лучше - дополнить "Arhitektura_Orion-2010".
Ладно, еще какие мысли будут по Ориону, пока у меня отпуск?
У меня желания скромнее, чем у Сергея:
1. Ввести регистр псевдоцвета. Это уже было в Орион-ПРО - порт 0FCh. См."прицеп" из книги "Орион-ПРО". Наличие этого регистра позволяет не использовать под цвет страницу 1 для системных программ (Нортон, Ави и т.д.), да и др. программам, которым цвет ни к чему.
2. Я бы оставил DAC ШИМ 8 разрядов. Он позволит элементарно воспроизводить WAV-файлы. При наличии SD и HDD Орион может использоваться как плеер!
Я могу нарисовать тайминги применительно к захвату шин видеогенератором и РОМ-Диском. Как реально работает процессор на шинах - неизвестно...
А что, система проектирования не имеет свой монитор, разрисовывающий тайминги проекта?
Тут всё просто как три рубля...
Разобрался - все работает. Споткнулся на "добавлять LF на прием, на передачу". Казалось бы мелочь, а сразу и не сообразил.
Кроме того, что-то не помню, чтобы ты выкладывал CodeVisionAVR.
И еще. Если с AVR не работаешь, то проще использовать программу-терминал для перекачки файлов в/из Ориона-2010. Много чего перепробовал и остановился, пока, на PComm Lite http://www.moxa.com/support/download.aspx?d_id=1083. Там набор из трех утилит, но нам нужен только PComm Terminal Emulator. Если у кого будут проблемы с настройкой утилиты - помогу. А вообще там все примитивно.
Следует заметить, что проблема с подбором терминальной программы заключается в том, что необходим беспротокольный режим передачи/приема байт, а это есть не у все терминальных программ. Было бы классно, если б нашелся патриот Ориона и написал специально терминальную программу. Конечно, она будет очень простенькая, и сложность будет, пожалуй, только в том, чтобы не забыть просадить драйвер сом-порта.
Переделываю проект под ТВ. Усё сделал, долечиваю режим 10Мгц.
Я так понял, он будет применим для нашей печатки? Если так, то он должен быть один к одному с VGA, и различаться только типом видеовыхода (естественно, смеситель видео придется навешивать дополнительно другой). Тогда будет класс!
Так! Надоели "самоволки"! "Демобилизовался" раньше - просто сил больше нет торчать еще и выходные!
Одобрямс! :)
Уже есть и 1.10 обновление! Может быть ты черканешь небольшое эссе насчет портов и подробностей работы клавиатуры? Кроме того уточни, какие клавиши что переключают, применительно к "1.10". А лучше - дополнить "Arhitektura_Orion-2010"
Номера портов я указывал, изменилось в плане "было 28 - стало 20, 38 - 30, 48 - 40", в общем, меньше на 8. Мне было нужно занять сразу "строчку" в дампе памяти, восьми ячеек не хватало. Теперь доступно по 16.
Клавиши функциональные не изменились, так и осталось -
F8 - мониторы
F9 - страницы РОМдиска
F10-F12 - турборежимы
Scroll Lock - сброс.
Добавилось для употребления цифровое поле справа.
1. Ввести регистр псевдоцвета. Это уже было в Орион-ПРО - порт 0FCh. См."прицеп" из книги "Орион-ПРО". Наличие этого регистра позволяет не использовать под цвет страницу 1 для системных программ (Нортон, Ави и т.д.), да и др. программам, которым цвет ни к чему.
Можно.
2. Я бы оставил DAC ШИМ 8 разрядов. Он позволит элементарно воспроизводить WAV-файлы. При наличии SD и HDD Орион может использоваться как плеер!
Нужно.
А что, система проектирования не имеет свой монитор, разрисовывающий тайминги проекта?
Имеет. На начальной стадии проекта, когда система точно знает что будет считываться процессором с шины данных. Позже, когда вводится ПЗУ, симулятор уже не может знать как будет работать процессор и просто исключает его при симуляции. Как вариант, можно задать симулятору что процессор всегда читает FF, тогда мы получим довольно правноподобную картинку с циклами чтения и записи. Но ТОЛЬКО ПАМЯТИ, а не внешних устройств.
Кроме того, что-то не помню, чтобы ты выкладывал CodeVisionAVR.
Выкладывал. Когда мы отлаживали USART. Недавно мне пришло письмо, что файл был удален с файлсервера, поскольку его больше никто не качает.
Я так понял, он будет применим для нашей печатки? Если так, то он должен быть один к одному с VGA, и различаться только типом видеовыхода (естественно, смеситель видео придется навешивать дополнительно другой). Тогда будет класс!
Да. Я закончил "конвертацию" под ТВ. Работу смотрел на ТВ, банально замкнув 1,2,3,14 контакты VGA-разъема между собой и подав их на композитный видеовход ТВ. Вариант с "переключаемым кнопочкой ТВ/VGA" скорее всего не прокатит, изменений многовато.
---------- Post added at 14:15 ---------- Previous post was at 14:14 ----------
А лучше - дополнить "Arhitektura_Orion-2010".
http://orion-2010-support.narod.ru/Arhitektura_Orion-2010.doc
Выложу пожалуй вариант for fun со встроенным AY-сопроцессором.Звучит классно!
Надо брать камень пожирнее и не выделываться.
Надо брать камень пожирнее и не выделываться.
Полностью согласен. "Циклон 2" типа EP2C5T(Q)144, и запихать туда хоть черта в ступе и с бабой ягой и нормальными шинами расширения. Возьмешся до(пере)развести?
Рисуй! Правда я после 20-го уеду в отпуск. Прочь от моря :)
Рисуй! Правда я после 20-го уеду в отпуск. Прочь от моря
Хорошо, до конца твоего отпуска нарисую.
Надо брать камень пожирнее и не выделываться.
Полностью согласен. ...и запихать туда хоть черта в ступе и с бабой ягой...
Ну, вот! Не успели довести до ума один вариант - уже хватаемся за другой. Это называется "поскакушки"! Честное слово - как дети с игрушками! Пока что сделана только первая железка (совсем не обкатана начинка), которую и "одеть-то" не успели, проверить: реально работает то, что "нагородили" - уже новые планы. А эту плату куда? Коту под хвост, только из-за того, что нужен частный случай - "AY"?
Я наперед знаю, какие аргументы вы мне будете приводить. Мужики! Это детский сад..., а не группа разработки.
1. Ввести регистр псевдоцвета.
Ввел. :)
2. Я бы оставил DAC ШИМ 8 разрядов.
Оставил :)
В результате ловите версию 1.11.
На нашем сайте обновлен мануал по Ориону. Там обращаем внимание на порты связанные с PS/2 клавиатурой, обновилось описание.
Добавлены описания DAC PWM и псевдоцвета.
---------- Post added at 15:02 ---------- Previous post was at 14:33 ----------
pvlad, как успехи с обновлением прошивок?
Версия TV_1.11. Повторяет функционал VGA_1.11.
Толкового смесителя еще не придумал. Впрочем, на СКАРТе должно смотреться нормально.
Распиновка -
1-Blue
2-Green
3-Red
13-sync (positive)
14-sync (negative) на всякий случай.
Если качество изображения не важно, можно просто соединить вместе 1,2,3,13 контакты и подать сигнал на "колокольчиковый" вход ТВ не забыв также подключить "землю" с корпуса VGA-разъема Ориона.
Евгений, надо сделать файл RevisionHistiory. Ибо запутаться легко уже.
Евгений, надо сделать файл RevisionHistiory. Ибо запутаться легко уже.
Ты думаешь, я помню что там было раньше?
Что-то постоянно добавляется, один багфикс был с девятой на десятую...
Можно начать с Одиннадцатой версии если это столь необходимо.
На нашем сайте обновлен мануал по Ориону.
Что-то не могу сообразить в каком месте находится.
Кроме того, ты мне не ответил на письмо. Я прав с векторами?
...как успехи с обновлением прошивок?
Пока не пробовал... На ноутбуке нет LPT-порта (но есть СОМ!) - нужно ехать в Москву и купить LPT-PC Card (PCMCIA). А сейчас ехать в Москву - проще повеситься. Это у вас там комфортная погода, а у нас - ад! Вот и оттягиваю удовольствие. Да еще больница... Завтра выхожу на работу - на неделе попробую на каком-нибудь старом декстопе, где есть LPT-порт, поставить Quartus Programmer.
Версия TV_1.11. Повторяет функционал VGA_1.11.
Очень хорошо, что ты сделал совместимую TV-версию - это очень важно. Но сопровождать параллельно две ветки будет сложно, да и вряд-ли это актуально в данный момент. Вот есть эта версия - и достаточно у кого чешутся руки посмотреть. Нам надо довести до ума VGA-версию, а затем на базе ее уже сделать - TV-версию. После этого можно поставить точку с этим вариантом - он сможет жить и без нас.
Я почему так настроен довести ее до ума? Эта плата самый дешевый и простой вариант - дешевле и проще не сделать. Если еще довести до ума саму плату (и документацию!), чтобы ее мог спаять простой смертный, то может получиться хороший набор-конструктор. Ты над этим не задумывался?
---------- Post added at 23:15 ---------- Previous post was at 23:11 ----------
Ты думаешь, я помню что там было раньше?
Что-то постоянно добавляется...
К сожалению бывает и так: ЧТО-ТО появляется, ты считаешь что ЭТО есть, а потом выясняется, что ЕГО уже нет - почему-то выбросили. Приходится идти на повторный раунд!
Кроме того, ты мне не ответил на письмо. Я прав с векторами?
Я только сейчас увидел письмо. Я же говорил, что почтовый ящик для меня - дело десятое ;)
Кстати, вектора прерывания как раз имеют D0="1". Вектор FF - вообще главнющий вектор в восьмибитках.
Но сопровождать параллельно две ветки будет сложно, да и вряд-ли это актуально в данный момент.
Трудности я беру на себя. Мне ГОРАЗДО удобнее работать с ТВ-версией. Можно считать, что я ее делал для себя, любимого :)
Если еще довести до ума саму плату (и документацию!), чтобы ее мог спаять простой смертный, то может получиться хороший набор-конструктор.
А это не конечная ли наша цель? Насколько помню, вроде как да.
Я только приветствую любую помощь по всем вопросам, с документацией и софтом - в первую очередь.
Приходится идти на повторный раунд!
Ну, такого криминала вроде еще небыло :)
Да, Владислав, над письмом поработаем завтра, сегодня уже время вышло.
Error404
09.08.2010, 00:29
Надо бы слить исходники обоих вариантов (вга/тв) в один. Наверняка vhdl умеет условную компиляцию (как у препроцессора в С: define, ifdef...else...endif)?
Надо бы слить исходники обоих вариантов (вга/тв) в один. Наверняка vhdl умеет условную компиляцию (как у препроцессора в С: define, ifdef...else...endif)?
Умеет. Я хочу вообще сшить оба варианта в одну прошивку. Переключаться будем кнопочкой.
Error404
09.08.2010, 09:35
А кнопка не сожрет кучу столь дефицитных ЛЕ? И АУ (и может еще что) тоже бы держать в общем проекте, временно выключенным из компиляции по ifdef - а то сгинет среди релизов. :)
А кнопка не сожрет кучу столь дефицитных ЛЕ?
штук 10 сожрет. Но это не страшно.
И АУ (и может еще что) тоже бы держать в общем проекте, временно выключенным из компиляции по ifdef - а то сгинет среди релизов.
Лень мне, но добавлю :)
---------- Post added at 10:46 ---------- Previous post was at 10:07 ----------
Что-то не могу сообразить в каком месте находится.
Тута (http://orion-2010-support.narod.ru/Arhitektura_Orion-2010.doc)
Частично внес изменения, предложенные тобой.
Я только сейчас увидел письмо. Я же говорил, что почтовый ящик для меня - дело десятое
1. Когда тема очень важная - я не люблю пользоваться личкой. В личке не остаются (возможно на этом форуме я еще не разобрался?) копии отправленных писем - сложно отслеживать историю переписки. Поэтому, пожалуйста смотри за почтой.
2. Мне кажется, что ты бегло просмотрел мое письмо по диагонали, если ошибки, на которые я акцентировал внимание, вновь остались.
Кстати, вектора прерывания как раз имеют D0="1". Вектор FF - вообще главнющий вектор в восьмибитках.
"Борис! Ты не прав!" Вопрос не в том кто "главнющий". В письме я прицепил картинку, объясняющую принцип работы маскируемых прерываний Z80 по моде-2. Ниже я прикладываю картинку обложки книги, откуда я взял эту инфу, а также четыре страницы описания из этой книги. Если этого не достаточно, то могу представить дополнительно еще десяток официальных документов Zilog.
Мне ГОРАЗДО удобнее работать с ТВ-версией. Можно считать, что я ее делал для себя, любимого
Если возможно, то включи и меня в число "любимых".
Я только приветствую любую помощь по всем вопросам, с документацией и софтом - в первую очередь.
Я уже говорил, что берусь (да собственно и уже начал) довести документацию (при условии, что будешь активно помогать!),если уж не до варианта книги, то хотя бы приличной большой статьи (понимаешь куда клоню?).
Для этого мне необходимо из тебя выпотрошить максимум достоверной информации. Думаю делать это через форум не серьезно - только народу голову морочить, да и крайне неудобно. Придется это делать через email или ICQ.
Блин! Какой-то глюк - прицеп весь оторвался!
2. Мне кажется, что ты бегло просмотрел мое письмо по диагонали, если ошибки, на которые я акцентировал внимание, вновь остались.
Влад, на сайте лежит документ поновее, с новыми пунктами (и обновленными старыми), с другой раскладкой портов относительно PS/2. Поэтому за основу надо брать его. Твои пожелания (в письме) учел, сейчас буду разбираться.
В письме я прицепил картинку, объясняющую принцип работы маскируемых прерываний Z80 по моде-2.
Я убился открывавши файл .psd... Так и не открыл. Фотошопа у меня нет.
Если этого не достаточно, то могу представить дополнительно еще десяток официальных документов Zilog.
Ладно. Как скажете.
Если возможно, то включи и меня в число "любимых".
Дык переходи на телевизор :)
Придется это делать через email или ICQ.
Хорошо. Я буду поглядывать в почту. Моя аська также будет включена. Пиши :)
Влад, на сайте лежит документ поновее...
Спасибо, скачал, прочитал - медленно, но есть прогресс.
Так вот, я об ошибках, которые были выделены красным цветом в моем письме. Только два примера (это все равно не исправлено!) из документации:
"D0 - блокирует порты F400 - FB00, оставляя только 18....FB как I/O. Вся область памяти F400-F7FF становится доступна как ОЗУ."
18 - я выделил (в письме!) красным цветом, чтобы обратить твое внимание: у нас сейчас, реально, есть такой порт?
"Как дополнение, опишу работу сигнала fullram (FA(5)) - блокирует порты, проецируемые на память, отключает ПЗУ из линейки адресов, для записи/чтения доступен весь диапазон адресов..."
FA- я тоже выделил красным цветом, спрашивая: ты не ошибаешься? Может быть разговор идет о FB, где действительно D5=fullram?
Ну, и так далее по тексту моего письма...
...твои пожелания (в письме) учел, сейчас буду разбираться.
Я так понял, это насчет векторов прерываний?
Хочу спросить честно, в лоб (прости старика за скверный характер): ты реально проверял работу всего этого механизма прерываний, где используется mode2? Т.е. написал программульку, разместил вектор перехода в "FF" и... все заработало? Или это было сделано, основываясь на теоретических познаниях? То, что ты запускал Синклеровские игрушки, еще ни о чем не говорит - Спектрум не использует прерывания в режиме mode2. У него вообще, достаточно упрощенное использование прерываний.
Я убился открывавши файл .psd...
Виноват. Прошляпил и прицепил не то. Я в Фотошопе, к картинке, добавлял адреса наших векторов, чтобы было более наглядно.
Дык переходи на телевизор.
Сейчас мне удобнее работать с монитором VGA, но потом, в задуманном проекте на базе Ориона, будет только телевизор.
Хорошо. Я буду поглядывать...
Да нет проблем! Я могу всю эту "кухню" по отработке документации, вести и на форуме. Будем народ развлекать...
ты реально проверял работу всего этого механизма прерываний, где используется mode2? Т.е. написал программульку, разместил вектор перехода в "FF" и... все заработало?
Немножко напрягши склероз, вспоминаем о тестовой программке написанной Сергеем. Она проверяла работу одновременно INT50 по вектору FF и USART по вектору FD. Странно, конечно, но она работала и на реале и в эмуле ;)
Спектрум не использует прерывания в режиме mode2.
Ооо!!! Новая новость! :)
Спектрум использует в большинстве ПО именно IM2. На нем вешается музыка как правило. Чуть реже - заодно и графика.
Ну, и так далее по тексту моего письма...
Верно, очепяток там хватает :(
Сижу, вычитываю. Вчера не смог, ScorpEvo'й занимался (второй проект).
Немножко напрягши склероз...
Ты можешь мне выслать исходник этой программули. Я хочу сам повозиться. Благо теперь есть на чем.
В интернет-фирме заказал LPT-PCMCIA адаптер. Без него у меня геморой с прошивкой Альтеры. Заказ приняли, а вот когда исполнят (и исполнят - ли?) - молчат стервеци. Похоже, на складе нет - будут заказывать где-то. Ты не мог бы пошарить по фирмам в С-П. Может у вас там реально в наличии есть?
Ооо!!! Новая новость!
Я не спекирумист, чтобы взять это утверждение со своего опыта. Разбираясь с векторами, и набирая статистику по различным источникам,
в какой-то книжке по Спектруму вычитал это утверждение. Если это принципиально (для меня, орионщика, - нет!), могу вернуться и поискать.
Ты можешь мне выслать исходник этой программули.
В аттаче.
в какой-то книжке по Спектруму вычитал это утверждение.
Забудь про книжки по спектруму. Современные знания о природе вещей во многом не соответствуют первобытным данным, выбитым на скале первобытным человеком :)
Влад, ты получил по почте новый файл мануала?
На Спектрумах аппаратного вектора нет как такового. Источником вектора является сама ненагруженная шина данных, на которой благодаря "подтяжке" резисторами находится как раз FF. Это позволило достаточно просто организовать IM2. Воспроизведение музыки на спектрумах как раз и завязано на второй режим, когда обработчик прерываний обслуживает очередной "квант" звука, а далее передает управление уже в стандартный обработчик, вызываемый по IM0 (обслуживающий клавиатуру).
---------- Post added at 11:41 ---------- Previous post was at 11:28 ----------
Готовлю версию 1.12. Здесь я исправил мелкие недогляды, и "прошерстил" работу с внешними устройствами. Сигнал csf76 заменил на csf6, соответственно сделал преселект этого адресного диапазона. Давайте для начала примем, что все внешние устройства на слоте расширения адресуются как порты F60x (30-3F). Пока так, ибо расширять диапазон пока несколько затруднительно и туманно.
Буфера на слоте расширения работают следующим образом - адреса и управлящие сигналы идут всегда с Ориона на слот, данные же идут чуть сложнее. Когда процессор выдает сигнал RD='0' и (IORQ='0' или CSF6_n='0') то буфер данных "разворачивается". В противном случае данные идут с Ориона на слот. Обратите внимание, что F60x доступны для работы как I/O и как ячейки памяти! Сделал это просто для удобства отладки.
Error404
10.08.2010, 14:03
Слот расширения должен позволять подключение не только вв55 принтера (порт f60x, на нём же и ide), но и стандартные порты расширения диапазона f7xx
Забудь про книжки по спектруму.
Так-то оно так, но это переводная книга. Боюсь, вы господа-синклеристы, со своими клонами слишком далеко отошли от оригинального ZX и теперь считаете, что так и було! (см.вложение)
На Спектрумах аппаратного вектора нет как такового.
Совершенно верно! Прерывание INT1 жестко привязано к вектору 0038 и плевать, что на шине.
Влад, ты получил по почте новый файл мануала?
Получил, но на работе не дают сосредоточиться. Вечером, дома разгоню свой народ спать и сяду внимать...
Посмотрел программульку. Структура и логика мне понятна. В свое время, мне практически не пришлось поработать с мнемоникой Z80, поэтому сейчас надо посидеть над командами Z80. Мне самому интересно - почему она работает!
Так-то оно так, но это переводная книга. Боюсь, вы господа-синклеристы, со своими клонами слишком далеко отошли от оригинального ZX и теперь считаете, что так и було!
Понятно, ВАПРИНТ. Хорошие книжки печатал. Но не всегда верные.
Точнее, спектрумы оригинальные всегда могли использовать IM2 (если размер памяти 48кб и более). просто на тот момент этот выкрутас с прерыванием был вероятно неизвестен забугорным программистам, ибо в официальных доках не упоминался. Но для русских чтение инструкций всегда было делом ненужным :)
поэтому наши сначали делали, а потом уже узнавали что это сделать невозможно :)
---------- Post added at 15:46 ---------- Previous post was at 15:39 ----------
Совершенно верно! Прерывание INT1 жестко привязано к вектору 0038 и плевать, что на шине.
Совершенно верно. И при этом шина данных подтянута к +5в. А в режиме ИМ2, когда проц пытается считать вектор с шд, оттудова естесственно считывается FF.
Слот расширения должен позволять подключение не только вв55 принтера (порт f60x, на нём же и ide), но и стандартные порты расширения диапазона f7xx
Порт F7xx чисто системный и внутренний порт, и по логике он не нужен (может быть я и не прав!) на системной шине. Все что он дешифрирует - должно находиться внутри ПЛИС. Я понимаю, что ты имеешь ввиду под "стандартные порты расширения диапазона f7xx" - необходимость еще подключить часы и муз.проц. Но эти вещи должны быть внутри ПЛИС.
Я абсолютно не против создания Ориона-2010 нового поколения, где поместится все. Я за то, чтобы этот проект довести до логического конца, и оставить "потомкам" готовое изделие - в меру дешевое и не сложное. А уже потом, используя накопленное и отработанное (ведь в новый проект войдет не менее 60-70% этого проекта) взяться за новый проект. Надо отдавать себе отчет, что все равно придется разбираться с векторами, осваивать PS/2 и писать новый драйвер для нее, переделывать Монитор и т.д. Все это можно сделать и на этой платке. А если все, что я перечислил окончиться обычной болтовней (а такое вполне может быть - пока нас только двое, кто согласился что-то написать!), то незачем попусту тратиться и щеки надувать?
Поэтому для общего применения надо выводить CS_F6, а для тебя можно сделать спец версию, с тем, чтобы на плате расширения ты смог повесить дополнительные прибамбасы (если не заленишься взять в руки паяльник!). Ты сможешь уже сейчас заниматься в своей любимой среде "обитания", а мы подождем будущее...
---------- Post added at 15:59 ---------- Previous post was at 15:54 ----------
Но для русских чтение инструкций всегда было делом ненужным
У меня нет комментариев!!!!! Не в бровь, а в глаз!
А в режиме ИМ2, когда проц пытается считать вектор с шд, оттудова естесственно считывается FF.
Не согласен. Когда буду готов прошиваться (если к тому времени к тебе не придет просветление!), сделаешь мне спец.версию по "моим" векторам, и я начну эксперименты.
РС. Стоп! Возможно он и читает FF, но так как самый младший бит не учитывается, то получается FE, и этот фокус проходит. Но так делать безграмотно!
РС. Стоп! Возможно он и читает FF, но так как самый младший бит не учитывается, то получается FE, и этот фокус проходит. Но так делать безграмотно!
Кхм... Сергей, объясните товарищу откуда берется второй байт...
---------- Post added at 16:27 ---------- Previous post was at 16:16 ----------
"IM 2".
~~~~~~~~
Путем установки "IM 2" Вы можете использовать прерывания
для Ваших собственных целей. Тут уже все зависит только от Вас.
С помощью "IM 2" возможно менять вектор прерываний как про-
граммно, так и аппаратно.
Режим "IM 2" сложен. При получении прерывания по линии
"INT" процессор запоминает адрес следующей команды программы на
машинном стеке, затем просматривает ячейку, указанную шиной
данных плюс 256, умноженное на содержимое регистра "I" и пе-
редает управление к адресу, содержащемуся в этой ячейке плюс
(256, умноженное на содержимое следующей ячейки). Вообще-то,
считается дурным тоном иметь бит ноль на шине данных активиро-
ванным в качестве указателя в режиме "IM 2", т.к. указатель
всегда будет стартовать с адреса, пронумерованного четным чис-
лом, но, к сожалению, в "СПЕКТРУМЕ" нет выбора.
ПРИМЕР 1.
В регистре "I" содержится число 10 (0AH), а на шине данных
выставлено число 255 (0FFH). При этом :
10*256=2560
2560+255=2815.
Этот адрес находится в ПЗУ "СПЕКТРУМА", поэтому точка, к
которой будет сделан переход, возьмется из содержимого адреса
2815+(256, умноженное на число по адресу 2816). В ячейке 2815
содержится 34, а в 2816 - 128. В этом можно убедиться с помощью
оператора "PEEK". Таким образом, адрес перехода равен :
34+(256*128)=32802.
ПРИМЕР 2.
Регистр "I" содержит 200, шина данных 255.
200*256=51200
51200+255=51455.
Переход будет сделан по адресу, который Вы поместите в
ячейки 51455 и 51456.
Гораздо проще все выглядит в шестнадцатиричном виде. Тут
уже не надо вычислять адрес, откуда брать точку для перехода.
Просто шина данных формирует младший байт адреса, а регистр "I"
- старший байт. По этому адресу берется точка перехода на про-
грамму обработки прерываний, где опять-таки данный адрес со-
держит младший байт, а следующий за ним - старший байт адреса
программы.
Все это можно представить, как косвенную адресацию по
содержимому регистровой пары, причем регистровую пару на этот
раз составляет шина данных и регистр "I". Это своего рода
команда CALL (I+ШД). Но, т.к. такой команды не существует, и
она не может разместить собственный адрес возврата, то адрес
после последней выполненной команды кладется процессором на
машинный стек, и к нему будет осуществлен возврат после выпол-
нения программы обработки прерываний.
Как Вы видите, программное изменение вектора прерываний
задается с помощью перезаписи регистра "I", а аппаратное -
благодаря шине данных.
Обычно в момент прерывания на шине данных содержится - 255
( 0FFH ), но если Вы подключите внешнее устройство, изменяющее
в этот момент состояние шины данных, то Вы можете, не переписы-
вая регистр "I", менять в небольших пределах адрес программы
обработки "IM 2". Порой такое необходимо при подключении нес-
кольких периферийных устройств, чтобы процессор знал, какое из
них ему обслуживать на данный момент. Вдобавок ко всему, Вы
можете еще перехватывать управление линией "INT" для аппарат-
ного включения или выключения прерываний в необходимый момент
времени. Именно так и делает контроллер дисковода.
Error404
10.08.2010, 21:02
F7xx это дисковод, часы, таймер, мышь - все то, что было подключено и поддержано в 90-х, а не просто какие-то мои более никому не понятные хотелки. Исключать это из компа с именем Орион-хххх - авантюризм, имхо.
Error404, не кипешись. Будет тебе F7 в полном составе. Кроме F762-F76F, разумеется.
Кхм... Сергей, объясните товарищу...
Ну, вот блин! Вместо чтения документации, надо спорить об очевидных вещах, но трактуемых каждым по своему.
Евгений! Я прекрасно знаю механизм работы прерывания Z80, в том числе и конкретно - IM2. В своей библиотека, мне кажется, я встречал этот текст, и могу ответить твоими же словами в первой части:http://zx.pk.ru/showpost.php?p=305397&postcount=358. Действительно, написано столько всякого говна для Спектрума, что встречаются абсолютно противоречивые моменты. Что хочешь, то и бери под свое понятие.
Но я о другом. Мне не очень приятно, что ты не счел нужным открыть файл "Z80-Central-Processor.pdf" (http://zx.pk.ru/showpost.php?p=305150&postcount=349) и на первой странице, в третьем абзаце сверху прочитать:
"В микропроцессорном комплекте Z80 предусмотрено, что периферийные БИС могут выдавать в качестве вектора прерывания только чётные байты (D0=0) - для однозначности адресации ячеек таблицы."
Далее, на следующей странице в графическом виде разрисован сам механизм прерываний IM2, разъясняющий это утверждение.
Я хочу тебя спросить: где аргументация (на основании официальной информации Zilog, а не какой-то блевотины!) в недостоверности приведенной мною цитаты? Вот это?
А мы делали, и считали что так и надо
Мне уже популярно объяснили, что "русские не читают инструкций". Ну, значит я чурка, раз читаю и пытаюсь доказать по "инструкциям"! Сегодня уже поздно искать, а завтра я выложу официальные даташиты Зилка, подтверждающие выше приведенную цитату. Потому, что для меня заявление:"А мы делали, и считали что так и надо" - не аргумент! Извини, caro!
... а не просто какие-то мои более никому не понятные хотелки...Исключать это из компа с именем Орион-хххх - авантюризм, имхо
Что ты сразу кидаешься, как бык на красную тряпку! Я высказал свое мнение, а не решение. Решение мы принимаем коллегиально.
И что я не прав? Все, что ты перечислил не должно быть внутри ПЛИС? Ты что, такой страстный поклонник паяльника, что будешь мудрить все это на рассипухе, в том числе и к этой платке? Ну всем уже понятно, что в эту платку дополнительные прибамбасы не влезают. Она получилась такая, какая получилась. Чтобы даже "одеть" то, что уже наваяли, работы выше крыши! Тогда чего постоянно отмалчиваешься или закипаешь? Что нельзя принимать постоянное участие в конструктивном диалоге?
Мне не очень приятно, что ты не счел нужным открыть файл
Несправедливо. Я его открывал, более того, у меня есть эта книга в электронном виде.
Если ты не заметил, я выделял кусочек строки "В микропроцессорном комплекте...".
Нетрудно заметить, что "комплект" и "процессор" несколько разные вещи. Первое - всего лишь обслуживает второе, и может не использовать всех возможностей.
Механизм IM2 не запрещает использовать FF и FD. О чем я приводил фрагмент книги парой постов ранее.
Мне вообще-то не упёрлось использовать именно нечетные значения, я в первую очередь пользователь. Как железячник я сделаю так, как сочтете нужным вы с Сергеем.
где аргументация (на основании официальной информации Zilog, а не какой-то блевотины!) в недостоверности приведенной мною цитаты?
Если внимательно перечитать "блевоту", то там даже намека нет на "недостоверность" фирменных даташитов. Она не отрицает их. Она дополняет. Орион-2010 архитектурно тоже далеко не шедевр инженерной мысли в смысле соблюдения рекомендаций даташитов. Но русские ракеты летают, а шаттлы взрываются.
Механизм IM2 не запрещает использовать FF и FD. О чем я приводил фрагмент книги парой постов ранее.
Покажи мне это утверждение в даташитах Zilog! Плевал я на книжки домохозяек и кухарок. То, что вы "так делаете, и получается" - я объяснил почему. Да, шина подтягивается на +5 для того, чтобы иметь стабильный FF. Далее, из-за того, что механизм IM2 не воспринимает D0 в векторе, получается из FF ->FE, из FD->FC. И поэтому все работает. Но это не значит, что вектор в действительности должен быть FF и FD. Не нужно заблуждаться.
Все! Спокойной ночи! Больше нет сил спорить...
Несправедливо.
Хаос и анархия... Евгений, никого не слушайте, если устройство отсутствует на шине или не выставляет свой вектор прерывания с шины должно считываться #FF. Точка. Рекомендации зилога на счет четных векторов относятся к устройствам которые выставляют свой вектор прерывания и даны эти рекомендации для того что бы не было наложения адресов для четных и нечетных векторов, например, для вектора #00 будет вызвана процедура адрес (слово - 16 бит) которой храниться в ячейке I*256+0(и +1), для вектора #01 - I*256+1( и +2). Таким образом один из байтов адреса (старший или младший) будет общим для этих векторов. Вот чтоб такого не было зилог рекомендует использовать четные значения векторов. Если используются и четные и нечетные векторы, то их нужно раздавать таким образом чтобы подобных накладок с адресами не возникало...
---------- Post added at 00:11 ---------- Previous post was at 00:07 ----------
Далее, из-за того, что механизм IM2 не воспринимает D0 в векторе, получается из FF ->FE, из FD->FC. И поэтому все работает.
Механизму IM2 как микропрограммному автомату глубоко все равно к чему прибавлять единицу, к I*256+#FE или к I*256+#FF, табличка адресов для IM2 на спектруме всегда размером в 257 байт, т.к. для вектора #FF младший байт адреса береться по адресу I*256+#FF, а старший (I*256+#FF)+1
Механизму IM2 как микропрограммному автомату глубоко все равно к чему прибавлять единицу, к I*256+#FE или к I*256+#FF, табличка адресов для IM2 на спектруме всегда размером в 257 байт, т.к. для вектора #FF младший байт адреса береться по адресу I*256+#FF, а старший (I*256+#FF)+1
Вот такой примитивный принцип расчета адреса ISR придуман для домохозяек. Покажите мне все это в даташитах Zilog! Что за постоянное пережевывание только собственного мнения - "вот я так знаю, значит - это правильно". Такое корявое решение придумал господин Синклер, пытаясь максимально упростить (значит удешевить) схемотехнику своего детища.
Господа спектрумисты! Столько шума, а никаких доказательств нет, нет ссылок на документы - только собственное мнение. Я уже говорил - для меня это не аргумент в споре. Доказательством может служить только ссылка на даташиты Zilog. Все остальное болтовня.
И этот вывод Вы сделали из рекомендации Zilog использовать четные адреса для векторов прерывания? :)
Если бы было так, вектор пришлось бы записывать в ячейки (**FE) и (**FF).
Совершенно верно! В Спектруме стоит оригинальный Z80. Собственно, что Вам мешает посмотреть самому в памяти компьютера (у меня его просто нет!), как записывается в памяти ISR-адрес на прерывание "FF". Если судить по Вашим рассуждениям, то младший байт будет записан по FF, а старший в 00 следующего блока памяти? Что сложно посмотреть - одна строчка на Бейсике?
Попробуйте сделать так, и убедитесь, что программа на SPECTRUMе не заработает.
Спектрум - это не показатель для данного спора. Он такая же самоделка автора-одиночки, как и Орион, только более удачная в коммерческом плане. Господин Синклер так же, как и я мучился с упрощением и удешевлением своей конструкции, придумывая нестандартные решения. Для упрощения, в Орионе, к примеру, фронты подтягивались кондерами. Это неграмотное решение, но приходилось применять его для упрощения схемотехники. Иначе пришлось бы добавлять еще пару корпусов, чтобы развести фронты. А так, кондер сунул и... заработало. Для этого класса устройств - это приемлемо.
А если тупо следовать рекомендации ZILOG для реализации работы прерываний IM2 по четным векторам, надо в схеме компьютера принудительно обнулять бит D0 при чтении вектора прерывания. Думаю, понятно, что никто трезво мыслящий этого делать не станет
Вот как! Значит "тупо следовать рекомендациям Zilog" не для "трезво мыслящих" русских! У нас "свой путь"? Ну, Вы батенька...
Все, господа спектрумисты! Закончили беспочвенный спор, если нет аргументов!
В приложении выдержки из даташит Zilog и Mostek. У кого проблемы с английским - я переведу.
Кстати по поводу документации, которую в 90-ые годы не так то просто было достать.
И что? У меня есть документация на 8080, где на каждом листке написано "Для служебного пользования". Какое отношение это имеет к нашему спору. Вам следовало бы привести в качестве примера не титульную страницу этого антиквариата, а те страницы, где рассказывается о прерываниях. Был бы смысл.
Error404
16.08.2010, 12:57
Я в отпуске на море до 16-го. :) На момент отъезда посылка еще не доехала :(
Первое послеотпускное действие - забрал посылку. Платка смотрится шикарно. :v2_thumb: После работы буду пробовать (на работе нет моника VGA).
После работы буду пробовать
...и не вздумай говорить, что НЕ ПОКАЗЫВАЕТ НА ТВОЁМ МОНЕ!
Перед включением пригрози ему, что я лично приеду и "уговорю" его об ближайший угол :v2_devil:
Error404
16.08.2010, 23:54
Разбираюсь с питанием. Пока не понятно откуда запитаться. :)
У меня вопрос: по схеме из архива http://orion-2010-support.narod.ru/Orion_v1_07.rar не понятно с какого контакта разъема X14 ("питалово дисковод 3,5") идет входное питание на 7805: на разъеме написано +5V, а по логике должно быть +12V.
А для чего нужен джампер j2 (у LM1086), и где он на плате?
не понятно с какого контакта разъема X14 ("питалово дисковод 3,5") идет входное питание на 7805: на разъеме написано +5V, а по логике должно быть +12V.
+12 контакт вообще никуда не идет. +5 идет нормально, на стабилизатор IC11.
А для чего нужен джампер j2 (у LM1086), и где он на плате?
J2 блокирует стабилизатор пятивольтовый IC13. На плате можно рассмотреть "капельку" на месте с надписью "J2". Это не джампер, а перемычка.
Пока не понятно откуда запитаться.
От любой зарядки для сотового телефона, на которой написано "5.0V". Только штекер перепаять
Разбираюсь с питанием.
У меня не было никаких проблем. Нашел старый блок питания от АОНа. Там внутри уже стояла КРЕНка на 5 вольт. Перепаял разъем. Подключил ЖКИ "Самсунг" и клаву. Включил питание - все работает! Сегодня прошил версию 1.11.
Молодец Евгений! Сделал все на совесть, профессионально. Огромное спасибо!
Проблема в другом. Под ОРДОС нет возможности где-то сохранять файлы, при выключении компьютера. "Вешать" батарейки не надежно - никогда не знаешь когда подсунет западло. Пришлось "освоить" USART. Правда, использовать CodeVisionAVR в качестве терминала гиморно, особенно если не работаешь с AVR. Нашел небольшую программулину PComm Terminal Emulator. Очень удобно. Теперь не успеешь и "моргнуть", а диск "С" Ориона уже на РС в виде bin-файла. Не очень удобно - не возможно подгружать файлы, но пока, выход.
Не очень удобно - не возможно подгружать файлы, но пока, выход.
Ну почему - невозможно?
Используй В как рабочий, а С как "перевалочный пункт". На С можно отправить любой файлик .ORD или .BRU. После того как терминалка покажет, что файлик отправлен (Орион при этом будет ждать "продолжения банкета"), просто нажми СБРОС (Scroll Lock). И на диске С появится файлик во всей красе :) Возможно появление "мусора" на С за нужным файлом, но это уже мелочи.
пробная версия 1.12
порт F766:
бит 6 - рулит прерываниями с клавиатуры
бит 5 - переключатель (несбрасываемый) бита 0 векторов прерываний.
запись "1" обнуляет нулевой бит векторов, "0" - наоборот, объединичивает :)
Так сделано намеренно, ибо после включения содержимое регистров равно нулю, а существующему софту требуются нечетные векторы прерываний.
Эксперименты показали, что ZX-игрушки запускаются с вектором FE для INT50. Правда, проверил только две имеющиеся на РОМдиске игрушки.
СР/М с такими векторами работать отказывается и глючит со страшной силой.
Эксперименты показали, что ZX-игрушки запускаются с вектором FE для INT50. Правда, проверил только две имеющиеся на РОМ-диске игрушки.
Какую хорошую новость ты сообщил! Думаю, и остальные игрушки будут работать - принцип адаптации у них одинаковый. Поэтому вводить порт F766(5) мы поспешили.
Евгений, ты уж прости, что морочу голову! У меня к тебе нижайшая просьба: давай оставим векторы как договаривались ранее, т.е. FE, FC, FA. Это позволит вести тестирование старого программного обеспечения по умолчанию - ничего не переключая. Иначе оно не будет оттестировано на новых векторах. Если со временем ситуация окажется "криминальной" - вернемся и восстановим бит переключения обнуления D0. Пожалуйста, поправь версию 1.12 и я ее сегодня прошью. На этом, думаю, надо будет временно успокоиться с версиями и поработать в прикладном плане, если, конечно, Сергей не обнаружит какую-нибудь проблему по своей линии.
СР/М с такими векторами работать отказывается и глючит со страшной силой.
Это не страшно! СРМ у нас под контролем Сергея, и ее, кроме как у тебя, ни у кого более нет. Я тоже жду от Сергея рабочую версию СРМ.
Используй В как рабочий, а С как "перевалочный пункт".
Все, что ты советуешь, я уже попробовал еще вчера. Мусор после загрузки отдельных файлов убирается установкой FF в нужном месте диска - в конце файла. А лучше это сделать еще на РС WinHEX'ом перед загрузкой. Тогда все грузится чисто!
Error404
18.08.2010, 13:13
Только штекер перепаять
В этом и дело. Штеккер есть (Евгений присылал в свое время с Орион-2009 :) ), но он на работе, а я третий день туда попасть не могу - тружусь на сайте у заказчика. Может, сегодня ближе к ночи туда зайду и заберу.
---------- Post added at 13:13 ---------- Previous post was at 13:11 ----------
Я тоже жду от Сергея рабочую версию СРМ.
Не понимаю, все же работало?
И как я понял, новые доработки бита D0 в прерывании IM2 по дефолту (пока не включено в F766) работают совместимо с тем как оно было всегда? Т.е. моих телодвижений не требуется...
И как я понял, новые доработки бита D0 в прерывании IM2 по дефолту (пока не включено в F766) работают совместимо с тем как оно было всегда? Т.е. моих телодвижений не требуется...
Требуются! Порт F766(5) ввели с перепугу, из опасения, что не будут работать игрушки на векторе FE (Главный конструктор высказал предположение без проверки и... акции обвалились!).
Сейчас, оказывается, игрушки работают на векторе FE. Тогда зачем нам узаконивать на Орионе-2010 вектора, которые не стыкуются с даташит Зилог? Спектрумистам деваться некуда - их "стандарт" заложил (вынуждено!) господин Синклер, а нам зачем "резать нос" за компанию? Если игрушки работают на векторе FE, то никаких "переключателей" вводить не будем. Будут "правильные" вектора согласно даташит. Думаю нет большой проблемы в бутлоадере или биосе СРМ (где у тебя инициализируется INT50 в СРМ?) поправить адрес в одном месте и собрать ее заново. Возможно исправление можно внести на уровне дампа.
Ты это можешь сделать?
Error404
18.08.2010, 20:03
Требуются! Порт F766(5) ввели с перепугу, из опасения, что не будут работать игрушки на векторе FE (Главный конструктор высказал предположение без проверки и... акции обвалились!).
Сейчас, оказывается, игрушки работают на векторе FE. Тогда зачем нам узаконивать на Орионе-2010 вектора, которые не стыкуются с даташит Зилог? Спектрумистам деваться некуда - их "стандарт" заложил (вынуждено!) господин Синклер, а нам зачем "резать нос" за компанию? Если игрушки работают на векторе FE, то никаких "переключателей" вводить не будем. Будут "правильные" вектора согласно даташит. Думаю нет большой проблемы в бутлоадере или биосе СРМ (где у тебя инициализируется INT50 в СРМ?) поправить адрес в одном месте и собрать ее заново. Возможно исправление можно внести на уровне дампа.
Ты это можешь сделать?
На FE будут работать только те игры от ZX, в которых область векторов IM2 проинициализирована одинаковой БАЙТОВОЙ (8бит) константой (тогда как целый адрес - это слово 16 бит) - чтобы работать как на FF, так и на FE.
.
Т.е. обработчик дожен быть для такого случая по адресу 1717h или 2121h или ADADh, но ни в коем случае не по адресу 1234h или 4567h и т.п. где младший байт не равен старшему.
.
Я не думаю, что так сделано везде, и что Евгений мог все по-быстрому проверить.
.
В настоящее время я не смогу быстро поправить CP/M, т.к. область под векторами (там обслуживаются 2 вектора - INT50 и RS232) у меня забита кодом, причем код в F-области заоптимизирован донельзя и сдвинуть вектора на байт ниже не выкинув чего-то нужного (что потянет правки в нескольких участках кода) пока не представляю как. А если придумаю, то на эти освобжденные байты у меня уже есть планы, которые пока не реализованы опять же оттого, что нет места либо много надо переделывать.
.
Более того я вообще не считаю хорошей идеей делать ОС, которая не заработает на стандартном Орионе с Z80 только оттого, что у Зилога написано что-то малоотносящеейся к компу на голом Z80 (в отсутствии полного комплекта чипов Z80 для которых может это что-то и решало).
Человек с форума зилога дал ссылку: http://www.z80.info/interrup2.htm
Consequently, contrary to stated documentation, bit zero is /not/ forced to zero, an IM2 interupt jumps to I*256+databus, not to (I*256+databus) AND 0xFFFE. If you want to reply on an even address, you must use hardware to supply an even address.
Error404
18.08.2010, 23:37
В этом и дело. Штеккер есть (Евгений присылал в свое время с Орион-2009 :) ), но он на работе, а я третий день туда попасть не могу - тружусь на сайте у заказчика. Может, сегодня ближе к ночи туда зайду и заберу.
Отчет.
Сходил за штеккером.
Орион работает, Моник Iiyama (что не запускался на 50Гц) теперь пашет на 56Гц кадровой как зверь. :)
Ордос работает, не могу понять как переключать страницы РОМ-диска.
Почему-то не грузится CP/M, разбираюсь...
---------- Post added at 23:37 ---------- Previous post was at 22:42 ----------
Орион работает, домашний моник Iiyama (что не запускался на 50Гц) теперь пашет на 56Гц кадровой как зверь. :)
Но иногда срывается в AutoSetup после которого картинка уезжает за экран влево. :v2_conf2:
Видимо оттого, что работаю с Орионом полностью выкрутив настройки на уменьшение (сжатие по горизонтали) увеличением клока на максимум - и все равно в CP/M (разрешение 480x256) один символ по горизонтали (6 точек) не влезает. Ну это мелочи, терпимо.
Почему-то не грузится CP/M, разбираюсь...
Разобрался: не работает SD-карточка Kingston micro-sd SDC/2G. Может, не работает оттого, что на ней написано "N0214-001.ADOLF" ? :v2_rolley
А Карточка Transcend 1G работает нормально.
В CP/M прогнал speed.com.
Показывает такой рейтинг (в коэффициенте к эталонным 2,5МГц):
F10 = 1.12
F11 = 2.25
F12 = 3.38
Интересно, 3.38 (это чуть менее 10МГц) - это предел?
Как-то странно работает клавиатура: при старте CP/M идет тест памяти, который можно прервать любой кнопкой (там анализируется только "нажато/не нажато что угодно" через диррективу Монитора). Так работает в эмуляторе и так же работает на Орионе-128. Но на Орионе-2010 тест памяти прерывается только кнопкой Enter почему-то. :v2_conf2:
На этом первый прогон закончил ибо завтра с самого с ранья идти зарабатывать на хлеб насущный. В целом доволен как слон. :)
Вопрос на засыпку: как определить версию прошивки ПЛИС?
Вопрос на засыпку: как определить версию прошивки ПЛИС?
У тебя 1.06 RTC.
Интересно, 3.38 (это чуть менее 10МГц) - это предел?
Нет. предел - 4.51, но там будут глюки в СР/М. Разгонимся со временем.
Так работает в эмуляторе и так же работает на Орионе-128. Но на Орионе-2010 тест памяти прерывается только кнопкой Enter почему-то.
Я уже не помню почему, вроде потому, что опрос там ведется не "построчно" а сразу всего поля клавиатуры, пришлось ввести "строку по дефолту" с кнопкой Интер. Иначе работа контроллера невозможна.
Error404
19.08.2010, 08:49
У тебя 1.06 RTC.
Нет. предел - 4.51, но там будут глюки в СР/М. Разгонимся со временем.
Я уже не помню почему, вроде потому, что опрос там ведется не "построчно" а сразу всего поля клавиатуры, пришлось ввести "строку по дефолту" с кнопкой Интер. Иначе работа контроллера невозможна.
Подскажи пожалуйста - в ПЗУ несколько страниц? Не могу найти как их переключать.
Нет, у тебя только одна :(
Сие мой косяк, не ту ПЗУ-ху тебе вставил (оставил). Отправлю письмом.
Человек с форума зилога дал ссылку...
Виталий, спасибо! Это хороший материал!
Похоже фирма Zilog только декларирует и советует использовать четные адреса, но процессор, видимо, сам D0 не обнуляет. Чтобы в этом убедиться, необходимо на макетке спаять оригинальный процессор, пошаговый механизм выполнения программы, нацепить светодиоды на шину данных+адреса, а к шине данных прицепить регистр вектора прерываний. Только в этом случае, пошагово пройдя весь процесс можно однозначно что-то сказать.
Только в этом случае, пошагово пройдя весь процесс
:v2_scare::v2_wacko:
Error404
19.08.2010, 16:23
Нет, у тебя только одна :(
Сие мой косяк, не ту ПЗУ-ху тебе вставил (оставил). Отправлю письмом.
А смысл? :) Оно же программируемое.
Давайте лучше программатор напишем (хотя что до меня, так я и в Willem могу прошить). Я просто думал - правильно ли я делаю выбор страницы ROM (ибо ничего не происходило) - кнопка F9, да?
На выходных буду паять LPT-кабель для прошиватора.
Давайте лучше программатор напишем...
А в версии 1.12 уже доступно программирование флеш РОМ-диска средствами самого Ориона?
А смысл? Оно же программируемое.
Судя по тому, что у меня нету ПЗУ 29С512, оно у тебя. А оно - только 64кб (одна страница).
А в версии 1.12 уже доступно программирование флеш РОМ-диска средствами самого Ориона?
Вроде как всё предполагаемое сделано.
Error404
19.08.2010, 20:40
Судя по тому, что у меня нету ПЗУ 29С512, оно у тебя. А оно - только 64кб (одна страница).
А ведь и верно. :)
Error404, возможно мы будем выставляться на СС'2010.
Как точно назвать СР/М на нашем Орионе? Имею ввиду, точное название (на базе чего, автор адаптации ;) ).
---------- Post added at 23:29 ---------- Previous post was at 22:06 ----------
Уже точно будем.
Error404
24.08.2010, 23:29
Error404, возможно мы будем выставляться на СС'2010.
Как точно назвать СР/М на нашем Орионе? Имею ввиду, точное название (на базе чего, автор адаптации ;) ).
Точнее всего - "Операционная система, совместимая с CP/M 2.2". Происхождение - владимирская разработка по мотивам питерской Альтаир ДОС 1.0 образца 1994 (кажется) года. По мотивам, не более того - в ходе жизни отличий в "нестандартном" стало больше чем сходства.
Точнее всего - "Операционная система, совместимая с CP/M 2.2".
Не катит. Она же вроде как Альтаир ДОС (или Бест ДОС?). Автор адаптации к Орион-2010 вроде как Акимов Сергей? ;) Спроси у него пожалуйста, это он сделал или нет :)
Error404
24.08.2010, 23:44
Не катит. Она же вроде как Альтаир ДОС (или Бест ДОС?). Автор адаптации к Орион-2010 вроде как Акимов Сергей? ;) Спроси у него пожалуйста, это он сделал или нет :)
Альтаир ДОС звучит красивее. Да будет так. :)
Систему адаптировал я, как и разрабатывал в 90-х (собственно поэтому и исходники были). Driver.sys адаптировал и дорабатывал Вадим Власов (с конца 90-х Driver.sys не менялся). Системные программки делали и он и я.
Error404, гидэ инструмент для сохранения диска ОРДОС на SD? ;)
Кто-то там обещался, завтра на выставке показывать...
Ewgeny7, немножко не в теме, но всё же, лучше позже, чем никогда. Вопрос по схемотехнике Ориона2010, конкретнее выхода на SVGA монитор. Зачем нужны данные резисторы и конденсатор (выделены красным). Раньше эта цепь была нужна для вывода изображения через эмиттерный повторитель в схеме с RGB на чёрно-белый монитор. А сейчас для чего она в SVGA осталась?
Этой цепи (да и большей части с транзисторами) на плате уже нет. Есть только три диода и шесть резисторов.
По три резистора на канал цвета, а последовательно с диодом резистор убран?
Error404
28.08.2010, 16:15
Программа для sd пока на стадии разработки концепции: как эта программа должна жить в отсутствии ОС. Собственн по этому там же и терминалка, и пересылка файлов по xmodem. Тогда как в срм я все это давно уже сделал.
...возможно мы будем выставляться на СС'2010...
Евгений! Думаю, ты уже отоспался и охмелился от пива! Расскажи что и как было с Орионом-2010! Про ZX я всю болтовню уже перечитал.
Error404
30.08.2010, 15:37
Евгений! Думаю, ты уже отоспался и охмелился от пива! Расскажи что и как было с Орионом-2010! Про ZX я всю болтовню уже перечитал.
+1, как грится...
Евгений! Думаю, ты уже отоспался и охмелился от пива!
Не пью я... Почти совсем ;)
Расскажи что и как было с Орионом-2010!
Рассказывать особо и нечего.
Привёз зверюшку на ЦЦ. Органайзеры метались по залу (полчаса до открытия). Место выделенное для Ориона мне показали, бумажки с ТТХ Ориона и символикой ЦЦ - дали. Но монитор и клавиатуру обещанные не нашли. Помыкавшись пару часиков, я предложил поместить Орион в витрину вместе с рекламными бумажками. Так и сделали.
Народ подходил, смотрел, читал. Но железяка на витрине конечно не то, что включенный комп :(
Потом я уехал на дачу туалет строить :)
В воскресенье вечером я забрал Ори домой.
Ewgeny7, ну блин. Хоть бы кто мне сказал, что для Ориона нужны клава и дисплей, я бы привез на следующий день хотя бы.
Не пью я... Почти совсем ;)
А это никто и не утверждает! Но, тусовка без бутылочки пива - это сборище (извините - парт.собрание) коммунистов!
Рассказывать особо и нечего.
Все равно, будем считать - это публичным крещением Ори! Надеюсь, дальше будет больше!
В качестве альтернативной платформы можно присмотреться к этой девборде:http://www.zx.pk.ru/showthread.php?t=13223
Туда много чего влезет...
Error404
31.08.2010, 14:58
В качестве альтернативной платформы можно присмотреться к этой девборде:http://www.zx.pk.ru/showthread.php?t=13223
Туда много чего влезет...
Выглядит красиво. А для чего там USB? Только для программирования борды?
А для чего там USB? Только для программирования борды?
авотфиг. Неизвестно для чего, просто заведено на альтеру. Достаточно оригинальный и непродуманный ход.
Error404
31.08.2010, 21:37
авотфиг. Неизвестно для чего, просто заведено на альтеру. Достаточно оригинальный и непродуманный ход.
Тогда логичнее было бы USB как-то связать с уже имеющимся на этой борде RS-232 через распространенные чипы-конверторы USB->RS232. А ножки ПЛИС, сейчас задействованные под USB, вывести на разъем - существующие сейчас 15 контактов разъема это совсем не много.
Error404, правильно мыслишь.
Я, кстати, когдато предлагал поставить на нашу плату USB2UART, но дороговато выходило.
Евгений, а попробуй запустить PLL. На нашей плате с нормальной разводкой земель должет работать нормально.
Евгений, а попробуй запустить PLL. На нашей плате с нормальной разводкой земель должет работать нормально.
Да, я думаю что он заработает. Сейчас его запускать бесполезно, надо кварц другой ставить. Из 20Мгц делать снова 20 квартус не будет, пустит напрямую без PLL.
Апдейт текущих версий 1.11 и 1.12 для платы от Камбарова Алексея.
Изменения коснулись только клавиатурного модуля. Теперь все ряды клавиатуры могут опрашиваться хоть по одному, хоть по несколько. Хоть все сразу, как это сделано в тесте памяти при старте СР/М.
Больше править в этом проекте вроде нечего. Даже грустно...
Ну чтож, на цифре 13 проект закончен. :v2_devil: Аминь! :v2_dizzy_vodka4:
alexeilm
25.09.2011, 15:15
Всегда хотелось поиграться с Орионом.
Прикрутил к DE1 проект VGA_1_13.
Не изменил ни одного байта оригинального проекта, только добавлен PLL для 50MHz -> 20MHz
Различия:
1. Нет записи в FLASH.
2. Выведен сигнал WAIT_N на SW[0]
Вопрос: как пользоваться SD картой?
Error404
26.09.2011, 15:21
Всегда хотелось поиграться с Орионом.
Прикрутил к DE1 проект VGA_1_13.
Не изменил ни одного байта оригинального проекта, только добавлен PLL для 50MHz -> 20MHz
Различия:
1. Нет записи в FLASH.
2. Выведен сигнал WAIT_N на SW[0]
Это очень здорово! Можно даже было бы отдельную тему стартовать.
Кстати, пользуясь случаем, прошу авторов прошивок использовать (скомпилировать) в проекте Ориона корку z80 без оптимизации. Грешу на нее что в O-2010 не выполняется часть сложных программ написанных на Hitech_C - в них интенсивная работа с индексными регистрами.
.
Евгений, кстати, обещал прошивку для O-2010 поправить с учетом этого (т.к. уже есть такая версия для u9-10), но по ходу забыл (или не опубликовал).
Вопрос: как пользоваться SD картой?
Что именно интересует? Общие вопросы, в т.ч. подготовка карты, рассмотрены тут:
http://zx.pk.ru/showpost.php?p=280074&postcount=2
alexeilm
26.09.2011, 15:55
Честно скажу, до совместимости с Орионом Евгения еще пыхтеть и пыхтеть. Но, думаю, потихоньку доделаю. Сейчас запускается ROM диск, работает редактор, дизасемблер.
Встал вопрос с SD.
Эти FAQ я читал. Вопрос, где скачать образ GAMES-SD.
На сайте Евгения его нет, на Вашем - тот-же "фигус"...
И интересует всязка IDEBDOS.COM+FDISK.COM
А то я нашел еще версию 1.0 с исходниками... :-)
Error404
26.09.2011, 18:04
Честно скажу, до совместимости с Орионом Евгения еще пыхтеть и пыхтеть. Но, думаю, потихоньку доделаю. Сейчас запускается ROM диск, работает редактор, дизасемблер.
Встал вопрос с SD.
Эти FAQ я читал. Вопрос, где скачать образ GAMES-SD.
На сайте Евгения его нет, на Вашем - тот-же "фигус"...
И интересует всязка IDEBDOS.COM+FDISK.COM
А то я нашел еще версию 1.0 с исходниками... :-)
Попробуйте еще раз. Я поправил права доступа.
И положил туда последние версии FAT-IDEBDOS-FDISK с исходниками и образ операционки для SD (с поддержкой RS-232, хотя без файлов игр - игры по-прежнему на образе GAMES-SD, более старом).
Попробуйте погонять fdisk и "fat menu" (именно с ключем menu) с диска dos-tty5-sd. У меня почему-то на железном O-2010 глючило в тех местах, где в эмуляторах не глючило (точно уже не упомню где). В fat.com режим копирования CPM<->CPM не работает (это документированный баг :) - не допилил) , для этого используйте NC.COM.
Для варианта работы с SD-картой, IDEBDOS надо запускать с ключем SD:
"IDEBDOS SD"
alexeilm
26.09.2011, 18:52
Запустилось нормально. Загрузилось с SD без проблем. Поиграл в тетрис.
Можно начинать вылизывать.
:)
alexeilm
27.09.2011, 18:17
Попробуйте погонять fdisk и "fat menu" (именно с ключем menu) с диска dos-tty5-sd.
Что-то с "menu" у меня не получилось.
И вопрос: как отформатировать партицию после создания ее fdisk, что-бы она была видна под OS?
Error404
28.09.2011, 00:38
Что-то с "menu" у меня не получилось.
Что именно не получилось? Оно должно хотя бы отрисовать панели "нортон"-alike
И вопрос: как отформатировать партицию после создания ее fdisk, что-бы она была видна под OS?
Чтобы партиция была монтируемой:
1. Create partition -> 1. Create Primary CPM partition
1. Create partition -> 4. Create CPM filesystem
+ опционально чтобы партиция была загрузочной:
1. Create partition -> 5. Sysgen CPM from the file
Монтирование под ОС:
MNT D:SDCARD.0
где D - "буква" диска, 0 - индекс primary партиции (0...3)
Oтмонтировать:
MNT D:NONE
MNT без параметров - список всего смонтированного
alexeilm
28.09.2011, 09:06
fat menu
Что именно не получилось? Оно должно хотя бы отрисовать панели "нортон"-alike
Вообще ничего. Программа просто вываливается и показывает "help".
Может с fat что-то не то делаю, или он не той версии?
Передачу по протоколу xmodem проверил, на писюке - TeraTerm. Скорость 9600 ощибок - нет. Гонял в обе стороны файлы длиной от 2,1к до 12к, потом сравнивал с оригиналом на писюке с помощью fc - без ошибок. Скорость увеличивать не пытался.
Попробовал работу через TTY: на скорости 9600. Единственно, какой тип терминала выставлять?
Для обоих случаев работы с СОМ: скорость процессора вроде влияния не оказывает.
Error404
28.09.2011, 20:02
fat menu
Вообще ничего. Программа просто вываливается и показывает "help".
Может с fat что-то не то делаю, или он не той версии?
Действительно. :) Fat, fdisk, idebdos были v1.3, а я говорил про v1.4. Перезалил образ с v1.4 на страничку как файл dos-tty6-sd.zip .
PS. fdisk с отладочной информацией (Step1, Step2, ...) - иногда надо нажимать пробел. :)
Передачу по протоколу xmodem проверил, на писюке - TeraTerm. Скорость 9600 ощибок - нет. Гонял в обе стороны файлы длиной от 2,1к до 12к, потом сравнивал с оригиналом на писюке с помощью fc - без ошибок. Скорость увеличивать не пытался.
Попробовал работу через TTY: на скорости 9600. Единственно, какой тип терминала выставлять?
Для обоих случаев работы с СОМ: скорость процессора вроде влияния не оказывает.
терминал VT52
собственно, FAT MENU единcтвенный, кто корректно рисует панели в минимальных ESC-кодах VT52 и окне 24х80. Все прочие - либо кривые коды используют, либо окно 25х80 (что почему-то не всеми терминалами эмулируется), либо вообще в графике шпарят. Но чтобы FAT MENU стало полноценным "нортоном" надо хотя бы допилить копирование CPM<->CPM. А допиливать лень, т.к. оно на выходе странно глючит (не из-за корки ли T80???) что отбивает аппетит к писанию.
alexeilm
29.09.2011, 10:07
оно на выходе странно глючит (не из-за корки ли T80???)
У меня на fat info x выдает ошибку f_getfree(10) или 11
И еще прикол, образ залил на 2ГБ SD карту. Запускаю IDEBDOS, FDISK создаю партицию CP/M 8 MB, файловую систему, загрузчик.
Потом монтирую MNT D:SDCARD.1. Но записать на нее ничего (на эту вновь созданную партицию) не могу - DIRECROTY FULL.
Что это?
Но записать на нее ничего (на эту вновь созданную партицию) не могу - DIRECROTY FULL.
Что это?
Насколько я понимаю, обычно, после форматирования, все сектора забиты байтом 0E5h, что и означает "пустое место" в директории. SD-карту таким образом мы не форматируем. Вопрос только, очищается ли директория в момент создания файловой системы. Вопрос к Error404.
Error404
29.09.2011, 14:19
У меня на fat info x выдает ошибку f_getfree(10) или 11
Буду посмотреть. С тех пор много воды утекло, может что-то скривилось при перекомпиляциях?
Комментарий: fat info выдает осмысленное инфо по файловым системам (партициям) FAT.
И еще прикол, образ залил на 2ГБ SD карту. Запускаю IDEBDOS, FDISK создаю партицию CP/M 8 MB, файловую систему, загрузчик.
Потом монтирую MNT D:SDCARD.1. Но записать на нее ничего (на эту вновь созданную партицию) не могу - DIRECROTY FULL.
Что это?
Это ошибка в fdisk.com. :) Каталог хотя и заполнялся E5, но из-за злоупотребления константами, заполнялся немного не там где нужно (баг возник после перехода с CPM-блока 8192 на 16384 байт). Поправил и перезалил образ на страничке.
Может поправленные файлы просто пофайлово заливать? Или образом удобнее?
alexeilm
29.09.2011, 14:40
все сектора забиты байтом 0E5h
Именно в этом и была проблема. Залил на SD карту е5. Потом уже залил образ системы на диск. Все заработало.
Надо все-таки процедуру форматирования "вставлять" в FDISK.
Заливать проще образом, только размер его мег 8 сделать.
Error404
29.09.2011, 22:17
Надо все-таки процедуру форматирования "вставлять" в FDISK.
Так уже. В последней (сегодняшней, уже на страничке) версии каталог правильно заполняется E5 при выполнении:
1. Create partition -> 4. Create CPM filesystem
А никакого другого форматирования сверх этого (+создания DBP, что делается там же) не требуется.
Переформатировать разметку секторов в современных винтах/SD/CF все равно невозможно.
Оно и раньше заполнялось E5, но я "сломал" это в ходе предыдущих доработок.
alexeilm
30.09.2011, 13:47
Вроде работает.
Проверил компилятор BASCOM.
Интересный глюк, без загруженного IDEBDOS связка MBASIC+BASCOM просто нормально не работает.
Идут ошибки там, где их просто не может быть.
С подгруженным IDEBDOS работает более-менее без проблем.
Причем одна из ошибок следующего рода, без подгрузки оного драйвера, сохранение в MBASIC дает имя файла в системе маленькими буквами.
DIR этот файл видит, а вот обратится к нему нельзя... Ничем. И Нортон его удалить не может.
Чуть позже проверю корку. Я на нее то-же грешил. Как-то даже собрался к DE1 напрямую подключить Z80, но что-то не смог найти согласователи уровней 5V<=>3,3V.
Причем я делал ALTAIR-8800, и там наблюдал какие-то непонятные глюки, связанные с временами корки. Потом поменял корку на другую, написанную на verilog (как называется - не помню), глюков стало поменьше. Сечас-же менять корку особо нет желания - не хочу лезть в сам проект Ориона.
Еще вопрос, а нет FDISK$ для возможности запустить из ROMDISK?
Тогда можно было-бы подготовить несколько ROMов для инициализации новой SD карты и записи на нее ядра системы.
Error404
30.09.2011, 19:08
Еще вопрос, а нет FDISK$ для возможности запустить из ROMDISK?
Тогда можно было-бы подготовить несколько ROMов для инициализации новой SD карты и записи на нее ядра системы.
Нет, такого нет. Фактически, сделать это можно только скомпоновав в некий гибрид fdisk+idebdos+cpm. Это получится больше 48к, т.е. не сможет работать под Ordos. Либо fdisk надо переделывать на файловые операции через Ordos, а это мало возможно.
alexeilm
01.10.2011, 16:04
Похоже придется лезть в код. Править нюансы под второй циклон. Заменять LPM_ROM. Править конструкции типа bright <='Z'. Не добился пока стабильности в работе, хотя информация на SD не портится.
alexeilm,
как поживает проект ориона на de1 ?
alexeilm
15.12.2011, 12:41
Потихоньку. На новогодних каникулах планирую заняться им по-плотнее.
Сейчас пока суета большая на работе... :(
Может кто-нибудь выложить games-sd.zip? Тут (http://zx-pk.ru/showpost.php?p=280074&postcount=2) не могу скачать.
Лови: games-sd.rar (http://bashkiria-2m.narod.ru/files/orion/games-sd.rar)
Временно выложил (https://yadi.sk/d/1JPmJiEzcJvvK) sof для de2-115 и de1-soc. В обоих случаях по 256 Кб ОЗУ внутри ПЛИС. Для de2-115 пробовал и вариант с 512 Кб в SRAMине, он нормально работал, но потом перед адаптацией на de1-soc переделал на внутренний рам и так и оставил (тем более так чуть быстрее прощелкивает память при старте)
При переносе столкнулся только с одной проблемкой - бипер (уже на втором проекте Ewgeny7 :)
В оригинале так
if (wr_n'event and wr_n = '0') then
if (csfe = '1') then
fe <= dataO(4);
На de2-115 это работает при большинстве вариантов настройки аудиокодека, а на de1-soc работает только так:
if (wr_n'event and wr_n = '1') then
---------- Post added at 14:26 ---------- Previous post was at 14:24 ----------
Забыл написать про SD на de1-soc
Используется адаптер подключенный к GPIO_1:
.sd_sck(GPIO_1[30]),
.sd_mosi(GPIO_1[28]),
.sd_miso(GPIO_1[26]),
.sd_cs(GPIO_1[32]),
При переносе столкнулся только с одной проблемкой - бипер
Этот древний код уже давно изменен на новый :)
Привязывайся к основному клоку, а wr_n='0' ставь в условие, и всё будет работать.
Конвертил вариант для u9 -- ver. 1.1 13.02.2011
Качал в первой половине года, вроде бы в репозитории vlada
На днях по ссылке TSLа скачал текущий репозиторий MVV/vladа для u8. И точно, там -- ver. 1.2 02.10.2013 и fe/ff по клоку. В общем стоило перед конверсией (неделю назад) узнать на счет последних версий
OrionExt
12.10.2016, 17:16
Решил сюда запостить. Раз уж планирую в Орионе использовать FPGA чипы.
А пока первая проба пера, так сказать. Самодельная девборда на толстом куске гетинакса:)
И какой то не ведомый комп аж с 2 К ОЗУ с сайта Grant Searle (http://searle.hostei.com/grant/Multicomp/index.html). Прекрасный ресурс по теме старых компьютеров.
Далее планирую прикрутить еще CP/M...
OrionExt
17.10.2016, 13:17
Вот! CP/M машина, работающая на частоте 25 МГц. Машинка сделана по туториалу (http://searle.hostei.com/grant/Multicomp/cpm/fpgaCPM.html). Образ диска брал отсюда (http://obsolescence.wixsite.com/obsolescence/multicomp-fpga-cpm-demo-disk).
Девборда протестирована и вроде работает. Дальше потихоньку буду делать на FPGA Орион:)
OrionExt
21.10.2016, 21:34
Работа кипит. Пришлось новый эмуль пилить (адаптировать, чужой). Долго рассказывать….
Осталось чуток до конца подготовки инструментального ПО на ПК. И к железкам, дальше.:v2_dizzy_roll:
OrionExt
26.10.2016, 18:19
Все разобрал и начал собирать заново уже Орион:)
Пока сделал по минимуму. ПЗУ 2К с переделанным монитором М1 под консоль ПК (RS232) и 1К ОЗУ. Эх, худенький циклон 2 по размеру внутреннего ОЗУ, даже 12К под экран уже не хватает.
Теперь буду разбираться с выводом информации по RGB в параллель с консолью ПК.
- - - Добавлено - - -
Понравилась, как модули в проекте FPGA выносятся за скобки (Z80, UART, ROM, RAM). Может, удастся таки так называемый, модуль видео контроллера Ориона вынести за скобки с минимальными доп сигналами на системной шине. И как вариант первые 128Кб (видео) использовать только на запись в параллель с основным ОЗУ ЦПУ с полным доступом.
OrionExt
04.11.2016, 00:23
Кстати. По поводу поиска терминала для Ориона. Тот, который я тестил, в СП/М машине вообще без размерный. На 50 МГц работает. Только один момент остался, что делать с клавиатурой. И с совмещением выхода на ТВ. А так там 3 консоли (переключаемые) влезут, на штатном ОЗУ. Терминал через порт И/О работает (2 байта И/О).
- - - Добавлено - - -
Можно чип за те же деньги выше грейдом. Там памяти внутренней еще больше. Встроенное ОЗУ можно вертеть как хотим (2-портовое, какое угодно).
OrionExt
10.11.2016, 01:03
Разбираюсь. В ModelSim не один Ориона исходник не запускается.
OrionExt
17.11.2016, 23:25
Я не забил. Разбираюсь с моделью Т80. Z80 как бы поумней был, отроду до 80г. Пока основная проблема сделать вменяемый код с раз тактовкой для озу с наружи.
OrionExt
23.11.2016, 03:06
Для себя. Закрою эту тему. Код Ориона-ФПЖА тут мало пригоден для изучения платформы.
Да и интересно никому.
LeoN65816
23.11.2016, 08:22
Дык, много кому интересно и кто следит за темой.
Выкладывай материалы, делись инфой, рассказывай. Для многих ПЛИС - еще "тёмный лес", и чужой опыт очень полезен для освоения.
Только, будь добр, выражай свои мысли чётко и однозначно, а то порой даже перечитав твой пост несколько раз, невозможно осознать, что ты хотел сказать... ;)
Error404
23.11.2016, 12:27
А мне например было бы интересно чтобы OrionExt еще спектрумовский бейсик в орионовской версии допилил до состояния пригодного к использованию. Хотя бы до состояния когда можно было бы ZX-бейсиковские исходники, писаные под ZX-48к, запускать на Орионе из-под CP/M c указанием файла бейсика (т.е. бейсик-программы), который надо запустить. Чтобы файлы бейсик-программ брать без изменений со Спека и запускать их на Орионе. Например как-то так:
A:> zxbasic president.b
A:> zxbasic president.b /run
Чтобы в ОЗУ садился сам эмулятор бейсика и код программы. И опционально чтоб можно было бейсиковскую программу автозапустить.
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot