Если сегодня кто-то говорит «поищи в интернете», обычно подразумевается «Яндекс» или Google. Но так было далеко не всегда. Во второй половине 90-х ассортимент поисковых систем был намного шире: в зарубежном интернете успешно работали AltaVista и Yahoo, Lycos и WebCrawler, а еще Ask.com, HotBot, Excite, Infoseek и множество других. Рунет также переживал бурный расцвет: здесь присутствовало несколько полноценных поисковых систем и целое семейство каталогов ссылок. Прошло время, выжил только «Яндекс», превратившийся в гигантскую мегакорпорацию. Куда делись все остальные?
Для начала давайте определимся с тем, чем все-таки отличались поисковые системы от каталогов. Полноценные поисковики, коих даже в те времена было относительно немного, имели собственного программного робота, самостоятельно бродившего по сети, обходившего ссылки и добавлявшего информацию о найденных веб-страницах в базу данных — индекс поисковой системы. Роботы умели парсить HTML и вычленять из тегов информацию о проиндексированных страницах, но качество автоматически составленных описаний порой оставляло желать лучшего. Да и релевантность поиска не всегда была высокой: порой поисковик выдавал по запросу совсем не то что нужно.
В каталоги, в отличие от поисковых систем, ссылки добавляли вручную сами создатели сайтов, и составляли для них развернутые и подробные описания. Эти описания проверяли модераторы — в каждом тематическом разделе каталога трудился свой. В результате качество поиска в каталоге оказывалось порой выше в сравнении с классическими поисковыми системами, и эта ситуация сохранялась до тех пор, пока роботы поисковиков не «поумнели» и не научились индексировать страницы лучше людей.
Помимо «Яндекса» во второй половине 90-х в Рунете существовало несколько поисковиков, каждый из которых обладал своими индивидуальными чертами и характерными особенностями.
Исторически «Рамблер» стал первой полноценной поисковой системой в Рунете — его запустили в 1996 году, однако при нем действовал и каталог ссылок с рейтингом «Rambler Top100». Идея создания собственного поисковика возникла из-за того, что зарубежные поисковые роботы плохо воспринимали кириллицу и постоянно «путались» в кодировках. Ядро новой поисковой системы написал сотрудник Пущинского микробиологического института Дмитрий Крюков, он же нарисовал для нее логотип. А 26 сентября 1996 года был зарегистрирован домен rambler.ru.
В течение долгого времени «Рамблер» был одним из лидеров российского сегмента Всемирной сети, четырежды завоевывал «Премию Рунета». Постепенно из простой поисковой системы он превратился в гигантский медиа-портал, обзавелся собственным телеканалом и кучей всевозможных сервисов, включая почтовый. Очень хорошо внутреннюю жизнь компании описал ее бывший сотрудник, а ныне — известный IT-предприниматель Игорь Ашманов в своей книге «Жизнь внутри пузыря».
Понемногу «Яндекс» потеснил конкурента на рынке поисковых сервисов, а в 2011 году «Рамблер» и вовсе лицензировал для своих нужд поисковую систему «Яндекса» и подключился к РСЯ, окончательно отказавшись от собственного поискового движка. В 2020 году единственным владельцем «Рамблера» стал «Сбербанк», а сам сайт rambler.ru теперь представляет собой новостной и медиа-портал, включающий различные сервисы. Поиск — далеко не главный среди них.
❯ Апорт
Одна из старейших поисковых систем Рунета, появившаяся на свет в 1996 году благодаря компании Agama. Изначально «Апорт» искал только по сайтам agama.com, но к 1997 году поисковик индексировал уже все сайты российского интернета.
В 1999 году «Апорт» был полностью выкуплен «РОЛ» («Россия-он-Лайн»), после чего все разработки и модификации поисковика были прекращены, и поисковая система стала понемногу сдавать свои позиции. В августе 2011 года «Апорт» совсем отказался от собственного движка, лицензировав поиск «Яндекса», а позже и вовсе закрылся. Теперь по адресу aport.ru расположен маркетплейс.
❯ Нигма
Метапоисковая система nigma.ru была создана студентами факультетов ВМК и психологии МГУ при поддержке Стэнфордского университета и запущена намного позже других своих конкурентов — в 2005 году. Однако в отличие от других поисковиков, «Нигма» отлично индексировала RSS-ленты и сообщения новостных порталов, предлагая по запросу пользователей актуальные новости, а также позволяла искать с использованием возможностей сразу нескольких альтернативных поисковых систем. Именно «Нигма» первой среди российских поисковиков разработала виджет для мобильной платформы Android.
Несмотря на определенную популярность, проект держался в основном на энтузиазме его создателя Виктора Лавренко, который его обновлял и поддерживал. В сентябре 2017 года проект прекратил свое существование. Энтузиасты воссоздали внешний вид поисковика на сайте nigma.net.ru (он использует движки Google и Яндекс) — вы можете зайти по этому адресу прямо сейчас и посмотреть, как когда-то выглядела «Нигма».
❯ Каталоги
Несмотря на то, возможности поисковых систем стремительно совершенствовались, каталоги ссылок с собственным локальным поиском были популярны вплоть до середины нулевых. А один из них — ulitka.ru — жив до сих пор. Если вам интересно узнать, как выглядели каталоги-рубрикаторы в старые добрые девяностые, обязательно загляните сюда.
Среди популярных каталогов нельзя не отметить «List.ru» (выкуплен Mail.Ru), «Веблист» (один из проектов компании MARK-ITT из Ижевска, ныне закрыт), «Сусанин» (создан петербургский дизайн-студией WebPlus в 1998 году, закрыт в начале «нулевых»), «Look.ru» (закрыт в первой половине нулевых), Up.ru (создан студией Delux, ныне сайт принадлежит компании Unite&Performance).
Выводы? Они просты: для выживания поисковые системы должны были не просто превратиться в медиа-корпорации, поддерживающие портал с кучей полезных сервисов, а развивать правильные направления, отвечающие требованиям рынка, которые будут востребованы в будущем. С этим вызовом справилась в полной мере только одна компания. «Рамблер» сделал ставку на телевидение (кто-то еще не выбросил на свалку свой телеприемник?), «Апорт» нашел незаинтересованных в его развитии инвесторов, а «Нигма» вообще решила обойтись без таковых, и в конце концов задохнулась без финансирования. Время же тематических каталогов безвозвратно ушло.
Некоторое время назад я пытался заставить работать сетевые карты ИОЛА, но у меня не все получилось. Обо всем рассказано здесь.
Сегодня, поднабравшись практических знаний и проведя пару дней в экспериментах, на мой скромный взгляд, удалось добиться полноценной работы сети, но судить об этом вам.
Трудно не заметить, что сетевые карты разные. Разница — в компонентном различии, количестве микросхем, использовании восьмибитного и шестнадцатибитного разъёмов 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 запустился с артефактами экрана и не отображался ни в окне, ни в полноэкранном режиме. Вероятно, проблема с моей видеокартой. Решив, что это не принципиально, я демонстрирую сетевую игру на одном экране. Управляю обоими Пакманами с клавиатур двух компьютеров, соединённых в сеть. Результат мы видим на одном экране справа. Главное, что Пакманы перемещаются, а это значит — сеть работает.
Результат:
❯ 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, только ссылки все «битые». Если есть у кого упомянутые драйвера, прошу поделиться.
На этом пока что всё. Надеюсь, вышеупомянутый очерк был интересен и полезен.
Пока вы рождались, ходили в школу, заканчивали учебу и выходили на свою первую работу, на свете существовал совершенно особенный набор компиляторов, о котором крайне мало известно на просторах РФ.
Именно о нем пойдет сегодняшний рассказ.
Amsterdam Compiler Kit
Врядли среди читателей обнаружится аксакал живой пользователь этого удивительного проекта:
The Amsterdam Compiler Kit is a venerable piece of software that dates back to the early 1980s. It was originally written by Andrew Tanenbaum and Ceriel Jacobs as a commercial product; for many years it was also used as Minix’ native toolchain. After eventually failing as a commercial project, it was made open source under a BSD license in 2003 when it looked like it was going to be abandoned and the code lost.
Сочетание «начало 80х» и «коммерческий продукт» оставляет мало шансов на появление пользователей ACK в родных краях, поскольку в 80е еще вовсю жил СССР и вопрос покупки иностранного программного обеспечения был мягко говоря неактуальным.
Теперь подробнее, что там внутри и почему оно до сих пор шевелится представляет интерес:
The ACK contains compilers for ANSI C, K&R C, Pascal, Modula-2, Occam 1, and a primitive Basic. It contains code generators for a large number of architectures, mostly 8 and 16 bit machines; there are also a set of generic optimisation, linker and librarian tools.
В принципе стандартный набор языков для тех лет, но есть нюанс:
It contains assembler and linker support for: 6500, 6800, 6805, 6809, ARM, i80, Z80, Z8000, i86, i386, 68000, 68020, NS32016, S2650, SPARC, VAX, PDP11 and VideoCore IV.
Это уже несет определенный «вау-эффект», причем как для тех, так и для этих лет, поскольку даже для популярных clang и gcc столь широкая поддержка различных архитектур решается весьма нетривиально - путем форков и неофициальных патчей.
В мейнстриме и готовых пакетах столь дикого набора архитектур разумеется нет, при этом поддержку устаревших архитектур еще и регулярно ломают, а некоторые вообще удаляют.
Современная версия ACK, разрабатываемая с 2003 года как открытый проект, поддерживает следующие платформы:
И ACK дает вам возможность скомпилировать приложение в современном окружении в 2025м году, которое будет работать на этом.
Чтобы у вас не сложилось впечатление, будто ACK это только лишь про плешивых дедов пожилых программистов и их древние игрушки, покажу как выглядит заявленный выше VideoCore IV:
Как видите это уже вполне себе современная плата, используемая в различных устройствах.
Minix
Отдельно стоит упомянуть историю с Minix — той самой операционной системой, созданной тем самым Таненбаумом для обучения нерадивых студентов сложной теме разработки операционных систем.
В почтовой рассылке, посвященной этой ОС когда-то давно некий Линус Торвальдс впервые представил свой известный проект, вызвавший эпический архитектурный срач дискурс, ныне являющийся историческим событием.
Дело в том, что ACK когда-то был основным системным компилятором в Minix, при этом являясь коммерческим продуктом — поставлялся в виде готовых бинарников:
The ACK has been used as the standard Minix compiler for years. While the ACK was still commercial, this was done by distributing binaries; when it get opened, a version was forked off and is now used as part of the Minix base build.
Форк с поддержкой Minix мне был не особо интересен, поэтому искать не стал, тем более что в современной Minix 3 используется вполне стандартный clang.
Однако на поддержке столь широкого набора архитектур возможности ACK не заканчиваются и чтобы добить окончательно нежную психику современных разработчиков, процитирую следующий абзац:
Each language comes with its own runtime, so if you’re a C programmer you also get a libc. Compared to gcc, it is far smaller, faster and easier to port.
Стоило догадаться об этом, прочитав список поддерживаемых архитектур и прикинув как оно вообще может работать, но тем не менее.
Так что ACK это уникальный, редкий и необычный проект, позволяющий творить запредельную дичь вроде кросс-компиляции из FreeBSD в MS-DOS подручными средствами, которую вы могли видеть в шапке статьи.
Ниже я опишу процесс сборки и использования этого необычного проекта.
Сборка
Собирать буду по традиции на FreeBSD 14, поэтому часть требуемых шагов несколько отличается от стандартных.
Проект старый, разработка в git ведется давно, поэтому внутри репозитория присутствует множество разных веток, не актуальных для обывателя.
Чтобы не выкачивать всю эту дичь, я использовал ключ --depth -1, с которым будет выгружена только ветка по-умолчанию:
Таким образом собирать мы будем текущую на момент написания статьи версию:
ACK 6.0 is a ground-up reworking of the whole compiler suite, with a lot of the more archaic features removed.
Сборка проекта.. весьма своеобразна, поскольку основана на скриптах Python и немного Lua. Как гласит описание:
The version 5.0 build mechanism has been completely rewritten (twice).
И видимо это еще не конец.
Для сборки нужен достаточно банальный набор инструментов:
любой ANSI C компилятор (автор использовал GCC)
flex и yacc
GNU make (gmake)
Lua с библиотекой lua-posix
Python 3.4 и выше
~2Гб свободного места
В трекере проекта и пул-реквестах есть сообщения от камрадов, использующих ACK на OpenBSD, так что врядли будут проблемы в куда более популярных Linux, Windows и MacOS.
Запускается сборка стандартным образом — вызовом GNU Make в корне проекта:
gmake
Поскольку автор собирал на FreeBSD, которая имеет определенную специфику в именовании инструментов, появится такая ошибка:
Происходит это из-за того, что lua во FreeBSD имеет постфикс версии:
Так что надо отредактировать Makefile в корне проекта и поменять значение переменной LUA=, добавив версию:
Следующая ошибка также специфична для FreeBSD, поскольку gcc у нас тоже с постфиксом версии:
Несмотря на документацию, которая утверждает что актуальный компилятор должен подхватываться через стандартную переменную окружения CC=, нашлось место в скриптах сборки, где были прямо забиты названия используемых бинарников:
Нужный файл называется ack/build/ab.mk и почему-то несмотря на название и расположение — не является генерируемым.
По аналогии с lua, добавляем постфикс версии и сохраняем:
После этого заново запускаем сборку и ждем, никаких других ошибок при сборке замечено не было.
Итоговый размер после завершения сборки, со всеми временными файлами получился размером в 1.7Гб, что несколько больше заявленного в требованиях:
По-умолчанию ACK устанавливается в каталог /opt/pkg/ack, поэтому запускаем из корня проекта:
mkdir -p /opt/pkg/ack gmake install
Перед установкой будут запущены тесты, но далеко не все:
Итоговый каталог bin выглядит следующим образом:
Хотя основные бинарники находятся в ack/lib/ack:
Теперь переходим к самому интересному — к запуску и работе с ACK, это будет действительно весело.
В репозитории проекта находится каталог examples, где лежат примеры более-менее сложной логики на Си, Паскале и Бейсике, которые точно собираются и работают с помощью ACK.
Один из таких примеров под названием mandelbrot.c , выводящий в консоль с помощью символа * фрактал Мандельброта вы можете лицезреть в работе на заглавной картинке к статье.
Но поскольку мне был интереснее сам процесс компиляции и запуска приложений на разных экзотических архитектурах из древних времен нежели специфика каждой конкретной платформы, не стал заморачиваться сложной логикой, взяв в качестве эталона классический «Hello world!» на Си:
#include <stdio.h>
int main(void) { printf("Hello, alex0x08 \n"); return 0; }
И собственно ниже покажу сборку и запуск этой нестареющей классики под крайне экзотические (по современным меркам) архитектуры.
Компиляция FreeBSD->MS-DOS
Компиляцию в COM-файл с последующим запуском можно увидеть на заглавной картинке, поэтому ниже покажу компиляцию в EXE под DOS:
Поэтому для работы нужен запущенный DPMI-резидент — т. н. «расширитель памяти», который можно взять например тут.
Так это выглядит в записи:
Как видите запуск осуществлялся в известном эмуляторе DOS под названием Dosbox, установленном из пакетов FreeBSD.
Компиляция для CP/M
Продолжая исторический угар, показываю сборку и запуск под CP/M, напоминаю что это операционная система из 1970х (старше автора) а компьютеры, на которых она работала выглядели так:
Kaypro II
Тут надо сделать небольшое отступление и рассказать про эмулятор CP/M, поскольку его в пакетах FreeBSD не нашлось — пришлось собирать руками.
При сборке будет описанная выше проблема с номером версии в названии исполняемых файлов компилятора GCC — стандартная для FreeBSD, поэтому необходимо в файле RunCPM/Makefile.posix в переменную СС= добавить номер версии:
Сама сборка запускается командой:
gmake posix build
Но это еще не все приключения, после сборки необходимо подготовить рабочее пространство — специальный каталог из которого будет запускаться эмулятор:
Круто, но недостаточно, поскольку среди поддерживаемых ACK систем есть:
pdpv7 produces PDP/11 V7 Unix binaries
Думаю вы догадываетесь, что пройти мимо такого было невозможно, поэтому автор убил еще неделю показываю нечто действительно удивительное.
Компиляция для Unix v7 и PDP-11 в 2025м году (!)
Чтение этого абзаца прибавляет 100 баллов к инженерным навыкам.
Напоминаю как выглядел PDP-11:
Вот так выполняется компиляция из ACK для этого древнего монстра:
/opt/pkg/ack/bin/ack -mpdpv7 -O hello.c -o hello
Как ни странно и неожиданно, но стандартная утилита file, присутствующая во всех UNIX-системах с незапамятных времен честно показывает тип:
Apout — Simulate PDP-11 Unix a.out binaries
Для проверки я сначала запустил полученный бинарник на этом:
This program is a user-level simulator for UNIX a.out binaries. Binaries for V1, V2, V5, V6, V7, 2.9BSD and 2.11BSD can be run with this simulator. The user-mode PDP-11 instructions are simulated, and TRAP instructions are emulated by calling equivalent native-mode system calls.
Собирается оно под FreeBSD одной командой, поскольку внешних зависимостей нет:
export CC=gcc13 gmake
После сборки в корне проекта появится бинарник apout, так выглядит в работе запуск нашего «Hello world»:
Но разумеется сильно круче было бы попробовать запустить в реальном симуляторе PDP с Unix v7 на борту, что я и сделал.
SIMH
Эмуляцию PDP как впрочем и множества других исторических систем обеспечивает известный проект Open SIMH. Нужный нам Unix v7 заявлен на главной странице проекта в качестве ключевого примера:
For example Version 7 Unix, released in 1979, runs unchanged today on SimH.
В этот раз эмулятор присутствовал в готовом виде среди пакетов FreeBSD, так что хотя-бы его не пришлось собирать из исходников.
Дальше необходимо создать конфигурационный файл эмулятора:
set cpu u18 set cpu idle attach rl0 unix_v7_rl.dsk attach rl1 hello.tar boot rl0
Сохраните файл как simh-pdp11.ini, в том же самом каталоге v7 , куда был распакован образ диска.
Теперь надо создать tar-файл с собранным бинарником "Hello world" приложения:
cd ~ tar cvf hello.tar hello cp hello.tar ~/v7/
Итоговый набор файлов должен выглядеть как-то так:
Запускаем эмулятор:
pdp11 simh-pdp11.ini
После появления приглашения в виде символа @ вводим:
boot
Появится древний предок современного Grub, загрузчик:
Вводим:
rl(0,0)rl2unix
Появится приглашение в виде символа # , что означает запуск Unix v7 в однопользовательском режиме:
Нажмите Ctrl - D для начала работы в многопользовательском режиме:
Появится хорошо знакомое любому юниксоиду приглашение авторизации. Введите root в качестве логина и пароля:
При первом запуске будет необходимо выполнить ряд дополнительных шагов. Создаем каталог для временных файлов:
mkdir /tmp
Создаем ссылки на устройства:
cd /dev make rl
Таким образом со стороны запущенной в эмуляторе Unix v7 будет доступно устройство, эмулирующее ленту и можно будет добраться наконец до собранного на хосте бинарника:
cd /tmp tar xvf /dev/rrl1
В результате в файловой системе появится тот самый файл hello, собранный на FreeBSD с помощью ACK:
Наконец сам запуск:
Ну кто еще вам спрашивается покажет такую красоту?
Эпилог
ACK имеет отличную портируемость и расширяемость, поэтому существует столь интересный форк этого проекта:
This fork of the Amsterdam Compiler Kit supports the Cray X-MP supercomputer and the COS operating system platform.
Его тоже удалось собрать и запустить, но ввиду невероятной сложности самобытности COS, история будет уже в отдельной статье. Следите за анонсами, как говорится.
Статья была опубликована на Хабре, оригинал как обычно в нашем блоге, все желающие получить обои с автографом (и не умеющие пользоваться нейросетями) должны будут повторить все описанные в статье шаги и прислать скриншот с работающим «Hello <username>» под Unix v7 на PDP, где username — ваш ник.
МК88 — компьютер, разработанный и воплощённый в СССР, наша XT-шка.
Дата производства компьютера — 29.04.1992. Таким образом, компьютеру 34 года. На мой взгляд, то, что древний компьютер вообще включается, уже заслуживает уважения — за это время перегорают даже простые лампы накаливания. Мы пойдём дальше: обвесим его новодельной периферией, «проапгрейдим» и выглянем в цифровой окружающий мир. Сегодняшний эксперимент будет посвящён посещению BBS, увидим текстовый интернет, начало телнет-мультика и загрузку Linux для древних машин под названием ELKS. Приглашаю к прочтению.
Этот компьютер достался мне с 256 Кб оперативной памяти. Ребята, это мало — менее чем на 640 Кб я не согласен: «640K ought to be enough for anybody» (с). Существуют проекты, позволяющие расширить оперативную память посредством запайки микросхем памяти на плату, которая находится внутри корпуса. У меня была исходная позиция невмешательства в оригинальную конструкцию. Корпус на пломбах — пусть будет капсулой времени, работает, ну и не трогай, это не блок питания. Итак, компьютер был не мёртв, но и не жив; как его использовать с таким объёмом ОЗУ — вариантов было мало. На нём не запускался даже «Принц Персии», о чём дальше говорить.
Эта статья-описание положила начало созданию тематического канала, где собрались ретро-энтузиасты, у которых есть данный компьютер. К чему веду? Пообщавшись, я финансово поучаствовал в проекте создания коробочки-новодела, благодаря которой МК88 расцвёл.
Коробочка представляет собой контроллер, совмещающий COM-порт и дополнительную оперативную память, а также он позволяет подключить CF-карту или DOM-модуль в качестве накопителя данных, ну или жесткий диск. Словом всё, чего мне так не хватало в МК88.
Оперативной памяти стало теперь вот столько:
А общая картина аппаратной конфигурации выглядит так:
Покажу контроллер снаружи и изнутри. Всё это нужно для того, чтобы пояснить общий механизм взаимодействия, позволяющий нам наладить сетевое соединение с BBS.
COM-порт
Целиком, плата выглядит так. Синий разъем СНП-59 стыкуется непосредственно с ответным интерфейсным разъёмом МК88, без удлинителей и переходников. Просто вставляется как картридж.
Вид сверху. Справа, разъем интерфейса жесткого диска
Разъем со знаком качества СССР, подлинный
Загрузка операционной системы производится с CF-карты. Целиком конструкция выглядит так.
Стандартный 40-жильный шлейф
Это всё, что касалось контроллера. Теперь попробую побалансировать в рамках понятий, кто же на самом деле выходит в интернет. Процедуру выхода в интернет подобных МК88 ретроустройств можно рассматривать с разных сторон.
Сущность этого модема — это плата ESP8266mod, соединённая с адаптером «RS‑232 to TTL» и соответствующей прошивкой внутри ESP.
В нашем случае...
Есть мнение, что в интернет выходит ESP, а МК88 является всего лишь терминалом. Резонно. С другой стороны, МК88 может сказать: «Хм, мне всё равно, через что налаживать соединение, — будь то настоящий dial‑up модем, подключённый к аналоговой телефонной сети, либо новоявленная ESP, подключённая через WiFi». Главное — посылать AT-команды через COM-порт модему и получать результат. А какой именно подсоединён модем — уже частности. Так или иначе, мы подадим трафик в МК88.
Вообще-то статья про ретрокомпьютер — не сместился ли фокус повествования в сторону новодела? Всё, что выше, было необходимо для пояснения, как всё организовано. Ну, а может, читателю потенциально захочется повторить подобное?
Переходим непосредственно к «сёрфингу» по BBS. Посмотрим, как выглядят некоторые распространённые BBS, а также глянем потенциальную возможность посмотреть telnet-мультик «Звёздные войны» в ASCII Art. Оно запускается и идёт, но меня хватило только на начало заставки…
Для «сёрфинга» используем терминальную программу для MS-DOS — term90. Запуск и её настройка есть в ролике, хотя какая там настройка? Это всего лишь указание скорости работы COM-порта, остальное — по умолчанию: восьмибитная передача, без контроля чётности (служебный бит для контроля чётности не используется) и с одним стоп-битом (8‑N‑1).
Роликов два, на разных платформах — кому где нравится. Второй ролик был черновой, но я решил его оставить, так как там видны «грабли», на которые приходилось наступать; в частности, разобрался, как отключить локальное эхо (прочитал инструкцию). Итак, ролики дублируются 2×2, выбирайте…
В конечном итоге мы увидели коммуникационные возможности компьютера МК88. Разумеется, это не всё, что можно продемонстрировать, ведь есть ещё возможность использовать SLIP-протокол, который работает на канальном уровне стека TCP/IP и позволяет передавать данные в виде IP-пакетов, используя последовательный порт. Это открывает «горизонты» в виде использования FTP и даже HTTP. SLIP — нетребовательный протокол, нагрузка на процессор минимальная, и ему, процессору, можно в полном объёме трудиться над работой с браузером для просмотра. Будет ли интересен такой ретроэксперимент — прошу написать в комментариях.
В принципе, на МК88 запускается Microsoft Windows 1.0, и там тоже есть терминальная программа, но ограничимся MS-DOS. МК88 — компьютер медленный, но интересный, и даже в современном мире худо-бедно может служить для коммуникации.
В дальнейших «изысканиях» удалось запустить современный ELKS. ELKS — это крошечный дистрибутив Linux для процессоров 8088, 8086. На этапе загрузки (видео ниже) можно посмотреть аппаратное обеспечение и другие характеристики машины. У ELKS есть образ, занимающий дискету 360 Кб. В образах побольше есть даже DOOM, Digger, Тетрис, а также графическая среда, основанная на оконной системе Nano-X (Microwindows). Кому интересно, описание можно глянуть здесь.
Всё это — перспектива дальнейших исследований, не всё гладко у меня прошло.
И поближе:
Версия далеко не последняя, но это были эксперименты
Уважаемые читатели, если есть вопросы по настройке WiFi-модема, пишите — я готов помочь и подсказать, потому что, в своей основе, решение тривиальное, но далось мне не сразу — пришлось посидеть, в том числе из-за неисправных конвертеров COM-портов. Наградой стало то, что разобраться всё же удалось.
На самом деле это "форк форка" старого доброго XMMS, созданного когда-то давно по мотивам легендарного плеера Winamp, получается клон в четвертом поколении! Переписан на Rust и запущен под FreeBSD, чтобы снова радовать меня треками начала 2000х😎