Внимание! Это временный неофициальный архив старой версии форума Полигон Призраков, созданный сочувствующим форуму участником. Этот сайт просуществует лишь до тех пор, пока администрация Полигона не сдержит своё обещание и не откроет официальный архив по адресу old.sannata.org.

Полигон-2

Форум о старых компьютерах

Объявление форума

Если пользуетесь личными сообщениями и получили по электронной почте оповещение о новом письме, не отвечайте, пожалуйста, почтой. Зайдите на форум и ответьте отправителю через ЛС.

Полигон-2 »   Бывший СССР »   Концепт 1801ВМ1
RSS

Концепт 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, все так и должно быть. Хм, с первого раза увидеть телеграфную посылку, нечасто случается. То есть, регистры откликаются, содержимое читается, нужные данные пишутся и отсылаются.
Или это знак? :rolleyes:

Теперь надо на макетку поставить преобразователь в уровни RS232, на плату напаять хотя бы старшую половину накопителя ОЗУ и включить еще раз, уже с присоединенным настоящим терминалом.

Оказывается, 1801ВП1-065 шлет символ с двумя стоповыми битами. Значит, у терминала тоже нужно будет сделать формат посылки с двумя стопами. На 10% хуже, чем с одним стопом, но тут ничего не поделаешь.

Продолжение следует ... По мере продвижения ...
MC68k
Member


Всего сообщений: 165
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
18 июля 2015
Mixa написал:
[q]
8-битные огрызки почему-то весь интерес переключили на себя. Похоже, что там просто потенциальный барьер вхождения банально ниже.
[/q]
Там была публика попроще, без моноклей. И информации было гораздо больше. Это если мы говорим про вторую половину 80х и начало 90х.

Mixa написал:
[q]
В конце концов выбор остановился на 1801ВМ1. Он не провоцирует на извращения, и если не мудрить и согласиться с предлагаемой им концепцией, то, как мне показалось, он вполне сможет за это отблагодарить
[/q]
А еще он самый дешевый.

Mixa написал:
[q]
Поэтому я сделал этажерку из 4 плат 100x80.
[/q]
это тяжелое наследие концепта ардуино, а размер связан с ценой изготовления плат, верно?

Mixa написал:
[q]
Сейчас изготовлено 4 платы, спаял две, ядро процессора и буферы ОЗУ.
[/q]
А где СЛАЙДЫ?!
Продолжайтесь. Сырки будут, или проект закрытый, для личного пользования?
Anonymous
Advanced Member


Откуда: Москва(Россия)
Всего сообщений: 2537
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
22 нояб. 2011
Mixa написал:
[q]
Оказывается, 1801ВП1-065 шлет символ с двумя стоповыми битами.
[/q]
Это задаётся коммутацией её 7й ножки.
_Patron_
Member


Откуда: Москва
Всего сообщений: 146
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
19 дек. 2012
Mixa написал:
[q]
Теперь надо на макетку поставить преобразователь в уровни RS232
[/q]
Если оставаться в стиле минимализма - на роль согласователя с RS-232 вполне годится обычный инвертор.

Подробнее ЗДЕСЬ



Anonymous
Advanced Member


Откуда: Москва(Россия)
Всего сообщений: 2537
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
22 нояб. 2011
_Patron_, вот у меня на работе отечественные гибридки-драйверы rs232 при одностороннем сигнале, укладывающемся по максимуму в 3..15в, в break встают до резета, после первого же возврата с +15..3 к нулю и обратно к +3..15, без перехода к отрицательному напряжению в линии... Не надо так народ развращать...
_Patron_
Member


Откуда: Москва
Всего сообщений: 146
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
19 дек. 2012
Anonymous написал:
[q]
_Patron_, вот у меня на работе отечественные гибридки-драйверы rs232 при одностороннем сигнале, укладывающемся по максимуму в 3..15в, в break встают до резета, после первого же возврата с +15..3 к нулю и обратно к +3..15, без перехода к отрицательному напряжению в линии... Не надо так народ развращать...
[/q]
А у той PC, которую мы на днях подключали - порт работает как у большинства PC и инвертора оказалось вполне достаточно.

Я по наивности тоже сначала агитировал народ на что-нибудь монстровое, но меня все дружно пристыдили тем, что якобы уже давно все производимые микросхемы COM-портов для PC не различают 0в и -12в.
Andrei88
Advanced Member


Откуда: Пермская обл. г.Пермь
Всего сообщений: 419
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
12 апр. 2008
Прошу прощения за оффтоп, но 2Anonymos - можно обнародовать название гибридок?
Anonymous
Advanced Member


Откуда: Москва(Россия)
Всего сообщений: 2537
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
22 нояб. 2011
Они свежей разработки и с ВП, потому, наверное, нельзя.
p.s. гибридка rs232>-->rs485 с высоковольтовой изоляцией.
Mixa
Member


Откуда: Москва
Всего сообщений: 170
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
8 авг. 2009
Присоединил 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
Member


Всего сообщений: 165
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
18 июля 2015
Mixa написал:
[q]
Пока что это выглядит неказисто, извините за отсутствие художественности.
[/q]
ПЗУшка одна :)

Mixa написал:
[q]
MC68k, да, речь как раз про границу 80-х и 90-х, было иное мировосприятие.
[/q]
Бытие определяет сознание? Или наоборот? :)

Mixa написал:
[q]
Полностью выкладывать проект - ну кому нужен сплошной нестандарт, у меня, вон, шина на МРН-44 разведена. А так, секретов нет.
[/q]
Было бы интересно посмотреть на обильно откомментированные куски кода.
Anonymous
Advanced Member


Откуда: Москва(Россия)
Всего сообщений: 2537
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
22 нояб. 2011
Да, я уже позабывал все эти ВП1, у 35 5/7/8 бит 7 и 8 ноги делали, у 65 только 7 ногу оставили.
Mixa
Member


Откуда: Москва
Всего сообщений: 170
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
8 авг. 2009
MC68k написал:
[q]
ПЗУшка одна :)
[/q]
Зато какая. В свое время штук 5 или 6 раздобыл, но они преподнесли неприятный сюрприз, такой, что и питания 5В не хватает для уверенного считывания, и куча нерабочих областей. Эта единственная из всего набора, которая в стёртом состоянии показывает 0FFFFh по всему полю, за исключением некоторых битов. Пришлось в исходнике перемещать туда-сюда фрагменты, чтобы в объектнике нолики совпали с готовыми ноликами ПЗУшки. (они там логические 1 из-за инверсии, но не суть).
Короче, ужас меня охватил, что у меня эта ПЗУшка по сути единственная, и если что, то с конструктивом пролетаю.
К счастью, недавно разжился небольшим запасом 1801РР1, говорят, они в целом получше себя ведут по сравнению с РФ3.

MC68k написал:
[q]
Было бы интересно посмотреть на обильно откомментированные куски кода.
[/q]
Потом, не настал еще момент "и увидел он, что это хорошо", ну, не я и не он, конечно, просто бывает такой момент, после которого это уже не выглядит как необработанная заготовка.
Anonymous
Advanced Member


Откуда: Москва(Россия)
Всего сообщений: 2537
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
22 нояб. 2011
Mixa написал:
[q]
В свое время штук 5 или 6 раздобыл, но они преподнесли неприятный сюрприз
[/q]
Так у вас не РФ3, а РФ32, судя по фото, а они заведомо битые, для того и такая маркировка.
Mixa
Member


Откуда: Москва
Всего сообщений: 170
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
8 авг. 2009
Anonymous написал:
[q]
Так у вас не РФ3, а РФ32, судя по фото, а они заведомо битые, для того и такая маркировка.
[/q]
Это да, есть такое. Но по факту не ужас, а ужас-ужас, в остальных в основном не юзабельны обе половинки. И по характеру неюзабельности даже нельзя сказать, РФ31 она или РФ32. Вчера посмотрел, маркировки и 32 есть, и 31.

Но именно этот экземпляр вроде неплохо себя показывает. Стирается, правда, жуть как неохотно. (Наверное, это она демонстрирует, что заряд на плавающих затворах хорошо держится). Программировал пол-года назад, информацию держит.

Запаял половину накопителя, 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 написал:
[q]
Че дальше-то делать?
[/q]
Можно загрузить RT-11 через терминальный порт и позапускать всякие программы.
Mixa
Member


