1 Отредактировано garnizon (09-11-2022 22:20)

Тема: Ячейка сети НИИВК

http://agatcomp.ru/agat/Hardware/Net/net_niivk.shtml

Кстати, похоже что адреса регистров у обоих карт совпадают.

2

Re: Ячейка сети НИИВК

Возможно, в позднюю карту вошли какие-то доработки. Я так понимаю, что вторую К555ИЕ7 поставили для улучшения качества приема. К1533ТМ8 могли выкинуть, так как на ней переключатель ОЗУ/ПЗУ, а в поздней версии осталось только ПЗУ и ничего переключать не нужно. Ну и с остальными микросхемами наверное что-то похожее.

Список микросхем:

ранняя         поздняя

к554са2        к554са2

кр1533тм2      км555тм2 Х2

кр1533лн2      кр555лн2

кр1533ап5      кр555ап5

кр1006ви1      НЕТ

к555ие7        к555ие7 Х 2

к555аг3        к555аг3 

к555ла3        к555ла3 Х 2

к555лп5        к555лп5

кр580вв51      кр580вв51

кр1533тм8      НЕТ

кр580ва86      кр580ва86

к555лл1        к555лл1

кр1533ид4      НЕТ

к555ла4        к555ла4

к555тл2        к555тл2

к555ле1        к555ле1

кр1533ла1      кр1533ла1

к155тл3        к155тл3

3 Отредактировано avivanov76 (12-09-2022 01:29)

Re: Ячейка сети НИИВК

Сравнил "старую" и "новую" схемы, попробую объяснить отличия. Вообще, обе платы явно имеют общие корни в виде статьи Е.Н.Глыбина, С.В.Козаренко, К.М.Левина в "Микропроцессорных средствах и системах".

В "старой", видимо, попытались упростить ту часть платы, которая отвечает за прием. В результате выкинули одну К555ТМ2, счетчик К555ИЕ7 и К555ЛА3, которая им управляла. На счетчике фактически был сделан одновибратор, в "старой" версии вместо него поставили настоящий одновибратор КР1006ВИ1.

Решение спорное. Потому что в схеме на счетчике задержка определяется тактовой частотой и, по сути, стабилизирована кварцевым резонатором. А схема на КР1006ВИ1 использует резистор и конденсатор для формирования задержки. Реальные резисторы и конденсаторы никогда не бывают того номинала, который на них написан. Они всегда немного отличаются. Кроме того, и сопротивление и емкость зависят от температуры. А следовательно и задержка. Так что схему на КР1006ВИ1 надо подстраивать, а в процессе работы задержка вообще может "уплыть".

Видимо, осознав это, в "новой" версии вернулись к той схеме, которая есть в статье.

Теперь, что касается КР1533ТМ8 и ОЗУ. ТМ8 используется для управления ОЗУ. Разряды D0 и D2 позволяют выбрать, какая часть ОЗУ будет видна при обращении по адресам CX00 - CXFF. Разряд D1 управляет тем, что сейчас используется: ОЗУ или ПЗУ. Схема построена так, что можно использовать либо ОЗУ, либо ПЗУ. Одновременно их использовать нельзя. Мне кажется, наиболее вероятная причина, почему так было сделано - отладка кода загрузочного ПЗУ. То есть, разработчики загружали код начальной загрузки в ОЗУ и отлаживали его. Думаю, это было намного удобнее, чем по поводу каждой найденной баги стирать старое ПЗУ и записывать новое. К тому же, в теории, можно было прямо не выключая машины поправить багу и продолжить отладку.

В "новой" версии это было уже не нужно, код был отлажен и записан в ПЗУ, поэтому выкинули и ТМ8 и место для установки ОЗУ. Кроме того, упростился дешифратор адресов. В новой версии его собрали на нескольких логических элементах и выкинули КР1533ИД4.

Кстати, в "старой" версии забавная ошибка: на КР580ВВ51А сигнал выборки подается при любом значении на шине адреса, у которого разряды A2 и A1 равны 0. Но, поскольку у ВВ51 входы чтения и записи отдельные и они формируются корректно, то никакого вреда от невпопад приходящей выборки нет.

***

