Comments 20
Интересно, многие ли из читателей заметят без подсказок, в чём заключается крайнее расточительство при реализации БУР?.. :)
Не поверите, вчера был в "бункере Сталина"

Ходил смотреть пульт управления от ЕС-1033 с целью его приобретения для музея:

Пульт в хорошем состоянии. Завтра пульт должен отбыть по назначению.
А что такой компьютер делал в бункере для партийного начальства? Или это все-таки был бункер для каких-то военных, которые что-то серьезное (типа стратегических ракет) контролировали?
Обычное бомбоубежище

А панель управления от компьютера ждала меня, когда я найду её.

Интересно, как эту панель туда занесло? Списали и положили на правах мусора/металлолома?
Лично я таких панелей утилизировал с десяток. И не подумал, что надо для истории хоть одну сберечь! А люди догадались это сделать!

Наличие микрооперации
РОЦ[1/10]=0
в таком виде вызывает сомнения: если уж анализировать, то все 15 разрядов РОЦ, чтобы понять, возник какой-то особый случай или нет; для чего анализировать только десять разрядов, непонятно.
Возможно, что это связано с причинами оставшихся 5 прерываний: десятичное деление и операции с плавающий точкой. Логично предположить, что (сложные) проверки для такого рода условий выполняются непосредственно в микропрограммной логике и, соответственно, когда такие события происходят, микропрограмма устанавливает соответствующий код прерывания и ей нет необходимости заново проверять остальные разряды РОЦ.
Там все проверки, по большому счёту, выполняются микропрограммно, поэтому-то и странно. Никаких общих черт у этих особых случаев, кажется, нет, поэтому я и в недоумении...
Кстати говоря, причина выяснилась при изучении имеющейся инфы по обработке программных прерываний (в статье изменения уже внёс). Чтобы определить код прерывания, они сначала выполняют ветвление по этой микрооперации, а затем в одной ветке проверяют каждую из причин 1-10, а в другой -- 11-15. В общем, недодвоичный поиск кода прерывания :)
особый случай спецификации. Последняя встречается только в упомянутом выше фрагменте содержимого микропрограммной памяти и устанавливает бит 6 при соблюдении некоего условия — какого именно, неясно.
Не исключено, что это операции десятичного умножения и деления. В них особый случай спецификации используется для индикации переполнения.
Не переполнения как такового, а неверного размера операндов. У настоящего переполнения своя индикация.
Например,
РВО[0/3]≠1111
позволяет выделить команды с кодами F0–FF, к которым относится большинство операций десятичной арифметики, но практическая польза от этого неясна, поскольку для таких операций используются и некоторые другие коды
Я сейчас проверил: в этом диапазоне располагаются только операции формата SS2, т.е. у которых во втором байте задаются две 4-разрядных длины. (С оговоркой: для System/360 и ранних System/370).
Насчёт использования микрооперации
РВО[5/6]≠0
разумных предположений пока нет.
Иными словами, эта проверка выделяет операции с кодами 0, 1, 8 и 9 в младшей шестнадцатеричной цифре байта. Предполагаю, что это операции SSK с кодом X'08' и ISK с кодом X'09': только они из всего формата RR требуют режим работы супервизора. (Операции с кодами X'00' и X'01' отсутствуют.)
Хотя исключить такую гипотезу нельзя, на 0/1/8/9 заканчивается целый склад команд -- скажем, LR и CR (18 и 19). Старшие четыре бита КОП эта проверка не смотрит, так что выделить конкретно SSK и ISK из всего формата RR она не может. Кроме того, в конечном итоге переход происходит по всему коду операции, и проверка на режим супервизора, надо полагать, выполняется в микропрограммах конкретных команд...
А зачем это сейчас?
Вот я изучал и сдавал экзамены по устройству ЕС-1033. Мозги вынесли так, что до сих пор, наверное, помню протокол общения с канальными устройствами и назначения битов байтов состояния. Совершенно бесполезные знания. Зачем это изучать сейчас? Есть же масса современных интересных устройств. Кто-то планирует проектировать подобия ЕС ЭВМ, или собирается запвскать их в "Музее унылых вещей"? Не забудьте отнести в него и галоши фабрики "Красный треугольник" и сохранившиеся партбилеты. Ведь "без прошлого нет будущего", ага-ага.
Примерно таким же вопросом задаюсь давно - зачем нам в 97-м году надо было наизусть знать значения всех регистров, битов и прочего процессора КР580ВМ80А и пачки контроллеров его обвязки - ВВ55, ВИ54, ВГ93 и прочих, когда уже Pentium массово у людей были. Все эти регистры и биты всегда можно было в справочнике посмотреть, знать их наизусть на экзамене то зачем? Видать такое вот "лучшее" советское образование, никак не могли программы переписать для современных процессоров.
"Знать наизусть на экзамене" -- это, конечно, глупость; если бы преподавал я, то требовал бы понимания принципов, а не запоминания всего этого (и, более того, не запрещал бы пользоваться справочниками: если студент что-то по мелочи забыл, ему поможет, ну а если реально не знает, препод всё равно поймёт это).
Ну а принципы... Если усвоил, как работает и как программировать КР580ВВ51, то сможешь разобраться с любым другим UARTтом; если понял, как ШИМить с помощью КР580ВИ53 -- сделаешь это и на любом другом таймере, ну и т.д. и т.п. Так что полезные знания можно было и на старье получить. Кроме того, Пентиумы в освоении именно этих вещей помогли бы мало: у ПК и у промышленных (микро)контроллеров разное назначение и разные функциональные возможности, и "переписать программы для современных процессоров" зачастую было невозможно: не подходили они для этих целей. Сейчас, конечно, программированию подобных вещей лучше учиться на каких-нибудь там STM32 или других популярных микроконтроллерах, но в 1990-х обучение на 8080 и его периферии -- вполне разумное решение.
Некоторые занимаются археологическими раскопками -- им древние окаменелости интересны, хотя вокруг действительно полно современных интересных вещей. Ну а кому древности не интересны, тот волен выбрать себе занятие (и чтение) по душе, оставив окаменелости другим.
Процессор ЭВМ ЕС-1030. Блок управляющих регистров и блок прямого управления