Откуда: Москва
Всего сообщений: 170
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
8 авг. 2009
_Patron_ написал:
[q]
Можно загрузить RT-11 через терминальный порт и позапускать всякие программы.
[/q]
Пока не буду соблазняться. В планах, реализация которых все ближе, подключить IDE хард, причем с DMA, и DMA будет 588ВТ2.

А вот линия 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
[q]
Они свежей разработки и с ВП
[/q]
5559ИН** какая нибудь? На них инфа открыта же
Anonymous
Advanced Member


Откуда: Москва(Россия)
Всего сообщений: 2537
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
22 нояб. 2011
Venya_Fox написал:
[q]
5559ИН** какая нибудь? На них инфа открыта же
[/q]
Нет, со штатными горя нахлебались, на упомянутые выше - серии нет, только шифр КБ, заказ мелкосерийный.
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
Гость

Ссылка

Так оно ж идеологически так должно быть. Пассивное устройство от принимает сигналы от активного.
Как вы планировали рулить направлением SYNC, DIN, DOUT? Вот так же надо завязать и RPLY.
Сейчас на форуме
Mixa
Member


Откуда: Москва
Всего сообщений: 170
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
8 авг. 2009
andyTh написал:
[q]
Как вы планировали рулить направлением SYNC, DIN, DOUT?
[/q]
Пока никак не планировал, не было нужды. И если идеологически так, то и замечательно, у меня концепт как раз идеологический. Правда, не всякая идеология вписывается, но эта - то, что надо.

andyTh написал:
[q]
Вот так же надо завязать и RPLY.
[/q]
Угу.

А кстати, как "взрослые" КПДП реагируют на неприход RPLY? И на попытку обратиться к области, которая выбирается по BS?
andyTh
Гость

Ссылка

Mixa написал:
[q]
Пока никак не планировал, не было нужды.
[/q]
Во все моменты времени, пока некая плата не хочет ПДП, сигналы SYNC, DIN, DOUT являются для неё входными, а RPLY выходным.
Таким образом плата не видит чужих RPLY.
А во время захвата шины направление сигналов меняется на противополоное.
Т.е. какое то разделение должно быть. Не может вход микросхемы резко стать выходом :)
Сейчас на форуме
Anonymous
Advanced Member


Откуда: Москва(Россия)
Всего сообщений: 2537
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
22 нояб. 2011
Mixa написал:
[q]
А кстати, как "взрослые" КПДП реагируют на неприход RPLY? И на попытку обратиться к области, которая выбирается по BS?
[/q]
Точно так, как и процессор - ждут какое-то время ответа, затем выставляют флаг ошибки шины в регистре состояния, при этом замораживается счётчик адреса и переданных слов, чтоб можно было понять, на чём мы остановились, шина возвращается процессору и дёргается прерывание от устройства.
Mixa
Member


Откуда: Москва
Всего сообщений: 170
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
8 авг. 2009
andyTh написал:
[q]
Во все моменты времени, пока некая плата не хочет ПДП, сигналы SYNC, DIN, DOUT являются для неё входными, а RPLY выходным.
Таким образом плата не видит чужих RPLY.
А во время захвата шины направление сигналов меняется на противополоное.
Т.е. какое то разделение должно быть. Не может вход микросхемы резко стать выходом :)
[/q]
Здесь ключевое слово "плата" ;)
Поначалу концепция представлялась как набор маленьких-маленьких плат, которые вставляются в маленькую-маленькую корзину, на разъемах разведена МПИ, платы функционально разделены, а специального умощнения не делается, потому что все маленькое и несерьезное. Заложился на нагрузочную способность самих микросхем.
То есть, плата процессора, плата памяти, плата ИРПС, плата с КПДП и IDE, плата еще чего-нибудь. ИРПС в такой концепции это ВП1-035/065, с незначительной обвязкой.
588ВТ2 тоже более-менее в концепцию ложился (только АД нужно инвертировать), и направлением своих сигналов сам управляет.
По мере реализации оказалось, что процессор, контроллер ПЗУ и ОЗУ неразделимы, в связке, кроме МПИ, много других сигналов, которые на разъеме не нужны. Поэтому возникла этажерка.
Сейчас вот вырисовывается, что ВТ2 и всю 588-ю компанию нужно за забор поместить. И это даже хорошо, потому что глядя на пологость некоторых фронтов (которые ОК или ОС), хочется сказать стоп, шина почти на пределе.

Anonymous написал:
[q]
Точно так, как и процессор - ждут какое-то время ответа, затем выставляют флаг ошибки шины в регистре состояния, при этом замораживается счётчик адреса и переданных слов, чтоб можно было понять, на чём мы остановились, шина возвращается процессору и дёргается прерывание от устройства.
[/q]
Я вот еще хочу запретить КПДП обращаться по шине к пространству УВВ. То есть всякий 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
Бит 15 служит для облегчения проверки в драйвере, была ли ошибка или успешно завершённая операция вызвала прерывание, делается TST @#CSR и затем BMI на обработку ошибки.
А вот биты 13 и 14 показывают тип ошибки, один показывает, что ошибка случилась в контроллере ПДП - т.е. ошибка шины, а другой бит - что ошибка возникла в устройстве, которое использовало ПДП. Как вариант, ошибкой может считаться переход через определённый адрес, можно и на это флаг сделать, т.е. переход с 0177777 в 0 или, как у вас, с 0157777 на 0160000.

p.s. например, у меня в "гайке" контроллера scsi для двк, бит 15 взводится либо по ошибке шины, либо при возникновении резета со стороны scsi-шины, а ситуацию поясняют два других бита. Один указывает на попадание в несуществующий адрес, а другой взводится сигналом RST на шине scsi и основременно транслирует его текущее значение. Если мы успели отреагировать на возникновение сброса от какого-то устройства и сигнал всё ещё не снят, мы вычищаем очередь запросов драйвера, формируя по всем заданиям ошибку, т.к. устройства, reconnect от которых мы ожидали, сбросились, и выдаём запрос таймаута по таймеру, после ввода драйвера по которому проверяем, "ушёл" ли сигнал, если да - начинаем далее выполнять запросы обмена, если нет, то ещё можно подождать (но обычно это короткая транзакция).
Mixa
Member


Откуда: Москва
Всего сообщений: 170
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
8 авг. 2009
Постом выше описывал поведение ВТ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 написал:
[q]
2 ячейки для IDE я тоже считаю перебором
[/q]
Для ДВК без специализированных контроллеров типовым следует считать адреса Самарского IDE + 100 ( 8 ) :
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
Mixa написал:
[q]
Сколько вообще ячеек позволительно контроллеру НЖМД иметь, чтоб по совести было, и никто на него косо не смотрел и не завидовал?
[/q]
Сколько надо, столько и задействуйте, сейчас конкуренции на рынке нет и никто 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 написал:
[q]
ИМХО - 512ВИ1 надо нацепить на МПИ, как это сделано в Э-85. Ну и софт тоже от туда взять.
[/q]
К воронежцам у меня двойственное отношение. Специализация на копирвании атрофировала конструкторскую мысль, поэтому отношение настороженное. И уж точно нельзя делать "как это сделано в ...". Именно по причине убивания конструкторского навыка.
andyTh
Гость

Ссылка

К воронежцам или к дековцам? :biggrin: :biggrin: :biggrin:
Сейчас на форуме
Anonymous
Advanced Member


Откуда: Москва(Россия)
Всего сообщений: 2537
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
22 нояб. 2011
Mixa написал:
[q]
И уж точно нельзя делать "как это сделано в ...". Именно по причине убивания конструкторского навыка.
[/q]
Так у них задание было dec pro325/pro350 скопировать, там не до творчества было. А если желаете сделать часы, которых ни у кого нет на таких машинах - сделайте контроллер i2c, на него и часы, и пзу, и nvram, и датчики всякие можно будет посадить.
Mixa
Member