Вообще, интересно смотреть, как история Агатовских сетевых карт развивалась.
Планы сделать сеть для Агата были еще в 1982 году http://forum.agatcomp.ru//viewtopic.php?pid=7048#p7048
Но похоже, что до реализации этих планов тогда дело не дошло. Семерочные классы 1985-1986 годов шли без сети.
В 1988 году вышла статья в "Микропроцессорных средствах и системах". Казалось бы, плата готова, функция локальной сети очень востребована, начинайте производство! Но опять тишина.
Книжка Мымрина выпущена в 1990-м, но там ничего нет про сетевые платы. Только две странички про какой-то колхоз с использованием магнитофонного входа. Книжка, конечно, готовилась раньше, году в 1989, но получается, никакой информации про штатные сетевые платы на тот момент не было.
И получается, только в начале 1990-го была выпущена эта "старая" версия. С заметными отличиями от описанной в "Микропроцессорных средствах и системах" платы, без коаксиала. И еще с этой загадочной буквой "Э". Подозреваю, что она означает "экспериментальная".
К концу 1990 эксперименты, видимо, закончились и карта приобрела окончательный вид. Похоже, что в это же время появилась и поддержка в софте http://agatcomp.ru/agat/Software/Other/IKP90.shtml

4 Отредактировано garnizon (12-09-2022 08:19)

Re: Ячейка сети НИИВК

У меня есть еще пару интересных непонятностей.

Обратите внимание, что на "старой" версии, подписаны стороны слота (А,  Б), но подписаны с ошибкой, т.е. перепутаны буквы относительно сторон. И это не слои местами поменяли, буквы прописные и зеркально будут выглядеть.
Так что предположение о "экспериментальной" поддерживаю.

Поздняя плата, имеет маркировку РВИЖ, т.е. ЗЭМЗ. И в школах у нас в Загорске они появились именно в 90-м.
И у нас, я рассказывал, были именно КУВТ. Т.е. только учительская с дисководом, остальные только сетевухи.
Но, что интересно, и в Волжском и Московском Агатах, если попадались сетевухи, все были РВИЖ.

Еще есть статья, в "информатика и образование" http://agatcomp.ru/agat/Paper/IiO.shtml
См 1991 год " Функциональные возможности ОС локальной сети для ПЭВМ "Агат". Г.Кривошеев, С.Козаренко."
Опять тот же Козаренко. Там уже о сложившемся факте, и похоже о наших контроллерах опять.

5

Re: Ячейка сети НИИВК

Эта "старая" плата восстановлению подлежит?
Насколько я понимаю, она совместима с новой?
Собственно, главное, что наличие этой платы принесло некоторую пользу - видно процесс развития)

6

Re: Ячейка сети НИИВК

garnizon пишет:

Обратите внимание, что на "старой" версии, подписаны стороны слота (А,  Б), но подписаны с ошибкой, т.е. перепутаны буквы относительно сторон

Мне кажется, это вообще было на фотошаблоне от руки написано. Как и надпись "Э 001-90" - там все нолики разные.

garnizon пишет:

Еще есть статья, в "информатика и образование"

Нда, прочитал, пришел в ужас :) Оказывается, ОС локальной сети, которая работает на главной машине, позволяет терминальным машинам лазить на общий дисковод просто прокидывая операции чтения и записи секторов. То есть, никакого разграничения ресурсов нет.

И совершенно непонятно, что там с кэшированием данных происходит. Обычные Агатовские ДОС держат в памяти как минимум VTOC. В случае с ОС ЛС так делать нельзя - то, что одна машина поменяла во VTOC, другие машины просто не узнают. И при последующих операциях затрут то, что первая машина записала на диск. Значит, там скорее всего отказались от кэша. И модифицировали ДОС для всех компонентов ИКП.

В общем, это надо изучать.

Lasser пишет:

Эта "старая" плата восстановлению подлежит?

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

Lasser пишет:

Насколько я понимаю, она совместима с новой?

Похоже, что да. Вроде бы адреса регистров должны быть такие же.

7 Отредактировано garnizon (13-09-2022 13:52)

Re: Ячейка сети НИИВК

- Вообще, обе платы явно имеют общие корни в виде статьи

