PDA

Просмотр полной версии : Локальная сеть для "Микроши"



tnt23
12.06.2017, 18:24
На странице http://home.onego.ru/~bav9/93.html, рядом с загадочным "ГРАФИЧЕСКИМ РЕДАКТОРОМ V2.0", есть описание "ПРОГРАММЫ ДЛЯ РАБОТЫ В ЛОКАЛЬНОЙ СЕТИ".


----- ДРАЙВЕР ЦЕНТРАЛЬНОЙ МАШИНЫ ЛОКАЛЬНОЙ СЕТИ -----
ПРОГРАММА СОСТАВЛЕНА В МАШИННЫХ КОДАХ, ЗАГРУЗКА - "I".
ПРЕДНАЗНАЧЕНА ДЛЯ ОБМЕНА ДАННЫМИ МЕЖДУ ПЭВМ "МИКРОША"
ПО ЛИНИЯМ СВЯЗИ ЧЕРЕЗ ПОСЛЕДОВАТЕЛЬНЫЙ ИНТЕРФЕЙС. ПОЗВОЛЯЕТ
ПОДДЕРЖИВАТЬ СВЯЗЬ ОДНОЙ ЦМ И 31 ПМ. ЛОКАЛЬНАЯ СЕТЬ ПОЗВОЛЯ-
ЕТ ПЕРЕДАВАТЬ СЛЕДУЮЩИЕ ВИДЫ ДАННЫХ :
- СООБЩЕНИЯ ОПЕРАТОРУ
- БЛОКИ ДАННЫХ ИЗ ПАМЯТИ ПЭВМ.
ОПЕРАТОР ЦМ МОЖЕТ ИНИЦИИРОВАТЬ ВЫПОЛНЕНИЕ ПРОГРАММЫ, НАХО-
ДЯЩЕЙСЯ В ВИДЕ КОДОВ В ПАМЯТИ ОДНОЙ ИЗ ПМ.
СУЩЕСТВУЕТ ДВА ВНУТРЕННИХ ФОРМАТА ПЕРЕДАЧИ ДАННЫХ :
- КОРОТКИЙ :
N,F,CNT,D0,...,DN, ГДЕ N - НОМЕР МАШИНЫ, F - КОД ФУН-
КЦИИ, CNT - ЧИСЛО ПЕРЕДАВАЕМЫХ БАЙТОВ,D0,...,DN - БАЙТЫ.
- ДЛИННЫЙ :
N,F,ADRL,ADRH,CNTL,CNTH,D0,...,DN,SUM, ГДЕ N,F - АНАЛО-
ГИЧНО, ADRL,ADRH - МЛАДШИЙ И СТАРШИЙ БАЙТЫ АДРЕСА
НАЧАЛА БЛОКА ДАННЫХ, CNTL,CNTH - БАЙТЫ ДЛИНЫ ПОЛЯ
ДАННЫХ,D0,...DN - ДАННЫЕ (ДО 64 КБАЙТ), SUM - КОНТРОЛЬ-
НАЯ СУММА.

----- РУКОВОДСТВО -----