Откуда: Москва
Всего сообщений: 170
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
8 авг. 2009
Mixa написал:
[q]
К воронежцам или к дековцам? :biggrin: :biggrin: :biggrin:
[/q]
К воронежцам. Настороженное. Заочное. Вот лежит в коробочке 1807ВМ1, вроде симпатичный зверек, но что-то останавливает. Это что-то — иррациональное. Собственно, как и все, что здесь на форуме. Кроме продаж.
Кстати, справедливости ради, конкретно в 1807ВМ1 дополнительно останавливает и идея, идущая от дека, именно - программирование режима работы при начальном старте.
И 1804 как по маслу воспринимался только при чтении Мик-Брик. Запоем и не оторваться.
И 531 серия печка и жрет. Хотя как имеющая в своем составе ГГ1 или как ЛН1/ЛА3 для генератора на 32 МГц - полезна.

Anonymous написал:
[q]
сделайте контроллер i2c
[/q]
Перавя реакция — не, максимум, что позволительно это 1556Х[Л,П] и 556РТ1. Вторая мысль - он же прост, сдвиговый регистр и обвязка. Посмотрел, когда он был придуман, - в начале 80-х, годится. Надо подумать, мысль интересная.
andyTh
Гость

Ссылка

Mixa написал:
[q]
К воронежцам. Настороженное. Заочное. Вот лежит в коробочке 1807ВМ1,
[/q]
Первый пункт означает настороженное отношение именно к дековцам.
Ибо воронеж порой вплоть до расположения компонентов на плате и дорожек...
1807ВМ1 тоже как бы не без аналога мягко говоря ;)
Сейчас на форуме
Mixa
Member


Откуда: Москва
Всего сообщений: 170
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
8 авг. 2009
Это все так. Но от дека у меня есть AlphaStation 255, и я ее берегу как экспонат. Alpha - событие знаковое. 1804, хоть она и из Воронежа, у меня проходит по категории AMD. Электронику-60 экспонатом не хочу. Она большая, глючная, и вентиляторами дребезжит, такой характерный рокочуще-звенящий звук, ну знаете, его невозможно не знать. А вокруг дека легенда, аура и восторги. Я не фанат, восторга поиметь не случилось, но к легенде прикоснуться и любопытно, и хочется. Через ангстрем и интеграл с транзистором прикасаться, как по мне, вполне годится. Не глючит и не дребезжит.
Не, мож я конечно не с той стороны к деку захожу, но что уж есть, то есть.
andyTh
Гость

Ссылка

Была у нас в городе фирма комповая. На заре так сказать :)
И вот на выставке толи в 93, то ли в 94 году на стенде этой фирмы я увидел материнку.
С 4 рогатыми альфами. И кучей памяти. Тусил возле неё долго. Впечатления остались и по сей день.
Через несколько лет под рукой некоторым образом оказался класс с Э85, ещё чуть позже с ещё одним не в своём уме
поднимали СМ4. Но ни Э85, ни СМка не оставили того неизгладимого впечатления, как тот монстрик.
Хотя нет, звук вентилятора от 9005 помню :).
В следующий раз дековские железки попались на глаза несколько лет назад. Вот, затянуло.
Перевидел я в принципе не так и мало, но впечатлений, сравнимых с восторгом от той материнки пожалуй я смог бы пересчитать.
Сейчас на форуме
Mixa
Member


Откуда: Москва
Всего сообщений: 170
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
8 авг. 2009
В общем, с 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
Гость

Ссылка

Вы коллегу Анонимуса то послушайте...
Он имеет большую практику в складывании из этих и не только этих кубиков :rolleyes:
Сейчас на форуме
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
Работает не схема, работает концепция. Схема это одно из многих возможных отражений концепции. В этой схеме есть спорные фрагменты, образовавшиеся в результате компромиссов, и в общем случае такое не подлежит тиражированию. Поэтому если схему и выкладывать на всеобщее обозрение, то это в некотором смысле ответственность, и нужно подробным образом, на уровне учебника, разжевывать, почему так делать не рекомендуется. А такое обязательство брать на себя не хочется.
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
Гость

Ссылка

Просто спрошу, ок? :)

У вас тем или иным образом вписалась в концепцию ХЛка. Может быть тогда вписалась бы и к примеру EPM7128?

И по теме, а где задержки поставили?
Сейчас на форуме
Mixa
Member


Откуда: Москва
Всего сообщений: 170
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
8 авг. 2009
andyTh написал:
[q]
Может быть тогда вписалась бы и к примеру EPM7128?
[/q]
Это шаг к тому, чтоб все сделать резиновым и безалкогольным, внутри фпгашки.
7128 у меня вроде даже где-то валяются приготовленными, но там были идеи относительно 1806ВМ2. Может и пробьет когда на безумие. Но только после этого безумия.

andyTh написал:
[q]
а где задержки поставили?
[/q]
Одна отсчет таймаута шины в цикле ПДП, другая задержка READY в ответ на IOWR от DMA контроллера в сторону девайса, с целью уширения этого IOWR. Если READY заземлить (всегда активен), то строб IOWR коротким получается, 100 нан или менее. Не помню, проглатывает такое IDE или нет, но некомфортно, увеличиваю до 200-250.

ЗЫ EPM7128, говорите? 128 триггеров? На ней одной имхо можно сваять контроллер IDE вместе с ПДП и интерфейсом МПИ с прерываниями. И еще какую-нибудь свистелку. Но туда сразу просится до кучи и интерфейс ОЗУ, ПЗУ, начальный пуск. Т.е. ВМ1, эта CPLDшка, ОЗУ, ПЗУ, IDE, еще-что-то, и все на маленькой плате. Но тогда ВМ1 выпадает из концепции, ВМ2 кмоповский более гармонирует.
Mixa
Member


Откуда: Москва
Всего сообщений: 170
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
8 авг. 2009
Встал перед выбором. Какой из двух лучше? Винницкий или п-посадский? "Октябрь" вроде более в тему, 100-летие на носу. Или ТВ1А лучше, чем просто ТВ1?


Ой-ёё.. В книжке у него клок спадом :thumbdown: , а на самом деле подъемом .. Блин, узел переделывать, а ведь ничего лишнего не осталось. Один инвертор с ОК нужен теперь, наверное, просто транзистором обойдусь.
Mixa
Member


Откуда: Москва
Всего сообщений: 170
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
8 авг. 2009
Mixa написал:
[q]
Какой из двух лучше?
[/q]
Критерий истины - практика. Берем микросхему, впаиваем, берем осциллограф, смотрим. Сачала КР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 написал:
[q]
1561
[/q]
Лучше этого тихохода оставить в покое. Выбор профессионала - 1564 :)
andyTh
Гость

Ссылка

Mixa написал:
[q]
Ой-ёё.. В книжке у него клок спадом :thumbdown: , а на самом деле подъемом .. Блин, узел переделывать, а ведь ничего лишнего не осталось. Один инвертор с ОК нужен теперь, наверное, просто транзистором обойдусь.
[/q]
В последнее время я перестал пользоваться книжками для этого дела. С одной стороны конечно из за того, что приделали ноги
двум моим Шило, а с другой держать в голове все опечатки? Гуглим "аналог" нужной микрушки и читаем даташит от первоисточника.
Понятное дело, что попадаются микросхемы и без аналога (исчезающе редко) или с корёженной цоколёвкой, но как бы в 99.9%
способ работает.
Сейчас на форуме
Mixa
Member


Откуда: Москва
Всего сообщений: 170
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
8 авг. 2009
MM написал:
[q]
1564 :)
[/q]
1564 я бы с удовольствием, только мне позарез ресет нужен в положительной логике.

andyTh написал:
[q]
приделали ноги
двум моим Шило
[/q]
В Шило, кстати, все правильно. Но у меня очень давно бумажный Шило тоже куда-то пропал, я даже и не помню, какой именно из Шил.
Я этот с полки взял и посмотрел в нем:
(сорри за полосы, освещение люминесцентная лампа)

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
Mixa написал:
[q]
Заранее не обратил внимание на SACK, решил, что это некий аналог BSY, только от другого ведущего, и заложился на то, что они не перекрываются.. А вот и нет. BSY еще не снят, а SACK уже появился. И SYNC еще активен! Перекрытие 300 нс. И кто, спрашивается, управляет шиной ???
[/q]
В стандарте Q-Bus описана следующая последовательность запроса ДМА.

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
_Patron_ написал:
[q]
3. Устройство, приняв DMG, активирует режим ДМА выставив SACK ( сразу после снятия SYNC / снятия RPLY, смотря что позже ) и сняв DMR.
[/q]
У 588ВТ2 есть сигнал, по смыслу похожий на SACK. Он везде называется по-разному, минскую терминологию специально приводить не буду, она какая-то странноватая. Поэтому пусть будет SACK. Но на самом деле это не чистый SACK, потому что вышеприведенный п. 3 не выполняется, этот сигнал ставится сразу по приходу DMG без ожидания снятия SYNC. Я его использовал как SACK и ничего хорошего из этого не получилось. Хорошо, пусть это будет Early SACK, ESACK его назовем.
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
Как оказалось, квитанции 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
_Patron_
Member