Именно "общие корни" поскольку, в отличие от этой статьи, в наших контроллерах не реализована схема обнаружения конфликтов передачи, кроме того, магистраль сделана симметричной ?

В этом ключе, возникает резонный вопрос, а сетевая карта НПО СВТ может как раз более точное повторение, той первой статьи. http://agatcomp.ru/agat/Hardware/Net/net_swt.shtml

И еще меня мучает непонятка, почему ИКП ОС ЛС знает про две какие-то сетевые платы, понятно что сетевуха НПО СВТ к этому не имеет отношения, но может две было НИИВКшных? или содержимое ПЗу могло отличаться.

Кусок файла HELLO:

20  VTAB 1: HTAB 15: PRINT "Конфигурация ПЭВМ"
25  FOR I = $4F5 TO $4FA: HTAB 2: PRINT "СЛОТА ";I - $4F4;
30  IF  PEEK (I) = $BD OR  PEEK (I) = $F0 THEN  GOSUB 50: GOTO 45
32  IF  PEEK (I) = $4B THEN  PRINT " ячейка принтера": GOTO 45
35  IF  PEEK (I) = $10 THEN  PRINT " ячейка ДОПОЗУ": GOTO 45
39  IF  PEEK ($C100 + (I - $4F5) * $100 + $FF) = 5 THEN  PRINT " контроллер СТЫК-2": GOTO 45
44  PRINT " ПУСТА"
45  NEXT I: POKE ($E8),$44: POKE ($C144),0: GOTO 99
47  PRINT : PRINT  CHR$ (4);"BLOADEDIT"
48  CALL $2000
49  PRINT : PRINT  CHR$ (4);"RUNHELLO"
50  POKE ($E8),$4A: IF  PEEK (I) = $F0 THEN  PRINT " контроллер ГМД ЕС-5088 ";: GOTO 60
51  IF  PEEK ($C100 + (I - $4F5) * $100 + $FF) = 4 THEN PRINT " контроллер сети": RETURN
52  FOR J = 0 TO 3:
IF ( PEEK (J + $99AE) = (I - $4F4) * $10) AND ( PEEK (J + $99B6) = 4) THEN J = 10:
PRINT " контроллер сети": B = 33
53  NEXT J: IF B = 33 THEN B = 0: RETURN
55  PRINT " контроллер ГМД ЕС-5323 ";
60  POKE ($C14A),0: N = 1: FOR J = 0 TO 3
65  IF  PEEK (J + $99AE) = (I - $4F4) * $10 THEN N = N + 1
70  NEXT J:
75  ON N GOTO 77,78,80
77  PRINT : RETURN
78  PRINT " привод 1": RETURN
80  PRINT " приводы 1,2": RETURN

8

Re: Ячейка сети НИИВК

garnizon пишет:

В этом ключе, возникает резонный вопрос, а сетевая карта НПО СВТ может как раз более точное повторение, той первой статьи.

Плата НПО СВТ - это гибрид из двух устройств.

Она формирует набор сигналов, достаточный для создания стандартного COM порта, но только без преобразователей уровней. То есть, фактически это стык С2. Стандарт на стык С2 описывает только перечень сигналов. Физический уровень описывается стандартом на стык С1. Плюс, на плате есть функция сети.

Какое устройство тут было главным - непонятно. Может быть - это была сетевая плата с возможностями стыка С2, а может, стык С2 с возможностями сети.

Что касается статьи, то да, схема обнаружения конфликтов передачи здесь реализована, и почти так, как показано в статье. Коаксиал тут делать не стали. Возможно потому, что так было дешевле.

Кроме того, схема в статье не содержит гальванической развязки. Это приведет к тому, что при соединении двух Агатов их корпуса соединятся. И если один из Агатов будет неправильно заземлен и где-то отгорит "нуль", то произойдет нешуточный бабах.

garnizon пишет:

И еще меня мучает непонятка, почему ИКП ОС ЛС знает про две какие-то сетевые платы, понятно что сетевуха НПО СВТ к этому не имеет отношения, но может две было НИИВКшных? или содержимое ПЗу могло отличаться.

Это интересный вопрос, потребовавший проведения раскопок. Заранее предупреждаю, что результаты раскопок предварительные и в реальности все может оказаться совсем не так.


