У меня есть BOLO для PC. :)
Вид для печати
У меня есть BOLO для PC. :)
Не совсем то, про что я говорил, но, видимо, просто неправильно сформулировал вопрос :)
Вот как это делаю я:
Питание у меня подается на карточку всегда постоянно, его коммутацию я не делаю. Сигналы CD и WP, как правило, сидят постоянно на нуле, вернее, вместо их опроса я в программу втыкаю "заглушку". Резисторы на подтяжку я ставил и не ставил - разницы не заметил, хотя стараюсь, по возможности, ставить. Либу Чена использовал с AVR и PIC24.Код:f_mount(0, &fatfs);
if((WORD)disk_initialize(0))
{
xputs(PSTR("SD-card not ready! STOP!\n"));
while(1);
}
В общем - никаких проблем. Попробуй сделать так, как я.
---------- Post added at 16:04 ---------- Previous post was at 16:03 ----------
Только хотел сюда выложить :)
Я примерно так и делал. Сейчас поменял на твой вариант - то же самое. Это еще и в карточке дело может быть. Я только на одной пробовал. Если ты видел, то я гребенку припаял прямо к переходнику MiniSD -> SD и уже в него вставляю miniSD карту, а она у меня одна. В планах вывести на слот на DE1. Тогда можно будет с разными картами попробовать.
А тебе не трудно выслать твою версию disk_initialize? Может в ней дело?
Не, как у тебя - я не видел. Вообще удивительно, что ты не использовал слот, что на ДЕ1 стоит. Из-за самой какточки тоже может быть, хоть я такого и не встречал, но не раз слышал, что бывает. У тебя какой контроллер работает с карточкой? Я тебе в личку кинул ссылку на мой проект - посмотри.
Есть ли новости по проекту?
Проект не заброшен. Но не было времени заниматься им последний месяц, да и сейчас после переезда еще не оборудовал себе постоянное место, чтобы все было под рукой и никто из домашних туда не подходил. :) Но за это время я все же поэксперементировал с тем что есть и убедился в том, что софт-процессор Т65, который я использую, далек от совершенства. Циклы не совпадают с оригиналом, да и недокументированные команды не поддерживает. Попробовал еще раз несколько других (из проекта Commodore и TrueCycle), но первый оказался ничем не лучше, а второй я так и не смог запустить. Но в любом случае все они не поддерживают недокументированные команды и имеют кое-какие другие различия с оригиналом. :(
Для АГАТа точное время исполнения каждой инструкции чрезвычайно важно, так как это необходимое условие синхронизации с дисководом. Так как разные ОС используют разные процедуры задержек, то на Т65, ввиду отличий от оригинала, интервалы между запросами отличаются. Таким образом, если я настраиваю дисковод на одни интервалы, то грузится успешно одно, если на другие, то другое. Некоторое же не грузится совсем если использует разные методы, которые приводят к неравномерным задержкам на софт-процессорах в отличие от оригинала.
Кроме того, мне хочется получить 100% совместимый компьютер, поэтому самым надежным способом я вижу использование оригинального процессора в проекте. Да, это еще дальше отодвигает проект от DE1, но зато позволит изготовить наиболее точный аналог АГАТа, что для меня важнее.
Итак, я нашел на ebay болгарский аналог 6502 - СМ630 по цене рубль за стакан и заказал 5 штук. Все они вместе с доставкой обошлись мне в 20$. Я ни разу не получал ничего из Болгарии, поэтому не знаю как долго идет посылка, но надеюсь получить ее до конца месяца. А пока я оборудую себе рабочее место и потихоньку переписываю проект под этот проц. Чтобы избежать лишних шлейфов, хочу сделать платку ЛУТом под проц с разъемом на торце, которую воткну прямо в DE1. Будет чем заняться пока жду процессоры.
Кстати, когда я закончу проект, то плат компьютера у меня тоже будет 5 (или даже 10), так как там где я заказываю они меньше не делают, но все равно это дешевле, чем 1 в других местах. Так что если получится проект, то смогу желающим вместе с процами выслать для повторения.
Но раз уж все равно я здесь с апдейтом, то заодно и спрошу, как правильнее этот проц подключать? ;) RDY, RES, NMI и IRQ понятно - через подтягивающие в 1К. Адреса и данные можно напрямую. Надо ли подтягивать резюком Ф0? Что делать с SO? Сажать на землю или через резюк на 5V? Что делать с выходами SYNC, Ф1 и Ф2, которые не используются? Посадить через резюки на землю?
Мне этот поход больше нравится. Не хотел писать раньше в тему, но момент пришёл. :)
Занимаю очередь в списке желающих. :)
Есть один вопросик. Будет ли в дальнейшем реализована "шина", для подключения реальных интерфейсных плат? Очень бы хотелось это иметь. :)
GARNIZON, может вместо 6502 на рассыпухе CPU соберём всем сообществом?! ;)
О как! :v2_dizzy_tired2: Не ожидал такого интереса. Спасибо! Проект начинал делать просто для удовольствия на DE1, но потом ему там стало тесновато и вот уже что-то типа Агат-2011 получается. Наверное пора DE1 выкидывать из названия темы :) Очень рад, что поддержали идею с процессором, т.к. я думал, что никто не захочет собирать этот комп и тогда проект будет совсем никому не интересен кроме меня самого.
Насчет шины я не думал пока. Но плат расширения было не так много для него. Может просто добавить их все на ПЛИС, там места полно, и просто включать при желании? Иначе может получиться так, что придется слишком многоногую ПЛИС использовать из-за шины, а ее руками не припаяешь. Но это уже шашечки - обсудим и прикинем потом. Так же как и S-Video выход. Пока приоритеты такие:
- Заставить его работать с родным процессором
- Доотладить дисковод
- Доделать все графические режимы
- Сделать возможность записи на "дискету"
- Сделать дисковод 840к
- Сделать контроллер клавиатуры
По поводу контроллера клавиатуры - я собираюсь делать свою клавиатуру с оригинальной раскладкой. PS2 останется тоже. Даже кнопки уже купил :D. Хочу в одном корпусе собрать. Контроллером этой клавы будет или ATmega16, или сама ПЛИС. Второй вариант проще, но потребует больше ног у ПЛИС. 138 I/O (корпус 208-BFQFP) это пожалуй максимум, что можно позволить. В идеале было бы здорово в 85 уложиться (корпус 144-LQFP). Но там дальше посмотрим.
С лишними платами тоже решим ближе к делу. Может быть интереснее будет делать rev.2 с исправлениями.
GARNIZON, не могу найти такую схему у Мымрина - там только используемые пины. Буду благодарен за номер страницы или просто за кусочек схемы если это в другом источнике.
Можно немного сократить количество ног к клавиатуре, если обращаться к рядам/строкам через дешифраторы. А если ещё и счётчики добавить к дешифраторам, то можно опрашивать состояние клавиш через три ноги: сброс счётчиков, такт счётчиков и состояние клавиши.
---------- Post added at 18:40 ---------- Previous post was at 18:30 ----------
Можно и без сброса счётчиков, если сделать один "псевдо-ряд" который будет возвращать определённый код синхронизации, например нажаты все "клавиши" в ряду кроме одной-двух.
Прикинул по быстрому - получилось всего на 3 ноги больше, чем на микроконтроллере даже без счетчиков. Но на 10 ног меньше, чем если на прямую. То что надо:v2_thumb: Когда до клавиатуры дойду будет уже понятно сколько ног остается и тогда окончательно определюсь.Цитата:
Сообщение от b2m
А у меня нет родной. Да и у многих мне кажется тоже нет. И я хотел все в одном корпусе сделать. Но там скорее всего пины плис останутся и их можно вывести на разъем. Так что можно будет подключить что-нибудь еще.
Я там и смотрел. Не вижу SYNC и прочих. Посмотрел схему Агат-9, но там все использованы. SO правда на землю кинут, но не факт, что у семерки так же. А остальные как-будто в воздухе висят, что кажется неправильным.
Voldemar0:
> Надо ли подтягивать резюком Ф0? Что делать с SO? Сажать на землю или через резюк на 5V? Что делать с выходами SYNC, Ф1 и Ф2, которые не используются? Посадить через резюки на землю?
http://deka.ssmu.ru/er/agat/Images/new_CPU/cpu0f.jpg
http://deka.ssmu.ru/er/agat/Images/new_CPU/cpu0b.jpg
Understanding Apple ][, Jim Sather, страница где-то 62 (вообще, очень наглядная книжка),
http://deka.ssmu.ru/er/agat/Reading/docs/Mymrin.djvu
Страницы примерно со 162,
- ф0, лапка 37 - куда и зачем его подтягивать? Туда приходит тактовая частота от внешнего генератора. Толстый жирный меандр. Вообще без вопросов.
- S.O., лапка 38 - странно, но факт: никуда не подключен. Даже по плате посмотрел - висит в воздухе. Может у него там internal pullup или down... И что ещё интересно: в некоторых мануалах на 6502 он вообще обозначен как NC. В эпле его садят на землю.
- SYNC, лапка 7 - не используется, болтается в воздухе. Некоторые считают его входом, но большинство сходятся на том, что это выход. Предназначен для пошаговой отладки.
Вряд ли ему нужен резистор.
- ф1, ф2, лапки 3 и 39 - так это выходные сигналы, какие вопросы ? Проц получает ф0 и из него формирует эти два, слегка фазосдвинутых, сигнала. Никаких резисторов, только в агате они вообще неиспользуются, а вот в эпле ф1 используется. Почему в агате от них отказались (и были вынуждены придумывать своё внешнее решение !) - не знаю. Если не используются - просто висят в воздухе: что в агате, что в эпле.
====
> Прикинул по быстрому - получилось всего на 3 ноги больше, чем на микроконтроллере даже без счетчиков. Но на 10 ног меньше, чем если на прямую.
Лучше счётчик+дешифратор (что-то вроде ие7 + ид3), чем контроллер: в случае проблем/ремонта контроллер надо прошивать, а копеечную микруху можно просто заменить (если именно о пользовательском, а не отладочном варианте).
Но если уж контроллер: можно попробовать взять вообще что-то вроде ATMega8, которая раза в три дешевле 16-й, и использовать её АЦП: т.е. группы клавиш объединять параллельно, но с использованием резисторов разного номинала. Получается аналоговый ввод в пределах группы. У ATMega8 шесть аналоговых входов, можно сделать, например, две группы (переключаемых цифровыми выходами) * восемь уровней напряжения * 4 аналоговых входа = 64 клавиши при 6 используемых лап.
Возможно, тогда на этот проц можно будет навесить ещё какие нибудь функции.
Да хотя бы на оставшиеся две аналоговых лапы пульты повесить.
---------- Post added at 11:50 ---------- Previous post was at 11:47 ----------
PS
> Лучше счётчик+дешифратор (что-то вроде ие7 + ид3)
к176ие8 - всё в одном
Спасибо, то что надо. :v2_thumb: Как-то не люблю лапы оставлять на весу, ну да ладно - буду пробовать так.
Интересная идея - ни разу не слышал о таких клавах до этого. Возьму на вооружение.
Мне так тоже больше нравится. Но если много ног лишних на ПЛИС останется, то вообще все туда заведу, поэтому пока клаву делать не буду.
Нехорошо входные лапы на весу. А выходные - всегда так делались. И не только в агате. Может быть ты путаешь с КМОПами - там было больше привередств ? Но даже и в КМОП-схемах вроде выходы бросались всегда.
-=-
Кнопки с АЦП-входом часто используются в бытовой технике. У меня видак, например, panasonic nv-mv20 так сделан: один вход и около десятка кнопок. И не только в нём я это видел. В автомобильных магнитолах попадались.
Вчера получил посылку из Болгарии с процессорами. :v2_dizzy_christmas: Процы все с разными датами выпуска - от 1987 года до 1990. На некоторых следы припоя. Похоже что не зря заказал 5 штук - надеюсь хоть пара из них будет работать. Сегодня вечером буду травить платку подключения к DE1. Надеюсь запустить комп от процессора на днях. :v2_dizzy_army:
Один из участников форума предложил выслать мне для испытаний родную клаву Агата, за что ему огромное спасибо. :v2_dizzy_vodka2: Таким образом, сейчас я определился с концепцией клавиатуры. Наряду с PS/2 буду делать разъем для подключения родной клавы, но кроме этого буду делать аналог родной клавы для подключения к этому же разъему.Это позволит сделать комп в отдельном корпусе и подключить к нему или PS2 клаву, или родную клаву, или самодельную версию родной клавы. Либо просто обьединить его в одном корпусе с самодельной клавой.
Т.к. теперь надо будет обеспечивать протокол обмена с клавиатурой совместимый с родным, клава будет делаться на компактной ATTiny. Опрос клавиш хочу попробовать сделать по комбинированной схеме: перебор рядов будет осуществляться счетчиком/мультиплексором 4017, а чтение через аналогово-цифровой преобразователь контроллера в зависимости от сопротивления (разное для каждой колонки). Матрица получится 10 рядов на 7 колонок. Для управления 4017 понадобится 2 ноги контроллера - одна на clk и вторая на выход номер 12 для синхронизации на каждом 1-ом и 5-ом такте. Ну и одна нога на АЦП. Попозже попробую в Протеусе испытать, а потом и на макетке, если заработает.
Суббота прошла не напрасно. Несмотря на то, что до сих пор нет нормального места для работы, запустил Агат на родном процессоре. :v2_thumb: Пока нет поддержки записи/чтения н магнитофон и пока не прикрутил дисковод. Но самое главное, что комп работает на родном процессоре.:v2_dizzy_punk:
Фотки прилагаю. Завтра буду тестировать работу памяти, прикручивать магнитофон и дисковод.:v2_dizzy_coder:
Добился значительного прогресса за последние несколько дней. Протестировал работу всех частей компьютера с новым процессором - все работает прекрасно. Дисковод тоже работает :v2_dizzy_roll: Загружаются все образы дисков которые у меня есть. :v2_cool: Попортили крови регистры страниц памяти - я сделал запись в них при любом обращении, а оказывается только при записи надо. И некоторые системы сбрасывали его при попытке прочитать оттуда. Дошло не сразу почему они не запускаются :v2_dizzy_wall:
На приложенных фотках: загруженный с "диска" тест памяти успешно пройден, образ DOS_FAST, образ ALVSUPER, ШКОЛЬНИЦА и ее ОТЛАДОЧНЫЙ КОМПЛЕКС.
Сейчас начинаю делать граф. режимы. Есть ли какая-то программа для тестирования их? А то ГСР и ГВР я еще кое-как из Бейсика могу запустить, а вот ГНР нет.
Там в Бейсике есть тест комплексный, он ГНР проверяет.
Закончил сегодня с графическими режимами. Работают все теперь. Даже в игрушки погонял :v2_smoke: Вот фотки "Комплексного теста". Все правильно отображается?
Дальше по плану прикрутить еще звук и наверное начну делать запись на диск. И тогда вопрос по записи: как он пишет на 140к дискеты - целиком дорожку? Или пытается сектора искать?
Ищет сектора
Сейчас пытаюсь продумать концепцию компьютера. Итак, оригинальный Агат-7 имел 7 слотов расширения. Слот 0 могла занимать ячейка 121, слот 1 всегда занят процессорным модулем, слот 2 и 4 расширение памяти, слот 3 контроллер дисковода. В слоте 5 устанавливалась плата интерфейса (ППИ). К ней можно подключить принтер, мышь и пр. Слот номер 6 свободен.
Т. к. мы отходим от изначальной идеи запустить комп на DE1 в сторону реплики, то я склоняюсь к идее все же добавить и ячейку 121 с переключателем выбора.
Так же мне кажется интересным сделать встроенную плату ППИ с разъемом. Будет интересно подключить к нему например принтер. Цена этого разъема - примерно 25 ног ПЛИС.
Остается свободный слот 6, который можно ценой еще примерно 35 ног вытащить наружу для подключения доп. плат. Вот здесь я сомневаюсь в целесообразности. Я не знаю что еще может реально понадобиться подключить. Оставшиеся платы расширения редки и как правило работают. только со своим софтом.
Давайте обсудим. Мне интересно ваше мнение.
У меня в семерке стояли два дисковода: на 140 и на 840 в 6-м и 3-м слоте соответственно.
Ячейка 121-я была, но не пользовался ею.
Да. Точно. Спасибо. Я про второй дисковод забыл. Правда у меня будет один дисковод, но можно будет выбирать каким он будет - 140 или 840. Так что наверное все же 6 слот будет свободен.
В ячейке121 конечно нет смысла, это точно.
Ячейка ППИ - мощная штука, возможностей куча.
У одного из прожженых Агатовцев (работник ЛЭМЗ), я в прошлом году забирал у него диски,
Агат-7 с ячППИ используется на даче как примитивный клон системы "умный дом",
я тогда еще удивился зачем такие заморочки если можно купить спец устройство.
Он сказал для души. Понравилось что к завершению второй бутылки, он взялся на бейсике писать
алгоритм для красивого мигания гирлянды на ёлке. Вроде что-то не вышло, и она как-то странно мерцала,
но мне так и так бы наверное понравилось, потому-что :v2_dizzy_vodka3:
А вот слота снаружи. может быть полезна для снятия образов дисков для истории,
можно прям с реального на виртуальный флоп копировать....
Кстати, а если реплика, то плата под какой-то маленький корпус будет заточена? типа как speccy2010?
И как обстоят дела с совмещением режимов?
Почему так категорично? Насколько я понимаю добавить ее не очень сложно, дополнительных выводов она не потребует (только одна нога для вкл./выкл.) а бонусная возможность запускать проги от Эппла не помешает как мне кажется. Неужели большинство прог адаптировано?
Согласен. Надо бы добавить. Посчитал поточнее - надо 26 ног.Цитата:
Ячейка ППИ - мощная штука, возможностей куча.
Действительно ценное свойство. Если я правильно посчитал, то 38 ног надо на слот.Цитата:
А вот слота снаружи. может быть полезна для снятия образов дисков для истории,
можно прям с реального на виртуальный флоп копировать....
На остальной проект надо 99 ног (если ничего не упустил). Плюс если делать S-Video, то еще 2. Итого 99+2+26+38=165 ног.:v2_conf2: Такое кол-во ног только у Cyclone I (185 I/O, $30) или в BGA корпусе, который на коленке не припаяешь. Я делаю проект для Cyclone II и боюсь что будет много проблем при переходе на первый. Cyclone II имеет 142 I/O ($17), Cyclone III - 160 I/O ($30). BGA версии Cyclone II и III стоят около $15 и имеют 182 I/O.
Я вижу такие варианты:
1) Переход на первый циклон. Опасаюсь проблем. Надо узнавать больше.
2) Установка BGA. В этом случае плата (целиком) будет паяться на заводе. Цены на услуги пока не уточнял, но в первом попавшемся месте стоит ценник $40 за плату при заказе от 5 до 10 штук. Уверен, что можно найти дешевле если поискать. Т.к. сам чип стоит только $15, то себестоимость платы будет только на 25$ выше, чем вариант 1, но зато никаких проблем с переходом на ранний циклон и фирменная качественно спаянная плата. Останется только включить питание. :v2_wink2: Еще одно скрытое увеличение стоимости возможно из-за более дорогой 4-х слойной платы, но это вероятно компенсируется более дешевыми SMD компонентами и меньшим размером платы.
3) Распаять ППИ на дискретах и подключить ее к ПЛИС как второй слот. В этом случае понадобится 3 доп. ноги. Итого будет 142 ноги - в точности сколько у второго циклона. Я бы не стал рассчитывать на этот вариант - наверняка обсчитался в чем-то или еще понадобится что-то еще. Так что будет ставиться 160 выходной третий циклон за $30. Распайка ППИ на дискретах тоже увеличит стоимость компонентов и размер платы (тоже дороже).
При таком раскладе мне лично нравится больше всего вариант номер 2. Какие есть идеи?
Да. Так как в итоге пришли к внешней клавиатуре, то буду стараться сделать максимально компактную коробочку с разъемами, несколькими переключателями и дисплеем дисковода.Цитата:
Кстати, а если реплика, то плата под какой-то маленький корпус будет заточена? типа как speccy2010?
Ты имеешь ввиду текстовый/графический? Не тестировал еще, но я сделаю выключатель, который позволит переключать частоту прерываний.Цитата:
И как обстоят дела с совмещением режимов?
Как потенциальному пользователю, мне ближе вариант 2.
Ну ладно. Будем значит делать "полный фарш" :) По крайней мере сократить всегда можно будет и развести версию "лайт". А не подскажете номиналы у звукового выхода у оригинала? Хочу попробовать вывести звук по такой же схеме. Я прикинул, что байпас на 47р, переменник на 1к, а перед транзистором 10n и 10к. Интересно проверить. :v2_dizzy_botan:
Voldemar0:
Привет!
У нас тут вылезла одна проблемка типа вопрос: в перерытой куче документов по 6502 ничего не говорится о состоянии слова флагов после сброса. Но в некоторых местах (очень редких) упоминается, что, например, флаг запрещения прерываний I после сброса всегда поднят.
Как с этим обстоит дело в моделях проца, предлагаемых для ПЛИС ?
При разборе очередной коллекции была встречена группа программ, которые к этому вопросу оказались чувствительны. Что, конечно, неправильно, но факт.
Да, флаг I после сброса всегда поднят, а десятичный режим отключен.
Увы :((
Проверил на реале:
Набираем:
7000:A9 00 BA 86 F0 48 28 4C
7008:07 70 08 D8 A2 00 88 D0
7010:FD CA D0 FA A6 F0 CA 9A
7018:68 A2 07 0A 48 A9 B0 69
7020:00 20 29 70 68 CA 10 F3
7028:60 6C 36 00
F800<F800.FFFFM
FFFC:A 70
--
для семёрки: C220:0
[ЭмПЗУ должен быть во втором слоте]
для девятки: C082:2
--
7000G
<упр-сбр>
смотрим ответ (00000000)
--
7001:FF
7000G
<упр-сбр>
смотрим ответ (11111111)
--
7001:55
7000G
<упр-сбр>
смотрим ответ (01010101)
--
7001:AA
7000G
<упр-сбр>
смотрим ответ (10101010)
====
Протестированы um6502 [9], что-то с эмблемкой Rockwell [7] и scl 6502 [9].
Resume: похоже, проц вообще не меняет слова состояния при сбросе. Возможно, что-то задаётся при включении питания, но никакого теоретического подтверждения этому пока не найдено.
====
Проверка кода:
Код несколько усложнён из-за того, что комбинация УПР-СБР не имеет защиты от "дребезга" и, таким образом, программе нужно отличить первый RESET (когда слово флагов жестко задано), от последующих (когда повторные RESET прерывают проц в менее определённых местах).Код:*7000L
7000- A9 00 LDA #$00
7002- BA TSX
7003- 86 F0 STX $F0
7005- 48 PHA
7006- 28 PLP
7007- 4C 07 70 JMP $7007
700A- 08 PHP
700B- D8 CLD
700C- A2 00 LDX #$00
700E- 88 DEY
700F- D0 FD BNE $700E
7011- CA DEX
7012- D0 FA BNE $700E
7014- A6 F0 LDX $F0
7016- CA DEX
7017- 9A TXS
7018- 68 PLA
7019- A2 07 LDX #$07
701B- 0A ASL
701C- 48 PHA
701D- A9 B0 LDA #$B0
701F- 69 00 ADC #$00
7021- 20 29 70 JSR $7029
7024- 68 PLA
7025- CA DEX
7026- 10 F3 BPL $701B
7028- 60 RTS
7029- 6C 36 00 JMP ($0036)
P.S. Флаг D сбрасывается только у 65c02 - в его описании на это сделан акцент, причем поведение 6502 (флаг не меняется) признан ошибкой.
После небольшого перерыва продолжаю делать Агат. За это время собрал схемку звукового вывода. Пришлось поэкспериментировать и третий вариант заработал вполне удовлетворительно и с достаточной громкостью. :v2_walkm: Вместо дарлингтона, как было в варианте Apple, применил MOSFET. Чуть позже поиграюсь с частотой прерываний, чтобы добиться идентичности звучания в программах, которые используют его для вывода звуков.
Вывод на экран в программах использующих совмещение режимов неудовлетворительный. Треть экрана мерцает белым, верхняя треть просто неприятно мерцает. Частота прерывания привязана к частоте развертки (60 Гц). Игрался и с фазой, и со скважностью (привязывал к верт. синхронизации) - приемлемого результата не добился. Осталось попробовать выставить 50Гц... Вообще у меня подозрение, что на LCD мониторе немерцающую картинку получить не получится. Видимо придется делать S-Video выход для дальнейших экспериментов в этом направлении. Планирую использовать AD725 для этой цели. Она конечно дороговата, но схема проста и надежна и позволит сделать еще и композитный выход заодно. Можно еще сделать режим 800х600х50Гц, но картинка не будет на весь экран и из-за этого опять может быть рассинхронизация. Вообще, каков алгоритм переключения разрешений у таких программ?
возможно то что видите под мерцанием - просто режим интерлейс. Большинство современных телеков и моников работают в прогрессивном режиме. то есть выводят кадр целиком а не в виде полукадров с четными и нечетными строками. побороть может только дисплей с автоматическим распознаванием и переключением в нужный режим или скандаблер с видео буффером.
Динамик не спали :))
Или картинка или музыка...
Что она умеет ? Сколько стоит ?
Совершенно бесхитростный: счётчики физических строк и столбцов в агате работают непрерывно. И синхронизация (в семёрке, во всяком случае) идёт от них, тоже непрерывно. А обработчик прерываний просто переключает режимы отображения видео: по NMI (50 Гц) - один режим, а по IRQ (500 Гц) - другой, но не на каждое IRQ, а на какое-то по счёту после NMI (таким образом, счётчик определяет примерную высоту (номер строки) смены режимов. Естесно, IRQ по счёту не больше 10-го, потому что на 10-й IRQ снова пройдет NMI - т.е. начнётся новый кадр.
Можно и более сложную логику переключения придумать, но никому не надо было, вроде бы.
Поскольку синхро идёт без прерываний, любой моник, даже LCD, будет уверен что это просто такой видеосигнал. И будет его отображать. А контроллер дисплея, после некоторой части кадра, начнёт просто по другому формировать RGB: это и называется "совмещение".
Интерлейс в агате не использовался. Нафиг он там нужен ? :)
Небольшое ограничение на выбор IRQ: чтобы оно не попадало близко к середине строки, особенно если строка не чёрная: контроллер может сменить режим и в середине строки, но выглядеть это будет несколько коряво (не знаю почему, но наблюдал такое).
Смена режима может затрагивать любой аспект работы контроллера: как адреса видеопамяти так и собственно режим отображения.
"Усё под контролем, шеф" :)
AD725 стоит от 4$ из Китая на ebay (но я бы не стал это там покупать) до 10$ в digikey (около 30$ доставка по миру, но имеет смысл если много всего заказывается - на круг выходит дешевле) или 16$ здесь у меня под боком с бесплатной доставкой. Умеет,имея на входе RGB и синхру, выдавать на выход S-Video И композит в PAL или NTSC. Обвязка всего несколько резюков и кондеев.
Вот ведь! А я не думал, что IRQ используется. :v2_rolley Я думал, что он только для звука. Он там что-то 470Гц или около того у меня. Попробую сделать 600Гц. Спасибо! А вообще можно будет переключатель повесить 50/500 <-> 60/600 - вряд ли и навороченная музыка, и совмещенные режимы понадобятся одновременно. :)
И еще вопрос по 840к дисководу. Вернее по формату nib. Там так же как и в 140к порядок записи - последовательно дорожки от 0 до сколько-их-там? А как со второй стороной быть? Она во второй половине файла лежит?
Чтобы музыка использовала IRQ - не помню. Хотя может и бывает иногда. Но похрюкивающая только. Приличная музыка так не делается - просто частота маловата.
840: NIB - он считается сейчас неподдерживаемым. AIM рулит.
Дорожки (track) везде подряд, от 0 до 159-й. Сторона - это младший бит номера дорожки. Цилиндр (т.е. положение физической подвески головок) - соответственно - остальные биты. Это было определено ещё в ранних версиях драйверов диска (кроме ONIX, у него вообще что-то вроде LBA) и в таком виде дожило до файлов-образов.
Попробовал поподбирать частоту и сдвиг IRQ. Добился много разных эффектов, но идеальной работы не получается. Удавалось избавиться от мерцания, но всегда белая полоса в середине экрана или без нее, но верх экрана черный (в программе L1). Чтобы мне тупо дальше не подбирать, не подскажете пожалуйста на каких по счету видимых линиях происходит "щелчок" IRQ? Сэкономим время и приступим к дисководу 840к :v2_dizzy_coder:
И заодно вопрос по дисководу - в описаниях сказано, что он сигнал синхронизации выдает при прохождении некой точки на дорожке. Как этот сигнал записан в формате AIM? Где лучше всего описана работа этого дисковода и контроллера?
Кстати, подумываю переделать "дисковод" с ATMega-64 на Cortex-M3 (STM32L). Причина - больше ног, выше скорость (32Мгц против 20Мгц не считая большей скорости исполнения инструкций), вдвое больше памяти (128к и 16к), куча таймеров и, самое главное, DMA. Боюсь, что не потянет ATMega 840к с нужной скоростью. По деньгам на пару долларов чип дороже, но так как он 3.3В, то будет экономия 3$ на микросхемах преобразования 5В <-> 3.3В. Выйдет как минимум не дороже.