Откуда: Москва
Всего сообщений: 146
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
19 дек. 2012
Mixa написал:
[q]
непонятная пауза, нужно спешить выставить SACK, пока не началось...
[/q]
Пауза гостированная = 10 мкс ( 64 такта ). В момент выставления DMG запускается счётчик на 64 такта, который тикает параллельно с ожиданием RPLY и снятием SYNC. Процессор гарантированно снимает SYNC до обнуления счётчика. Процессор не начинает новый цикл шины при активном сигнале DMR до истечения таймаута 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
Mixa написал:
[q]
еще до окончания SYNC ВМ1 выдает DMG, на что сразу снимается DMR и следом в ответ DMG тоже. SYNC еще активен.
[/q]
Процессор действует по стандарту - приняв DMR выдаёт DMG и запускает таймер ожидания SACK. По стандарту, в случае снятия DMR до прихода SACK - ожидание SACK прекращается немедленно.

Если устройство выдаёт SACK после снятия DMR - это нонсенс. Устройство должно выдавать SACK до снятия DMR и DMG. Пока не снят DMR - активен DMG. Пока активен DMG - тикает таймер ожидания SACK и процессор не может начать новый цикл шины. Когда таймаут SACK истекает - процессор снимает DMG, что означает игнор DMR, отказ от ожидания SACK и продолжение обычной работы.

Решение проблемы ( на мой взгляд ) - защёлкивание "нашего" DMR до выставления "нашего" SACK. Тогда всё будет по стандарту и процессор не снимет DMG до истечения таймаута SACK.
Mixa
Member


Откуда: Москва
Всего сообщений: 170
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
8 авг. 2009
_Patron_ написал:
[q]
Если устройство выдаёт SACK после снятия DMR - это нонсенс. Устройство должно выдавать SACK до снятия DMR и DMG.
[/q]
У меня ВТ2 выдает SACK одновременно со снятием DMR и до снятия DMG. Понятно, почему я не увидел состояние ожидания SACK. А процессор такой поспешности не удивляется и не сопротивляется, есть мысль на этом и остановиться.

_Patron_ написал:
[q]
Решение проблемы ( на мой взгляд ) - защёлкивание "нашего" DMR до выставления "нашего" SACK. Тогда всё будет по стандарту и процессор не снимет DMG до истечения таймаута SACK.
[/q]
Вроде как да, и реализуемо, и картинка по стандарту выходит. Но ВТ2 ничего не знает про то, что его SACK задержали и нужно соблюсти политес в виде подождать конца SYNC, выставить свой SACK и уж потом выставлять свой SYNC. Он свой SYNC выставляет по факту снятия SYNC от ЦП, немного подождав. Не, не буду красивую картинку протокола рисовать, другим bus masters, если такие вообще появятся, это не помешает.
_Patron_
Member


Откуда: Москва
Всего сообщений: 146
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
19 дек. 2012
Mixa написал:
[q]
другим bus masters, если такие вообще появятся, это не помешает
[/q]
Абитражу DMA вообще ничто не может помешать, потому что в Q-Bus нет линии DMG. Вместо этого у каждого устройства есть вход DMGI и выход DMGO ( у процессора - только DMGO ). DMGO процессора поступает на DMGI первого басмастера, DMGO первого басмастера поступает на DMGI второго басмастера и т.д. Как только басмастер выставляет DMR - он отключает DMGI от DMGO, поэтому младшие басмастеры не имеют шансов увидеть DMG до тех пор, пока старшие не закончат работу с шиной.

DMR - это линия, поэтому если два устройства выставили DMR - снятие DMR старшим басмастером никто не заметит, но это и не играет роли - если в момент снятия SACK активен сигнал DMR - процессор снова выставляет DMG и на этот раз его принимает второй басмастер, ожидавший своей очереди.
Mixa
Member


Откуда: Москва
Всего сообщений: 170
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
8 авг. 2009
Во, арбитраж протокол захвата (исправил термин). DMR, DMG, SACK и SYNC.


Здесь те же, последний - переключение буфера сигналов управления. Если его использовать как SACK, а сначала я так и хотел, то остальная картина не меняется совершенно, только было подозрение, что такой SACK это нехорошо, и спасибо Patron , тоже подтвердили, что это нонсенс. Правильное слово, нонсенс. Вне концепции, стало быть.


Все работает без нареканий и сбоев, так и оставлю ранний SACK :)

P.S.
DMG, SACK, BSY и упр. буфером. Буфер двунаправленный, одно направление открывается по BSY, другое по этому сигналу. Видно, что все хорошо, управление не перекрывается, конфликтов нет.
Mixa
Member


Откуда: Москва
Всего сообщений: 170
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
8 авг. 2009
Так, с ПДП разобрались, утвердили, продолжаем.

Смотрю, что получилось с прерываниями. 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 написал:
[q]
Вот написал, и, похоже, что с выбором определился. Подключение со смещением на 1 разряд.
[/q]
Именно так всегда и делалось, справочники - как газеты, их после еды читать лучше. DEC же поправился, что область плавающих пользовательских векторов до 01000 простирается, а до 0400 размещаются системные вектора, т.к. системный стек расположен в верхней половине первых 64кб, а пользовательский стек находится в отображении памяти пользователя. Но это для процессоров с ДП.

Mixa написал:
[q]
сигнал при подтверждении прерывания INT B , если его завести на одну из линий
[/q]
Обычно он заводился на AD2, давая вектор-B на 4 больше вектора-A, как в большинстве устройств с несколькими векторами принято.
Mixa
Member


Откуда: Москва
Всего сообщений: 170
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
8 авг. 2009
Anonymous написал:
[q]
Mixa написал:
[q]
Вот написал, и, похоже, что с выбором определился. Подключение со смещением на 1 разряд.
[/q]
Именно так всегда и делалось, справочники - как газеты, их после еды читать лучше. DEC же поправился, что область плавающих пользовательских векторов до 01000 простирается, а до 0400 размещаются системные вектора, т.к. системный стек расположен в верхней половине первых 64кб, а пользовательский стек находится в отображении памяти пользователя. Но это для процессоров с ДП.
[/q]
Я почему-то решил, что вектор воспринимается только с линий АД7-АД1 , но оказалось, что и с линии АД8 тоже. На входах кодирования установил уровни, чтоб вектор 200 выдавался, а в результате прыгнуло на 600, потому что по АД8 единица передалась. Фигня, поменяю местами подключения к АД7 и АД8, будет всегда выдаваться 1 на АД7. Появляется ограничение на выбор вектора, ну и ладно, выберем какой-нибудь из второй половины системных.

Anonymous написал:
[q]
Mixa написал:
[q]
сигнал при подтверждении прерывания INT B , если его завести на одну из линий
[/q]
Обычно он заводился на AD2, давая вектор-B на 4 больше вектора-A, как в большинстве устройств с несколькими векторами принято.
[/q]
Ну да, так и делаю :) Вначале опасался, что подтверждение VECB с большой задержкой будет проходить с линии кодирования на выход АД, но нет, все нормально, даже иголки практически нет, только намек на нее.
Mixa
Member


Откуда: Москва
Всего сообщений: 170
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
8 авг. 2009
Вектор прерывания это слово целиком, имеют значение все 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 написал:
[q]
CS1 представляет из себя тот еще костыль, один из множества уродцев из наследия, начало которому положило IBM PC. К тому же с очень малоиспользуемой функцией
[/q]
Почему малоиспользуемой? Там же не только программный сброс накопителя, там и разрешение прерываний от него.
Mixa
Member