Что делает этот код?

Цикл в строке 25 перебирает ячейки с $4F5 по $4FA, в которых ДОС Бейсика сохраняет данные об обнаруженных платах расширения. Один байт - одна плата. Судя по всему, байт берется прямо из ПЗУ платы, со смещением 12.

У контроллера 140K в этом байте $F0, у контроллера 840K - $BD, у ячейки принтера - $4B. У сетевой платы НИИВК в этом байте $20, но такой проверки в коде нет. Вместо этого, в строке 30 при обнаружении байтов $F0 или $BD вызывается подпрограмма в строке 50, в которой делаются какие-то дополнительные проверки, чтобы понять, это контроллер дисковода или сетевая плата.

Почему так делается? Потому, что сетевая плата "прикидывается" контроллером НГМД. Причем, похоже что эта "маскировка" делается на уровне ДОС. И скорее всего, маскировка делается для того, чтобы другие программы, которые могут прочитать список устройств из адресов $4F5 - $4FA, продолжали думать, что сетевая плата - это контроллер НГМД.


Спрашивается, зачем вообще сетевой плате прикидываться контроллером НГМД?

Читаем статью "Функциональные возможности ОС локальной сети для ПЭВМ "Агат"":

На файловом уровне ДЗУ главной ПЭВМ рассматривается просто как дополнительный дисковод терминальной ПЭВМ.

Например, в СП Бейсик, для того чтобы просмотреть каталог диска, установленного в ДЗУ главной ПЭВМ, достаточно выполнить команду CATALOG SN, где N - номер разъема, в который установлен контроллер сети. Фактически главная ПЭВМ, с которой установлена связь, рассматривается терминальной как дополнительное ДЗУ.

То есть, это задумка разработчиков.


Читаем прогу на Бейсике дальше. В подпрограмме по адресу 50 сразу отсекается контроллер 140К. То есть, сетевая плата прикидывается контроллером 840К.

В строке 51 читается последний байт ПЗУ контроллера (адрес $CNFF). Если этот байт равен 4, то это контроллер сети НИИВК. Смотрим прошивку ПЗУ сетевой платы - действительно, там байт $04.

Самое интересное происходит в строке 52. Тут цикл, в котором проверяются 4 пары ячеек, одна берется начиная с адреса $99AE, вторая с адреса $99B6. Поскольку я разбирал код загрузчика ИКП, то адреса мне показались знакомыми. Для проверки я дизассемблировал кусок загрузчика ИКП-90 и оказалось, что эти адреса совпадают.

В загрузчике есть вот такой код:

        LDA    BOOTSL
        LSR    A
        LSR    A
        LSR    A
        LSR    A
        ORA    #$C0
        STA    ZP_01
        LDY    #$FD
        LDA    #$FF
        ADC    (ZP_00), Y    ; читаем байт $CNFD и вычитаем из него 1
        ASL    A
        STA    FDDTYPE

Адрес $99AE - это переменная BOOTSL (это имя встречается в исходниках). Код загрузочного сектора записывает в нее номер слота, с которого происходит загрузка, умноженный на 16.

Дальше читается байт ПЗУ контроллера со смещением $FD, к нему прибавляется -1 (то есть вычитается 1), потом результат умножается на два и сохраняется в ячейке с адресом $99B6, которую я назвал FDDTYPE (тип дисковода).

Смотрим коды прошивок контроллеров 140К и 840К. Там по адресу $FD у контроллера 140K байт $01, а у контроллера 840K - байт $02. После вычитания единицы и умножения на 2 получаем FDDTYPE = 0 для контроллера 140K и FDDTYPE = 2 для контроллера 840K.

А сам загрузчик ИКП содержит таблицу с адресами блоков параметров для драйверов дисков 140К и 840К. То есть, FDDTYPE - это смещение для этой таблицы.


Возвращаемся к Бейсику. В строке 52 проверяется, что ячейка BOOTSL равна номеру проверяемого слота, умноженному на 16, а ячейка FDDTYPE равна 4.

Вот это поворот! Чтобы определить тип сетевой платы программа, во-первых, смотрит, с какого устройства была выполнена загрузка, а во-вторых, сетевой платой считается только дисковод типа 4. Хотя мы только что выяснили, что тип может быть только 0 или 2.