ПРИ ПОДГОТОВКЕ К РАБОТЕ ВЫПОЛНИТЬ СЛЕДУЮЩИЕ ОПЕРАЦИИ :
1. СОЕДИНИТЬ ПЭВМ МЕЖДУ СОБОЙ ЧЕРЕЗ РАЗ'ЕМ ИНТЕРФЕЙС-1.
2. ВКЛЮЧИТЬ БЛОКИ ПИТАНИЯ.
3. ЗАГРУЗИТЬ В ЦМ ДРАЙВЕР ЦЕНТРАЛЬНОЙ МАШИНЫ.
4. ЗАГРУЗИТЬ В ПМ ДРАЙВЕР ПЕРЕФЕРИЙНОЙ МАШИНЫ.
5. ЗАПУСТИТЬ ПРОГРАММУ НА ЦМ - G6500.
НА ЭКРАНЕ ПОЯВИТЬСЯ ТАБЛИЦА, ГДЕ В ВЕРХНЕМ ОКНЕ - ПОЛЯ
ОШИБКИ, КОМАНД И ПОЧТЫ. В ПОЛЕ ОШИБКИ СООБЩЕНИЕ ПОЯВИТСЯ
В ТОМ СЛУЧАЕ, ЕСЛИ МАШИНА ОБНАРУЖИТ ОШИБКУ СИНТАКСИСА.
В ПОЛЕ ПОЧТЫ - СООБЩЕНИЕ И СООТВЕТСТВУЮЩИЙ ТЕКСТ.
В ТАБЛИЦЕ ИМЕЕТСЯ СПРАВОЧНОЕ ПОЛЕ И ПОЛЕ РАЗРЕШЕНИЯ ТРАН-
ЗИТА, ЕСЛИ "ТРАНЗИТ РАЗРЕШЕН" - ВОЗМОЖЕН ОБМЕН ДАННЫМИ
МЕЖДУ ПМ ЧЕРЕЗ ЦМ.
6. ЗАПУСТИТЬ ПРОГРАММЫ НА ПМ - G6500.
ПОСЛЕ ЭТОГО НА ЭКРАНЕ ПОЯВИТСЯ ТАКАЯ ЖЕ ТАБЛИЦА, КАК НА ЦМ.
ПОСЛЕ ВЫПОЛНЕНИЯ УКАЗАННЫХ ОПЕРАЦИЙ ЛОКАЛЬНАЯ СЕТЬ ГОТОВА
К РАБОТЕ.





Любопытно, что это была за сеть, как физически выглядела и вообще. Расковырять драйвер и понять, как велась работа через "ИНТЕРФЕЙС-1", несложно.

А это, собственно, весь "Интерфейс 2". Используются два элемента К155ЛА12 и линии A3, B6 и C0:

61396

tnt23
17.06.2017, 22:20
На перерисованных схемах явно опечатка. Цитата из руководства по эксплуатации:



Через биты 5 и 6 порта B производится вывод информации в последовательном виде через разъем "Интерфейс-1" (X3).
Через бит 0 порта C осуществляется ввод последовательной информации во внутренние регистры ПЭВМ.

tnt23
18.06.2017, 13:57
Экран сервера (Центральной Машины) выглядит вот так:

DDp
18.06.2017, 18:06
На перерисованных схемах явно опечатка.
Да.
Видимо, схема рисовалась из этой картинки http://lehavika.narod.ru/8/microsha/shema1r.zip
Название цепи идущего с выводу 1 DD21 можно интерпретировать и как "63", и как "53".
Правильно - "63", проверено на реальном железе.