Откуда: Москва
Всего сообщений: 170
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
8 авг. 2009
Anonymous написал:
[q]
Mixa написал:
[q]
CS1 представляет из себя тот еще костыль, один из множества уродцев из наследия, начало которому положило IBM PC. К тому же с очень малоиспользуемой функцией
[/q]
Почему малоиспользуемой? Там же не только программный сброс накопителя, там и разрешение прерываний от него.
[/q]
Ну да. Пожалуй. Но все равно костыль. :)
В общем, баланс вроде нашел, пошел рисовать схему и печатку. Вот думаю, наверное позволю появиться межслойным переходам не на ногах микросхем. Боюсь, без этого уже не получится, микросхем много на поле 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 написал:
[q]
RSX-11 не хочу (а она вообще комфортна в 32 к слов?). Посматриваю в сторону RT-11, это правильное направление? Периферии достаточно для нее (терминал, диск, таймер 50 Гц)? А вообще, Ксоникс хочу, это мотивирующая цель.
[/q]
Периферии достаточно, но вообще половины памяти маловато и для rt11, это только в BL мониторe работать, даже для SJ/SB - маловато.
Xonix есть под rt11 http://qbus.narod.ru/xonix1.zip такой.
andyTh
Гость

Ссылка

Любопытная этажерочка :)
Интересно будет поглядеть на драйвер IDE, а может и загрузчик даже.
Сейчас на форуме
Mixa
Member


Откуда: Москва
Всего сообщений: 170
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
8 авг. 2009
Anonymous написал:
[q]
Периферии достаточно, но вообще половины памяти маловато
[/q]
Я ненамеренно ввел в заблуждение. Там на самом деле две платки по 16 х РУ6, они вместе соединены, а выглядит как одна. Память полная, более того, простирается до 172776. Но есть опция "как надо", до 157776, выставляется джампером. :)


andyTh написал:
[q]
Интересно будет поглядеть на драйвер IDE, а может и загрузчик даже.
[/q]
Мне тоже интересно. По этому полю ни разу не ходил. С железной частью закончил, и интересно, как она на софт ляжет. IDE в стиле PC/AT - как-то несерьезно у них, программная блочная пересылка. Поэтому только ПДП.
MM
Advanced Member


Откуда: Павловский Посад Мск.обл.
Всего сообщений: 3418
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
2 авг. 2013
Mixa написал:
[q]
По этому полю ни разу не ходил.
[/q]
Можно для экстремальной простоты сделать начало полезного пространства винчестера примерно так с ~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 написал:
[q]
А вот насчет новодельных ОС с 31-м томом на устройстве и разрешающих 2000-й год - хрень там полная, каталоги не совместимы с классикой V5.00, не рекомендую.
[/q]
Тут же не БКшка и БКшные ОС тут смысла нет заводить и обсуждать.
MM
Advanced Member


Откуда: Павловский Посад Мск.обл.
Всего сообщений: 3418
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
2 авг. 2013
Anonymous написал:
[q]
MM написал:
[q]
А вот насчет новодельных ОС с 31-м томом на устройстве и разрешающих 2000-й год - хрень там полная, каталоги не совместимы с классикой V5.00, не рекомендую.
[/q]
Тут же не БКшка и БКшные ОС тут смысла нет заводить и обсуждать.
[/q]
Не ясно, при чем тут БК - речь идет о клоне МС1201.01 с ( почти ) новым обвесом.
Mixa
Member


Откуда: Москва
Всего сообщений: 170
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
8 авг. 2009
MM написал:
[q]
речь идет о клоне МС1201.01 с ( почти ) новым обвесом.
[/q]
Где-то можно назвать и так, только изначальной цели клонировать или сделать похожее, не было. Пошел разворачивать от особенностей ВМ1 самого по себе, для SEL1 и ПЗУ выбрал ВП1-030 (а заодно и ОЗУ), и все, попал в колею так, что и не соскочишь особо.
_Patron_
Member


Откуда: Москва
Всего сообщений: 146
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
19 дек. 2012
Mixa написал:
[q]
Память полная, более того, простирается до 172776. Но есть опция "как надо", до 157776, выставляется джампером.
[/q]
RT-11 при загрузке проверяет память до адреса 170000, чтобы задействовать больше 60 Кб - надо подправить код загрузчика:


4$:     CLR     R4              ;Look for top of core
5$:     ADD     #4000,R4        ;Move to next 1K bank
..28KW  == .+2    ;**PATCH** CHANGE TO 160000 TO AVOID CHECKING OVER 28K
        CMP     R4,#170000      ;Reached 30K?
        BEQ     NXM             ;Yes, 30K system with MSV11-D memory
        MOV     @R4,@R4         ;No, see if this location exists
        BR      5$              ;Keep going if we didn't trap
NXM:

MM
Advanced Member


Откуда: Павловский Посад Мск.обл.
Всего сообщений: 3418
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
2 авг. 2013
Mixa написал:
[q]
и не соскочишь особо.
[/q]
Как развитие концепта можно было бы разработать полуплату ДВК - проц.
Для сокращения габаритов - использовать ИС в корпусировке ЭКФ, а вместо разъема принтера - разъем IDE.
Ну и ИРПС/RS232 высоковольтный. Можно и ДОЗУ применить импортное малогабаритное.

Кстати, в Москве продаются недорого ЭКФ1531АП7, примерно так по 30 руб ( оплата через банк, район Перово, с почтой -только ЕМС с курьером ( не дружат с почтой... ) ).
Mixa
Member


Откуда: Москва
Всего сообщений: 170
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
8 авг. 2009
_Patron_ написал:
[q]
надо подправить код загрузчика
[/q]
А где такие загрузчики с комментариями водятся?
_Patron_
Member


Откуда: Москва
Всего сообщений: 146
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
19 дек. 2012
Mixa написал:
[q]
А где такие загрузчики с комментариями водятся?
[/q]
В наборе исходников RT-11 с комментариями:

RT-11 v05.04
RT-11 v05.07
MM
Advanced Member


Откуда: Павловский Посад Мск.обл.
Всего сообщений: 3418
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
2 авг. 2013
Mixa написал:
[q]
_Patron_ написал:
[q]
надо подправить код загрузчика
[/q]
А где такие загрузчики с комментариями водятся?
[/q]
Может быть целесообразно аппаратно ограничить ОЗУ на отметке 167776 ?
Тогда и патчить не надо...
Mixa
Member


Откуда: Москва
Всего сообщений: 170
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
8 авг. 2009
_Patron_ написал:
[q]
RT-11 с комментариями
[/q]
Ага, спасибо, стянул! Я так понял, там посекторный образ диска?


MM написал:
[q]
Может быть целесообразно аппаратно ограничить ОЗУ на отметке 167776 ?
Тогда и патчить не надо...
[/q]
Не, целых полтора килобайта пропадет. Пусть будут, пригодится.
Anonymous
Advanced Member


Откуда: Москва(Россия)
Всего сообщений: 2537
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
22 нояб. 2011
MM написал:
[q]
Не ясно, при чем тут БК - речь идет о клоне МС1201.01 с ( почти ) новым обвесом.
[/q]
Это был комментарий к вашему замечанию, которое встречалось только на БК и УКНЦ, где исполнительная среда БКшных программ использовала дополнительные слова в каталоге для хранения своей информации и которая терялась при перезаписи файла стандартными средствами ОС. Вот я написал, что БК не надо сюда тянуть, на стандартном софте и оборудовании таких проблем нет.

Mixa написал:
[q]
Не, целых полтора килобайта пропадет. Пусть будут, пригодится.
[/q]
Можно научить драйвер какой-нибудь туда пересаживать часть себя и таким образом экономить память. Только ОС при этом должна быть старших версий, т.к. более ранние не поддерживают запрос, позволяющий указать процедуры, выполняемые при загрузке и выгрузке драйвера, в которых можно было бы обеспечить такой функционал, эта возможность появилась с версии 5.3.
_Patron_
Member


Откуда: Москва
Всего сообщений: 146
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
19 дек. 2012
Mixa написал:
[q]
Я так понял, там посекторный образ диска?
[/q]
Если говорить строгим "научным" языком, посекторный образ - это образ с сохранением программного интерлива, поблочный образ - образ без сохранения программного интерлива. Для образов дисков, исходно записанных без программного интерлива - посекторный и поблочный образы совпадают. Стандартный файл DSK - это поблочный образ диска. Впервые ( если не ошибаюсь ) формат DSK был использован в RT-11 для логических дисков, подключаемых к приводам драйвера LD.SYS.