Что бы это значило?

Было тут на форуме одно обсуждение Агатовских НЖМД, которое выпилили вместе с автором. Я в нем успел высказать предположение, что Агатовский блок "САДА" мог быть создан по образу и подобию сетевого НЖМД Corvus. Собственно, вот здесь написано, что в начале 80-х годов НИИВК приобрел этот самый Corvus. Corvus подключается к Apple ][ по 1-мегабитной сети Omninet.

Так вот, похоже моя догадка подтверждается - эта вторая сетевая плата - контроллер для связи с блоком "САДА".

Она так же как и обычная сетевая плата является загрузочной, "маскируется" под дисковод, но не простой дисковод, а с типом 4.

Кстати, Corvus работал ровно по такому же принципу, что и ОС ЛС: для него использовалась специально пропатченная версия DOS 3.3, которая все обращения к RWTS прокидывала по сети. А на самом НЖМД лежали образы дисков. Чтобы обратиться к нужному образу диска использовался редко используемый параметр - номер тома. То есть, на НЖМД могло быть до 255 томов, которые по совместительству играли роль каталогов.

Есть ли такая же фишка с номерами томов в ОС ЛС - не знаю. Надо копать дальше. Но было бы логично, если бы была. И тогда есть большая вероятность, что ОС ЛС может работать с блоком "САДА". Вот только загружаться с него, похоже, не может. В загрузчике ИКП-90 есть только код для загрузки с дисковода. Скорее всего, версия загрузчика с блока "САДА" должна была жить на НЖМД самого блока "САДА".

Интересно, кстати, как может расшифровываться "САДА"? Может, "Сетевой Архив Дисков Агат"?

9

Re: Ячейка сети НИИВК

Афигеть, не встать.

10

Re: Ячейка сети НИИВК

А догадка-то оказалась неверная. Блин :(

В загрузчике ИКП есть еще один кусок кода, который выполняется уже после выбора пункта меню и загрузки выбранного софта (Рапиры, Бейсика и т.д.). И этот кусок кода перезаписывает ячейки BOOTSL и FDDTYPE.
Точнее, он просто проходит по всем платам расширения и для дисководов вычисляет FDDTYPE, а для сетевых плат (то есть плат, у которых последний байт ПЗУ равен 4) ставит FDDTYPE = 4.

        LDX    #$C6

CODE_9BC6
        LDA    CARD_ID4 - $C1, X
        CMP    #$04
        BNE    CODE_9BEA
        CPY    #$04
        BNE    CODE_9BD2
        DEY

CODE_9BD2
        STX    ZP_50
        JSR    SUB_9C86
        STA    ZP_F4
        STA    ZP_F6
        STA    BOOTSL, Y
        LDA    #$04
        STA    FDDTYPE, Y
        INY
        CPY    #$04
        BEQ    CODE_9BF4
        BCS    CODE_9BEF

CODE_9BEA
        DEX
        CPX    #$C1
        BNE    CODE_9BC6

Переменная CARD_ID4 - это адрес начала массива, в который загрузчик сохраняет последние байты ПЗУ из всех найденных плат.

Тут самое странное в том, что программа на Бейсике "не доверяет" значению последнего байта ПЗУ, которое читается инструкцией PEEK ($C100 + (I - $4F5) * $100 + $FF) в строке 51. Она в строке 52 пытается перепроверить значение FDDTYPE, которое устанавливает начальный загрузчик. А он его устанавливает глядя на тот же самый последний байт ПЗУ, но только в момент начальной загрузки.

Это странно потому, что сетевая плата всегда должна возвращать в этом байте 4, в какой бы момент времени к ней не обращались. Во всяком случае, серийная плата.

А вот экспериментальная плата может вести себя иначе. У нее может быть ОЗУ, которое кусочками по 256 байт отображается в адреса $CN00 - $CNFF. И вот у этой платы вполне можно прочитать РАЗНЫЕ значения последнего байта.

Короче говоря, программа на Бесике скорее всего писалась под экспериментальную версию сетевой платы. И для того, чтобы сетевая плата надежно определялась, понадобилась дополнительная проверка. То есть, здесь не две сетевые платы определяются, здесь определяется ОДНА плата двумя способами. А потом вторую проверку забыли убрать.

***

Спрашивается, а что же с блоком "САДА"?

Пока непонятно. Если блок "САДА" работал так же, как Corvus, то в ИКП-90 сделано самое важное для его поддержки: возможность прокидывать вызовы RWTS по сети. Вполне возможен вариант, что блок "САДА" подключался через ту же самую сетевую плату НИИВК. Тогда в коде DOS ИКП-90 могут быть какие-то намеки на поддержку этого блока. Их стоит поискать.

11

Re: Ячейка сети НИИВК

> возможность прокидывать вызовы RWTS по сети

А можно про это чуть более отдельно рассказать?

Т.е. в самом коде ИКП есть какая-то заплатка или кусок или изменение ?

12

Re: Ячейка сети НИИВК

Про то, что код доработан и туда добавлен некий "фильтр", написано в статье "Функциональные возможности ОС локальной сети для ПЭВМ "Агат"" в "Информатике и образовании". Я еще не добрался до этого кода, поэтому подробностей пока сам не знаю.

13 Отредактировано Voldemar0 (29-03-2024 21:45)

Re: Ячейка сети НИИВК

Немного документов нашлось по теме, может вдруг там что-то полезное будет:

                                         Утверждаю
                                      Главный 
                                          _________
                                       "___"_______ 1990 г.
.цв
Методика проверки и аттестации  локальной сети учебного класса.

.нф

1. Проверить комплектность локальной сети ПЭВМ............
.
2. Убедиться, что на всех модулях локальной сети класса установлены различные абонентские адреса в интервале номеров от 1 до 7E.
3. Установить модуль локальной сети с младшим абонентским номером  в пятый разъем главной ПЭВМ. Установить контроллер НГМД в шестой разъем главной ПЭВМ.
4. Загрузить  СПК на главную ПЭВМ с ГМД РВИЖ.00044....., в соответсвии с пунктом  ... Руководства оператора РВИЖ.00044....
Выйти в пункт меню "работа по сети" и убелится, что система обнаружила модуль локальной сети и вышла в режим "Работа по сети".
В случае обнаружения ошибок при загрузке СПК или невыходе в режим "работа по сети" ПЭВМ и модуль должны быть направлены на дефектацию и ремонт.
5. Утановить остальные модули в шестые раъемы ПЭВМ локальной сети. Включть на них питание и убедится, что на экране каждой ПЭВМ появилось сообщение:
     Сеть_АГАТ N ii
  Жду загрузку !
где ii - абонентский номер модуля установленного в ПЭВМ. В случае непоявления указанного сообщения или его искажения, отправить на проверку на соответсвие ТУ ПЭВМ и модуль. 
6. Выключить все терминальные ПЭВМ. Затем по очереди выполнить зарузку Бейсика на все ПЭВМ с главной ПЭВМ.
После выполнения загрузки, очередной ПЭВМ убедиться, что на экране ее ВКУ выведена конфиурация ПЭВМ (которая формируется файлом HELLO). Затем набрав команду CATALOG убедиться, что ОС локальной сети загружен и работает правильно. Выключить питание терминальной ПЭВМ и повторить проверку со следующей.
В случае возникновения ошибок при загрузке или обнаружении неработоспособности ОС ЛС, ПЭВМ и модуль локальной сети должны быть напрвленны на дифектацию и ремонт.
7. Включить питание всех терминальных ПЭВМ, и убедится, что на экране ВКУ каждой ПЭВМ появилось сообщение:
      Сеть_АГАТ N ii
  Жду загрузку
Затем выполнить загрузку Бейсика на все ПЭВМ одновременно.
Убедиться, аналоично пункту 6, что загрузка Бейсика прошла правильно и ОС ЛС функционирует нормально.
В случае возникновения ошибок или неправильной загрузки некоторых ПЭВМ проверить заземление  ПЭВМ и исправность линий связи локальной сети.


  Заместитель главного конструктора        Г.А.Кривошеев
Post's attachments

Attachment icon net-texts.rar 4.3 kb, 28 downloads since 2024-03-29