Сообщество - IT минувших дней

IT минувших дней

1 281 пост 7 519 подписчиков

Популярные теги в сообществе:

86

Как искали в 90-х и куда исчезли российские поисковые системы?

Если сегодня кто-то говорит «поищи в интернете», обычно подразумевается «Яндекс» или Google. Но так было далеко не всегда. Во второй половине 90-х ассортимент поисковых систем был намного шире: в зарубежном интернете успешно работали AltaVista и Yahoo, Lycos и WebCrawler, а еще Ask.com, HotBot, Excite, Infoseek и множество других. Рунет также переживал бурный расцвет: здесь присутствовало несколько полноценных поисковых систем и целое семейство каталогов ссылок. Прошло время, выжил только «Яндекс», превратившийся в гигантскую мегакорпорацию. Куда делись все остальные?

Для начала давайте определимся с тем, чем все-таки отличались поисковые системы от каталогов. Полноценные поисковики, коих даже в те времена было относительно немного, имели собственного программного робота, самостоятельно бродившего по сети, обходившего ссылки и добавлявшего информацию о найденных веб-страницах в базу данных — индекс поисковой системы. Роботы умели парсить HTML и вычленять из тегов информацию о проиндексированных страницах, но качество автоматически составленных описаний порой оставляло желать лучшего. Да и релевантность поиска не всегда была высокой: порой поисковик выдавал по запросу совсем не то что нужно.

В каталоги, в отличие от поисковых систем, ссылки добавляли вручную сами создатели сайтов, и составляли для них развернутые и подробные описания. Эти описания проверяли модераторы — в каждом тематическом разделе каталога трудился свой. В результате качество поиска в каталоге оказывалось порой выше в сравнении с классическими поисковыми системами, и эта ситуация сохранялась до тех пор, пока роботы поисковиков не «поумнели» и не научились индексировать страницы лучше людей.

Помимо «Яндекса» во второй половине 90-х в Рунете существовало несколько поисковиков, каждый из которых обладал своими индивидуальными чертами и характерными особенностями.

Написано специально для ▶️Timeweb Cloud и читателей Pikabu.



❯ Рамблер

Исторически «Рамблер» стал первой полноценной поисковой системой в Рунете — его запустили в 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).

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

Больше интересных статей и новостей в нашем блоге на Хабре и телеграм-канале.

Реклама. ООО «ТАЙМВЭБ.КЛАУД», ИНН: 7810945525
Показать полностью 5
98

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

Некоторое время назад я пытался заставить работать сетевые карты ИОЛА, но у меня не все получилось. Обо всем рассказано здесь.

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


Написано специально для ▶️Timeweb Cloud и читателей Pikabu.


Так, начнем прямо с сетевых карт:

Аверс

Аверс

Реверс

Реверс

Трудно не заметить, что сетевые карты разные. Разница — в компонентном различии, количестве микросхем, использовании восьмибитного и шестнадцатибитного разъёмов 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, только ссылки все «битые». Если есть у кого упомянутые драйвера, прошу поделиться.

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

Благодарю за уделенное время :)

Больше интересных статей и новостей в нашем блоге на Хабре и телеграм-канале.

Реклама. ООО «ТАЙМВЭБ.КЛАУД», ИНН: 7810945525
Показать полностью 18
18

Теряем невинность с Таненбаумом: Amsterdam Compiler Kit

Серия Жестокие эксперименты

Пока вы рождались, ходили в школу, заканчивали учебу и выходили на свою первую работу, на свете существовал совершенно особенный набор компиляторов, о котором крайне мало известно на просторах РФ.

Именно о нем пойдет сегодняшний рассказ.

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 года как открытый проект, поддерживает следующие платформы:

pc86, linux386, linux68k, linuxppc, linuxmips, cpm, rpi (VideoCore IV), pdpv7, msdos86 and msdos386.

Лично у меня глаз начал дергаться после cpm и pdpv7, msdos86 по сравнению с этим уже творческие мелочи.

Для юных читателей, не заставших даже дискет стоит пояснить, что CP/M это операционная система из 1970х, для примерно таких компьютеров:

<a href="https://pikabu.ru/story/teryaem_nevinnost_s_tanenbaumom_amsterdam_compiler_kit_14206476?u=https%3A%2F%2Fru.m.wikipedia.org%2Fwiki%2F%25D0%25A4%25D0%25B0%25D0%25B9%25D0%25BB%3ASanco_8001.jpg&t=Sanco%208001&h=57e15a4bd07b56c0cec232e153f48e78deddba00" title="https://ru.m.wikipedia.org/wiki/%D0%A4%D0%B0%D0%B9%D0%BB:Sanco_8001.jpg" target="_blank" rel="nofollow noopener">Sanco 8001</a>. Обратите внимание на ширину дисковода

Sanco 8001. Обратите внимание на ширину дисковода

Как выглядит PDP-7 уже показывал в предыдущей статье, но на всякий случай напомню:

Когда-то это называли "мини-компьютером"

Когда-то это называли "мини-компьютером"

И 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, с которым будет выгружена только ветка по-умолчанию:

git clone --depth 1 https://github.com/davidgiven/ack.git

Таким образом собирать мы будем текущую на момент написания статьи версию:

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:

/opt/pkg/ack/bin/ack -mmsdos386 -O hello.c -o hello.exe

Цитируя документацию:

msdos386 produces i386 MS-DOS 32-bit DPMI .EXE files

Поэтому для работы нужен запущенный DPMI-резидент — т. н. «расширитель памяти», который можно взять например тут.

Так это выглядит в записи:

Как видите запуск осуществлялся в известном эмуляторе DOS под названием Dosbox, установленном из пакетов FreeBSD.

Компиляция для CP/M

Продолжая исторический угар, показываю сборку и запуск под CP/M, напоминаю что это операционная система из 1970х (старше автора) а компьютеры, на которых она работала выглядели так:

Kaypro II

Kaypro II

Тут надо сделать небольшое отступление и рассказать про эмулятор CP/M, поскольку его в пакетах FreeBSD не нашлось — пришлось собирать руками.

RunCPM - Z80 CP/M emulator

Разработка ведется на Github, забираем исходники:

git clone https://github.com/MockbaTheBorg/RunCPM.git

При сборке будет описанная выше проблема с номером версии в названии исполняемых файлов компилятора GCC — стандартная для FreeBSD, поэтому необходимо в файле RunCPM/Makefile.posix в переменную СС= добавить номер версии:

Сама сборка запускается командой:

gmake posix build

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

mkdir disk
unzip ../../DISK/A0.ZIP
cp ../RunCPM .

В результате появится каталог A/0, внутри которого будут все управляющие команды CP/M, в корне будет запускаемый бинарник самого эмулятора.

Все готово к использованию, для проверки можно запустить эмулятор:

Должна быть отображена шапка с версией и работать команда DIR. Для завершения работы эмулятора введите EXIT.

Теперь можно переходить к сборке тестового приложения.

«Hello world» для CP/M

Для компиляции под эту систему достаточно указать ключ -mcpm:

/opt/pkg/ack/bin/ack -mcpm -O hello.c -o hello.com

Следующим шагом копируем полученный бинарник, обязательно с именем в верхнем регистре:

cp ~/hello.com ./A/0/HELLO.COM

Запускаем эмулятор и вводим команду hello:

Круто?

Круто, но недостаточно, поскольку среди поддерживаемых 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, так что хотя-бы его не пришлось собирать из исходников.

На этот раз.

Забираем готовый образ диска с Unix v7 для PDP-11 отсюда, существует известная инструкция по полной установке с использованием образов установочной ленты:

Нормальные люди на таком слушали музыку, ненормальные - хранили бекапы.

Нормальные люди на таком слушали музыку, ненормальные - хранили бекапы.

Но автор решил не убивать еще неделю что это уже перебор, поэтому использовал готовый образ диска с Unix v7.

В архиве по ссылке будет файл unix_v7_rl.dsk , который необходимо распаковать:

mkdir v7
cd v7
unzip ~/uv7swre.zip

Дальше необходимо создать конфигурационный файл эмулятора:

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 — ваш ник.

Показать полностью 30
166