Однако, есть опечатка в заводской схеме!
На разъёме X3 контакт 3 - это "земля", а контакт 2 - вход. (левый верхний угол, X3:2 - DD21:2 (http://realddp.narod.ru/miscinfo/Mikrosha/board_top2.jpg))
Ну и название разъёма тоже...
61407

cy6
18.06.2017, 18:35
А ведь можно дешево и сердито использовать кашерный Ethernet, с модулем типа ENC28J60 или Wiznet w5100/5500. Или даже Wi-Fi на чипах Espressif ESP8266.

Домашнюю сеть на последовательной передаче (IN, OUT, SYNC_IN, SYNC_OUT) я тоже когда то писала, между Сурой и РК. Запустить было прикольно, но практического применения мало. :)

tnt23
18.06.2017, 19:05
Да.
Видимо, схема рисовалась из этой картинки http://lehavika.narod.ru/8/microsha/shema1r.zip
Название цепи идущего с выводу 1 DD21 можно интерпретировать и как "63", и как "53".
Правильно - "63", проверено на реальном железе.

Однако, есть опечатка в заводской схеме!
На разъёме X3 контакт 3 - это "земля", а контакт 2 - вход. (левый верхний угол, X3:2 - DD21:2 (http://realddp.narod.ru/miscinfo/Mikrosha/board_top2.jpg))
Ну и название разъёма тоже...
61407

Супер, спасибо! На путаницу с контактами я уже напоролся, подключая осциллограф :)

- - - Добавлено - - -


А ведь можно дешево и сердито использовать кашерный Ethernet, с модулем типа ENC28J60 или Wiznet w5100/5500. Или даже Wi-Fi на чипах Espressif ESP8266.
Домашнюю сеть на последовательной передаче (IN, OUT, SYNC_IN, SYNC_OUT) я тоже когда то писала, между Сурой и РК. Запустить было прикольно, но практического применения мало. :)

Тут спорно, насколько это будет дешево и сердито (а еще же софт писать). Тогда как для подключения "Интерфейса 1" требуется простой стерео-кабель с разъемами DIN.

А наработками по самописной сети не поделитесь?

- - - Добавлено - - -

Шина напоминает типовое двухпроводное решение тех лет (MSX-NET, например) с двумя multidrop линиями.

61408

tnt23
19.06.2017, 20:45
Сеть активно пользуется каналом 1 таймера для отсчета интервала синхронизации и битовых интервалов. Однако есть некоторая странность в коде DRVLOKNT, конкретно в одном месте таймер инициализируется управляющим словом 0x7e. Вроде бы это неправильно, т.к. режимов работы таймера всего шесть, кодируются они 000..101, и получающийся режим 111 недопустимый.

Длительность битового интервала по моим расчетам выходит 200мкс (хорошо согласуется с картинкой). Это дает пропускную способность канала в 2500 бит/с.

tnt23
21.06.2017, 00:26
Цитата:

The D3, D2, and D1 bits of the Control Word set the operating mode of the timer. There are 6 modes in total; for modes 2 and 3, the D3 bit is ignored, so the missing modes 6 and 7 are aliases for modes 2 and 3.

HardWareMan
21.06.2017, 06:50
tnt23, т.е. на лицо квантовое запутывание реверсинженера?

tnt23
21.06.2017, 09:11
HardWareMan, фиг знает, чем руководствовались в MPTI NET LABORATORY, когда писали этот софт :)

tnt23
27.06.2017, 22:37
Формат передаваемых сервером сообщений:


SYNC <num> <cmd> ...


, где SYNC - низкое состояние линии в течение TBD мс, <num> - номер станции 01..31 или broadcast 00, <cmd> могут быть следующие:


SYNC <num> 02 mm mm - в ответ станция отсылает 00 FLAGS 00
SYNC <num> 03 00 - в ответ станция отсылает 00 FLAGS NN byte0 byte1 ... byteNN
SYNC <num> 04 06 xx xx xx xx xx xx - в ответ станция отсылает 00 FLAGS byte0 byte1 ... byteNN
05 -
SYNC <num> 06 nn nn mm mm byte0 byte1 ... byteNN CHK - прием блока
SYNC <num> 07 00 - PING (?) в ответ станция отсылает 00 FLAGS 00

Daniil Chislov 86
28.08.2018, 12:19
Интересная штука !

А на реальном железе проверялась (в плане по сети) ?

tnt23
28.08.2018, 13:58
Интересная штука !

А на реальном железе проверялась (в плане по сети) ?

Ну я посмотрел на сети из одной машины - да, какие-то пакетики бегают. Дальше бы надо брать две машины, вязать, грузить серверную и клиентскую части, сниффить обмен, сопоставлять с дизассемблером. Я заломался.

Daniil Chislov 86
28.08.2018, 15:18
Думаю если у большинства будет Микроша то кто-то начнет делать софт.

tnt23
28.08.2018, 15:34
Думаю если у большинства будет Микроша то кто-то начнет делать софт.

Софт уже есть, мне лично он был интересен как способ загрузки бездисковых (хаха) машин.

kolk
05.09.2018, 17:14
Шина напоминает типовое двухпроводное решение тех лет (MSX-NET, например) с двумя multidrop линиями.

61408