Любые файлы DSK ( как поблочные, так и посекторные ) можно открывать как архивы в TC и FAR, используя DSK-плагин.
MM
Advanced Member


Откуда: Павловский Посад Мск.обл.
Всего сообщений: 3418
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
2 авг. 2013
Anonymous написал:
[q]
MM написал:
[q]
Не ясно, при чем тут БК - речь идет о клоне МС1201.01 с ( почти ) новым обвесом.
[/q]
Это был комментарий к вашему замечанию, которое встречалось только на БК и УКНЦ, где исполнительная среда БКшных программ использовала дополнительные слова в каталоге для хранения своей информации и которая терялась при перезаписи файла стандартными средствами ОС. Вот я написал, что БК не надо сюда тянуть, на стандартном софте и оборудовании таких проблем нет.
...
[/q]
Впервые слышу о дополнительных словах ( и др. данных ) в каталогах стандартных ОС RT-11 SJ V5.00
Да, по ТО на ФС RT-11 они допускаются, но на практике - не видал .
По крайней мере свои поделки с такими "пирогами" я никому не списывал, и вроде как нигде не обсуждал. Да и сама RT-11 там не присуствовала.
Anonymous
Advanced Member


Откуда: Москва(Россия)
Всего сообщений: 2537
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
22 нояб. 2011
MM, тогда на какие новодельные ОС, несовместимые по каталогам с RT-11, но имеющие с ней проблемы, вы ссылались? Да и странное "с 31-м томом" ни к одной из существующих ОС не подходит. Я подумал, что про подобный софт пишите, извините.
MM
Advanced Member


Откуда: Павловский Посад Мск.обл.
Всего сообщений: 3418
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
2 авг. 2013
Anonymous написал:
[q]
MM, тогда на какие новодельные ОС, несовместимые по каталогам с RT-11, но имеющие с ней проблемы, вы ссылались? Да и странное "с 31-м томом" ни к одной из существующих ОС не подходит. Я подумал, что про подобный софт пишите, извините.
[/q]
Пытался пристроить драйвер BY.SYS самой первой версии ( который практический голый - код занимает 1 экран в DESS ) к RT-11 SJ , которая с 2000-м годом и разрешает много томов в драйвере - вылетало на вторичном загрузчике в лес ( МС1201.03 ), причем явно не на первом драйвере.
Потом скачал от Хобота RT-11 SJ V5.01 - начало грузиться, но не с первого раза ( особенности ?! недостоверный дамп ядра ? ).

Но вся фишка в том, что я на на 100% аналогичном конфиге на МС1201.04 работал 5 лет, но с RT-11 V5.00, поставляемой с А. в составе МС507 ( ДВК-3 ).
Пробовал отлавливать баг - дело в вторичном загрузчике дров, ему не нравится каталог, т.е. дефект идеологический.
Ну или все образы SJ битые попались...

П.С. От БК использовался исключительно сам BY.SYS , остальное - скачанное из всяких мест, особенно от Хобота.
Возился неделю, по 4 часа каждый день.
И в итоге еще и потерял диск, который вроде как начал загружаться :frown: .
На а формат-контроль диска BY: - сторонней программой TESTBY.SAV, которая отлично работает везде.
*
В принципе, BY.SYS можно заменить и на драйвер PY.SYS :
http://zx-pk.ru/threads/26134-...page4.html
Mixa
Member


Откуда: Москва
Всего сообщений: 170
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
8 авг. 2009
_Patron_ написал:
[q]
Если говорить строгим "научным" языком, посекторный образ - это образ с сохранением программного интерлива, поблочный образ - образ без сохранения программного интерлива.
[/q]
В этих терминах я имел в виду поблочный. Век живи, век учись :)

А вот ПЗУшный загрузчик по адресу 173000, что он должен уметь кроме чтения первого сектора в начало памяти? Смотрел примеры, они все какие-то простейшие. Не хочется там развесистую диагностику устраивать. По-простому: сброс на всякий случай, чтение первого сектора, проверка бита ошибки (если что - возврат на самое начало), передача буфера, переход на 0.
Anonymous
Advanced Member


Откуда: Москва(Россия)
Всего сообщений: 2537
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
22 нояб. 2011
MM написал:
[q]
Пытался пристроить драйвер BY.SYS самой первой версии
[/q]
Так драйвер надо пересобирать под каждую новую версию, дело в неправильном драйвере. Возьмите и пересоберите мой http://qbus.narod.ru/by.zip - у нас версия архивная с начала 90х была 5.4, хоть и появилась новомодная 5.6 в 91 году, ее до выхода 5.7 аж в 98м не давали. Но драйвер прекрасно работает под всеми, начиная с 5.3.


Mixa написал:
[q]
А вот ПЗУшный загрузчик по адресу 173000, что он должен уметь кроме чтения первого сектора в начало памяти?
[/q]
Ничего не должен, считываем блок с загрузчиком в 0 адрес памяти и обнуляем PC, адрес хранения загрузочного блока может отличаться от 0го, например, для совместимости диска со стандартом ПиСишки, куда диск можно было бы перетыкать. На всякий случай, для совместимости, ещё перед обнулением PC, заносим 010000 в SP и 0340 в RS.
_Patron_
Member


Откуда: Москва
Всего сообщений: 146
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
19 дек. 2012
Mixa написал:
[q]
В этих терминах я имел в виду поблочный. Век живи, век учись
[/q]
Для полноты картины можно также вспомнить о существовании подорожечных TRK образов, выполненных с сохранением разметки дорожек и аппаратного интерлива секторов.
MM
Advanced Member


Откуда: Павловский Посад Мск.обл.
Всего сообщений: 3418
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
2 авг. 2013
По поводу драйвера винчестера IDE для ДВК-подобных ЭВМ.
Можно в SET-командах установить привязки томов ( по 32 метра ) к файлам в FAT-16.
И при начальной загрузке разыскивать указанный файл в FAT-16.
Разумеется, без учета фрагментации.
Anonymous
Advanced Member


Откуда: Москва(Россия)
Всего сообщений: 2537
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
22 нояб. 2011
MM написал:
[q]
установить привязки томов ( по 32 метра ) к файлам в FAT-16
[/q]
Вроде были разговоры на bk0010.org перед тем, как я оттуда выпилился из-за технических проблем с доработанным движком форума, что пишется драйвер fat для использования совместно с smk-подобными контроллерами. Чем дело кончилось?
MM
Advanced Member


Откуда: Павловский Посад Мск.обл.
Всего сообщений: 3418
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
2 авг. 2013
Anonymous написал:
[q]
Чем дело кончилось?
[/q]
Вообще нет данных об самой затее.
А СМК - это самодел неизвестных лиц без ТО и КД, я как бы не в курсах о таком девайсе.
Anonymous
Advanced Member


Откуда: Москва(Россия)
Всего сообщений: 2537
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
22 нояб. 2011
MM написал:
[q]
Вообще нет данных об самой затее.
[/q]
Вот тут http://bk0010.org/forum/?id=15886 сообщение от TheGWBV@ - 08.04.2016 18:54
Mixa
Member


Откуда: Москва
Всего сообщений: 170
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
8 авг. 2009
Запрограммировал загрузчик в ПЗУ по адресу 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 написал:
[q]
Есть ли какой-нибудь способ для драйвера до начала его использования вызвать код его инициализации, который резидентом не остается?
[/q]
Вам необходимо ознакомиться с следующим доком :

"Программирование внешних устройств Руководство программиста 00008-01.33.01-2"

Скан его найдете на моем форуме-справочнике из подписи ниже по тексту.



Если кратко и по существу - начальную подготовку регистров и векторов производит начальный загрузчик в 173000, он вычитывает 0 блок тома, при этом сообщая номер тома и имя драйвера. В 000000 блоке тома тоже желательно повторить процедуру инициализации регистров и векторов, т.к. понадобится подпрограмма чтения блоков тома по номеру блока - более подробно в брошуре.
Mixa
Member


Откуда: Москва
Всего сообщений: 170
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
8 авг. 2009
MM написал:
[q]
"Программирование внешних устройств Руководство программиста 00008-01.33.01-2"
Скан его найдете на моем форуме-справочнике из подписи ниже по тексту.
[/q]
Спасибо! Как-то сходу его там не нашел среди остального собрания, но судя по структуре оглавления это перевод RT-11 Software Support Manual. Он есть, его и почитаю.