Советский МК88 — шарим по BBS консольного интернета

МК88 — компьютер, разработанный и воплощённый в СССР, наша XT-шка.

Дата производства компьютера — 29.04.1992. Таким образом, компьютеру 34 года. На мой взгляд, то, что древний компьютер вообще включается, уже заслуживает уважения — за это время перегорают даже простые лампы накаливания. Мы пойдём дальше: обвесим его новодельной периферией, «проапгрейдим» и выглянем в цифровой окружающий мир. Сегодняшний эксперимент будет посвящён посещению BBS, увидим текстовый интернет, начало телнет-мультика и загрузку Linux для древних машин под названием ELKS.
Приглашаю к прочтению.

Автор текста: MechNIX. Написано специально для ▶️Timeweb Cloud и читателей Pikabu.

Этот компьютер достался мне с 256 Кб оперативной памяти. Ребята, это мало — менее чем на 640 Кб я не согласен: «640K ought to be enough for anybody» (с). Существуют проекты, позволяющие расширить оперативную память посредством запайки микросхем памяти на плату, которая находится внутри корпуса. У меня была исходная позиция невмешательства в оригинальную конструкцию. Корпус на пломбах — пусть будет капсулой времени, работает, ну и не трогай, это не блок питания. Итак, компьютер был не мёртв, но и не жив; как его использовать с таким объёмом ОЗУ — вариантов было мало. На нём не запускался даже «Принц Персии», о чём дальше говорить.

Ранее аппаратная часть была уже рассмотрена здесь.

Эта статья-описание положила начало созданию тематического канала, где собрались ретро-энтузиасты, у которых есть данный компьютер. К чему веду? Пообщавшись, я финансово поучаствовал в проекте создания коробочки-новодела, благодаря которой МК88 расцвёл.

Коробочка представляет собой контроллер, совмещающий COM-порт и дополнительную оперативную память, а также он позволяет подключить CF-карту или DOM-модуль в качестве накопителя данных, ну или жесткий диск. Словом всё, чего мне так не хватало в МК88.

Оперативной памяти стало теперь вот столько:

А общая картина аппаратной конфигурации выглядит так:

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

COM-порт

COM-порт

Целиком, плата выглядит так. Синий разъем СНП-59 стыкуется непосредственно с ответным интерфейсным разъёмом МК88, без удлинителей и переходников. Просто вставляется как картридж.

Вид сверху. Справа, разъем интерфейса жесткого диска

Вид сверху. Справа, разъем интерфейса жесткого диска

Разъем со знаком качества СССР, подлинный

Разъем со знаком качества СССР, подлинный

Загрузка операционной системы производится с CF-карты. Целиком конструкция выглядит так.

Стандартный 40-жильный шлейф

Стандартный 40-жильный шлейф

Это всё, что касалось контроллера. Теперь попробую побалансировать в рамках понятий, кто же на самом деле выходит в интернет. Процедуру выхода в интернет подобных МК88 ретроустройств можно рассматривать с разных сторон.

В нашем случае, я использую модем следующего проекта.

<a href="https://raw.githubusercontent.com/ssshake/vintage-computer-wifi-modem/master/docs/modemv3.jpg" target="_blank" rel="nofollow noopener">Источник фото</a>

Источник фото

Сущность этого модема — это плата 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-портов. Наградой стало то, что разобраться всё же удалось.

Спасибо за уделенное время! :)

Больше интересных статей и новостей в нашем блоге на Хабре и телеграм-канале.

Реклама. ООО «ТАЙМВЭБ.КЛАУД», ИНН: 7810945525
Показать полностью 13 5
10

Узнали?

Все кто застал 90е или 2000е точно узнают знакомые зеленые очертания ;)

На самом деле это "форк форка" старого доброго XMMS, созданного когда-то давно по мотивам легендарного плеера Winamp, получается клон в четвертом поколении!
Переписан на Rust и запущен под FreeBSD, чтобы снова радовать меня треками начала 2000х😎

Исходники тут.

Показать полностью
Отличная работа, все прочитано!

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества

Недвижимость и ремонт

Теги

Популярные авторы

Сообщества