Вообще-то, такая схема называется "кольцо" (см., например, родную сетевую плату УКНЦ). Это не "шина". А в MSX, насколько я помню, была шина. Как правило, право передачи в кольце управляется токеном ("token ring"), тогда в описании форматов пакетов должно фигурировать слово "токен". Следует также учесть, что как шина, так и кольцо могут работать в режиме с предопределенным ведущим (режиме опроса, polling).

- - - Добавлено - - -

По-моему, это вариант протокола RDMA. Только вот в Мониторе поддержки сети нет. :(


Формат передаваемых сервером сообщений:


SYNC <num> <cmd> ...


, где SYNC - низкое состояние линии в течение TBD мс, <num> - номер станции 01..31 или broadcast 00, <cmd> могут быть следующие:


SYNC <num> 02 mm mm - в ответ станция отсылает 00 FLAGS 00
SYNC <num> 03 00 - в ответ станция отсылает 00 FLAGS NN byte0 byte1 ... byteNN
SYNC <num> 04 06 xx xx xx xx xx xx - в ответ станция отсылает 00 FLAGS byte0 byte1 ... byteNN
05 -
SYNC <num> 06 nn nn mm mm byte0 byte1 ... byteNN CHK - прием блока
SYNC <num> 07 00 - PING (?) в ответ станция отсылает 00 FLAGS 00

tnt23
05.09.2018, 18:12
Вообще-то, такая схема называется "кольцо" (см., например, родную сетевую плату УКНЦ). Это не "шина". А в MSX, насколько я помню, была шина.

По-моему, все как раз наоборот. Мультидроп и есть шина, в виде одного подтянутого к питанию сигнала, который произвольное количество желающих могут притянуть к земле без ущерба для себя и окружающих.
В MSX сети версии 2 было забавно, была-таки шина, но сделанная на основе MIDI физики, т.е. токовой петли =)

- - - Добавлено - - -


По-моему, это вариант протокола RDMA. Только вот в Мониторе поддержки сети нет. :(

Оно и понятно, в Мониторе вообще свободного места не было, а тут какое-то самодельное поделие. А что за протокол RDMA?

kolk
05.09.2018, 19:47
Признак топологии "кольцо" - наличие режима ретрансляции с входа на выход без активности процессора. Это и есть его схема. А на шине обычно подтяжки надо отключать, кроме крайних. RDMA - remote DMA (дистанционный ПДП), на что намекают nn nn mm mm и xx xx xx xx xx xx. В данном случае он реализован программно.

tnt23
05.09.2018, 21:08
Ну так в данной сетевой поделке отсутствует эта самая ретрансляция, а есть самая что ни на есть общая шина.

kolk
05.09.2018, 22:37
В _схеме_ есть ретрансляция, если на оба логических элемента с ВВ55 подать 1 (PB |= 0x60;). На сервере при кольце с опросом ретрансляция не нужна, если клиенты между собой не обмениваются напрямую. А клиентское ПО в режим ретрансляции не входит?

- - - Добавлено - - -


Длительность битового интервала по моим расчетам выходит 200мкс (хорошо согласуется с картинкой). Это дает пропускную способность канала в 2500 бит/с.

1/(200 мкс/бит) = 5000 бит/с
Уточните.

tnt23
06.09.2018, 12:39
В _схеме_ есть ретрансляция, если на оба логических элемента с ВВ55 подать 1 (PB |= 0x60;). На сервере при кольце с опросом ретрансляция не нужна, если клиенты между собой не обмениваются напрямую. А клиентское ПО в режим ретрансляции не входит?


Не знаю, используется ли подача обеих единиц. Если есть желание-возможность, посмотрите дизассемблированный код? У меня такое ощущение, что в то время сетевые классы строились по жесткой иерархической схеме 1 Мастер - N Слейвов, и передача между слейвами не предусматривалась. Ощущение подтверждается разглядыванием интерфейса программ и чтением скудной документации.



1/(200 мкс/бит) = 5000 бит/с
Уточните.

Не могу, все разобрано и убрано по ящикам.