Ретро-эксперимент: сетевые адаптеры 80-х в MS-DOS, Pacman и сети ИОЛА

Ретро-эксперимент: сетевые адаптеры 80-х в MS-DOS, Pacman и сети ИОЛА

Прокомментировать Просмотры: 7

Аверс

Некоторое время назад я пытался заставить функционировать сетевые адаптеры ИОЛА, однако столкнулся с трудностями. Подробности можно найти в этой публикации.

Сегодня, накопив практический опыт и потратив пару дней на эксперименты, мне, судя по всему, удалось добиться стабильной работы локальной сети — впрочем, окончательную оценку оставляю за вами.

Итак, начнем непосредственно с самих плат:

Реверс
Реверс

Сразу бросается в глаза, что модификации плат отличаются. Различия кроются в элементной базе, числе микросхем, задействовании 8- или 16-битных разъемов ISA, а также в оттенке текстолита (лицевая сторона серо-голубая или бирюзовая, а тыльная — зеленая). При этом их объединяет общая черта — предельная пропускная способность в 2 Мбит/с.

❯ Настройка сетевой среды под MS-DOS

Для активации сетевого адаптера потребуется выполнить ряд конфигурационных процедур.

В нашем распоряжении имеется пакетный драйвер для MS-DOS.

«Пакетник»
«Пакетник»

Его инициализация прописывается в файле autoexec.bat с передачей конкретных аргументов.

Используемые шестнадцатеричные (hex) параметры имеют следующие значения:

  • 0x60 — стандартный вектор программного прерывания (interrupt), посредством которого сетевой софт (например, FTP-сервер) взаимодействует с драйвером;

  • 0x20 — индивидуальный идентификатор узла в пределах сегмента;

  • 0x05 — номер аппаратного прерывания;

  • 0x318 — базовый адрес используемого портового ввода-вывода.

Двигаемся дальше. Для организации полноценного сетевого обмена нам понадобится этот замечательный программный комплекс.

Набор mTCP отнюдь не является современной поделкой. Как гласит официальный релиз: «mTCP is a hobby project that I started in 2005». Так что атмосфера эпохи выдержана на все сто.

Процедура настройки mTCP предельно лаконична.

Внутри autoexec.bat необходимо задать переменную окружения MTCP:

SET MTCPCFG=c:\mtcp\MTCP.CFG

В конфигурационном файле MTCP.CFG прописываются параметры статической адресации. Почему именно статики? Дело в том, что полноценный DHCP-сервер для MS-DOS отсутствует. Существует, конечно, «Microsoft LAN Manager», однако этот дистрибутив избыточен и безбожно поедает дефицитную оперативную память. Альтернатив динамической раздачи IP в таких условиях я не встречал. Речь идет о связке двух терминалов без какого-либо шлюза или маршрутизатора.

Программную часть под MS-DOS мы подготовили — перейдем к физической инфраструктуре.

Физическая среда

Выдержка из технической документации к сетевым картам ИОЛА:

Для топологии «звезда» применяется коаксиальный кабель с волновым сопротивлением 75 Ом (РК-75-2, РК-75-4). На протяженных линиях связи свыше 800 м допустимо использование кабелей большей толщины: РК-75-7, РК-75-9 и т.д. Предельная дистанция также определяется качеством кабеля: например, для марки РК-75-4-113 этот показатель увеличивается до 1000 м.

Наш образец кабеля выглядит следующим образом:

Кабели с идентичным волновым сопротивлением могут различаться по внешнему диаметру. Чем толще кабель — тем дальше способна распространяться радиосигнал. Крайне полезное свойство.

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

Защита от «висячего конца»
Защита от «висячего конца»

В сборе BNC-коннектор принимает следующий вид:

Документация также содержит упоминание функции бездисковой загрузки:

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

Какая именно прошивка скрывается в ROM-микросхеме этой платы, мне неизвестно. Будь чип установлен в DIP-панель («кроватку»), я бы считал его на программаторе, однако выпаивать микросхему пока не рискую. Требования к серверной части для реализации удаленной загрузки в мануале не описаны. Сталкивались ли вы с подобным?

❯ Настройка сетевой среды под W2K Server

А как насчет Windows 2000 Server? Никаких проблем, для нее тоже нашлись драйверы.

Инсталлируем ПО устройства:

Инспектируем распределение прерываний — конфликты отсутствуют:

Назначаем статический IP-адрес:

Для проверки пропускной способности решено скопировать DOOM. Почему именно он, а не Pacman? Игра весит существенно больше, и мне хотелось убедиться в отсутствии сбоев при длительной передаче потока данных. Как можно будет увидеть на видеозаписи в конце статьи, трансфер прошел успешно.

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

Все компоненты настроены и функционируют.

❯ Переходим к играм

Здесь возникла любопытная сложность. Много ли вы знаете сетевых проектов для чистой MS-DOS? На ум приходят разве что клоны DOOM, Command & Conquer: Red Alert, Warcraft II, Dune 2000 да Quake. Усложним задачу: наша сеть обходится без протокола IPX/SPX, используя исключительно стек TCP/IP. После этого выбор сужается практически до нуля — поисковики ничего подходящего не выдали. К счастью, выручила ценная находка в виде этого репозитория.

В нем обнаружился именно то, что требовалось: вариант классического Pacman с нативной поддержкой TCP/IP. Поддерживается множество целевых ОС, включая MS-DOS. Продемонстрированная ниже версия игры прекрасно запускается даже на древней IBM PC XT под управлением Intel 8088 — на минимально возможном железе.

Согласно инструкции, запуск предельно прост:

Примеры синтаксиса для DOS:

pacman.exe — одиночный режим или вдвоем за одной клавиатурой. Управление стрелками — Pac-Man (1-й игрок), клавиши WASD — Pac-Girl (2-й игрок).

pacman.exe 7777 — инициализация хоста (сервера), ожидающего подключения второго участника на порту 7777 (номер порта произвольный). Управление стрелками за первого игрока.

pacman.exe 192.168.1.101 7777 — запуск клиентской части с подключением к удаленному хосту 192.168.1.101 на тот же порт. Управление стрелками за второго игрока.

Поднимаем серверную ноду: pacman.exe 7777
и подключаемся с клиентской: pacman.exe 10.0.0.1 7777

Небольшой комментарий к видеоматериалу. На самом серверном ПК интерфейс игры выдавал графические артефакты и корректно не отрисовывался ни в окне, ни на полный экран — судя по всему, сказываются особенности конкретного видеоадаптера. Посчитав это несущественным, я продемонстрировал сетевой сеанс на одном дисплее, управляя обоими персонажами с клавиатур двух объединенных в сеть машин. Результат виден в правой части экрана: персонажи синхронно перемещаются, подтверждая работоспособность сетевого стека.

Результат:

❯ FTP-сервер для MS-DOS

Посмотрим на поведение FTP-сервера, запущенного в среде MS-DOS. Конфигурация службы в пакете mTCP сводится к правке файла ftppass.txt, где прописываются учетные данные разрешенного пользователя и его пароль. После старта утилиты командой FTPSrv мы наблюдаем следующую картину.

Что здесь отображено? Демонстрационный FtpSrv активен на IP 10.0.0.1 и ожидает запросы на стандартном 21-м порту. Зафиксировано успешное подключение удаленной учетной записи «root» с машины 10.0.0.2.

FTP-сервер разворачивался главным образом для трансфера игровых файлов и валидации соединения — бегать каждый раз с дискетами не вариант. Что отправляем? Разумеется, DOOM.

Желающие могут ознакомиться с видеозаписью процесса в реальном времени (доступна перемотка). Для чистоты эксперимента после пересылки я запустил игру локально — дистрибутив передался корректно. На процессоре 80386 игровой процесс напоминает слайд-шоу, но главная цель — проверка целостности передачи — была достигнута.

❯ Заключение

У меня остались нерешенными два вопроса.

Первый.

Удаленная загрузка. В документации заявлена поддержка сетевого бута через BOOT ROM. Хотелось бы понять: какими должны быть настройки загрузочного сервера? Какие системные компоненты, в какой структуре и на каком носителе размещаются, и каким образом они транслируются на бездисковый клиент?

Второй.

На этом информационном ресурсе упоминаются драйверы под Linux, однако все гиперссылки оказались нерабочими. Если у кого-то сохранились эти редкие файлы, буду признателен за содействие.

На текущий момент это все. Надеюсь, материал показался вам любопытным и познавательным.

Благодарю за внимание 🙂

Возможно, вас заинтересует:
Перейти ↩
Перейти

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

 

Источник

Поделиться:

Похожие статьи

Поиск по играм, новостям и статьям…

Введите не менее двух символов

Введите не менее двух символов