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


Трудно не заметить, что сетевые карты разные. Разница — в компонентном различии, количестве микросхем, использовании восьмибитного и шестнадцатибитного разъёмов ISA, цвете текстолита (сверху серо-голубой или бирюзовый, а снизу зелёный). А общее у них одно — максимальная скорость 2 Мбит/с.
❯ Настройка сетевой среды под MS-DOS
Для работы сетевой карты нам понадобится осуществить следующие настройки.
У нас есть пакетный драйвер, для MS-DOS.

Он прописывается в autoexec.bat с использованием следующих параметров.

Параметры, указанные в шестнадцатеричной системе счисления (hex), следующие:
0x60 — стандартный программный номер прерывания (interrupt), через которое сетевое приложение, например FTP-сервер, общается с сетевым драйвером;
0x20 — уникальный идентификатор рабочей станции в сети;
0x05 — аппаратное прерывание;
0x318 — адрес используемого в системе порта.
Идем дальше. Для осуществления сетевого взаимодействия, нам понадобится вот этот замечательный пакет.
Mtcp не «новодел». Cогласно информации с официального сайта: «mTCP is a hobby project that I started in 2005». Так что в этом вполне аутентично.
Mtcp настраивается достаточно просто.
В autoexec.bat, нужно указать переменную MTCP:
SET MTCPCFG=c:\mtcp\MTCP.CFG
В конфигурационном файле MTCP.CFG указать параметры, относящиеся к статическому IP-адресу. Почему «статика»? Потому что для MS-DOS отсутствует DHCP-сервер. Есть, конечно, «Microsoft LAN Manager», но пакет тяжеловат, да и оперативную память отъедает прилично. А других вариантов использовать динамическую адресацию я не встречал. Речь идёт о двух машинах без шлюза к маршрутизатору.

Сетевую среду под MS-DOS мы настроили — посмотрим физические соединения.
Физическая среда
Выдержка из документации к сетевой плате ИОЛА:
Для топологии «звезда» используется коаксиальный кабель с волновым сопротивлением 75 Ом (РК-75-2, РК-75-4). Для соединения на длинные расстояния > 800 м. могут использоваться более толстые кабеля: РК-75-7, РК-75-9 и т.д. Так же расстояние зависит от качества кабеля, так для кабеля РК-75-4-113 расстояние увеличивается до 1000 м.
Наш кабель выглядит так:

Кабель с одним и тем же волновым сопротивлением может иметь разный диаметр. Чем больше диаметр кабеля — тем на более далёкие расстояния возможна связь. Полезно.
В сети не должно быть кабелей, второй конец которых ни к чему не подсоединён («висячий конец»). Не допускается образования петель в сети. Хм, ввиду того, что подопытные компьютеры расположены вплотную, им не помешало то, что кабель был свернут кольцом. С другой стороны, не повлияло ли это на скорость передачи? А от «висячего конца» мы спасёмся терминатором на 75 Ом.

В собранном виде BNC-коннектор выглядит так:

В документации есть упоминание о бездисковой загрузке:

Сама плата выглядит так:

Я не знаю, какая микропрограмма зашита в ROM, установленную на эту платку. Если бы эта ПЗУ была установлена в «кроватку» — считал бы программатором, а выпаивать ещё не решился. Что должно быть со стороны, осуществляющей бездисковую загрузку, — в документации не сказано. Сталкивались с таким?
❯ Настройка сетевой среды под W2K Server
А теперь Windows 2000 Server? Не проблема, есть драйвера и для неё.
Ставим драйвер:

Проверяем аппаратное прерывание, конфликтов нет:

Устанавливаем статический IP-адрес:

Копируем DOOM для проверки сети. Почему DOOM, а не Pacman? Да просто он несколько «тяжелее весит» — и мне хотелось посмотреть, не будет ли ошибок при протяжённом копировании. Как увидите на ролике внизу — сетевая передача была осуществлена успешно.

Видим присвоенный DHCP-сервером IP-адрес клиентской машины 10.0.0.2:

Все настроено и готово.
❯ Теперь в игры
Сложность была вот в чём. Скажите, много ли Вы знаете сетевых игр для чистого MS-DOS? Навскидку, кроме DOOM-like, Command & Conquer: Red Alert, Warcraft II: Tides of Darkness, Dune 2000, Quake — ничего не вспоминается. А теперь немного усложним: наша сеть не использует IPX/SPX, а только TCP/IP? Теперь и вообще практически ничего — поиском требуемого я не нашёл. На помощь мне пришла драгоценная находка, в виде этого ресурса.
Здесь есть то, что нам нужно: игра Pacman с поддержкой TCP/IP. Целевых операционных систем здесь много, и самое главное — есть MS-DOS. Нижепродемонстрированный Pacman работает даже на IBM PC XT с процессором Intel 8088. Можно сказать — на минимальной конфигурации.
Игра, согласно документации, запускается просто. Выдержка из README:
Примеры запуска в ОС DOS:
pacman.exe — одиночная игра или 2 игроками на одной клавиатуре. Управление стрелочками — игра за Pac-Man (1-й игрок), управление WASD — игра за Pac-Girl (2-й игрок).
pacman.exe 7777 — запуск сервера, ожидающего подключения 2-го игрока на 7777-й порт (порт можно указывать любой незанятый). Управление стрелочками — игра за Pac-Man (1-й игрок).
pacman.exe 192.168.1.101 7777 — запуск клиента, подключающегося к запущенному серверу на хосте 192.168.1.101 и 7777-му порту. Управление стрелочками — игра за Pac-Girl (2-й игрок).
Создаём серверную часть: pacman.exe 7777
и присоединяемся клиентом: pacman.exe 10.0.0.1 7777
Пояснение к видео. На самом сервере Pacman запустился с артефактами экрана и не отображался ни в окне, ни в полноэкранном режиме. Вероятно, проблема с моей видеокартой. Решив, что это не принципиально, я демонстрирую сетевую игру на одном экране. Управляю обоими Пакманами с клавиатур двух компьютеров, соединённых в сеть. Результат мы видим на одном экране справа. Главное, что Пакманы перемещаются, а это значит — сеть работает.
Результат:
❯ FTP-сервер для MS-DOS
Взглянем, как работает FTP-сервер, запущенный под MS-DOS. Настройка FTP-сервера в пакете MTCP сводится к редактированию файла ftppass.txt, а конкретнее — к заданию имени пользователя, разрешённого «залогиниться», и указанию его пароля. Далее, запустив сам сервер командой FTPSrv, видим следующую картинку.

Что же мы видим? FtpSrv запущен на IP-адресе 10.0.0.1 и слушает стандартный порт 21. Также мы видим, что удалённый пользователь с именем «root» подключился с IP-адреса 10.0.0.2.
FTP-сервер мы запускали, чтобы копировать игры по сети, ну и проверить её работоспособность. Не бегать же с дискетками... Что копируем мы? DOOM, разумеется.

Если не лень, прошу взглянуть на видео — можно перематывать, я записал в реальном времени. Для полноты эксперимента запустил одиночную игру как демонстрацию того, что дистрибутив передался успешно. На процессорах 80386 эта игра — как слайд-шоу, но нужно было убедиться в работоспособности.
❯ Заключение
Для меня остались два открытых вопроса.
Первый.
Удалённая загрузка по сети. В документации указана возможность загрузки по сети с использованием BOOT ROM. Вопрос в следующем: как должен быть настроен компьютер, обеспечивающий сетевую загрузку? Какие файлы операционной системы, где и на чём расположены — и передаются ли они на бездисковую загружающуюся станцию?
Второй.
В использованном ресурсе есть упоминание про драйвера для Linux, только ссылки все «битые». Если есть у кого упомянутые драйвера, прошу поделиться.
На этом пока что всё. Надеюсь, вышеупомянутый очерк был интересен и полезен.
Благодарю за уделенное время :)
Может быть интересно:

Новости, обзоры продуктов и конкурсы от команды Timeweb.Cloud — в нашем Telegram‑канале ↩