MM написал:
[q]
Если кратко и по существу - начальную подготовку регистров и векторов производит начальный загрузчик в 173000, он вычитывает 0 блок тома, при этом сообщая номер тома и имя драйвера. В 000000 блоке тома тоже желательно повторить процедуру инициализации регистров и векторов, т.к. понадобится подпрограмма чтения блоков тома по номеру блока - более подробно в брошуре.
[/q]
Начальный загрузчик 173000 я сделал совсем простым, про прерывания он ничего не знает.
Насчет векторов - гляну .DRVTB, это для Multi-Vector handlers, похоже, то, что нужно.
Anonymous
Advanced Member


Откуда: Москва(Россия)
Всего сообщений: 2537
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
22 нояб. 2011
Mixa написал:
[q]
Начальный загрузчик 173000 я сделал совсем простым,
[/q]
Он таким и должен быть. Это называется аппаратный загрузчик и его задача скачать с устройства в память первичный загрузчик, передав тому только номер привода, с которого грузились.
Далее первичный загрузчик, содержащий первичный драйвер, вычитывает с устройства вторичный загрузчик, сообщает ему точку входа в первичный драйвер, номер привода и имя устройства.
После чего вторичный загрузчик, используя первичный драйвер грузит в память основной драйвер и сам монитор ОС. Вторичный загрузчик вам не надо писать, он входит в состав монитора ОС и при установке системы на диск копируется программой dup из файла монитора в блоки устройства со 2го по 5й.
Mixa
Member


Откуда: Москва
Всего сообщений: 170
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
8 авг. 2009
Тут обнаружил, что то, чем управляет 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 написал:
[q]
У себя девайс назову WD. Так понял, что оно любое двухбуквенное, лишь бы уникальное?
[/q]
Да.


Mixa написал:
[q]
А номер ID для девайса тоже любой, лишь бы уникальный?
[/q]
Типа.
По сути - вряд ли на что-то влияет.
Anonymous
Advanced Member


Откуда: Москва(Россия)
Всего сообщений: 2537
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
22 нояб. 2011
Mixa написал:
[q]
У себя девайс назову WD.
[/q]
А так уже драйвер для УКНЦ называется, смотрите, чтоб путаницы не возникло. Украинский драйвер ideшника, который под киевский контроллер на здоровенной плате и рассыпухе - WA, драйвер под контроллер, который клуб наш продаёт - WQ. У себя я, чтоб не путать DW от Э85/Pro3x0 с ДВКшным DW, последний WW называю в системах собираемых.
Mixa
Member


Откуда: Москва
Всего сообщений: 170
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
8 авг. 2009
Anonymous написал:
[q]
А так уже драйвер для УКНЦ называется
[/q]
Вот незадача. Проект изолированный, но мало ли что. Тогда попробую XD :) Или DA. Или AD, как во фряхе.
_Patron_
Member


Откуда: Москва
Всего сообщений: 146
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
19 дек. 2012
Mixa написал:
[q]
Тогда попробую XD
[/q]
Или DV, или GW ( G похоже на D ).

Имя не проблема - 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 написал:
[q]
макрос генератор входа в прерывание называется .DRAST? В чем логика?
[/q]
driver asynchronous service trap, в мануале по системной макробиблиотеке же есть.
Mixa
Member


Откуда: Москва
Всего сообщений: 170
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
8 авг. 2009
Anonymous написал:
[q]
в мануале по системной макробиблиотеке же есть.
[/q]
Во, спасибо, туда еще не смотрел, глянул только в SYSMAC.MAC, с расчетом, что в комментариях есть объяснение, а там нету.
Anonymous
Advanced Member


Откуда: Москва(Россия)
Всего сообщений: 2537
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
22 нояб. 2011
Mixa написал:
[q]
Вот незадача. Проект изолированный, но мало ли что. Тогда попробую XD :) Или DA. Или AD, как во фряхе.
[/q]
Кстати, попалось тут: оказывается, XD.SYS тоже был, для RT-11 v4.x это предшественник LD.SYS, привязывался к файлу утилитой XDATCH.SAV и не входил в основной дистрибутив, поставлялся отдельно. А в ОС РАФОС для этой цели были UX/UY/UZ.
Mixa
Member


Откуда: Москва
Всего сообщений: 170
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
8 авг. 2009
В поисках решения проблемы курицы и яйца, игрался
вот с этим.
Образ диска, который "из коробки", затыкался на чтении блоков где-то вначале. Подставил образ диска тот, который без прерываний от терминала. Всё заработало.
Дальнейшее разбирательство привело к обнаружению того, что у меня не работает как надо векторное прерывание от терминала. В конце цикла приема вектора процессор снимает DIN, потом снимает IAKO, потом ВП1-065 снимает свой RPLY. После снятия RPLY должен начаться новый цикл шины, но он оказывается поломанным: SYNC активируется, тут же (через такт, нужно уточнить) снимается, отрабатывается таймаут шины, и трап на 4. Похоже на то, что диаграмму циклов ломает позднее снятие RPLY после передачи вектора. Надо будет уточнить детали.
andyTh
Гость

Ссылка

:eek:
ВП065 снимает RPLY позже, чем нужно для ВМ1???
Удивительно. Вы не пробовали сравнивать вашу схему и схему к примеру МС1201.01 на
предмет отличий в привязке к тактовой частоте?
Сейчас на форуме
MM
Advanced Member


Откуда: Павловский Посад Мск.обл.
Всего сообщений: 3418
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
2 авг. 2013
Mixa написал:
[q]
отрабатывается таймаут шины
[/q]
Т.е. не переходит по вектору ?
Возможен ли скриншот с ЛА этого момента ?
Mixa
Member


Откуда: Москва
Всего сообщений: 170
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
8 авг. 2009
Именно, по вектору не переходит. Там какое-то пограничное состояние. Сначала проверял прерывание на прием символа, трапалось на 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 написал:
[q]
скопировал узел с МС1201.01
[/q]
Оптимальная привязка RPLY на БК0010 на .641 плате, и на БК11/М.

Обращаю внимание, что 1801ВМ1 не допускает немедленный прием RPLY в цикле записи данных - висит...
На чтении - допускает.
Mixa
Member


Откуда: Москва
Всего сообщений: 170
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
8 авг. 2009
MM написал:
[q]
Оптимальная привязка RPLY на БК0010 на .641 плате, и на БК11/М.
[/q]
Посмотрел схему 0011М, там из JK D8.2 и инвертора D>неразборчиво>.5 сделан D-триггер, на котором активация и снятие RPLY привязываются к спаду CLC.
Mixa
Member


Откуда: Москва
Всего сообщений: 170
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
8 авг. 2009
Шайтанама... Вернул привязку 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
Сигналы
1 IAKO
2 SYNC
3 RPLY привязанный
4 CLC
Это как было, RPLY снимался рано, все хорошо, следующий SYNC нормальный


Как было, снятие RPLY задержалось, глюк, SYNC куцый и дальше таймаут


Как стало, привязка к спаду CLC, RPLY формируется еще позже, но теперь все нормально


И то же самое, чтоб был виден SYNC
andyTh
Гость

Ссылка

Из серии первый блин процессор комом :)
Сейчас на форуме
Mixa
Member


Откуда: Москва
Всего сообщений: 170
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
8 авг. 2009
andyTh написал:
[q]
Из серии первый блин процессор комом :)
[/q]
Навроде того. Сейчас подавил зуд попробовать активацию RPLY передавать как есть, без привязки. Трезвый разум говорит, что смысла нету, потому что реальный RPLY (от ВП1-030) приходит при верхнем уровне CLC, привязанный RPLY активируется на ближайшем спаде CLC, то есть, процессор при любом варианте видит активный RPLY на одном и том же фронте CLC. Тут с разумом соглашусь и хардварные тюнинги закончу (надеюсь).
Anonymous
Advanced Member


Откуда: Москва(Россия)
Всего сообщений: 2537
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
22 нояб. 2011
Ну вот после изучения кристалла и построения модели, в описании процессора Vslav пишет, что RPLY по любому фронту CLC можно синхронизировать, а входы прерываний - по переднему фронту CLC. Страницы 8-9 описания.
Mixa
Member


