Объявление форума |
Если пользуетесь личными сообщениями и получили по электронной почте оповещение о новом письме, не отвечайте, пожалуйста, почтой. Зайдите на форум и ответьте отправителю через ЛС. |
Полигон-2 » Бывший СССР » Концепт 1801ВМ1 |
<<Назад Вперед>> | Страницы: 1 2 3 4 5 ... .. 10 11 12 13 14 15 | Печать |
Mixa
Member
Откуда: Москва Всего сообщений: 170 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 8 авг. 2009 |
В давние времена как-то стороной прошла для меня тема Электроники-60, ДВК и прочих СМ. Не то, чтобы совсем стороной, нет, даже плату двойного размера в корзину конструировал и изготавливал, но в те времена 8-битные огрызки почему-то весь интерес переключили на себя. Похоже, что там просто потенциальный барьер вхождения банально ниже. Время прошло, а пробел остался. Поэтому долго вынашивал идею сконструировать что-нибудь на чем-нибудь из ряда 1801ВМ1/2/3. Гонял их всех на стенде, смотрел временные диаграммы, примеривал разную периферию, контроллеры памяти типа 1810ВТ3, 588ВГ2, разное из серии 1801ВП1. Выжать максимум быстродействия и максимум размера памяти - такой задачи не стояло, цель была сделать что-то более-менее сбалансированное, гармоничное, показательное и не потерявшее духа архитектуры PDP-11. В конце концов выбор остановился на 1801ВМ1. Он не провоцирует на извращения, и если не мудрить и согласиться с предлагаемой им концепцией, то, как мне показалось, он вполне сможет за это отблагодарить. У ВМ1 существует не так явно выраженная привязка к внешним средствам обеспечения его полноценного функционирования. Причем привязка плотная. В простом изделии эту привязку можно было бы игнорировать, но это вызвало бы ограничения и условности при программировании, а мне подобные ограничения не нравятся: команда у процессора есть, а в программе ее применять нельзя. После размышлений, экспериментов и прикидок того, как оно в результате будет выглядеть целиком, принял решение использовать контроллер ОЗУ 1801ВП1-030 с совмещенными функциями системного контроллера: он как раз предоставляет те самые внешние средства и обладает приемлемым для 1801ВМ1 временем отклика на обращение к ОЗУ. К тому же было желание сделать накопитель ОЗУ на 565РУ3. Таким образом, обозначилось ядро процессора, состоящее из 1801ВМ1, 1801ВП1-030 и ПЗУ 573РФ3 или 1801РР1. Для завершения картины к этому набору нужно добавить ОЗУ с ее буферными регистрами, в результате получается модуль, имеющий интерфейсом только шину МПИ. У такого модуля достаточно плотная топология электрических соединений, в одну шину не вытягивается из-за универсальности ВП1-030 и клубка вокруг ОЗУ. В одноплатной реализации трудно обеспечить компактность модуля, небольшие емкости шин и длины трассировки. Поэтому я сделал этажерку из 4 плат 100x80. Одна плата это процессорное ядро из 3-х БИС с мелкой логикой. На ней расположен наружний разъем МПИ и разъемы присоединения накопителя ОЗУ: AD0-AD15, мультиплексная адресная шина, управление, питание. Вторая плата это буферы данных-адреса-управление ОЗУ, две остальных - половинки накопителя по 16 к слов каждая. Никаких усилителей внешней шины не применяется, выходы МОПовских микросхем присоединяются к ней непосредственно, это очень нехорошо, но для разового проекта индивидуального пользования пойдет, если никому не позволять хватать руками. Карта памяти следующая, вопреки обычаям, ОЗУ в режиме USER сделано большего размера: USER 000000 .. 172776 ОЗУ (30.75 к слов) HALT 000000 .. 157776 ОЗУ (28 к слов) 160000 .. 163776 ПЗУ ODT (1 к слов) 164000 .. 172776 ПЗУ с утилитами/тестами или ОЗУ (1.75 к слов) Верхняя область, одинаковая для обоих режимов 173000 .. 173776 ПЗУ загрузчика (256 слов) 174000 .. 177576 Регистры ВУ (960 слов) 177600 .. 177676 Служебное ОЗУ (32 слова) 177700 .. 177776 Регистры для нужд процессора (32 слова) Сейчас изготовлено 4 платы, спаял две, ядро процессора и буферы ОЗУ. На время отладки хочу вместо РУ3 поставить РУ6, давным-давно был печальный опыт с выгоранием множества РУ3, когда пропало напряжение питания подложки. ODT aka Пульт при запуске у меня ОЗУ вначале не использует, сперва проверяет наличие регистра терминала, потом вычисляет контрольную сумму области ПЗУ ODT, сравнивает ее с эталоном, выдает на терминал результат проверки, потом проверяет наличие работающего ОЗУ в служебной области, выдает на терминал результат проверки и только после этого запускается пульт. Если что-то из этого не проходит, то программа сваливается в бесконечное чтение SEL2 в цикле. Это чтобы можно было осциллографом смотреть импульсы на SEL2. Вчера на макетную плату поставил 1801ВП1-065, вывел ее шиной на разъем МПИ процессорного модуля, подсоединил щуп осциллографа к ноге TF -065, включил и увидел на экране телеграфную посылку. Порасшифровывал, первые два символа CR LF, все так и должно быть. Хм, с первого раза увидеть телеграфную посылку, нечасто случается. То есть, регистры откликаются, содержимое читается, нужные данные пишутся и отсылаются. Или это знак? Теперь надо на макетку поставить преобразователь в уровни RS232, на плату напаять хотя бы старшую половину накопителя ОЗУ и включить еще раз, уже с присоединенным настоящим терминалом. Оказывается, 1801ВП1-065 шлет символ с двумя стоповыми битами. Значит, у терминала тоже нужно будет сделать формат посылки с двумя стопами. На 10% хуже, чем с одним стопом, но тут ничего не поделаешь. Продолжение следует ... По мере продвижения ... |
MC68k |
Mixa написал: Там была публика попроще, без моноклей. И информации было гораздо больше. Это если мы говорим про вторую половину 80х и начало 90х. 8-битные огрызки почему-то весь интерес переключили на себя. Похоже, что там просто потенциальный барьер вхождения банально ниже. Mixa написал: А еще он самый дешевый. В конце концов выбор остановился на 1801ВМ1. Он не провоцирует на извращения, и если не мудрить и согласиться с предлагаемой им концепцией, то, как мне показалось, он вполне сможет за это отблагодарить Mixa написал: это тяжелое наследие концепта ардуино, а размер связан с ценой изготовления плат, верно? Поэтому я сделал этажерку из 4 плат 100x80. Mixa написал: А где СЛАЙДЫ?! Сейчас изготовлено 4 платы, спаял две, ядро процессора и буферы ОЗУ. Продолжайтесь. Сырки будут, или проект закрытый, для личного пользования? |
Anonymous
Advanced Member
Откуда: Москва(Россия) Всего сообщений: 2537 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 22 нояб. 2011 |
Mixa написал: Это задаётся коммутацией её 7й ножки. Оказывается, 1801ВП1-065 шлет символ с двумя стоповыми битами. |
_Patron_
Member
Откуда: Москва Всего сообщений: 146 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 19 дек. 2012 |
Mixa написал: Если оставаться в стиле минимализма - на роль согласователя с RS-232 вполне годится обычный инвертор. Теперь надо на макетку поставить преобразователь в уровни RS232 Подробнее ЗДЕСЬ |
Anonymous
Advanced Member
Откуда: Москва(Россия) Всего сообщений: 2537 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 22 нояб. 2011 |
_Patron_, вот у меня на работе отечественные гибридки-драйверы rs232 при одностороннем сигнале, укладывающемся по максимуму в 3..15в, в break встают до резета, после первого же возврата с +15..3 к нулю и обратно к +3..15, без перехода к отрицательному напряжению в линии... Не надо так народ развращать... |
_Patron_
Member
Откуда: Москва Всего сообщений: 146 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 19 дек. 2012 |
Профиль | Сообщить модератору
NEW! Сообщение отправлено: 2 октября 2017 20:39 Сообщение отредактировано: 2 октября 2017 21:27
Anonymous написал: А у той PC, которую мы на днях подключали - порт работает как у большинства PC и инвертора оказалось вполне достаточно. _Patron_, вот у меня на работе отечественные гибридки-драйверы rs232 при одностороннем сигнале, укладывающемся по максимуму в 3..15в, в break встают до резета, после первого же возврата с +15..3 к нулю и обратно к +3..15, без перехода к отрицательному напряжению в линии... Не надо так народ развращать... Я по наивности тоже сначала агитировал народ на что-нибудь монстровое, но меня все дружно пристыдили тем, что якобы уже давно все производимые микросхемы COM-портов для PC не различают 0в и -12в. |
Andrei88
Advanced Member
Откуда: Пермская обл. г.Пермь Всего сообщений: 419 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 12 апр. 2008 |
Прошу прощения за оффтоп, но 2Anonymos - можно обнародовать название гибридок? |
Anonymous
Advanced Member
Откуда: Москва(Россия) Всего сообщений: 2537 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 22 нояб. 2011 |
Профиль | Сообщить модератору
NEW! Сообщение отправлено: 2 октября 2017 22:12 Сообщение отредактировано: 2 октября 2017 22:25
Они свежей разработки и с ВП, потому, наверное, нельзя. p.s. гибридка rs232>-->rs485 с высоковольтовой изоляцией. |
Mixa
Member
Откуда: Москва Всего сообщений: 170 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 8 авг. 2009 |
Профиль | Сообщить модератору
NEW! Сообщение отправлено: 3 октября 2017 1:27 Сообщение отредактировано: 3 октября 2017 13:22
Присоединил DB-9. _Patron_, спасибо за подсказку, так и решил пока на макетке ТТЛ-овскими уровнями обойтись. (Но я так никогда не делаю, ни-ни, вы не подумайте!!). Это же не навсегда, только для макетки и отладки, цифровые боги, наверное, не возмутятся, в конечном варианте все будет с нормальными уровнями. Тем более диодики из 60-х, спаянные с ТЭЗов какой-то ЭВМ. Даже инверторы не потребовались, полярность сигналов у ВП1-065 уже в нужной ориентации. Макетку использовал ту, про которую давным-давно упоминал тут на форуме (почти 3 с половиной года назад это было, но нам же не к спеху, правда? ) На передачу поставил резистор 1 кОм, на прием тоже 1 кОм, но с ограничением диодами в пределах от 0 до питания. Вполне себе и конвертером распознается, и 065-ой принимается. (по крайней мере RR нога 31 взводится при нажатии клавиши терминала). Наблюдал сегодня живые сообщения от программы начального пуска Пока что это выглядит неказисто, извините за отсутствие художественности. Но оно реально шевелится! Дальше - напаивать РУшки и собирать этажерку. Anonymous, 7-я нога у меня к +5 подтянута, но говорят, она заведует форматом 7 или 8 бит. Я попробую его переключить на землю, расскажу, что получится. Vslav здесь утверждает, что стопов всегда два. MC68k, да, речь как раз про границу 80-х и 90-х, было иное мировосприятие. Размер плат из Eagle перешел. Схему рисовал там, начал предварительно размещать - а размерчик что надо, ну и оставил. С этажеркой покруче будет, это тяжелое наследие прошлого тяжелого наследия. Вторая самоделка была по мотивам Микро-80, в ней тоже разнес управление накопителем и накопитель по разным платам (кстати, именно там РУ3 массово пожег). Но там не этажерка была, а лишние сигналы на общем разъеме. Сейчас КМК симпатичнее вышло. Но - рановато об этом, надо, чтоб оно зашевелилось дальше. Выложился с неоконченным изделием, в том числе, чтобы и подстегнуть себя чуть-чуть. Полностью выкладывать проект - ну кому нужен сплошной нестандарт, у меня, вон, шина на МРН-44 разведена. А так, секретов нет. |
MC68k |
Mixa написал: ПЗУшка одна Пока что это выглядит неказисто, извините за отсутствие художественности. Mixa написал: Бытие определяет сознание? Или наоборот? MC68k, да, речь как раз про границу 80-х и 90-х, было иное мировосприятие. Mixa написал: Было бы интересно посмотреть на обильно откомментированные куски кода. Полностью выкладывать проект - ну кому нужен сплошной нестандарт, у меня, вон, шина на МРН-44 разведена. А так, секретов нет. |
Anonymous
Advanced Member
Откуда: Москва(Россия) Всего сообщений: 2537 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 22 нояб. 2011 |
Да, я уже позабывал все эти ВП1, у 35 5/7/8 бит 7 и 8 ноги делали, у 65 только 7 ногу оставили. |
Mixa
Member
Откуда: Москва Всего сообщений: 170 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 8 авг. 2009 |
MC68k написал: Зато какая. В свое время штук 5 или 6 раздобыл, но они преподнесли неприятный сюрприз, такой, что и питания 5В не хватает для уверенного считывания, и куча нерабочих областей. Эта единственная из всего набора, которая в стёртом состоянии показывает 0FFFFh по всему полю, за исключением некоторых битов. Пришлось в исходнике перемещать туда-сюда фрагменты, чтобы в объектнике нолики совпали с готовыми ноликами ПЗУшки. (они там логические 1 из-за инверсии, но не суть). ПЗУшка одна Короче, ужас меня охватил, что у меня эта ПЗУшка по сути единственная, и если что, то с конструктивом пролетаю. К счастью, недавно разжился небольшим запасом 1801РР1, говорят, они в целом получше себя ведут по сравнению с РФ3. MC68k написал: Потом, не настал еще момент "и увидел он, что это хорошо", ну, не я и не он, конечно, просто бывает такой момент, после которого это уже не выглядит как необработанная заготовка. Было бы интересно посмотреть на обильно откомментированные куски кода. |
Anonymous
Advanced Member
Откуда: Москва(Россия) Всего сообщений: 2537 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 22 нояб. 2011 |
Профиль | Сообщить модератору
NEW! Сообщение отправлено: 3 октября 2017 20:46 Сообщение отредактировано: 3 октября 2017 20:47
Mixa написал: Так у вас не РФ3, а РФ32, судя по фото, а они заведомо битые, для того и такая маркировка. В свое время штук 5 или 6 раздобыл, но они преподнесли неприятный сюрприз |
Mixa
Member
Откуда: Москва Всего сообщений: 170 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 8 авг. 2009 |
Anonymous написал: Это да, есть такое. Но по факту не ужас, а ужас-ужас, в остальных в основном не юзабельны обе половинки. И по характеру неюзабельности даже нельзя сказать, РФ31 она или РФ32. Вчера посмотрел, маркировки и 32 есть, и 31. Так у вас не РФ3, а РФ32, судя по фото, а они заведомо битые, для того и такая маркировка. Но именно этот экземпляр вроде неплохо себя показывает. Стирается, правда, жуть как неохотно. (Наверное, это она демонстрирует, что заряд на плавающих затворах хорошо держится). Программировал пол-года назад, информацию держит. Запаял половину накопителя, 16 штук РУ3. И еще одно чудо случилось, ODT заработал! (наверное, это еще один знак. Пытаюсь сообразить, к чему он. Скорее всего, к тому, что придется так и оставить там РУ6. Ну да ладно, концепция только чуть поменяется. Главное, что она не исчезнет и не размажется, этот проект же как концепт позиционирован). Пока это рабочая примерка, даже без блокировочных конденсаторов по питанию у РУ6. Дальше доустанавливаю эти кондеры и запаиваю вторую половину. Вообще, РУ6 мне в свое время понравились, эдакие простые безглючные рабочие лошадки, такое от них впечатление было. А у этих еще и знак качества на упаковке. Промежуточный итог: 1801ВМ1 рабочий, умеет исполнять команды, в том числе системные, которые используют ячейки по специальным адресам. 1801ВП1-030 рабочая, умеет управлять динамической памятью и картой адресного пространства. 1801ВП1-065 тоже рабочая, через нее происходил диалог с ODT. Из серии 1801 еще есть ВП1-034 в режиме 16-разрядного буфера-защелки для данных из памяти, она по факту тоже исправна и функционирует без замечаний. И программа ODT тоже рабочая оказалась, хотя отлаживалась на модели ДВК с процессором ВМ1 в эмуляторе от _Patron_. Уважаемый _Patron_, вам огромное спасибо за такую полезную программу! |
Korchagin
Advanced Member
Вырыватель байтов с мясом Откуда: Понемногу отовсюду Всего сообщений: 554 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 4 апр. 2015 |
Интересно, базовый адрес микросхем РФ3 после программирования можно стереть ультрафиолетом и запрограммировать на другой? |
Mixa
Member
Откуда: Москва Всего сообщений: 170 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 8 авг. 2009 |
Ну вот, запаял вторую половину ОЗУ, все блокировочные конденсаторы, отмыл от флюса, соединил все платы - и всё, работает! ODT немного расширенный у меня: Q если без числа впереди, то дамп регистров, если с числом, то дамп области памяти M показать причину, почему оказались в ODT Че дальше-то делать? Наверное, тест памяти нужно какой-нибудь загрузить и оставить проверяться. И вот что ещё, форму сигнальчиков в разных местах посмотреть ещё надо, у меня ж концепт, один из пунктов которого - форма сигналов должна быть хорошая. Поэтому 4-слойка, земля сплошным слоем, питание +5 сплошным слоем, сигнальные проводники на наружных слоях. И без переходов, переходы только на ногах деталей. Промежуточный итог: Работающий процессорный модуль в габаритах 10х8х5 см, с функциональностью примерно как М2, только ОЗУ около 31 кило слова. ODT ROM OK ODT RAM OK *** 1801BM1 Macro ODT V1.0 *** @Q R0=000000 R1=000000 R2=000000 R3=000000 R4=000000 R5=000000 R6=000000 R7=000000 RS=000340 P7 .... @M000000 Power On @0Q 000000: 000000 000000 000000 000000 000000 000000 000000 000002 000020: 000000 000000 000002 000002 000000 000000 000002 000000 000040: 000000 000000 000002 000000 000000 000000 000000 000000 000060: 000000 000000 000000 000000 000000 000000 000000 000000 @100000Q 100000: 000002 000002 177777 000002 000002 000002 000002 000002 100020: 000002 000002 000002 000002 002002 002002 002002 000002 100040: 000002 000002 000002 000002 000002 002002 000002 000002 100060: 000002 000002 000002 000002 000002 000002 000002 000002 @177560Q 177560: 000000 000161 000000 000060 ? @M000200 Bus error @1000/177777 12701 001002/177777 111111 001004/177777 12702 001006/177777 22222 001010/177777 12703 001012/177777 030303 001014/177777 12704 001016/177777 040404 001020/177777 12705 001022/177777 050505 001024/177777 12706 001026/177777 060606 001030/177777 0 @1000Q 001000: 012701 111111 012702 022222 012703 030303 012704 040404 001020: 012705 050505 012706 060606 000000 177777 177777 177777 001040: 177777 177777 177777 177777 177777 177777 177777 177777 001060: 177777 177777 177777 177777 177777 177777 177777 177777 @1000G 001032 @M100000 Halt @Q R0=000000 R1=111111 R2=022222 R3=030303 R4=040404 R5=050505 R6=060606 R7=001032 RS=000340 P7 .... @RS/000340 347 @Q R0=000000 R1=111111 R2=022222 R3=030303 R4=040404 R5=050505 R6=060606 R7=001032 RS=000347 P7 .ZVC @ |
_Patron_
Member
Откуда: Москва Всего сообщений: 146 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 19 дек. 2012 |
Mixa написал: Можно загрузить RT-11 через терминальный порт и позапускать всякие программы. Че дальше-то делать? |
Mixa
Member
Откуда: Москва Всего сообщений: 170 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 8 авг. 2009 |
_Patron_ написал: Пока не буду соблазняться. В планах, реализация которых все ближе, подключить IDE хард, причем с DMA, и DMA будет 588ВТ2. Можно загрузить RT-11 через терминальный порт и позапускать всякие программы. А вот линия RPLY с ее проводным ИЛИ и двунаправленностью, реальная проблема для слабеньких открытых стоков.. У меня два активных на шине будет, не только процессор. Концепция под угрозой, точнее ее пункт "без нецелесообразных задержек на шине". Но есть еще пространство для маневра, сейчас RPLY к питанию притянуто 4,7 кОм. |
Mixa
Member
Откуда: Москва Всего сообщений: 170 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 8 авг. 2009 |
Был один пунктик концепции - схема без косяков и как следствие, плата без исправлений. Не срослось. Поменялось на: исправления - минимальные, малозаметные и красивые схемотехнически и логически. Исправлял привязку RPLY к фазам тактирования. Был косяк непростительный. Решил, что оптимальным вариантом будет привязка в середине каждого полутакта CLK. Распространение получила привязка активации RPLY к спаду CLK, чтобы быть зафиксированной по фронту CLK. Привязка в середине каждого полутакта обеспечивает положение фазированного RPLY к тому же фронту CLK, при этом исходное RPLY может даже на четверть такта запоздать. Это определенно положительный момент. Фазировка деактивации RPLY приводит к задержке RPLY процессору, что может привести к задержке снятия SYNC, но не более, чем на 1 такт. Практика показала, что такая вариация снятия SYNC в целом не влияет на длительность цикла шины. (И чего я к этим тактам привязываюсь? Тяжелое наследие простейших синхронных шин и идиосинкразия к сигналу типа READY, в стиле READY - для слабаков! Не, надо быть выше этого) Да, все-таки проводное ИЛИ RPLY красиво логически, красиво схемотехнически, но тяжеловесно физически. Но, что поделаешь, придется принять как есть. Размазанную было концепцию фиксируем как: шина МПИ, слаботочная, асинхронная. И на этом расслабляемся. Недостатки получаем в довесок, но не ропщем, не жалуемся, принимаем стоически ради логической и схемотехнической лаконичности. |
Venya_Fox
Advanced Member
Откуда: Москва, Зеленоград Всего сообщений: 1055 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 11 апр. 2013 |
5559ИН** какая нибудь? На них инфа открыта же Они свежей разработки и с ВП |
Anonymous
Advanced Member
Откуда: Москва(Россия) Всего сообщений: 2537 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 22 нояб. 2011 |
Venya_Fox написал: Нет, со штатными горя нахлебались, на упомянутые выше - серии нет, только шифр КБ, заказ мелкосерийный. 5559ИН** какая нибудь? На них инфа открыта же |
Mixa
Member
Откуда: Москва Всего сообщений: 170 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 8 авг. 2009 |
Пытаюсь встроить в концепцию 588-ю серию, в частности, КПДП 588ВТ2. Несколько озадачен логикой его работы. Сеанс ПДП запрашивается извне, сигналом /RQ. В ответ на шину устанавливается /DMR, ожидается /DMGO, потом /SACK, происходит цикл обмена, /SACK снимается. Вроде все последовательно и логично. Сигнал /RQ может быть снят, как только появился /DMR, этот запрос запоминается. Но может быть снят и по приходу /DMGO или /SACK. Все бы хорошо, если бы не одно но. Цепочка этих событий рушится пролетающими по шине /RPLY. Они на шине есть, они не могут не пролетать. Сценарий 1. Пришел /RQ, выставился /DMR, /RQ за ненадобностью снят, ждем /DMGO. До прихода /DMGO пролетает какой-то /RPLY. Этот /RPLY сбрасывает /DMR и запрос ПДП отменяется. На этом все заканчивается, запрос нужно выставлять заново. Какой-то осмысленности в таком поведении нет. Дальше даже и думать не хочется. Сценарий 2. Пришел /RQ, выставился /DMR, /RQ не снимаем до прихода /DMGO или /SACK. Ждем /DMGO. До прихода /DMGO появляется /RPLY. Этот /RPLY сбрасывает /DMR, но по снятии /RPLY /DMR появляется снова (потому что /RQ все еще активен). Такие снятие-активизации /DMR по пролетающим /RPLY продолжаются до тех пор, пока не придет /DMGO. В целом в этом случае сеанс ПДП происходит как нужно, все циклы ПДП получаются в необходимом количестве, сбоев и записи мусора не замечено, но также непонятна логика за этим поведением. Человеческими словами это описывается так: -> Есть запрос (выставим DMR) (Так, у меня RPLY, DMR снимаю, все равно во время RPLY ты ничего не сделать не сможешь) (RPLY кончился, ты еще запрос не снял, что ж, выставим DMR снова) (А, не, еще один RPLY, запрос снимаю, потерпи) (Все, кончился, снова выставляю) ... >- Во, пришел ответ, шину занял, снимай запрос (а что DMR дергался, ты и не заметил, гы) -> Запрос снял Ну бред какой-то и скрытое издевательство. Не вяжутся эти все метания с концепцией мы медленно, медленно спустимся. Выходит, ВТ2 нужно будет изолировать от чужих RPLY. |
Anonymous
Advanced Member
Откуда: Москва(Россия) Всего сообщений: 2537 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 22 нояб. 2011 |
Вообще-то ориентация буфера управляющих сигналов меняется по SACK и ВТ2 в любом случае изолирован от внешних RPLY, пока не захватит шину. T.к. до тех пор, пока не появится SACK, как реакция на DMGO, SYNC/DIN/DOUT/WTBT являются входными сигналами для платы, а RPLY - выходным. |
Mixa
Member
Откуда: Москва Всего сообщений: 170 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 8 авг. 2009 |
Электрически RPLY у меня сейчас одна общая цепь, и двунаправленных буферов нет. МПИ между микросхемами напрямую, без развязок. В концепции поначалу и межплатных буферов не было, потому что все компактное и не развесистое. Но интеграловцы побуждают всю их 588-ю увести за буфера. Хотя бы из-за того, что у них шина АД не инверсная. |
andyTh |
NEW! Сообщение отправлено: 18 октября 2017 18:35 Сообщение отредактировано: 18 октября 2017 18:36
Так оно ж идеологически так должно быть. Пассивное устройство от принимает сигналы от активного. Как вы планировали рулить направлением SYNC, DIN, DOUT? Вот так же надо завязать и RPLY. |
Сейчас на форуме |
Mixa
Member
Откуда: Москва Всего сообщений: 170 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 8 авг. 2009 |
andyTh написал: Пока никак не планировал, не было нужды. И если идеологически так, то и замечательно, у меня концепт как раз идеологический. Правда, не всякая идеология вписывается, но эта - то, что надо. Как вы планировали рулить направлением SYNC, DIN, DOUT? andyTh написал: Угу. Вот так же надо завязать и RPLY. А кстати, как "взрослые" КПДП реагируют на неприход RPLY? И на попытку обратиться к области, которая выбирается по BS? |
andyTh |
NEW! Сообщение отправлено: 18 октября 2017 19:02
Mixa написал: Во все моменты времени, пока некая плата не хочет ПДП, сигналы SYNC, DIN, DOUT являются для неё входными, а RPLY выходным. Пока никак не планировал, не было нужды. Таким образом плата не видит чужих RPLY. А во время захвата шины направление сигналов меняется на противополоное. Т.е. какое то разделение должно быть. Не может вход микросхемы резко стать выходом |
Сейчас на форуме |
Anonymous
Advanced Member
Откуда: Москва(Россия) Всего сообщений: 2537 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 22 нояб. 2011 |
Mixa написал: Точно так, как и процессор - ждут какое-то время ответа, затем выставляют флаг ошибки шины в регистре состояния, при этом замораживается счётчик адреса и переданных слов, чтоб можно было понять, на чём мы остановились, шина возвращается процессору и дёргается прерывание от устройства. А кстати, как "взрослые" КПДП реагируют на неприход RPLY? И на попытку обратиться к области, которая выбирается по BS? |
Mixa
Member
Откуда: Москва Всего сообщений: 170 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 8 авг. 2009 |
Профиль | Сообщить модератору
NEW! Сообщение отправлено: 18 октября 2017 20:54 Сообщение отредактировано: 18 октября 2017 23:23
andyTh написал: Здесь ключевое слово "плата" Во все моменты времени, пока некая плата не хочет ПДП, сигналы SYNC, DIN, DOUT являются для неё входными, а RPLY выходным. Поначалу концепция представлялась как набор маленьких-маленьких плат, которые вставляются в маленькую-маленькую корзину, на разъемах разведена МПИ, платы функционально разделены, а специального умощнения не делается, потому что все маленькое и несерьезное. Заложился на нагрузочную способность самих микросхем. То есть, плата процессора, плата памяти, плата ИРПС, плата с КПДП и IDE, плата еще чего-нибудь. ИРПС в такой концепции это ВП1-035/065, с незначительной обвязкой. 588ВТ2 тоже более-менее в концепцию ложился (только АД нужно инвертировать), и направлением своих сигналов сам управляет. По мере реализации оказалось, что процессор, контроллер ПЗУ и ОЗУ неразделимы, в связке, кроме МПИ, много других сигналов, которые на разъеме не нужны. Поэтому возникла этажерка. Сейчас вот вырисовывается, что ВТ2 и всю 588-ю компанию нужно за забор поместить. И это даже хорошо, потому что глядя на пологость некоторых фронтов (которые ОК или ОС), хочется сказать стоп, шина почти на пределе. Anonymous написал: Я вот еще хочу запретить КПДП обращаться по шине к пространству УВВ. То есть всякий select УВВ разрешить, если активен BSY процессора (или неактивен SACK). Точно так, как и процессор - ждут какое-то время ответа, затем выставляют флаг ошибки шины в регистре состояния, при этом замораживается счётчик адреса и переданных слов, чтоб можно было понять, на чём мы остановились, шина возвращается процессору и дёргается прерывание от устройства. У 588ВТ2 есть вход ошибки. Импульс на нем завершает текущую пересылку, вырабатывается аппаратное прерывание и взводится триггер ошибки, его значение читается битом 14 в регистре состояния. Вот туда можно завести ошибку таймаута на шине. Еще один вход есть, RQINT называется, "Запрос прерывания". Низкий активный уровень на нем завершает текущую пересылку, вырабатывается аппаратное прерывание. Пока уровень низкий, он читается единицей в бите 13 регистра состояния. Причем еще есть бит 15, который читается как ИЛИ битов 13 и 14. Интересно, какое прерывание имели в виду разработчики этой микросхемы? P.S. ВТ2 вырабатывает аппаратное прерывание по окончании пересылки блока, но между этим настоящим прерыванием и тем RQINT никакой связи не обнаружилось. P.P.S. Постскриптум не читать, это была старая, древняя инфа, сейчас провел эксперимент и был приятно удивлен тем, что на ER и на RQINT есть вполне симпатичная и полезная реакция. Текст выше — исправил. |
Anonymous
Advanced Member
Откуда: Москва(Россия) Всего сообщений: 2537 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 22 нояб. 2011 |
Профиль | Сообщить модератору
NEW! Сообщение отправлено: 18 октября 2017 22:51 Сообщение отредактировано: 18 октября 2017 23:03
Бит 15 служит для облегчения проверки в драйвере, была ли ошибка или успешно завершённая операция вызвала прерывание, делается TST @#CSR и затем BMI на обработку ошибки. А вот биты 13 и 14 показывают тип ошибки, один показывает, что ошибка случилась в контроллере ПДП - т.е. ошибка шины, а другой бит - что ошибка возникла в устройстве, которое использовало ПДП. Как вариант, ошибкой может считаться переход через определённый адрес, можно и на это флаг сделать, т.е. переход с 0177777 в 0 или, как у вас, с 0157777 на 0160000. p.s. например, у меня в "гайке" контроллера scsi для двк, бит 15 взводится либо по ошибке шины, либо при возникновении резета со стороны scsi-шины, а ситуацию поясняют два других бита. Один указывает на попадание в несуществующий адрес, а другой взводится сигналом RST на шине scsi и основременно транслирует его текущее значение. Если мы успели отреагировать на возникновение сброса от какого-то устройства и сигнал всё ещё не снят, мы вычищаем очередь запросов драйвера, формируя по всем заданиям ошибку, т.к. устройства, reconnect от которых мы ожидали, сбросились, и выдаём запрос таймаута по таймеру, после ввода драйвера по которому проверяем, "ушёл" ли сигнал, если да - начинаем далее выполнять запросы обмена, если нет, то ещё можно подождать (но обычно это короткая транзакция). |
Mixa
Member
Откуда: Москва Всего сообщений: 170 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 8 авг. 2009 |
Профиль | Сообщить модератору
NEW! Сообщение отправлено: 18 октября 2017 23:22 Сообщение отредактировано: 19 октября 2017 1:11
Постом выше описывал поведение ВТ2 по памяти, по прошлым экспериментам. Но тогда стенд менее совершенен был, видимо, что-то упустил. Сейчас оно оно куда лучше оказалось. Сообщение исправил. Думал, пришел к заключению, что RQINT ВТ2 это требование прекратить передачу блока, исходящее от внешнего устройства, которое обнаружило, что что-то пошло не так. Другими словами, это сигнал от устройства, возникший во время передачи блока и служащий для аварийного завершения передачи блока. В логику IDE это не укладывается, поэтому оставлю незадействованной эту полезную фичу. ПДП для IDE обслуживает не устройство, а буфер. При обмене с буфером прерываний не возникает. Ошибок тоже. В смысле, никаких флагов, индикаторов и т.п. во время обмена с буфером нету. А прерывание от устройства, ошибки устройства у IDE обслуживаются по другим каналам, не связанным с ПДП. Пока как-то так. |
Mixa
Member
Откуда: Москва Всего сообщений: 170 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 8 авг. 2009 |
Сомнения, разброд и шатание. Вот я думаю, а не слишком ли расточительно под 512ВИ1 64 ячейки пространства УВВ отводить? Как такой барский жест сочетается с умеренным расходованием ресурсов в идеологии DEC? Подкупает то, что интерфейс 512ВИ1 хорошо стыкуется с SYNC, DIN, DOUT. А противится всему этому то, что 8 плюс 2 ячейки для IDE я тоже считаю перебором. Сколько вообще ячеек позволительно контроллеру НЖМД иметь, чтоб по совести было, и никто на него косо не смотрел и не завидовал? |
MM
Advanced Member
Откуда: Павловский Посад Мск.обл. Всего сообщений: 3418 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 2 авг. 2013 |
Mixa написал: Для ДВК без специализированных контроллеров типовым следует считать адреса Самарского IDE + 100 ( 8 ) : 2 ячейки для IDE я тоже считаю перебором 177720....177757 с словной выборкой. ПЗУ Самары не сложно пропатчить для новых адресов. В оригинале на адресах Самарского IDE сидят регистры 1801ВМ3. Драйвер использовать от БК11М BY.SYS, начальная загрузка - 160000G. Приводы 0 и 1 - флоп. Большие номера - винт. ТО Самарского IDE : http://zx-pk.ru/threads/26264-...-nemu.html Специфический софт для работы с IDE, очевидно, надо адаптировать под RT-11 ( т.е. косметический патч ). |
MM
Advanced Member
Откуда: Павловский Посад Мск.обл. Всего сообщений: 3418 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 2 авг. 2013 |
ИМХО - 512ВИ1 надо нацепить на МПИ, как это сделано в Э-85. Ну и софт тоже от туда взять. |
Anonymous
Advanced Member
Откуда: Москва(Россия) Всего сообщений: 2537 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 22 нояб. 2011 |
Профиль | Сообщить модератору
NEW! Сообщение отправлено: 20 октября 2017 1:03 Сообщение отредактировано: 20 октября 2017 1:27
Mixa написал: Сколько надо, столько и задействуйте, сейчас конкуренции на рынке нет и никто 100500 контроллеров разных устройств не поставит в одну машину. Сколько вообще ячеек позволительно контроллеру НЖМД иметь, чтоб по совести было, и никто на него косо не смотрел и не завидовал? У меня в контроллере PATA IDE 10 слов используются для доступа к регистрам диска, 1 слово для доступа к наплатному микроконтроллеру и часам, 31 слово - на пзу загрузчика, зато просто и прозрачно. А в контроллере scsi имеется 37 регистров, но доступ к ним организован по указателю на регистровый файл, в результате контроллер более правильный и занимает всего 4 слова в адресном пространстве. Думаю, 512ВИ1 следует тоже по принципу ПЦшки подключить, задействовав регистр-указатель адреса и регистр данных. p.s. я это к тому, что 4к слов на ввод-вывод у pdp-11 не позволяет быть столь расточительным, как в х86, где 64кб на ввод-вывод отведено, но и на ПиСи экономят по возможности на количестве адресов в/в. p.p.s а вот контроллер ethernetа под МПИ вовсе 2 слова занимает, хотя использует здоровенные структуры в памяти. |
Mixa
Member
Откуда: Москва Всего сообщений: 170 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 8 авг. 2009 |
MM написал: К воронежцам у меня двойственное отношение. Специализация на копирвании атрофировала конструкторскую мысль, поэтому отношение настороженное. И уж точно нельзя делать "как это сделано в ...". Именно по причине убивания конструкторского навыка. ИМХО - 512ВИ1 надо нацепить на МПИ, как это сделано в Э-85. Ну и софт тоже от туда взять. |
andyTh |
NEW! Сообщение отправлено: 20 октября 2017 15:14
К воронежцам или к дековцам? |
Сейчас на форуме |
Anonymous
Advanced Member
Откуда: Москва(Россия) Всего сообщений: 2537 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 22 нояб. 2011 |
Mixa написал: Так у них задание было dec pro325/pro350 скопировать, там не до творчества было. А если желаете сделать часы, которых ни у кого нет на таких машинах - сделайте контроллер i2c, на него и часы, и пзу, и nvram, и датчики всякие можно будет посадить. И уж точно нельзя делать "как это сделано в ...". Именно по причине убивания конструкторского навыка. |
Mixa
Member
Откуда: Москва Всего сообщений: 170 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 8 авг. 2009 |
Mixa написал: К воронежцам. Настороженное. Заочное. Вот лежит в коробочке 1807ВМ1, вроде симпатичный зверек, но что-то останавливает. Это что-то — иррациональное. Собственно, как и все, что здесь на форуме. Кроме продаж. К воронежцам или к дековцам? Кстати, справедливости ради, конкретно в 1807ВМ1 дополнительно останавливает и идея, идущая от дека, именно - программирование режима работы при начальном старте. И 1804 как по маслу воспринимался только при чтении Мик-Брик. Запоем и не оторваться. И 531 серия печка и жрет. Хотя как имеющая в своем составе ГГ1 или как ЛН1/ЛА3 для генератора на 32 МГц - полезна. Anonymous написал: Перавя реакция — не, максимум, что позволительно это 1556Х[Л,П] и 556РТ1. Вторая мысль - он же прост, сдвиговый регистр и обвязка. Посмотрел, когда он был придуман, - в начале 80-х, годится. Надо подумать, мысль интересная. сделайте контроллер i2c |
andyTh |
NEW! Сообщение отправлено: 20 октября 2017 17:11
Mixa написал: Первый пункт означает настороженное отношение именно к дековцам. К воронежцам. Настороженное. Заочное. Вот лежит в коробочке 1807ВМ1, Ибо воронеж порой вплоть до расположения компонентов на плате и дорожек... 1807ВМ1 тоже как бы не без аналога мягко говоря |
Сейчас на форуме |
Mixa
Member
Откуда: Москва Всего сообщений: 170 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 8 авг. 2009 |
Это все так. Но от дека у меня есть AlphaStation 255, и я ее берегу как экспонат. Alpha - событие знаковое. 1804, хоть она и из Воронежа, у меня проходит по категории AMD. Электронику-60 экспонатом не хочу. Она большая, глючная, и вентиляторами дребезжит, такой характерный рокочуще-звенящий звук, ну знаете, его невозможно не знать. А вокруг дека легенда, аура и восторги. Я не фанат, восторга поиметь не случилось, но к легенде прикоснуться и любопытно, и хочется. Через ангстрем и интеграл с транзистором прикасаться, как по мне, вполне годится. Не глючит и не дребезжит. Не, мож я конечно не с той стороны к деку захожу, но что уж есть, то есть. |
andyTh |
NEW! Сообщение отправлено: 20 октября 2017 19:53
Была у нас в городе фирма комповая. На заре так сказать И вот на выставке толи в 93, то ли в 94 году на стенде этой фирмы я увидел материнку. С 4 рогатыми альфами. И кучей памяти. Тусил возле неё долго. Впечатления остались и по сей день. Через несколько лет под рукой некоторым образом оказался класс с Э85, ещё чуть позже с ещё одним не в своём уме поднимали СМ4. Но ни Э85, ни СМка не оставили того неизгладимого впечатления, как тот монстрик. Хотя нет, звук вентилятора от 9005 помню . В следующий раз дековские железки попались на глаза несколько лет назад. Вот, затянуло. Перевидел я в принципе не так и мало, но впечатлений, сравнимых с восторгом от той материнки пожалуй я смог бы пересчитать. |
Сейчас на форуме |
Mixa
Member
Откуда: Москва Всего сообщений: 170 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 8 авг. 2009 |
Профиль | Сообщить модератору
NEW! Сообщение отправлено: 22 октября 2017 20:53 Сообщение отредактировано: 22 октября 2017 20:55
В общем, с 512ВИ1 решил пока повременить. Было бы, конечно, логично поместить ее на шину с прямыми АД, которая необходима для 588-й серии и из-за этого как бы уже есть и типа бесплатно. Но она концептуально чужая на плате IDE, хоть и тоже из Минска. Земляки земляками, а дело делом. К тому же, плата маленькая. И еще, сейчас связующая логика достаточно внятна по своей структуре и хорошо впихивается в ХП4. ВИ1 вносит навороченность, которую хочется избежать. Так что, RTC окладываются, но не исключаются. Шесть линий CS селектора УВВ 588ВТ1 используются для выбора: IDE CS0 IDE CS1 КПДП 588ВТ2 Регистр RA контроллера прерываний 588ВН1 Регистр RB контроллера прерываний 588ВН1 Регистр RS контроллера прерываний 588ВН1 При этом занято 16 ячеек пространства УВВ, 8 для IDE CS0, 2 для IDE CS1, 3 для 588ВТ2 и по одной на каждый регистр 588ВН1. Ровно 16. И это единый блок, при адресации меняются только АД4..АД1. Вот такое хитрое преобразование адресов будет, чтоб 588ВТ1 активировала нужный CS. Не при деле останутся два CS от селектора УВВ 588ВТ1, но все равно ВИ1 в эту компанию просто так не вписывается, логика преобразователя вылезает за пределы ХП4, а дополнительных корпусов иметь не хочется. |
Anonymous
Advanced Member
Откуда: Москва(Россия) Всего сообщений: 2537 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 22 нояб. 2011 |
А зачем вообще 588ВТ1 нужна там? Да ещё этот бесполезный и тормозной монстр не в нативном режиме, раз у неё разные CS разный диапазон охватывают. Если ХП/ХЛ используете, на них куда компактнее и проще же... |
Mixa
Member
Откуда: Москва Всего сообщений: 170 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 8 авг. 2009 |
Ну да, из кубиков с буквами П, О, А, Ж сложить слово Счастье, примерно так. Ставим призмы, зеркала и т.п., смотрим в дырочку, читаем: "Счастье", и на этом успокаиваемся и радуемся. |
andyTh |
NEW! Сообщение отправлено: 24 октября 2017 9:40
Вы коллегу Анонимуса то послушайте... Он имеет большую практику в складывании из этих и не только этих кубиков |
Сейчас на форуме |
Mixa
Member
Откуда: Москва Всего сообщений: 170 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 8 авг. 2009 |
Дык слушаю, со всем уважением, еще, помнится, в mo.dec на мои глупые вопросы отвечал Концепция немного меняется. От ВТ1 пока не отказываюсь, ее тормознутость сочетается с общей тормознутостью проекта. Попробую порисовать, чтобы получилось следующее: Блок УВВ платы IDE с ее DMA и прерываниями занимает 8 ячеек. Они декодируются непосредственно в 8 линий CS ВТ1. Три линии группируются по ИЛИ: CS0,1,2 -> CS КПДП CS3 -> CS регистра режима контр. прерываний. Регистры векторов не используются, код вектора задается "механически" на ногах ВН1. Можно переключателями. CS4 -> IDE_CS0 CS5 -> IDE_CS1 CS6 -> индекс-счетчик адреса регистра для IDE_CS0/1, с возможностью автоинкремента CS7 -> пустой что ли? Надо подумать, подо что заюзать. Можно под один регистр вектора ВН1, для большей гибкости (а нужна ли она??). Можно под еще че-нть полезное. Упрощения: убираем хитрое преобразование адресов, убираем необходимость подстановки адреса 0 для IDE в режиме DMA Усложнения: пока не оценивал, буду рисовать Бонусы: автоинкремент индекса регистра IDE_CS0 позволяет передавать адресный блок харда и следом команду тоже по ПДП. Удобно же, разложил адрес сектора, написал команду, зарядил ПДП и сказал фас. И дальше оно все само. |
bigral
Junior Member
Всего сообщений: 133 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 6 мая 2012 |
вопрос на засыпку и ГЛАВНЫЙ, схемы будут того что заработало уже? |
Mixa
Member
Откуда: Москва Всего сообщений: 170 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 8 авг. 2009 |
Профиль | Сообщить модератору
NEW! Сообщение отправлено: 25 октября 2017 12:02 Сообщение отредактировано: 25 октября 2017 12:22
Работает не схема, работает концепция. Схема это одно из многих возможных отражений концепции. В этой схеме есть спорные фрагменты, образовавшиеся в результате компромиссов, и в общем случае такое не подлежит тиражированию. Поэтому если схему и выкладывать на всеобщее обозрение, то это в некотором смысле ответственность, и нужно подробным образом, на уровне учебника, разжевывать, почему так делать не рекомендуется. А такое обязательство брать на себя не хочется. |
Mixa
Member
Откуда: Москва Всего сообщений: 170 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 8 авг. 2009 |
Хотя, почему бы и не показать. А сомнительные места лучше не повторять. Одно из них - выход триггера-защелки DD8 КП2 с сигналом BS уходит прямиком на внешний разъем, без буфера. Принудительное изменение уровня сигнала на этой линии перекидывает триггер. Это плата с микропроцессором, от нее идут сигналы к памяти и буферам, там дальше все регулярно и очевидно. |
Mixa
Member
Откуда: Москва Всего сообщений: 170 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 8 авг. 2009 |
Разрисовал связующую логику для платы IDE с ПДП, между буферизированной шиной МПИ, микросхемами 588 серии и шиной IDE. В соответствии с текущим пониманием тонкостей работы используемых экземпляров 588-й серии. Структура этой логики заметно отличается от того, к чему привык, разрисовывая подобное для 580, 1810, Z80. А привык к тому, что обычно получается экономно и в некотором смысле эффектно. Сейчас об эффектности речи нет, лишь бы уместилось компактно. В общем, результат где-то на троечку, но по-другому и не получается. Симпатичная программная модель не всегда означает, что электрическая реализация тоже на высоте. Все-таки, шина МПИ на выводах микросхем это проблема, если вдруг возникает необходимость в буферизаци или еще какой коррекции. Из микросхем нужно было выводить заготовку шины и сигналы управления шинными буферами. Чтоб и между собой на плате стыковалось, и чтоб межплатной шиной управлять. Но, имеем то, что есть, без вариантов. Вот что получается по предварительной прикидке: - Самая нерегулярная часть связующей логики помещена в одну ХЛ4. Но нерегулярны только четыре сигнала, остальные 4 выхода это очень простые функции от входов, типа 2И или даже просто НЕ. Ресурс израсходован неэффективно, нерегулярность и та простая, ну и хрен с этим, зато один корпус. - ЛИ1 для формирования 4 сигналов как функция ИЛИ в отрицательной логике. - ЛЛ1 для формирования 2 сигналов как ф-ция И в отрицательной логике, и два повторителя. - 561ТВ1, формирование запросов на ПДП по протоколу чередования циклов ПДП и ЦП, и генерация таймаута шины в цикле ПДП. - ИЕ7 индексный регистр-счетчик для адресации IDE. - две RC-цепочки для формирования задержек. - три диода, ф-ция ИЛИ в отрицательной логике, усиленная повторителем на четвертинке ЛЛ1. Почему не 3И ? Да потому что и так все вразнос пошло, раз уж RC-цепи появились, не-ТТЛ серия, то и это можно. Гулять так гулять. У ИЕ7 +1 считает задники обращений по IDE CS0. На -1 заведен старший разряд, запрещая счет, если там 0. То есть, получилось: - Разряды 0-2 адрес, разряд 3 разрешение автоинкремента. - Автоинкрементируются только обращения к IDE CS0. (и в циклах ПДП тоже) - Автоинкремент автоматически запрещается после обращения по адресу 111, новый адрес при этом 000. То есть, если заполнение адресной инфы и команда на чтение делаются с автоинкрементом, то для чтения буфера данных адрес выставлять не требуется. Это удобно. Если ИЕ7 заработает так, как написано, то это будет достаточной компенсацией за шероховатость остального. И если 561ТВ1 оправдает надежды, на него возлагаемые, то это будет еще лучше. ТВ1 там запланирован, потому что не требует вообще никакой обвязки, стыкуется со всеми сигналами сам. Концепция вроде бы спасена, угроза отведена. Теперь все это нужно будет отмакетировать и подтвердить концепцию. |
andyTh |
NEW! Сообщение отправлено: 26 октября 2017 14:09
Просто спрошу, ок? У вас тем или иным образом вписалась в концепцию ХЛка. Может быть тогда вписалась бы и к примеру EPM7128? И по теме, а где задержки поставили? |
Сейчас на форуме |
Mixa
Member
Откуда: Москва Всего сообщений: 170 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 8 авг. 2009 |
Профиль | Сообщить модератору
NEW! Сообщение отправлено: 26 октября 2017 17:52 Сообщение отредактировано: 26 октября 2017 18:11
andyTh написал: Это шаг к тому, чтоб все сделать резиновым и безалкогольным, внутри фпгашки. Может быть тогда вписалась бы и к примеру EPM7128? 7128 у меня вроде даже где-то валяются приготовленными, но там были идеи относительно 1806ВМ2. Может и пробьет когда на безумие. Но только после этого безумия. andyTh написал: Одна отсчет таймаута шины в цикле ПДП, другая задержка READY в ответ на IOWR от DMA контроллера в сторону девайса, с целью уширения этого IOWR. Если READY заземлить (всегда активен), то строб IOWR коротким получается, 100 нан или менее. Не помню, проглатывает такое IDE или нет, но некомфортно, увеличиваю до 200-250. а где задержки поставили? ЗЫ EPM7128, говорите? 128 триггеров? На ней одной имхо можно сваять контроллер IDE вместе с ПДП и интерфейсом МПИ с прерываниями. И еще какую-нибудь свистелку. Но туда сразу просится до кучи и интерфейс ОЗУ, ПЗУ, начальный пуск. Т.е. ВМ1, эта CPLDшка, ОЗУ, ПЗУ, IDE, еще-что-то, и все на маленькой плате. Но тогда ВМ1 выпадает из концепции, ВМ2 кмоповский более гармонирует. |
Mixa
Member
Откуда: Москва Всего сообщений: 170 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 8 авг. 2009 |
Профиль | Сообщить модератору
NEW! Сообщение отправлено: 26 октября 2017 22:00 Сообщение отредактировано: 26 октября 2017 22:20
Встал перед выбором. Какой из двух лучше? Винницкий или п-посадский? "Октябрь" вроде более в тему, 100-летие на носу. Или ТВ1А лучше, чем просто ТВ1? Ой-ёё.. В книжке у него клок спадом , а на самом деле подъемом .. Блин, узел переделывать, а ведь ничего лишнего не осталось. Один инвертор с ОК нужен теперь, наверное, просто транзистором обойдусь. |
Mixa
Member
Откуда: Москва Всего сообщений: 170 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 8 авг. 2009 |
Mixa написал: Критерий истины - практика. Берем микросхему, впаиваем, берем осциллограф, смотрим. Сачала КР561ТВ1А. Какой из двух лучше? КПДП программируется на пересылку блока из 3 слов. SACK, SYNC, RPLY и DMA_Active. (У 588ВТ2 он называется EM, похоже на Enable Memory, но со смысловой привязкой беда, какая Memory и почему Enable). КПДП переводится в активное состояние по команде от процессора, это вызывает установку DMA_Active. Окончание пересылки блока индицируется снятием DMA_Active. Циклы DMA не начинаются, пока не появится запрос DMA_RQ. Эти запросы и их снятие формируются синхронно с установкой SYNC, запрашиваются в цикле ЦП, снимаются в цикле ПДП. Такой алгоритм обеспечивает чередование циклов ПДП и процессора. Формируются они как раз этим самым ТВ1. На первый взгляд все хорошо, но если посмотреть на окончание ПДП с увеличением, то будет видно вот что. Это снятие DMA_Active: А это снятие DMA_RQ. Оно задержано относительно синхронизирующего спада SYNC почти на 300 нс и находится в опасной близости от снятия DMA_Active. Опасной потому, что если еще немного повременить со снятием DMA_RQ, то это будет воспринято как запрос на пересылку следующего блока. DMA_Active при этом останется активным и начнется пересылка блока длиной 65536 слов. Заряд такой мощности способен дважды уничтожить весь мир и прощай Hello, world! Играть со спичками рядом с ядерным детонатором не хочется, поэтому пришлось раздобыть КР1561ТВ1. И сразу обозначилась разрядка международной напряженности, задержка уменьшилась раза в три и отошла от опасной черты: К тому же наклон фронтов ТВ1 перестал контрастировать с сигналами от ВМ1, поэтому правильный ответ - КР1561ТВ1. Ставим галочку. Хотя, казалось бы, при взгляде с высоты птичьего полета, картина как бы и не поменялась: Семафор открыт, продолжение будет. |
MM
Advanced Member
Откуда: Павловский Посад Мск.обл. Всего сообщений: 3418 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 2 авг. 2013 |
Mixa написал: Лучше этого тихохода оставить в покое. Выбор профессионала - 1564 1561 |
andyTh |
NEW! Сообщение отправлено: 28 октября 2017 15:37
Mixa написал: В последнее время я перестал пользоваться книжками для этого дела. С одной стороны конечно из за того, что приделали ноги Ой-ёё.. В книжке у него клок спадом , а на самом деле подъемом .. Блин, узел переделывать, а ведь ничего лишнего не осталось. Один инвертор с ОК нужен теперь, наверное, просто транзистором обойдусь. двум моим Шило, а с другой держать в голове все опечатки? Гуглим "аналог" нужной микрушки и читаем даташит от первоисточника. Понятное дело, что попадаются микросхемы и без аналога (исчезающе редко) или с корёженной цоколёвкой, но как бы в 99.9% способ работает. |
Сейчас на форуме |
Mixa
Member
Откуда: Москва Всего сообщений: 170 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 8 авг. 2009 |
MM написал: 1564 я бы с удовольствием, только мне позарез ресет нужен в положительной логике. 1564 andyTh написал: В Шило, кстати, все правильно. Но у меня очень давно бумажный Шило тоже куда-то пропал, я даже и не помню, какой именно из Шил. приделали ноги Я этот с полки взял и посмотрел в нем: (сорри за полосы, освещение люминесцентная лампа) |
Mixa
Member
Откуда: Москва Всего сообщений: 170 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 8 авг. 2009 |
Блин, засада ... Заранее не обратил внимание на SACK, решил, что это некий аналог BSY, только от другого ведущего, и заложился на то, что они не перекрываются.. А вот и нет. BSY еще не снят, а SACK уже появился. И SYNC еще активен! Перекрытие 300 нс. И кто, спрашивается, управляет шиной ??? У меня встречные буфера на SYNC, WTBT, DIN, DOUT. В одном направлении включается при помощи BSY, в другом при помощи SACK. В результате 300 нс какого-то идиотизма на шине, с конфликтами уровней и прочей "прелестью". Ушел думать. |
_Patron_
Member
Откуда: Москва Всего сообщений: 146 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 19 дек. 2012 |
Профиль | Сообщить модератору
NEW! Сообщение отправлено: 1 ноября 2017 1:12 Сообщение отредактировано: 1 ноября 2017 1:15
Mixa написал: В стандарте Q-Bus описана следующая последовательность запроса ДМА. Заранее не обратил внимание на SACK, решил, что это некий аналог BSY, только от другого ведущего, и заложился на то, что они не перекрываются.. А вот и нет. BSY еще не снят, а SACK уже появился. И SYNC еще активен! Перекрытие 300 нс. И кто, спрашивается, управляет шиной ??? 1. Устройство начинает запрос ДМА выставлением DMR. 2. Процессор подтверждает запрос ДМА выставлением DMG ( сразу после выставления DMR / снятия SACK, смотря что позже ). 3. Устройство, приняв DMG, активирует режим ДМА выставив SACK ( сразу после снятия SYNC / снятия RPLY, смотря что позже ) и сняв DMR. 4. Процессор снимает подтверждение DMG сразу после выставления SACK устройством. 5. Процессор также снимает DMG в случае снятия устройством DMR до выставления SACK или отсутствия SACK в течение 10 мкс после выставления DMR. 6. После снятия DMG при активном SACK процессор останавливается до снятия SACK устройством. 7. При рефреше памяти через шину - устройство не должно выполнять больше 4 циклов DATI / DATO или 2 циклов DATIO за один раунд ДМА. 8. После снятия устройством SACK - процессор ожидает снятия устройствами SYNC и RPLY, после чего возвращается к работе с шиной. 9. Устройства должны снять с шины сигналы DATA, BS7 и WTBT не позже, чем через 100 нс после снятия SYNC. |
Mixa
Member
Откуда: Москва Всего сообщений: 170 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 8 авг. 2009 |
Профиль | Сообщить модератору
NEW! Сообщение отправлено: 1 ноября 2017 13:17 Сообщение отредактировано: 1 ноября 2017 13:19
_Patron_ написал: У 588ВТ2 есть сигнал, по смыслу похожий на SACK. Он везде называется по-разному, минскую терминологию специально приводить не буду, она какая-то странноватая. Поэтому пусть будет SACK. Но на самом деле это не чистый SACK, потому что вышеприведенный п. 3 не выполняется, этот сигнал ставится сразу по приходу DMG без ожидания снятия SYNC. Я его использовал как SACK и ничего хорошего из этого не получилось. Хорошо, пусть это будет Early SACK, ESACK его назовем. 3. Устройство, приняв DMG, активирует режим ДМА выставив SACK ( сразу после снятия SYNC / снятия RPLY, смотря что позже ) и сняв DMR. Patron, спасибо большое за разъяснения, у меня какая-никакая а шина, поэтому буду подгонять обмен сигналами в направлении этого протокола. А то уж всякие совсем грязные хаки в голову полезли, и от этого стало грустно. Дальше становится интереснее. Как определить момент для выставления настоящего SACK? Отслеживать шинные SYNC и RPLY внешними схемами не хочется, нафига тогда эта большая ИС ВТ2, большая - подразумевается умная, а как иначе? Посмотрел повнмательнее на поведение ВТ2. Она все-таки следит за шиной, дожидается окончания SYNC и только после этого начинает свой цикл. Начинает она его с формирования интервала времени при помощи внешней RC цепочки. И если бы не эта внешняя хрень, узнать, когда эта БИСина задумывает сделать свой цикл, невозможно в принципе. Только угадывать внешними схемами, но это ж фу-у-у.. Единственная зацепка, единственный шанс для ВТ2 остаться контроллером ПДП в этом изделии. Значит, так тому и быть, будем формировать цифровой сигнал из аналогового. Процесс - быстрый разряд C через открытый ключ до нуля и закрывание ключа с последующим медленным зарядом через R до напряжения питания, соответственно, сигнал это короткий отрицательный импульс вниз от питания и обратно. Напрашивается следующее решение. RS триггер, ESACK в своем пассивном состоянии держит его в одном положении. ESACK активируется, отпускает удержание триггера, а импульс на C перекидывает триггер. В конце цикла пассивный ESACK перекидывает его обратно. Как раз правильный SACK на этом триггере и сформируется. Пошел думать дальше, из чего этот триггер сделать Я как-то где-то делал несимметричный RS триггер (внутри ХЛ8 емнип, одна макроячейка всего), логически - закольцованные И и ИЛИ, оба без инверсии. Оба выхода прямые (или оба инверсные). Второй вход И это /R, второй вход ИЛИ это S (если считать, что выходы прямые). Как раз своей разнополярностью R и S для этого триггера SACK подходят. Но для превращения в шинный SACK его нужно пропустить через повторитель с ОК. В любом случае ресурсы нужно изыскивать. Ну что, не все уж так и плохо, только неожиданными фишечками схемка обрастает. |
Mixa
Member
Откуда: Москва Всего сообщений: 170 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 8 авг. 2009 |
SACK триггером RS укоротил. Получилось как было задумано, SACK и BSY не перекрываются, буфера не конфликтуют, сигналы как конфетки. Теперь озадачен другим. Квитирование все равно не стало таким, как по протоколу Q-bus. Сейчас так: 1. Устройство выставляет DMR 2. Процессор отвечает DMG, устройство тут же снимает DMR, ЦП следом снимает DMG. 3. Устройство ждет снятия SYNC, после снятия выставляет SACK. 4. Устройство выполняет цикл ПДП, снимает SACK 5. Управление шиной возвращается ЦП. Смущает наличие промежутка времени, хотя и короткого, но во время которого все квитирующие сигналы пассивны, шина как бы ничья. Между концом SYNC и началом SACK она ничья. Реально она может быть ничьейй только в отсутствии памяти состояний у процессора. Есть подозрение, что это не так, нужно будет проверить, не подавать SACK и посмотреть, начнет процессор свой новый цикл или нет. Также проверил вариант с SACK не задержанным, но с задержанным управлением буферами. Все отлично работает, но наложение SACK на еще активный цикл шины ЦП протоколу не соответствует. С окончательным вариантом реализации определюсь после того, как станет понятно, отпускает или нет процессор шину после квитанции DMR - DMG - /DMR - /DMG и без SACK, если да, то сделаю задержанный SACK, если нет, то оставлю SACK в исполнении ВТ2, а задержу только управление буферами. |
Mixa
Member
Откуда: Москва Всего сообщений: 170 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 8 авг. 2009 |
Профиль | Сообщить модератору
NEW! Сообщение отправлено: 9 ноября 2017 12:33 Сообщение отредактировано: 9 ноября 2017 12:51
Как оказалось, квитанции DMR - DMG это не более, чем обмен любезностями. Если SACK после этого обмена не подать, процессор продолжит свои циклы, как обычно. Стало быть, делаем по плану Б, то есть налезаем ранним SACK на хвост цикла ЦП. С другой стороны, ЦП сам напрашивается налезть ему на хвост, просигналив DMG. DMR: дай поиграть DMG: бери /DMR, SACK: беру /DMG: отдашь, как наиграешься (активный SACK не мешает закончить текущий цикл, но препятствует началу нового цикла ЦП) /SYNC: вижу, ты свое закончил, переключаю буфера. /SACK: отдаю, надоело Если делать более приближенно к протоколу: DMR: дай поиграть DMG: бери /DMR: понял /DMG: ну да (непонятная пауза, нужно спешить выставить SACK, пока не началось... SYNC закончился, ставим SACK!) SACK: ну этта, я типа взял, ага? (нет ответа) /SACK: отдаю, надоело Первый вариант выглядит более осмысленным. Так и делаем. В узле индекс-регистра-счетчика ИЕ7 поменял на ИЕ13. Не углядел, что у ИЕ7 вход -1 может работать как запрет счета только для триггера младшего разряда. С ИЕ13 все правильно получается, с той разницей, что автоинкремент разрешен нулем. Индекс загружается значением адреса и битом запрета инкремента адреса, т.е., чтоб поработать только с регистром 3, к примеру, нужно загрузить ^B1011, а не 3. Ну или 100003, смотря куда этот бит прикрутить. Слегка противоестественно, но машине пофиг. А если вдруг свободный инвертор нарисуется после всего, то в этом узле его можно будет утилизировать в первую очередь. |
_Patron_
Member
Откуда: Москва Всего сообщений: 146 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 19 дек. 2012 |
Профиль | Сообщить модератору
NEW! Сообщение отправлено: 9 ноября 2017 18:04 Сообщение отредактировано: 9 ноября 2017 18:20 |
_Patron_
Member
Откуда: Москва Всего сообщений: 146 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 19 дек. 2012 |
Профиль | Сообщить модератору
NEW! Сообщение отправлено: 9 ноября 2017 18:18 Сообщение отредактировано: 9 ноября 2017 18:31
Mixa написал: Пауза гостированная = 10 мкс ( 64 такта ). В момент выставления DMG запускается счётчик на 64 такта, который тикает параллельно с ожиданием RPLY и снятием SYNC. Процессор гарантированно снимает SYNC до обнуления счётчика. Процессор не начинает новый цикл шины при активном сигнале DMR до истечения таймаута SACK. В момент обнуления счётчика ожидание SACK прекращается и процессор возвращается к нормальной работе. непонятная пауза, нужно спешить выставить SACK, пока не началось... Не факт, что у ВМ1 это так, но это так по стандарту Q-Bus. Таймаут SACK не может быть меньше таймаута RPLY именно для того, чтобы даже после снятия SYNC по таймауту RPLY - всё равно оставалось время для ожидания выставления SACK. |
Mixa
Member
Откуда: Москва Всего сообщений: 170 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 8 авг. 2009 |
Вечером попозже осциллограммы приложу, с ними нагляднее. У меня процессор до ожидания SACK не доходит (вопрос, есть ли такое состояние у ВМ1, ожидание SACK?), еще до окончания SYNC ВМ1 выдает DMG, на что сразу снимается DMR и следом в ответ DMG тоже. SYNC еще активен. 588ВТ2 такую реакцию на DMG предлагает, приходится приспосабливаться простыми средствами. |
_Patron_
Member
Откуда: Москва Всего сообщений: 146 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 19 дек. 2012 |
Профиль | Сообщить модератору
NEW! Сообщение отправлено: 9 ноября 2017 18:45 Сообщение отредактировано: 9 ноября 2017 18:56
Mixa написал: Процессор действует по стандарту - приняв DMR выдаёт DMG и запускает таймер ожидания SACK. По стандарту, в случае снятия DMR до прихода SACK - ожидание SACK прекращается немедленно. еще до окончания SYNC ВМ1 выдает DMG, на что сразу снимается DMR и следом в ответ DMG тоже. SYNC еще активен. Если устройство выдаёт SACK после снятия DMR - это нонсенс. Устройство должно выдавать SACK до снятия DMR и DMG. Пока не снят DMR - активен DMG. Пока активен DMG - тикает таймер ожидания SACK и процессор не может начать новый цикл шины. Когда таймаут SACK истекает - процессор снимает DMG, что означает игнор DMR, отказ от ожидания SACK и продолжение обычной работы. Решение проблемы ( на мой взгляд ) - защёлкивание "нашего" DMR до выставления "нашего" SACK. Тогда всё будет по стандарту и процессор не снимет DMG до истечения таймаута SACK. |
Mixa
Member
Откуда: Москва Всего сообщений: 170 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 8 авг. 2009 |
_Patron_ написал: У меня ВТ2 выдает SACK одновременно со снятием DMR и до снятия DMG. Понятно, почему я не увидел состояние ожидания SACK. А процессор такой поспешности не удивляется и не сопротивляется, есть мысль на этом и остановиться. Если устройство выдаёт SACK после снятия DMR - это нонсенс. Устройство должно выдавать SACK до снятия DMR и DMG. _Patron_ написал: Вроде как да, и реализуемо, и картинка по стандарту выходит. Но ВТ2 ничего не знает про то, что его SACK задержали и нужно соблюсти политес в виде подождать конца SYNC, выставить свой SACK и уж потом выставлять свой SYNC. Он свой SYNC выставляет по факту снятия SYNC от ЦП, немного подождав. Не, не буду красивую картинку протокола рисовать, другим bus masters, если такие вообще появятся, это не помешает. Решение проблемы ( на мой взгляд ) - защёлкивание "нашего" DMR до выставления "нашего" SACK. Тогда всё будет по стандарту и процессор не снимет DMG до истечения таймаута SACK. |
_Patron_
Member
Откуда: Москва Всего сообщений: 146 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 19 дек. 2012 |
Профиль | Сообщить модератору
NEW! Сообщение отправлено: 9 ноября 2017 20:08 Сообщение отредактировано: 9 ноября 2017 20:22
Mixa написал: Абитражу DMA вообще ничто не может помешать, потому что в Q-Bus нет линии DMG. Вместо этого у каждого устройства есть вход DMGI и выход DMGO ( у процессора - только DMGO ). DMGO процессора поступает на DMGI первого басмастера, DMGO первого басмастера поступает на DMGI второго басмастера и т.д. Как только басмастер выставляет DMR - он отключает DMGI от DMGO, поэтому младшие басмастеры не имеют шансов увидеть DMG до тех пор, пока старшие не закончат работу с шиной. другим bus masters, если такие вообще появятся, это не помешает DMR - это линия, поэтому если два устройства выставили DMR - снятие DMR старшим басмастером никто не заметит, но это и не играет роли - если в момент снятия SACK активен сигнал DMR - процессор снова выставляет DMG и на этот раз его принимает второй басмастер, ожидавший своей очереди. |
Mixa
Member
Откуда: Москва Всего сообщений: 170 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 8 авг. 2009 |
Профиль | Сообщить модератору
NEW! Сообщение отправлено: 9 ноября 2017 22:05 Сообщение отредактировано: 10 ноября 2017 21:50
Во, Здесь те же, последний - переключение буфера сигналов управления. Если его использовать как SACK, а сначала я так и хотел, то остальная картина не меняется совершенно, только было подозрение, что такой SACK это нехорошо, и спасибо Patron , тоже подтвердили, что это нонсенс. Правильное слово, нонсенс. Вне концепции, стало быть. Все работает без нареканий и сбоев, так и оставлю ранний SACK P.S. DMG, SACK, BSY и упр. буфером. Буфер двунаправленный, одно направление открывается по BSY, другое по этому сигналу. Видно, что все хорошо, управление не перекрывается, конфликтов нет. |
Mixa
Member
Откуда: Москва Всего сообщений: 170 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 8 авг. 2009 |
Профиль | Сообщить модератору
NEW! Сообщение отправлено: 11 ноября 2017 0:51 Сообщение отредактировано: 11 ноября 2017 0:52
Так, с ПДП разобрались, утвердили, продолжаем. Смотрю, что получилось с прерываниями. 588ВН1 имеет два входа прерываний, A и B. Задумка такая, что на INT A приходит irq14 от IDE, на INT B идет прерывание от 588ВТ2, знаменующее окончание сеанса ПДП. 588ВН1 может выдавать вектор, запрограммированный на 6-ти специально отведенных для этого входных линиях, либо из содержимого двух внутренних 7-разрядных регистров, по регистру на каждый источник прерывания. В общем, 588-я серия продолжает преподносить сюрпризы и непонятки. В данном случае трудно понять, чем руководствовались минские разработчики, выделив 6 разрядов под внешнее кодирование вектора и 7 разрядов под внутренне-регистровое, и то, как их распределили по шине АД. Если шину АД подсоединять как по справочнику (всего 7 линий, АД7..АД1, АД0 не существует, но это понятно и очевидно, что он не требуется), то гранулярность кодирования вектора как при внешнем способе, так и при внутреннем, составляет 1 слово. На практике это не нужно, обычно гранулярность 2 слова, для адреса обработчика по четному адресу слова и PSW по нечетному адресу слова. Ради любопытства попробовал закодировать вектор по нечетному адресу слова, и расположив в памяти адрес входа в процедуру и PSW "с перекосом" соответственно, увидел, что так тоже работает. Но так никогда не делается, зачем такая возможность - совершенно непонятно. 7 разрядов регистров покрывают область векторов 000..376 полностью, внешние 6 разрядов только половину (старший разряд устанавливается в 1), то есть покрывается вторая половина области векторов. Логичнее было бы использовать в обоих способах 6 разрядов, с гранулярностью 2 слова, с полным покрытием и при это ничего лишнего. В общем, в построении концепции кирпичики оказались крупноваты и по форме несуразны, неоформившаяся идея казалась симпатичнее, но вперед движемся, от проекта не отказываемся. Пока в раздумьях, на каком из вариантов остановиться: 1. Подключение АД "по справочнику" плюсы - как бы и нету, какие могут быть плюсы в подключении, рекомендуемом справочником. Типа эталон. минусы - а вот минусы быть могут, описаны выше 2. Подключение АД со смещением на 1 разряд плюсы - гранулярность векторов 2 слова - полное покрытие векторов в режиме внешнего кодирования минусы - не могу определится, минусы это или нет. Есть особенности: сдвинутые биты регистра управления и состояния относительно "справочного" положения, неиспользуемый разряд при кодировании регистрами (выдается вхолостую на АД8), присутствие на шине не только в пределах младшего байта, выдача "1" в разряде АД8 в цикле "чтение вектора" при внешнем кодировании. Вот написал, и, похоже, что с выбором определился. Подключение со смещением на 1 разряд. Ни одна из особенностей минусом не является. Кодирование вектора внешнее, разделение источников INT A и INT B при помощи специального схемотехнического приема. У микросхемы есть вывод, на котором появляется сигнал при подтверждении прерывания INT B , если его завести на одну из линий внешнего кодирования, то на прерывания A и B будут выдаваться разные векторы. Такой трюк работает, проверил. |
Anonymous
Advanced Member
Откуда: Москва(Россия) Всего сообщений: 2537 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 22 нояб. 2011 |
Mixa написал: Именно так всегда и делалось, справочники - как газеты, их после еды читать лучше. DEC же поправился, что область плавающих пользовательских векторов до 01000 простирается, а до 0400 размещаются системные вектора, т.к. системный стек расположен в верхней половине первых 64кб, а пользовательский стек находится в отображении памяти пользователя. Но это для процессоров с ДП. Вот написал, и, похоже, что с выбором определился. Подключение со смещением на 1 разряд. Mixa написал: Обычно он заводился на AD2, давая вектор-B на 4 больше вектора-A, как в большинстве устройств с несколькими векторами принято. сигнал при подтверждении прерывания INT B , если его завести на одну из линий |
Mixa
Member
Откуда: Москва Всего сообщений: 170 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 8 авг. 2009 |
Anonymous написал: Я почему-то решил, что вектор воспринимается только с линий АД7-АД1 , но оказалось, что и с линии АД8 тоже. На входах кодирования установил уровни, чтоб вектор 200 выдавался, а в результате прыгнуло на 600, потому что по АД8 единица передалась. Фигня, поменяю местами подключения к АД7 и АД8, будет всегда выдаваться 1 на АД7. Появляется ограничение на выбор вектора, ну и ладно, выберем какой-нибудь из второй половины системных. Mixa написал:Именно так всегда и делалось, справочники - как газеты, их после еды читать лучше. DEC же поправился, что область плавающих пользовательских векторов до 01000 простирается, а до 0400 размещаются системные вектора, т.к. системный стек расположен в верхней половине первых 64кб, а пользовательский стек находится в отображении памяти пользователя. Но это для процессоров с ДП. Вот написал, и, похоже, что с выбором определился. Подключение со смещением на 1 разряд. Anonymous написал: Ну да, так и делаю Вначале опасался, что подтверждение VECB с большой задержкой будет проходить с линии кодирования на выход АД, но нет, все нормально, даже иголки практически нет, только намек на нее. Mixa написал:Обычно он заводился на AD2, давая вектор-B на 4 больше вектора-A, как в большинстве устройств с несколькими векторами принято. сигнал при подтверждении прерывания INT B , если его завести на одну из линий |
Mixa
Member
Откуда: Москва Всего сообщений: 170 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 8 авг. 2009 |
Профиль | Сообщить модератору
NEW! Сообщение отправлено: 11 ноября 2017 16:22 Сообщение отредактировано: 11 ноября 2017 20:14
Вектор прерывания это слово целиком, имеют значение все 15 разрядов. 588ВН1 у меня упрятан за двунаправленный буфер с инверсией и выдает вектор 300, по 7-ми линиям АД, АД8-АД2. Остальные линии буфера на стороне ВН1 ничем не драйвятся, находятся в состоянии высокого импеданса и там присутствует сам собой получившийся потенциал логического нуля, сохраняющийся за счет емкости шины. Ноль этот обусловлен тем, что системная шина (инверсная сторона буфера) притянута к питанию (то есть на ней лог.0 ), в цикле приема вектора ее никто не драйвит и этот лог. 0 передается на неинверсную сторону, разряжая шину со стороны ВН1. По IAKO & DIN буфер переключается, потенциал на шине сохраняется, она начинает чем-то заряжаться, но делает это очень медленно и ноль там сохраняется до конца цикла IACK. То есть, вроде как все детерминировано, но такое положение вещей мне сильно не нравится, удержание потенциала шины в критический момент ее чтения только за счет ее емкости в концепцию ну никак не входит. Я решил проверить, какие разряды ВМ1 воспринимает как вектор прерывания. Расставил ловушки по адресам 1300, 2300, 4300, 10300, 20300, 40300 и 100300. Стал по очереди притягивать линии на неинверсной стороне сопротивлением к питанию. Ловушки срабатывают все. То есть, при выдаче вектора прерывания нужно заботиться о том, чтобы передавались все биты слова без искажения. Блин, появилась забота, какими средствами это сделать. Возвращаться к подключению "по справочнику"? Тогда получится: АД7 всегда единица, вектора из второй половины таблицы. АД6-АД3 кодируются произвольно. На АД2 завернут VECB, разделяя INT A и INT B. АД1 кодируется нулем с целью удержания потенциала шины. Теперь, с учетом нового понимания, это не просто какой-то мусорный разряд, а разряд, занимающийся удержанием потенциала. Причем этот потенциал программируется , не хухры-мухры. АД0 можно оставить условно-неопределенным, в емкостном нуле. Осталось разобраться со старшей половиной шины. А не подвести ли туда 8 диодов от линии инверсное IAKO & DIN ? Другой вариант - отключить вообще этот буфер по IAKO & DIN . Процессору потенциал сформируется подтяжками на системной шине. Надо подумать. P.S. Подумал. После раскидывания узлов по "колокольчикам", остался один ИЛИ-НЕ. Если на него подать /DIN и /IAKI , на выходе получится как раз /OE для "верхнего" буфера. /OE "нижнего" буфера - вечный ноль. Теперь нужно подключать живой IDE и смотреть, как и что там будет получаться. Задумано два отдельных прерывания на одно устройство, думаю, логично и оправдано. Одно прерывание по готовности устройства, это понятно, дал команду на чтение сектора, ушел по своим делам, прервали, пришел за данными. Другое прерывание по готовности пересылки ПДП. Запустил ПДП, ушел по своим делам, прервали, данными в памяти можно пользоваться (если чтение с диска). Если запись на диск, можно запустить ПДП и ждать прерывания уже от устройства, но прерывание от ПДП тоже может быть полезным для какого-нибудь промежуточного контроля. |
Anonymous
Advanced Member
Откуда: Москва(Россия) Всего сообщений: 2537 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 22 нояб. 2011 |
Mixa, я у себя только буфер младшего байта открываю в цикле передачи вектора, таким образом старший байт всегда равен нулю за счёт подтяжек МПИ со стороны процессора. |
Mixa
Member
Откуда: Москва Всего сообщений: 170 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 8 авг. 2009 |
Подключил IDE, попробовал читать-записывать сектора. Удивительно, оно работает. Даже получается фишка с автоинкрементом адреса IDE CS0, и даже можно заполнять регистры методом ПДП. Также сделал таймаут шины при обращении от контроллера ПДП, и тоже фурычит, и вполне вменяемое поведение получается. Случился таймаут, сеанс ПДП заканчивается, возникает прерывание, читаем регистр состояния ПДП - там ошибка, все четко. Вроде можно переносить с макета на схему, но есть шероховатость. Сейчас группы регистров по IDE CS0 и IDE CS1 адресуются своими отдельными линиями CS, и еще есть третья, идущая на запись в индекс-регистр-счетчик, через который адресуется IDE. Как известно, IDE CS1 представляет из себя тот еще костыль, один из множества уродцев из наследия, начало которому положило IBM PC. К тому же с очень малоиспользуемой функцией, и тратить на это чудо целую линию CS как-то не хотелось бы. И возникла идея объединить его с индекс-счетчиком, поместив счетчик в пустующий старший байт. Пусть оба костылика будут на одном CS, один досадный ATAшный и другой, прикольно-полезный. Высвободившийся CS пойдет на контроллер прерывания, там один из регистров вектора остался неадресованным. Таким образом, неадресованных ресурсов не остается. Это радует. Пошел перепаивать, и смотреть, что получится. |
Anonymous
Advanced Member
Откуда: Москва(Россия) Всего сообщений: 2537 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 22 нояб. 2011 |
Mixa написал: Почему малоиспользуемой? Там же не только программный сброс накопителя, там и разрешение прерываний от него. CS1 представляет из себя тот еще костыль, один из множества уродцев из наследия, начало которому положило IBM PC. К тому же с очень малоиспользуемой функцией |
Mixa
Member
Откуда: Москва Всего сообщений: 170 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 8 авг. 2009 |
Anonymous написал: Ну да. Пожалуй. Но все равно костыль. Mixa написал:Почему малоиспользуемой? Там же не только программный сброс накопителя, там и разрешение прерываний от него. CS1 представляет из себя тот еще костыль, один из множества уродцев из наследия, начало которому положило IBM PC. К тому же с очень малоиспользуемой функцией В общем, баланс вроде нашел, пошел рисовать схему и печатку. Вот думаю, наверное позволю появиться межслойным переходам не на ногах микросхем. Боюсь, без этого уже не получится, микросхем много на поле 8х10 см, еще и разъемы.. От PALок, кстати, выигрыш сомнительный, кроме БИСов простой ТТЛовский набор будет. Н-да. На фазе начальной мотивации оно как-то симпатичнее и проще представлялось. Макет сейчас так выглядит. ВП1-065 на другой плате будет. |
Mixa
Member
Откуда: Москва Всего сообщений: 170 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 8 авг. 2009 |
Затею пока не оставил, перешло в фазу переноса всего на печатку. И вот думаю, что по большому счету нет смысла иметь настраиваемые адреса регистров и векторов прерывания. С прерываниями вообще получается два способа задания вектора, потенциалами снаружи и программированием изнутри. Какую из этого можно извлечь пользу или прикол - пока ясности нет. Вот на макете у меня сейчас, железные вектора это 240 и 244, а база для 8-ми регистров - 174200. То есть, диапазон с 174200 до 174216. Может, их железно сделать и оставить ? Векторы сделать 220 IDE и 224 DMA, по стандарту они диск и лента, диск остается диском, ленты нет и не предвидится. И регистры, занять место того же RK11, 177400 до 177416. Все равно ведь потом будет, ну сделаю возможность задавать перемычками или переключателями, ну поставлю в какое-то значение, но и все. |
Mixa
Member
Откуда: Москва Всего сообщений: 170 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 8 авг. 2009 |
Случилось чудо. IDE+DMA неожиданно развелся в два слоя без переходов на сигнальных проводниках. Другая плата это терминал на ВП1-065, плюс MAX232, инверторы для него и переключатель режимов. Кроме терминала ничего туда ставить не стал. Много пустого места, ну и ладно, зато развелось мгновенно. До RTC еще не дозрел, а часики там поместились бы. Но решил не заморачиваться с часами и календарем. Хватит и тех заморочек с IDE+DMA. Платы в производстве, ура. |
Mixa
Member
Откуда: Москва Всего сообщений: 170 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 8 авг. 2009 |
Ну что. Типа всё Из этого собирается этажерка - и оно работает! Косяк все же есть, на IDE перепутал CSы. Резать дорожки не стал, обошелся перекручиванием проводов на шлейфе, на фотке видно. Последовательный порт вывел на разъем IDC-10, стандартный для мультикарт от PC. На митинской барахолке нашел COM-овский хвост, подошел. Там же нашел 588ВТ1 в керамике, его и впаял. Нефиг ему на витрине сверкать под лампочками. Преобразователь уровней - MAX232. Из-за него пропал смысл наличия отрицательного напряжения питания. И также пропал смысл применения РУ3. Оставил "отладочные" РУ6. Пускай всё от +5 питается. Винчестер не в счёт. Итого, имеется нечто, с последовательным портом, прерыванием 50 Гц, интерфейсом IDE c DMA и прерываниями. Проект шел под девизом прикоснись к легенде, сейчас как-то само собой трансформировалось в "представь, что это легенда". Какое-то оно карманное, 10х8х8 см (ну, к чему стремился). Чего-то не хватает для самоочевидности. Наверное, масштабности размеров, запаха нагретой изоляции, мигающих лампочек и каких-то звуков. Винт буду цеплять Seagate ST-157A. Как раз духу того времени соответствует. RSX-11 не хочу (а она вообще комфортна в 32 к слов?). Посматриваю в сторону RT-11, это правильное направление? Периферии достаточно для нее (терминал, диск, таймер 50 Гц)? А вообще, Ксоникс хочу, это мотивирующая цель. |
Anonymous
Advanced Member
Откуда: Москва(Россия) Всего сообщений: 2537 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 22 нояб. 2011 |
Mixa написал: Периферии достаточно, но вообще половины памяти маловато и для rt11, это только в BL мониторe работать, даже для SJ/SB - маловато. RSX-11 не хочу (а она вообще комфортна в 32 к слов?). Посматриваю в сторону RT-11, это правильное направление? Периферии достаточно для нее (терминал, диск, таймер 50 Гц)? А вообще, Ксоникс хочу, это мотивирующая цель. Xonix есть под rt11 http://qbus.narod.ru/xonix1.zip такой. |
andyTh |
NEW! Сообщение отправлено: 28 декабря 2017 8:33
Любопытная этажерочка Интересно будет поглядеть на драйвер IDE, а может и загрузчик даже. |
Сейчас на форуме |
Mixa
Member
Откуда: Москва Всего сообщений: 170 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 8 авг. 2009 |
Профиль | Сообщить модератору
NEW! Сообщение отправлено: 28 декабря 2017 14:55 Сообщение отредактировано: 28 декабря 2017 18:09
Anonymous написал: Я ненамеренно ввел в заблуждение. Там на самом деле две платки по 16 х РУ6, они вместе соединены, а выглядит как одна. Память полная, более того, простирается до 172776. Но есть опция "как надо", до 157776, выставляется джампером. Периферии достаточно, но вообще половины памяти маловато andyTh написал: Мне тоже интересно. По этому полю ни разу не ходил. С железной частью закончил, и интересно, как она на софт ляжет. IDE в стиле PC/AT - как-то несерьезно у них, программная блочная пересылка. Поэтому только ПДП. Интересно будет поглядеть на драйвер IDE, а может и загрузчик даже. |
MM
Advanced Member
Откуда: Павловский Посад Мск.обл. Всего сообщений: 3418 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 2 авг. 2013 |
Mixa написал: Можно для экстремальной простоты сделать начало полезного пространства винчестера примерно так с ~10-го мегабайта - что бы была возможность предварительно разметить ФС под МС ДОС, и разместить там группу файлов по 32 метра типа .DSK По этому полю ни разу не ходил. Напрмер , классичсекая RT-11 V5.00 позволяет иметь на устройстве до 8 томов по 32 метра каждый, итого - 256 метров. Ну и несколько "устройств" - AD:, BD:, CD:, DD:.... Так запросто можно 2 Км и занять. А вот насчет новодельных ОС с 31-м томом на устройстве и разрешающих 2000-й год - хрень там полная, каталоги не совместимы с классикой V5.00, не рекомендую. |
Anonymous
Advanced Member
Откуда: Москва(Россия) Всего сообщений: 2537 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 22 нояб. 2011 |
MM написал: Тут же не БКшка и БКшные ОС тут смысла нет заводить и обсуждать. А вот насчет новодельных ОС с 31-м томом на устройстве и разрешающих 2000-й год - хрень там полная, каталоги не совместимы с классикой V5.00, не рекомендую. |
MM
Advanced Member
Откуда: Павловский Посад Мск.обл. Всего сообщений: 3418 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 2 авг. 2013 |
Anonymous написал: Не ясно, при чем тут БК - речь идет о клоне МС1201.01 с ( почти ) новым обвесом. MM написал:Тут же не БКшка и БКшные ОС тут смысла нет заводить и обсуждать. А вот насчет новодельных ОС с 31-м томом на устройстве и разрешающих 2000-й год - хрень там полная, каталоги не совместимы с классикой V5.00, не рекомендую. |
Mixa
Member
Откуда: Москва Всего сообщений: 170 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 8 авг. 2009 |
MM написал: Где-то можно назвать и так, только изначальной цели клонировать или сделать похожее, не было. Пошел разворачивать от особенностей ВМ1 самого по себе, для SEL1 и ПЗУ выбрал ВП1-030 (а заодно и ОЗУ), и все, попал в колею так, что и не соскочишь особо. речь идет о клоне МС1201.01 с ( почти ) новым обвесом. |
_Patron_
Member
Откуда: Москва Всего сообщений: 146 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 19 дек. 2012 |
Mixa написал: RT-11 при загрузке проверяет память до адреса 170000, чтобы задействовать больше 60 Кб - надо подправить код загрузчика: Память полная, более того, простирается до 172776. Но есть опция "как надо", до 157776, выставляется джампером. |
MM
Advanced Member
Откуда: Павловский Посад Мск.обл. Всего сообщений: 3418 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 2 авг. 2013 |
Профиль | Сообщить модератору
NEW! Сообщение отправлено: 29 декабря 2017 0:25 Сообщение отредактировано: 29 декабря 2017 0:26
Mixa написал: Как развитие концепта можно было бы разработать полуплату ДВК - проц. и не соскочишь особо. Для сокращения габаритов - использовать ИС в корпусировке ЭКФ, а вместо разъема принтера - разъем IDE. Ну и ИРПС/RS232 высоковольтный. Можно и ДОЗУ применить импортное малогабаритное. Кстати, в Москве продаются недорого ЭКФ1531АП7, примерно так по 30 руб ( оплата через банк, район Перово, с почтой -только ЕМС с курьером ( не дружат с почтой... ) ). |
Mixa
Member
Откуда: Москва Всего сообщений: 170 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 8 авг. 2009 |
_Patron_ написал: А где такие загрузчики с комментариями водятся? надо подправить код загрузчика |
_Patron_
Member
Откуда: Москва Всего сообщений: 146 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 19 дек. 2012 |
Mixa написал: В наборе исходников RT-11 с комментариями: А где такие загрузчики с комментариями водятся? RT-11 v05.04 RT-11 v05.07 |
MM
Advanced Member
Откуда: Павловский Посад Мск.обл. Всего сообщений: 3418 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 2 авг. 2013 |
Mixa написал: Может быть целесообразно аппаратно ограничить ОЗУ на отметке 167776 ? _Patron_ написал:А где такие загрузчики с комментариями водятся? надо подправить код загрузчика Тогда и патчить не надо... |
Mixa
Member
Откуда: Москва Всего сообщений: 170 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 8 авг. 2009 |
_Patron_ написал: Ага, спасибо, стянул! Я так понял, там посекторный образ диска? RT-11 с комментариями MM написал: Не, целых полтора килобайта пропадет. Пусть будут, пригодится. Может быть целесообразно аппаратно ограничить ОЗУ на отметке 167776 ? |
Anonymous
Advanced Member
Откуда: Москва(Россия) Всего сообщений: 2537 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 22 нояб. 2011 |
MM написал: Это был комментарий к вашему замечанию, которое встречалось только на БК и УКНЦ, где исполнительная среда БКшных программ использовала дополнительные слова в каталоге для хранения своей информации и которая терялась при перезаписи файла стандартными средствами ОС. Вот я написал, что БК не надо сюда тянуть, на стандартном софте и оборудовании таких проблем нет. Не ясно, при чем тут БК - речь идет о клоне МС1201.01 с ( почти ) новым обвесом. Mixa написал: Можно научить драйвер какой-нибудь туда пересаживать часть себя и таким образом экономить память. Только ОС при этом должна быть старших версий, т.к. более ранние не поддерживают запрос, позволяющий указать процедуры, выполняемые при загрузке и выгрузке драйвера, в которых можно было бы обеспечить такой функционал, эта возможность появилась с версии 5.3. Не, целых полтора килобайта пропадет. Пусть будут, пригодится. |
_Patron_
Member
Откуда: Москва Всего сообщений: 146 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 19 дек. 2012 |
Профиль | Сообщить модератору
NEW! Сообщение отправлено: 29 декабря 2017 15:59 Сообщение отредактировано: 29 декабря 2017 16:01
Mixa написал: Если говорить строгим "научным" языком, посекторный образ - это образ с сохранением программного интерлива, поблочный образ - образ без сохранения программного интерлива. Для образов дисков, исходно записанных без программного интерлива - посекторный и поблочный образы совпадают. Стандартный файл DSK - это поблочный образ диска. Впервые ( если не ошибаюсь ) формат DSK был использован в RT-11 для логических дисков, подключаемых к приводам драйвера LD.SYS. Я так понял, там посекторный образ диска? Любые файлы DSK ( как поблочные, так и посекторные ) можно открывать как архивы в TC и FAR, используя DSK-плагин. |
MM
Advanced Member
Откуда: Павловский Посад Мск.обл. Всего сообщений: 3418 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 2 авг. 2013 |
Anonymous написал: Впервые слышу о дополнительных словах ( и др. данных ) в каталогах стандартных ОС RT-11 SJ V5.00 MM написал:Это был комментарий к вашему замечанию, которое встречалось только на БК и УКНЦ, где исполнительная среда БКшных программ использовала дополнительные слова в каталоге для хранения своей информации и которая терялась при перезаписи файла стандартными средствами ОС. Вот я написал, что БК не надо сюда тянуть, на стандартном софте и оборудовании таких проблем нет. Не ясно, при чем тут БК - речь идет о клоне МС1201.01 с ( почти ) новым обвесом. Да, по ТО на ФС RT-11 они допускаются, но на практике - не видал . По крайней мере свои поделки с такими "пирогами" я никому не списывал, и вроде как нигде не обсуждал. Да и сама RT-11 там не присуствовала. |
Anonymous
Advanced Member
Откуда: Москва(Россия) Всего сообщений: 2537 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 22 нояб. 2011 |
MM, тогда на какие новодельные ОС, несовместимые по каталогам с RT-11, но имеющие с ней проблемы, вы ссылались? Да и странное "с 31-м томом" ни к одной из существующих ОС не подходит. Я подумал, что про подобный софт пишите, извините. |
MM
Advanced Member
Откуда: Павловский Посад Мск.обл. Всего сообщений: 3418 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 2 авг. 2013 |
Anonymous написал: Пытался пристроить драйвер BY.SYS самой первой версии ( который практический голый - код занимает 1 экран в DESS ) к RT-11 SJ , которая с 2000-м годом и разрешает много томов в драйвере - вылетало на вторичном загрузчике в лес ( МС1201.03 ), причем явно не на первом драйвере. MM, тогда на какие новодельные ОС, несовместимые по каталогам с RT-11, но имеющие с ней проблемы, вы ссылались? Да и странное "с 31-м томом" ни к одной из существующих ОС не подходит. Я подумал, что про подобный софт пишите, извините. Потом скачал от Хобота RT-11 SJ V5.01 - начало грузиться, но не с первого раза ( особенности ?! недостоверный дамп ядра ? ). Но вся фишка в том, что я на на 100% аналогичном конфиге на МС1201.04 работал 5 лет, но с RT-11 V5.00, поставляемой с А. в составе МС507 ( ДВК-3 ). Пробовал отлавливать баг - дело в вторичном загрузчике дров, ему не нравится каталог, т.е. дефект идеологический. Ну или все образы SJ битые попались... П.С. От БК использовался исключительно сам BY.SYS , остальное - скачанное из всяких мест, особенно от Хобота. Возился неделю, по 4 часа каждый день. И в итоге еще и потерял диск, который вроде как начал загружаться . На а формат-контроль диска BY: - сторонней программой TESTBY.SAV, которая отлично работает везде. * В принципе, BY.SYS можно заменить и на драйвер PY.SYS : http://zx-pk.ru/threads/26134-...page4.html |
Mixa
Member
Откуда: Москва Всего сообщений: 170 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 8 авг. 2009 |
_Patron_ написал: В этих терминах я имел в виду поблочный. Век живи, век учись Если говорить строгим "научным" языком, посекторный образ - это образ с сохранением программного интерлива, поблочный образ - образ без сохранения программного интерлива. А вот ПЗУшный загрузчик по адресу 173000, что он должен уметь кроме чтения первого сектора в начало памяти? Смотрел примеры, они все какие-то простейшие. Не хочется там развесистую диагностику устраивать. По-простому: сброс на всякий случай, чтение первого сектора, проверка бита ошибки (если что - возврат на самое начало), передача буфера, переход на 0. |
Anonymous
Advanced Member
Откуда: Москва(Россия) Всего сообщений: 2537 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 22 нояб. 2011 |
Профиль | Сообщить модератору
NEW! Сообщение отправлено: 30 декабря 2017 11:27 Сообщение отредактировано: 30 декабря 2017 11:40
MM написал: Так драйвер надо пересобирать под каждую новую версию, дело в неправильном драйвере. Возьмите и пересоберите мой Пытался пристроить драйвер BY.SYS самой первой версииhttp://qbus.narod.ru/by.zip - у нас версия архивная с начала 90х была 5.4, хоть и появилась новомодная 5.6 в 91 году, ее до выхода 5.7 аж в 98м не давали. Но драйвер прекрасно работает под всеми, начиная с 5.3. Mixa написал: Ничего не должен, считываем блок с загрузчиком в 0 адрес памяти и обнуляем PC, адрес хранения загрузочного блока может отличаться от 0го, например, для совместимости диска со стандартом ПиСишки, куда диск можно было бы перетыкать. На всякий случай, для совместимости, ещё перед обнулением PC, заносим 010000 в SP и 0340 в RS. А вот ПЗУшный загрузчик по адресу 173000, что он должен уметь кроме чтения первого сектора в начало памяти? |
_Patron_
Member
Откуда: Москва Всего сообщений: 146 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 19 дек. 2012 |
Mixa написал: Для полноты картины можно также вспомнить о существовании подорожечных TRK образов, выполненных с сохранением разметки дорожек и аппаратного интерлива секторов. В этих терминах я имел в виду поблочный. Век живи, век учись |
MM
Advanced Member
Откуда: Павловский Посад Мск.обл. Всего сообщений: 3418 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 2 авг. 2013 |
Профиль | Сообщить модератору
NEW! Сообщение отправлено: 31 декабря 2017 13:37 Сообщение отредактировано: 31 декабря 2017 13:38
По поводу драйвера винчестера IDE для ДВК-подобных ЭВМ. Можно в SET-командах установить привязки томов ( по 32 метра ) к файлам в FAT-16. И при начальной загрузке разыскивать указанный файл в FAT-16. Разумеется, без учета фрагментации. |
Anonymous
Advanced Member
Откуда: Москва(Россия) Всего сообщений: 2537 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 22 нояб. 2011 |
MM написал: Вроде были разговоры на bk0010.org перед тем, как я оттуда выпилился из-за технических проблем с доработанным движком форума, что пишется драйвер fat для использования совместно с smk-подобными контроллерами. Чем дело кончилось? установить привязки томов ( по 32 метра ) к файлам в FAT-16 |
MM
Advanced Member
Откуда: Павловский Посад Мск.обл. Всего сообщений: 3418 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 2 авг. 2013 |
Anonymous написал: Вообще нет данных об самой затее. Чем дело кончилось? А СМК - это самодел неизвестных лиц без ТО и КД, я как бы не в курсах о таком девайсе. |
Anonymous
Advanced Member
Откуда: Москва(Россия) Всего сообщений: 2537 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 22 нояб. 2011 |
MM написал: Вот тут Вообще нет данных об самой затее.http://bk0010.org/forum/?id=15886 сообщение от TheGWBV@ - 08.04.2016 18:54 |
Mixa
Member
Откуда: Москва Всего сообщений: 170 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 8 авг. 2009 |
Профиль | Сообщить модератору
NEW! Сообщение отправлено: 4 января 2018 15:14 Сообщение отредактировано: 4 января 2018 15:20
Запрограммировал загрузчик в ПЗУ по адресу 173000. Проверил на четырех разных IDEшных дисках, успешно грузит первый сектор в начало памяти и передает туда управление. В тех секторах мусор с точки зрения процессора, в HALT вываливается в итоге по разным причинам. Однако, похоже, что всё работает. Фотки напоследок. Этажерка в сборе: и готовая к софтовым экспериментам система: Расклад регистров получился такой: 177400 DMA CSR 177402 DMA счетчик слов 177404 DMA адрес начала блока 177406 Обращение к ATA CS1FX 177410 (байт) Обращение к ATA CS3FX 177411 (байт) Задание адреса на шине ATA 177412 Прерывания CSR 177414 Прерывания вектор A (от DMA) 177416 Прерывания вектор B (от ATA) Device handler требует задания CSR устройства и вектора прерывания. Как такового ATA CSR в получившемся раскладе нету. И вектор прерывания не один, а два их. Размышляю, как лучше поступить. Вопрос в том, что такое на самом деле указываемый CSR устройства. Если это просто базовый адрес блока управления устройством, работа с которым индивидуальна для каждого устройства, то это одно. Если это адрес универсальной структуры с обращением к ней универсальным способом, и вдруг это где-то параметризуется, то это другое, и в моем случае не проходит. Лучше, чтобы было первое. Вторая непонятка с двумя векторами прерывания. Не разобрался еще с механизмом инициации вектора прерывания, но все равно возникает вопрос со вторым вектором, его нужно как-то инициировать. Есть ли какой-нибудь способ для драйвера до начала его использования вызвать код его инициализации, который резидентом не остается? |
MM
Advanced Member
Откуда: Павловский Посад Мск.обл. Всего сообщений: 3418 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 2 авг. 2013 |
Mixa написал: Вам необходимо ознакомиться с следующим доком : Есть ли какой-нибудь способ для драйвера до начала его использования вызвать код его инициализации, который резидентом не остается? "Программирование внешних устройств Руководство программиста 00008-01.33.01-2" Скан его найдете на моем форуме-справочнике из подписи ниже по тексту. Если кратко и по существу - начальную подготовку регистров и векторов производит начальный загрузчик в 173000, он вычитывает 0 блок тома, при этом сообщая номер тома и имя драйвера. В 000000 блоке тома тоже желательно повторить процедуру инициализации регистров и векторов, т.к. понадобится подпрограмма чтения блоков тома по номеру блока - более подробно в брошуре. |
Mixa
Member
Откуда: Москва Всего сообщений: 170 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 8 авг. 2009 |
Профиль | Сообщить модератору
NEW! Сообщение отправлено: 4 января 2018 16:44 Сообщение отредактировано: 4 января 2018 16:56
MM написал: Спасибо! Как-то сходу его там не нашел среди остального собрания, но судя по структуре оглавления это перевод RT-11 Software Support Manual. Он есть, его и почитаю. "Программирование внешних устройств Руководство программиста 00008-01.33.01-2" MM написал: Начальный загрузчик 173000 я сделал совсем простым, про прерывания он ничего не знает. Если кратко и по существу - начальную подготовку регистров и векторов производит начальный загрузчик в 173000, он вычитывает 0 блок тома, при этом сообщая номер тома и имя драйвера. В 000000 блоке тома тоже желательно повторить процедуру инициализации регистров и векторов, т.к. понадобится подпрограмма чтения блоков тома по номеру блока - более подробно в брошуре. Насчет векторов - гляну .DRVTB, это для Multi-Vector handlers, похоже, то, что нужно. |
Anonymous
Advanced Member
Откуда: Москва(Россия) Всего сообщений: 2537 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 22 нояб. 2011 |
Mixa написал: Он таким и должен быть. Это называется аппаратный загрузчик и его задача скачать с устройства в память первичный загрузчик, передав тому только номер привода, с которого грузились. Начальный загрузчик 173000 я сделал совсем простым, Далее первичный загрузчик, содержащий первичный драйвер, вычитывает с устройства вторичный загрузчик, сообщает ему точку входа в первичный драйвер, номер привода и имя устройства. После чего вторичный загрузчик, используя первичный драйвер грузит в память основной драйвер и сам монитор ОС. Вторичный загрузчик вам не надо писать, он входит в состав монитора ОС и при установке системы на диск копируется программой dup из файла монитора в блоки устройства со 2го по 5й. |
Mixa
Member
Откуда: Москва Всего сообщений: 170 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 8 авг. 2009 |
Профиль | Сообщить модератору
NEW! Сообщение отправлено: 4 января 2018 21:12 Сообщение отредактировано: 4 января 2018 21:13
Тут обнаружил, что то, чем управляет DW.MAC, очень похоже на WD1010, почти. Команды чтения-записи-форматирования-рекалибровки те же, почти все биты состояния на месте, так же работает с буфером сектора. А DMA, хе-хе, у него нету И прикол, (наверное в стиле PDP?) в подпрограмму передачи сектора как параметр передается машинная команда, которая, исполняясь в этой подпрограмме, передает сектор туда или сюда, в зависимости от того, чтение это сектора или запись. Надо обдумать такой приемчик. У себя девайс назову WD. Так понял, что оно любое двухбуквенное, лишь бы уникальное? А номер ID для девайса тоже любой, лишь бы уникальный? (варианты, 0 как у RK, или 53 как у DW) |
MM
Advanced Member
Откуда: Павловский Посад Мск.обл. Всего сообщений: 3418 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 2 авг. 2013 |
Вариант, как одним драйвером окучить резиновый объем носителя - в SET - параметрах прописать номер физического массива ( который по 32 метра ), из ~65534 возможных, для томов WD1...WD7. А том WD0 целесообразно оставить фиксированным. |
_Patron_
Member
Откуда: Москва Всего сообщений: 146 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 19 дек. 2012 |
Mixa написал: Да. У себя девайс назову WD. Так понял, что оно любое двухбуквенное, лишь бы уникальное? Mixa написал: Типа. А номер ID для девайса тоже любой, лишь бы уникальный? По сути - вряд ли на что-то влияет. |
Anonymous
Advanced Member
Откуда: Москва(Россия) Всего сообщений: 2537 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 22 нояб. 2011 |
Mixa написал: А так уже драйвер для УКНЦ называется, смотрите, чтоб путаницы не возникло. Украинский драйвер ideшника, который под киевский контроллер на здоровенной плате и рассыпухе - WA, драйвер под контроллер, который клуб наш продаёт - WQ. У себя я, чтоб не путать DW от Э85/Pro3x0 с ДВКшным DW, последний WW называю в системах собираемых. У себя девайс назову WD. |
Mixa
Member
Откуда: Москва Всего сообщений: 170 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 8 авг. 2009 |
Профиль | Сообщить модератору
NEW! Сообщение отправлено: 5 января 2018 1:19 Сообщение отредактировано: 5 января 2018 1:33
Anonymous написал: Вот незадача. Проект изолированный, но мало ли что. Тогда попробую XD Или DA. Или AD, как во фряхе. А так уже драйвер для УКНЦ называется |
_Patron_
Member
Откуда: Москва Всего сообщений: 146 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 19 дек. 2012 |
Профиль | Сообщить модератору
NEW! Сообщение отправлено: 5 января 2018 12:24 Сообщение отредактировано: 5 января 2018 12:31
Mixa написал: Или DV, или GW ( G похоже на D ). Тогда попробую XD Имя не проблема - RT-11 интересует только имя файла драйвера. Сейчас взял системный диск RT-11 v5.7 с драйверами MY и KZ ( которые работают с одним и тем же устройством ) и запатчил в них одно и то же имя устройства MY ( у MY.SYS там были три пробела, а у KZ.SYS - KZ ). Проблем не возникло - тот MY, который был в файле MY.SYS - показывался в системных таблицах, как MY, а тот, который был в файле KZ.SYS - как KZ. Потом скопировал KZ.SYS в файл KK.SYS ( чтобы индекс устройства тоже был одинаковым ) - после перезагрузки в системных таблицах появились оба эти устройства, доступные через соответствующие драйверы. |
Anonymous
Advanced Member
Откуда: Москва(Россия) Всего сообщений: 2537 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 22 нояб. 2011 |
Имя устройства, фигурирующее внутри драйвера, будет иметь значение при работе загрузчика, там оно помещается в переменную B$DEVN, определяемую в макросе .DRBOT и по ней затем уже ищется драйвер в каталоге системного устройства. В рабочей системе можно переименовывать драйверы, перезагружаться даже не надо при этом, достаточно командой вручную удалить/добавить драйвер в таблицу монитора. |
Mixa
Member
Откуда: Москва Всего сообщений: 170 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 8 авг. 2009 |
Но вот почему макрос генератор входа в прерывание называется .DRAST? В чем логика? Остальные мнемонически понятны, этот - нет. |
Anonymous
Advanced Member
Откуда: Москва(Россия) Всего сообщений: 2537 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 22 нояб. 2011 |
Mixa написал: driver asynchronous service trap, в мануале по системной макробиблиотеке же есть. макрос генератор входа в прерывание называется .DRAST? В чем логика? |
Mixa
Member
Откуда: Москва Всего сообщений: 170 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 8 авг. 2009 |
Anonymous написал: Во, спасибо, туда еще не смотрел, глянул только в SYSMAC.MAC, с расчетом, что в комментариях есть объяснение, а там нету. в мануале по системной макробиблиотеке же есть. |
Anonymous
Advanced Member
Откуда: Москва(Россия) Всего сообщений: 2537 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 22 нояб. 2011 |
Mixa написал: Кстати, попалось тут: оказывается, XD.SYS тоже был, для RT-11 v4.x это предшественник LD.SYS, привязывался к файлу утилитой XDATCH.SAV и не входил в основной дистрибутив, поставлялся отдельно. А в ОС РАФОС для этой цели были UX/UY/UZ. Вот незадача. Проект изолированный, но мало ли что. Тогда попробую XD Или DA. Или AD, как во фряхе. |
Mixa
Member
Откуда: Москва Всего сообщений: 170 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 8 авг. 2009 |
В поисках решения проблемы курицы и яйца, игрался вот с этим. Образ диска, который "из коробки", затыкался на чтении блоков где-то вначале. Подставил образ диска тот, который без прерываний от терминала. Всё заработало. Дальнейшее разбирательство привело к обнаружению того, что у меня не работает как надо векторное прерывание от терминала. В конце цикла приема вектора процессор снимает DIN, потом снимает IAKO, потом ВП1-065 снимает свой RPLY. После снятия RPLY должен начаться новый цикл шины, но он оказывается поломанным: SYNC активируется, тут же (через такт, нужно уточнить) снимается, отрабатывается таймаут шины, и трап на 4. Похоже на то, что диаграмму циклов ломает позднее снятие RPLY после передачи вектора. Надо будет уточнить детали. |
andyTh |
NEW! Сообщение отправлено: 15 января 2018 14:54 ВП065 снимает RPLY позже, чем нужно для ВМ1??? Удивительно. Вы не пробовали сравнивать вашу схему и схему к примеру МС1201.01 на предмет отличий в привязке к тактовой частоте? |
Сейчас на форуме |
MM
Advanced Member
Откуда: Павловский Посад Мск.обл. Всего сообщений: 3418 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 2 авг. 2013 |
Mixa написал: Т.е. не переходит по вектору ? отрабатывается таймаут шины Возможен ли скриншот с ЛА этого момента ? |
Mixa
Member
Откуда: Москва Всего сообщений: 170 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 8 авг. 2009 |
Профиль | Сообщить модератору
NEW! Сообщение отправлено: 15 января 2018 15:38 Сообщение отредактировано: 15 января 2018 16:10
Именно, по вектору не переходит. Там какое-то пограничное состояние. Сначала проверял прерывание на прием символа, трапалось на 4. Отсоединил от шины контроллер ATA, стало трапаться на 60, как и положено. Погрешил на возможный конфликт на шине, стал проверять прерывание по передаче символа. Трапается на 4, а должно на 64. Про таймаут шины как-то не думал, хотя вот оно, вопиёт. Полез осциллографом сигналы смотреть, проверил все линии АД, вектор 64, как и требуется. Масштаб по времени уменьшил, вызвала подозрение какая-то тишина на шине после приема вектора. Длина тишины как раз те самые ~10 мкс. Ну и посмотрел, что у нас с SYNC'ом происходит, а он совсем крошечный после цикла IAK, а дальше таймаут. Более подробно не смотрел, но надо будет. Привязка к тактам есть, и отличается. Сначала по лени не сильно думая скопировал узел с МС1201.01, а в инете схем МС1201.01 две, с отличающимися вариантами этого узла. Мне первой попалась с привязкой и активации, и снятия, я ее подправил до варианта начало RPLY немедленно, без привязки, а снятие с привязкой к такту (ошибочно, хотел наоборот, активация с привязкой, снятие немедленно). Потом, исправляя, привязал тупо к удвоенной тактовой, в моменты посередине уровней тактовой. Привязались и активация, и снятие RPLY. Вот на задержку снятия сейчас и грешу. Картинки потом покажу, как осциллом сниму все эти безобразия. (посмотрел еще раз вариант 1 и вариант 2 схем, исправил текст в соответствии) |
MM
Advanced Member
Откуда: Павловский Посад Мск.обл. Всего сообщений: 3418 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 2 авг. 2013 |
Mixa написал: Оптимальная привязка RPLY на БК0010 на .641 плате, и на БК11/М. скопировал узел с МС1201.01 Обращаю внимание, что 1801ВМ1 не допускает немедленный прием RPLY в цикле записи данных - висит... На чтении - допускает. |
Mixa
Member
Откуда: Москва Всего сообщений: 170 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 8 авг. 2009 |
MM написал: Посмотрел Оптимальная привязка RPLY на БК0010 на .641 плате, и на БК11/М.схему 0011М, там из JK D8.2 и инвертора D>неразборчиво>.5 сделан D-триггер, на котором активация и снятие RPLY привязываются к спаду CLC. |
Mixa
Member
Откуда: Москва Всего сообщений: 170 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 8 авг. 2009 |
Профиль | Сообщить модератору
NEW! Сообщение отправлено: 16 января 2018 0:13 Сообщение отредактировано: 16 января 2018 1:11
Шайтанама... Вернул привязку RPLY почти как было (теперь и начало, и спад привязаны), к спаду тактовой, вектор принимается и SYNC после цикла IAK тоже нормальный. Выходит, есть понятие RPLY не вовремя снялся. Сейчас он снимается позже, чем было с глюком, и все в порядке. И раньше, чем с глюком, тоже в порядке. Снятие RPLY нужно обязательно привязывать. На глюк с началом RPLY не натыкался, но, все говорят, что начало тоже привязывается. То есть, привязывается весь RPLY целиком. P.S. Результаты программы SPEED не поменялись. P.P.S. Загрузка RT-11 через порт системного терминала с "комплектным" HXsys54.DSK заработала. P.P.P.S. И нефиг было выпендриваться с RPLY. |
Mixa
Member
Откуда: Москва Всего сообщений: 170 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 8 авг. 2009 | |
andyTh |
NEW! Сообщение отправлено: 16 января 2018 9:01
Из серии первый |
Сейчас на форуме |
Mixa
Member
Откуда: Москва Всего сообщений: 170 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 8 авг. 2009 |
andyTh написал: Навроде того. Сейчас подавил зуд попробовать активацию RPLY передавать как есть, без привязки. Трезвый разум говорит, что смысла нету, потому что реальный RPLY (от ВП1-030) приходит при верхнем уровне CLC, привязанный RPLY активируется на ближайшем спаде CLC, то есть, процессор при любом варианте видит активный RPLY на одном и том же фронте CLC. Тут с разумом соглашусь и хардварные тюнинги закончу (надеюсь). Из серии первый |
Anonymous
Advanced Member
Откуда: Москва(Россия) Всего сообщений: 2537 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 22 нояб. 2011 |
Профиль | Сообщить модератору
NEW! Сообщение отправлено: 16 января 2018 16:20 Сообщение отредактировано: 16 января 2018 16:21
Ну вот после изучения кристалла и построения модели, в описании процессора Vslav пишет, что RPLY по любому фронту CLC можно синхронизировать, а входы прерываний - по переднему фронту CLC. Страницы 8-9 описания. |
Mixa
Member
Откуда: Москва Всего сообщений: 170 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 8 авг. 2009 |
Профиль | Сообщить модератору
NEW! Сообщение отправлено: 16 января 2018 17:13 Сообщение отредактировано: 16 января 2018 20:56
Anonymous написал: Ну вот, появился зуд попробовать. Правда, синхронизация по любому из фронтов получится такой, что перепады RPLY будут идти вровень с перепадами CLC, потому что CLC это счетный триггер на одной половинке ТМ2, а привязка RPLY на другой половинке этого же ТМ2, и C у половинок будет общий. RPLY по любому фронту CLC можно синхронизировать UPD Еще раз посмотрел здесь, все же по логике работы детектора неактивного RPLY, а именно, сначала выполняется условие неактивного RPLY при низком уровне CLC, потом защелкивание этого состояния на фронте CLC, потом выдача этого состояния в привязке к спаду CLC - RPLY лучше привязать к спаду CLC. Не хочу уже паять, ищу повод не поддаваться зуду. |
Mixa
Member
Откуда: Москва Всего сообщений: 170 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 8 авг. 2009 |
30 декабря Anonymous написал: Вчера пробовал подсунуть свой драйвер для ATA. INSTALL получился, HAND, HANDLE, SHOW DEV что-то показывают. На INIT монитор сказал, что трап 4. Но я его собирал в simh под 5.3, а подсовывал в 5.4. Так драйвер надо пересобирать под каждую новую версию, дело в неправильном драйвере. Наверное, нужно сначала попробовать собрать под 5.4. |
Anonymous
Advanced Member
Откуда: Москва(Россия) Всего сообщений: 2537 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 22 нояб. 2011 |
Так трап то 4 пишет по которому адресу - туда сразу в пульте смотрите, что там вызывает ошибку. |
Mixa
Member
Откуда: Москва Всего сообщений: 170 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 8 авг. 2009 |
Anonymous написал: Кстати, вчера Так трап то 4 пишет по которому адресу - туда сразу в пульте смотрите, что там вызывает ошибку.удалось через HX подставить диск, который был в simh, и где драйвер ATA собирался (AD он у меня), линковался и инсталлировался. Та же фигня, трап 4. Было уже поздно, откуда трапанулся - не смотрел. Визуально это выглядит так. Говорю dir ad: (он пустой, ну чтобы просто обратился и сказал, что он пустой), что-то читает с HX:, потом моргает лампочкой на винте, потом пауза (что-то читает с HX: ), потом объявляет ?MON-F-Trap to 4 и промпт. init ad: - та же фигня. До этого, когда трапался, смотрел откуда - там собрание ASCII строк, не программа. Может оттуда пришел, может содержимое уже переписано. Надо будет посмотреть, что там с новым вариантом, когда драйвер слинкован по-родному. Добавлю всякие отладочные вставки, которые будут сливать инфу об активности драйвера в область, невидимую для RT-11 (по show говорится, что памяти 60 KB, т.е. от 170000 до 172776 все мое) |
MM
Advanced Member
Откуда: Павловский Посад Мск.обл. Всего сообщений: 3418 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 2 авг. 2013 |
Mixa написал: Мой Вам совет - используйте исключительно RT-11 SJ V5.00 ?MON-F-Trap to 4 Иначе есть существенный риск, что это сообщение ОС станет преобладающим на длительное время ( разработки драйвера ). |
Mixa
Member
Откуда: Москва Всего сообщений: 170 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 8 авг. 2009 |
MM написал: SJ согласен, .00 ну не знаю, играюсь с .03, пока играется. Мой Вам совет - используйте исключительно RT-11 SJ V5.00 В общем, по незнанию накосячил в обработчиках прерываний. Когда смотрел, что делает .DRAST, увидел, что он вызывает что-то свое, подумал, что регистры все там где-то сохраняются. У себя расставил HALT'ов, на стеке после .DRAST только R5 и R4 увидел. Теперь понятно, откуда трапы. R0-R3 разрушаются. .FORK, наверное, надо изучить. Или регистры сохранить поначалу для пробы и посмотреть, что получится.. |
Anonymous
Advanced Member
Откуда: Москва(Россия) Всего сообщений: 2537 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 22 нояб. 2011 |
Профиль | Сообщить модератору
NEW! Сообщение отправлено: 18 января 2018 1:02 Сообщение отредактировано: 18 января 2018 1:04
А как вы без .forkа-то в прерывании работаете? Понижение приоритета, чтоб всё остальное не стояло - первоочередная задача. И нельзя слишком много команд до форка использовать, т.к. через несколько из них система отберёт всё равно управление (через сколько - не помню) и будет аварийный трап тоже. Ещё есть .synch и .inten, для форка можно все регистры использовать, для синча - только $0 и $1, для интена - $4 и $5. SJ использовать - дурной тон, там и криво обрабатываются приоритеты, и reset оно выдаёт в случайное для устройства время. Например, многие устройства с интеллектуальными контроллерами просто под sj не работают, т.к. после аппаратного сброса теряется вся последовательность инициализации устройства. p.s. начиная с версии 5.6 sj монитор упразднили по этой причине, его больше нет в составе системы. |
Mixa
Member
Откуда: Москва Всего сообщений: 170 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 8 авг. 2009 |
Anonymous написал: Мне он пока не совсем понятен. Не все сразу Сейчас делаю, чтобы хоть как-то заработало, чтоб нащупать правильную линию. В обработчиках прерывания я не задерживаюсь, они короткие, без циклов, порядка двух десятков команд по пути исполнения. А как вы без .forkа-то в прерывании работаете? Самое долгое в драйвере - это вычисление дорожка/голова/сектор, но это не в прерывании. И циклов можно было бы избежать вовсе (процедура деления - не в счет), если бы не задержка в установке бита DRQ в регистре 1F7 после выдачи команды записи секторов. Вынужден ждать в цикле, когда этот бит взведется. Где-то с десяток оборотов нужно ждать. Вот думаю, по превышении числа циклов ожидания ошибку выдавать. Вообще, сейчас успешное завершение операции завязано на то, что и ATA, и DMA в любом случае выдадут прерывание, иначе процесс остановится на стадии ожидания прерывания. Не знаю, бывает ли такое, когда по протоколу ATA обязан выдать прерывание, но сбоит и не выдает. Вчера прерывания сделал только на регистрах R4 и R5, трапы прекратились, а диск заработал. |
Anonymous
Advanced Member
Откуда: Москва(Россия) Всего сообщений: 2537 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 22 нояб. 2011 |
Профиль | Сообщить модератору
NEW! Сообщение отправлено: 18 января 2018 19:46 Сообщение отредактировано: 18 января 2018 19:49 Там их меньше 8 должно быть перед форком. они короткие, без циклов, порядка двух десятков команд по пути исполнения. Так для этого таймерные запросы есть для драйверов... Вынужден ждать в цикле, когда этот бит взведется. |
Mixa
Member
Откуда: Москва Всего сообщений: 170 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 8 авг. 2009 |
Ффухх, в первом приближении заработало. Во время испытаний начальной загрузки у ST-157A вышла из строя микросхема управления шаговым двигателем перемещения головок. Случайное совпадение? А вообще, в аппаратном загрузчике нужно было запретить винчестеру ATA выдавать свой INT14. (Все-таки регистр 3F6 полезен). Вторичный загрузчик, работая с приоритетом процессора 0, вылетал в трап по вектору ATA по этой причине. Пришлось на вектор воткнуть заглушку в виде RTI. И непонятно, зачем нужен записываемый разряд INIT в регистре управления контроллером прерываний 588ВН1, если он не очищает текущие запросы прерываний. Было так: при работе аппаратного загрузчика проскакивал импульс INT14, ВН1 это запрос запоминал, выставлял постоянный VIRQ, который воспринимался процессором при смене его приоритета с 7 на 0. И никакое программирование ВН1 этот запрос не убирало, пришлось втыкать заглушку. В общем, этот INIT какой-то бесполезный. Что там в Минске про него думали, покрыто тайной. P.S. Ну какой же все-таки медленный этот HX0: даже на скорости 19200. Но польза его неоценима, это да. Единственная связь с внешним миром. Дорога жизни. |
Anonymous
Advanced Member
Откуда: Москва(Россия) Всего сообщений: 2537 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 22 нояб. 2011 |
У меня сделан запрос прерывания уровнем, а не фронтом, если диск снял запрос - контроллер его уже не отрабатывает. Но вообще странно, прерывания у диска после аппаратного сброса должны автоматом запрещаться, пока в регистре принудительно не разрешишь. |
Mixa
Member
Откуда: Москва Всего сообщений: 170 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 8 авг. 2009 |
Там уровень VIRQ уже от 588ВН1 идет, он в любом своем состоянии, даже замаскированном, реагирует на фронт INT14 на входе и запоминает запрос так, что его можно снять только удовлетворением этого запроса. То есть, маску у микросхемы ВН1 снимаешь, и может быть сюрприз. А у дисков ресет сбрасывает текущий запрос и очищает маску тоже. Если будет новая редакция ПЗУшки пульта и загрузчика - там учту. Сейчас учитываю в первичном загрузчике. Запускаю всякие тесты. Работает, однако. В общем, чего хотел — того добился. Итого. - ВМ1 можно было бы сделать и поудобнее. - 588 серию можно было бы сделать более логичной и удобной - АТА, явно выпирают костыли, но это как бы дело известное и непоправимое - ST-157A неплохо вписался в концепцию, изготовлен в 1990-м, я бы не сказал, что он технологически уж сильно впереди остальной части конструкции. Так, если совсем чуть-чуть. - Надо было предусмотреть скоростной интерфейс. - Часы с календарем не помешали бы, но можно обойтись и без них. - 40 мегабайт диска это много. Пришел к осознанию необходимости как-то нарезать это пространство. - Дисплей 80х25 это мало |
Anonymous
Advanced Member
Откуда: Москва(Россия) Всего сообщений: 2537 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 22 нояб. 2011 |
Mixa написал: А вот вам развлечение, подумайте, как бы можно было использовать больший объём, чем 32Мб. - 40 мегабайт диска это много. Пришел к осознанию необходимости как-то нарезать это пространство. Была заброшенная мечта юности: можно переписать ОС так, что 32Мб останутся ограничением, но на размер каждого одного файла, для запросов .enter, файлового запроса .lookup, запросов .readw-.readc/.writw-.writc при работе с файлами, для совместимости с софтом. А вот объём свободного пространства на диске можно было бы считать уже с большей разрядностью указателей, но внутри ОС, чтоб софт мог штатный работать. Тогда для софта всегда, для любого запроса .enter, будет 32Мб на каждый файл свободно. |
XPOHOMETP
Advanced Member
Всего сообщений: 752 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 13 мая 2015 |
Профиль | Сообщить модератору
NEW! Сообщение отправлено: 23 января 2018 20:54 Сообщение отредактировано: 24 января 2018 0:53
Mixa написал: Не знаю как там со стороны РС (и драйвера НХ в частности), но ВП-065 вполне себе работает на 57600, даже через оптроны. - Надо было предусмотреть скоростной интерфейс. Связь станет заметно живее, сравнимо с дисководами даже. Mixa написал: Логических дисков наделать... - 40 мегабайт диска это много. Пришел к осознанию необходимости как-то нарезать это пространство. Если склероз не совсем изменяет, то 1 мегабайта хватало чтобы разместить операционку с основными программами, исходники монитора, требуемые библиотеки и т.п. И оставалось место чтобы это все оттранслировать, слинковать и получить собственный вариант RT11 SJ V5.00 Mixa написал: Приходилось использовать БК0010 + телевизор в качестве терминала к МС1201. Вот там 64 х 24 это мало !! - Дисплей 80х25 это мало А 80х25 в самый раз, под них многие редакторы заточены были. Anonymous написал: Это не развлечение, это мазохизьм какой-то При ОЗУ то в 56...64кб. А вот вам развлечение, подумайте, как ... Отзывчивость операционки явно пострадает, хотя-бы из-за размера каталогов... Anonymous написал: Врагу не пожелаю читать исходник на МАКРО-11 размером в 32 МБ будет 32Мб на каждый файл |
<<Назад Вперед>> | Страницы: 1 2 3 4 5 ... .. 10 11 12 13 14 15 | Печать |
Полигон-2 » Бывший СССР » Концепт 1801ВМ1 |
0 посетителей просмотрели эту тему за последние 15 минут |
В том числе: 0 гостей, 0 скрытых пользователей |
Последние | |
[Москва] LIQUID-Акция. Сливаются разъемы CF МС7004 и 7004А на AT и XT Пайка термотрубок Проммать s478 PEAK 715VL2-HT ( Full-Size SBC) Подскажите по 386 материке по джамперам. |
Самые активные 5 тем | |