Вот теперь все понятно!
С уважением,
Александр.
А какая тут должна быть совместимость? Вроде по аналогии с LSI-11 делали 1801ВМ1 и 1801ВМ2, а 1801ВМ3 к этому отношения не имеет.
Тут ещё надо узнать, как ведет себя 1801ВП1-119, т.к. с процессора идут два сигнала HLTM и SEL, HLTM показывает, что процессор находится в режиме останова, а SEL - что должен идти обмен с пультовой памятью.
И переводит ли процессор эти два вывода в Z-состояние при обмене по DMA, это не тестировалось.
- - - Добавлено - - -
Ну вот и код ошибки 100003 свидетельствует о том, что произошел TRAP4 во время записи в адресное пространство материнской платы, так что пробовало записать в ПЗУ пульта.
- - - Добавлено - - -
Хотя ещё может быть, что в режиме HALT процессор 1801ВМ3 не реагирует на запросы DMA. Тогда в КМД при запросе через "окно" тоже будет TRAP4.
Так, стойте! Люди, ИМХО, вы что-то путаете. Причем здесь вообще 119-я, ПЗУха и пр.? Это все фенечки процессора. Грубо говоря, у него не 22 адресных линии, а 23, линию SEL можно считать таковой. Всем этим рулит диспетчер памяти, позволяя процессору через его 16-разрядный виртуальный адрес обратиться куда угодно. Но DMA-то не знает ни 119-й, ни сигнала SEL, ни ПЗУхи. На корзине есть 22 адресных линии, и все! И по этим линиям обязана адресоваться основная память и страница ввода-вывода, и никаких ПЗУшек.
И это вряд ли. Какая на фиг разница процессору, в HALT-mode он, или нет? Получил сигнал К ПВ Н, отключился от шины и ждет, когда его снимут. То есть, конечно, если наши орлы заблокировали выдачу К ППД Н в ответ на К ТПД Н в то время, когда процессор находится в HALT-mode, то таки да, птица Обломинго прилетит. Только зачем? Как может помешать один или несколько циклов ДМА исполнению программы в HALT-mode? Не понимаю...
- - - Добавлено - - -
vwarlock, а может таймер виноват? Помню, при включенном таймере загрузка с КМД иногда лажала. Плз, попробуйте отключить его и еще раз сделать нач. загрузку командой 37 КМД.
Кто мешает тебе выдумать порох непромокаемый? (К.Прутков, мысль № 133)
По поводу SEL, AFZ не путайте с 1801ВМ2, там да, она де-факто является 17-й адресной линией и процессор может адресовать до 128 КБайт. В случае с 1801ВМ3 сигнал SEL устанавливается только в режиме HALT при обращении к нижним 32КБайт виртуальной памяти (через PARH0 и PARH1), да и то там обрезано всё до 8Кбайт. Для 1801ВП1-119 сигналы SEL, HLTM являются входящими, и по ним и адресным сигналам A11 и A12 1801ВП1-119 выбирает либо системное ПЗУ, либо статическое ОЗУ, либо основную память. Вот сигнал выбора страницы ввода-вывода вырабатывает сам процессор 1801ВМ3. Так что устройство по DMA получает доступ к памяти через 1801ВП1-119, если же надо страницу ввода-вывода, то оно должно вырабатывать и BS, вот у КМД с этим плохо.
- - - Добавлено - - -
Включенный таймер никак не влияет на исполнение команды 37 КМД. Он влияет только на исполнение первичного загрузчика. Если включен таймер и в ячейке 0100 содержится 0, то по сигналам таймера и разрешенных прерываниях первичный загрузчик всё время перезапускается по нулевому адресу. Надо в первичный загрузчик в ячейки 0100 и 0102 внести 0102 и 2 и проблема отпадёт. Так сделано в драйвере MZ для УКНЦ.
В случае ВМ2 - то же самое. Смысл этого деяния - скрыть холт-модовое ПЗУ (а для ВМ4 еще и ОЗУ) как от нормальных программ, так и от всех абонентов МПИ. То есть ни обычная программа, ни DMA не должны увидеть эти теневые объекты ни при каком раскладе, они должны быть доступны только процессору в холт-моде. И, если у ВМ3 они видны через DMA, то это конкретный косяк. Ошибка проектирования, которая осталась незамеченной.
Угу. А если там 177777 или что-то в том же духе, то оно вылетает. Не помню, что там у ДВК в памяти после включения. Про Э-60 помню, там идут блоки по 64 байта (oct 100) - блок нулей, блок единиц (177777), снова блок нулей, и т.д. Особую пикантность этому делу добавляли время от времени появляющиеся отдельные единичные биты в некоторых нулевых словах и, наоборот отдельные нулевые биты в словах единичных. Естественно, случайным образом. Скорее всего, это из-за того, что состояние запоминающих конденсаторов при включении всегда, разряженное, но для каких-то адресов это интерпретируется, как ноль, для других - как единица. Ну, и отдельные конденсаторы в процессе включения могут зарядиться, причем это зависит от экземпляра м/с, ну и платы, в которую эти м/с запаяны...
Последний раз редактировалось AFZ; 31.12.2016 в 19:48.
Кто мешает тебе выдумать порох непромокаемый? (К.Прутков, мысль № 133)
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
То что это конкретный косяк, это я согласен, но косяк 1801ВМ3 или 1801ВП1-119 пока не ясно, хотя всё показывает на 1801ВМ3, при цикле DMA он должен отключать сигналы SEL и HLTM, если конечно цикл DMA доступен в HALT-моде. Но может быть и косяк 1801ВП1-119, если она доступ у пультовой памяти предоставляет только на сигналу HLTM.
В принципе, это довольно просто вызвонить. Сочиняем несложную логическую схему, которая по нажатию кнопочки взведет триггер, который подаст К ТПД Н, а затем, дождавшись появления К ППД Н, снятия К СИА Н и К СИП Н, выдаст сигнал К ПВ Н и зависнет в этом состоянии. После этого можно будет общупать все ножки как ВМ3, так и ВП1-119, состояние будет статическим. (При этом, правда, накроется все содержимое ОЗУ, да и Бог с ним...)
Кто мешает тебе выдумать порох непромокаемый? (К.Прутков, мысль № 133)
Кстати, посмотрел схему МС1201.03, там на 1801ВП1-119 зачем-то ещё идет сигнал SACK (К ПВ Н). Да и то, что накроется память, то это вряд ли, регенерацию осуществляет 1801ВП1-119, это в "электронике-60" вроде если устройство хватало память по DMA на длительное время, то и оно было обязано осуществлять регенерацию ОЗУ.
Кто мешает тебе выдумать порох непромокаемый? (К.Прутков, мысль № 133)
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)