Откуда: Москва
Всего сообщений: 170
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
8 авг. 2009
Anonymous написал:
[q]
RPLY по любому фронту CLC можно синхронизировать
[/q]
Ну вот, появился зуд попробовать. Правда, синхронизация по любому из фронтов получится такой, что перепады RPLY будут идти вровень с перепадами CLC, потому что CLC это счетный триггер на одной половинке ТМ2, а привязка RPLY на другой половинке этого же ТМ2, и C у половинок будет общий.

UPD Еще раз посмотрел здесь, все же по логике работы детектора неактивного RPLY, а именно, сначала выполняется условие неактивного RPLY при низком уровне CLC, потом защелкивание этого состояния на фронте CLC, потом выдача этого состояния в привязке к спаду CLC - RPLY лучше привязать к спаду CLC. Не хочу уже паять, ищу повод не поддаваться зуду.
Mixa
Member


Откуда: Москва
Всего сообщений: 170
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
8 авг. 2009
30 декабря Anonymous написал:
[q]
Так драйвер надо пересобирать под каждую новую версию, дело в неправильном драйвере.
[/q]
Вчера пробовал подсунуть свой драйвер для 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 написал:
[q]
Так трап то 4 пишет по которому адресу - туда сразу в пульте смотрите, что там вызывает ошибку.
[/q]
Кстати, вчера удалось через 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 написал:
[q]
?MON-F-Trap to 4
[/q]
Мой Вам совет - используйте исключительно RT-11 SJ V5.00
Иначе есть существенный риск, что это сообщение ОС станет преобладающим на длительное время ( разработки драйвера ).
Mixa
Member


Откуда: Москва
Всего сообщений: 170
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
8 авг. 2009
MM написал:
[q]
Мой Вам совет - используйте исключительно RT-11 SJ V5.00
[/q]
SJ согласен, .00 ну не знаю, играюсь с .03, пока играется.

В общем, по незнанию накосячил в обработчиках прерываний. Когда смотрел, что делает .DRAST, увидел, что он вызывает что-то свое, подумал, что регистры все там где-то сохраняются. У себя расставил HALT'ов, на стеке после .DRAST только R5 и R4 увидел. Теперь понятно, откуда трапы. R0-R3 разрушаются.

.FORK, наверное, надо изучить. Или регистры сохранить поначалу для пробы и посмотреть, что получится..
Anonymous
Advanced Member


Откуда: Москва(Россия)
Всего сообщений: 2537
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
22 нояб. 2011
А как вы без .forkа-то в прерывании работаете? Понижение приоритета, чтоб всё остальное не стояло - первоочередная задача. И нельзя слишком много команд до форка использовать, т.к. через несколько из них система отберёт всё равно управление (через сколько - не помню) и будет аварийный трап тоже. Ещё есть .synch и .inten, для форка можно все регистры использовать, для синча - только $0 и $1, для интена - $4 и $5.
SJ использовать - дурной тон, там и криво обрабатываются приоритеты, и reset оно выдаёт в случайное для устройства время. Например, многие устройства с интеллектуальными контроллерами просто под sj не работают, т.к. после аппаратного сброса теряется вся последовательность инициализации устройства.

p.s. начиная с версии 5.6 sj монитор упразднили по этой причине, его больше нет в составе системы.
Mixa
Member


Откуда: Москва
Всего сообщений: 170
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
8 авг. 2009
Anonymous написал:
[q]
А как вы без .forkа-то в прерывании работаете?
[/q]
Мне он пока не совсем понятен. Не все сразу :) Сейчас делаю, чтобы хоть как-то заработало, чтоб нащупать правильную линию. В обработчиках прерывания я не задерживаюсь, они короткие, без циклов, порядка двух десятков команд по пути исполнения.

Самое долгое в драйвере - это вычисление дорожка/голова/сектор, но это не в прерывании. И циклов можно было бы избежать вовсе (процедура деления - не в счет), если бы не задержка в установке бита DRQ в регистре 1F7 после выдачи команды записи секторов. Вынужден ждать в цикле, когда этот бит взведется. Где-то с десяток оборотов нужно ждать. Вот думаю, по превышении числа циклов ожидания ошибку выдавать.

Вообще, сейчас успешное завершение операции завязано на то, что и ATA, и DMA в любом случае выдадут прерывание, иначе процесс остановится на стадии ожидания прерывания. Не знаю, бывает ли такое, когда по протоколу ATA обязан выдать прерывание, но сбоит и не выдает.

Вчера прерывания сделал только на регистрах R4 и R5, трапы прекратились, а диск заработал. :thumbup:
Anonymous
Advanced Member


Откуда: Москва(Россия)
Всего сообщений: 2537
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
22 нояб. 2011
[q]
они короткие, без циклов, порядка двух десятков команд по пути исполнения.
[/q]
Там их меньше 8 должно быть перед форком.
[q]
Вынужден ждать в цикле, когда этот бит взведется.
[/q]
Так для этого таймерные запросы есть для драйверов...
Mixa
Member


Откуда: Москва
Всего сообщений: 170
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
8 авг. 2009
Ффухх, в первом приближении заработало. Во время испытаний начальной загрузки у ST-157A вышла из строя микросхема управления шаговым двигателем перемещения головок. Случайное совпадение? Не думаю. Думаю, что таки да. :) Она и раньше бывало внезапно раскалялась, после передергивания питания возвращалось к норме, в этот раз момент упустил, вовремя не обесточил, заметил уже дымок, и изменения стали необратимыми. Взял с полки другой 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 написал:
[q]
- 40 мегабайт диска это много. Пришел к осознанию необходимости как-то нарезать это пространство.
[/q]
А вот вам развлечение, подумайте, как бы можно было использовать больший объём, чем 32Мб.
Была заброшенная мечта юности: можно переписать ОС так, что 32Мб останутся ограничением, но на размер каждого одного файла, для запросов .enter, файлового запроса .lookup, запросов .readw-.readc/.writw-.writc при работе с файлами, для совместимости с софтом. А вот объём свободного пространства на диске можно было бы считать уже с большей разрядностью указателей, но внутри ОС, чтоб софт мог штатный работать. Тогда для софта всегда, для любого запроса .enter, будет 32Мб на каждый файл свободно.
XPOHOMETP
Advanced Member


Всего сообщений: 752
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
13 мая 2015
Mixa написал:
[q]
- Надо было предусмотреть скоростной интерфейс.
[/q]
Не знаю как там со стороны РС (и драйвера НХ в частности), но ВП-065 вполне себе работает на 57600, даже через оптроны.
Связь станет заметно живее, сравнимо с дисководами даже.

Mixa написал:
[q]
- 40 мегабайт диска это много. Пришел к осознанию необходимости как-то нарезать это пространство.
[/q]
Логических дисков наделать...
Если склероз не совсем изменяет, то 1 мегабайта хватало чтобы разместить операционку с основными программами,
исходники монитора, требуемые библиотеки и т.п.
И оставалось место чтобы это все оттранслировать, слинковать и получить собственный вариант RT11 SJ V5.00 :)

Mixa написал:
[q]
- Дисплей 80х25 это мало
[/q]
Приходилось использовать БК0010 + телевизор в качестве терминала к МС1201. Вот там 64 х 24 это мало !!
А 80х25 в самый раз, под них многие редакторы заточены были.

Anonymous написал:
[q]
А вот вам развлечение, подумайте, как ...
[/q]
Это не развлечение, это мазохизьм какой-то :) При ОЗУ то в 56...64кб.
Отзывчивость операционки явно пострадает, хотя-бы из-за размера каталогов...

Anonymous написал:
[q]
будет 32Мб на каждый файл
[/q]
Врагу не пожелаю читать исходник на МАКРО-11 размером в 32 МБ :biggrin:
<<Назад  Вперед>> Страницы: 1 2 3 4 5 ... .. 10 11 12 13 14 15
Печать
Полигон-2 »   Бывший СССР »   Концепт 1801ВМ1
RSS

1 посетитель просмотрел эту тему за последние 15 минут
В том числе: 1 гость, 0 скрытых пользователей

Последние RSS
[Москва] LIQUID-Акция. Сливаются разъемы CF
МС7004 и 7004А на AT и XT
Пайка термотрубок
Проммать s478 PEAK 715VL2-HT ( Full-Size SBC)
Подскажите по 386 материке по джамперам.

Самые активные 5 тем RSS