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

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

1 283 поста 7 520 подписчиков

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

283

Они были первыми. Как выглядел первый ПК, сотовый телефон, ноутбук

<a href="https://www.openculture.com/2021/05/the-first-cellphone-discover-motorolas-dynatac-8000x.html" target="_blank" rel="nofollow noopener">Источник</a>

Источник

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

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

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

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


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



Рынок в который никто не верил. О первом домашнем ПК

<a href="https://www.reddit.com/r/vintagecomputing/comments/17vuj8o/just_picked_up_an_original_apple_ii_computer_and/?tl=ru" target="_blank" rel="nofollow noopener">Источник</a>

Источник

Знаменитая фраза основателя Digital Equipment Corporation Кена Олсена отражала мышление эпохи больших корпоративных машин, хотя сам он позже утверждал, что его слова вырвали из контекста и речь шла об утопическом управлении домом через единый центральный сервер (ага, современные умные дома передают привет, мистер Олсен). А звучала она так: «Нет нужды иметь компьютер дома».

Только вот иронично, сказал он это в 1977 году, тогда же и случилась революция — Apple выпустила первый коммерчески успешный ПК с цветной графикой и клавиатурой в пластиковом корпусе под названием Apple II.

<a href="https://3dnews.ru/1135505/neispravniy-kompyuter-altair-8800-otremontirovali-i-vpervie-zapustili-spustya-52-goda-posle-vipuska" target="_blank" rel="nofollow noopener">Источник</a>

Источник

Чисто технически, его нельзя назвать именно первым домашним ПК, потому что еще в 1975 был Altair 8800, но там есть пара нюансов — по своей сути это был набор комплектующих на базе одного из первых процессоров Intel. Клавиатуры и монитора там не задумано. То есть назвать его первым привычным нам ПК не получится.

А вот Apple II как раз-таки подходит. За ценник в 1995 долларов покупатель получал готовое к работе устройство и полную комплектацию: системный блок, монитор (номинально это вообще был моноблок с клавиатурой, да) и карта расширения для отображения большего количества строк. До Apple II вывод цветного изображения требовал огромных, дорогих графических карт.

<a href="https://uk.pcmag.com/desktop-pcs/164111/the-machine-that-changed-everything-how-the-apple-ii-kickstarted-the-personal-computer-era" target="_blank" rel="nofollow noopener">Источник</a>

Источник

До Apple II отображение цветного изображения казалось космической технологией за очень много денег, но Стив Возняк нашел изящный хак: он использовал особенности формирования NTSC-сигнала в обычных цветных телевизорах. Компьютер генерировал цвет программно, задействуя минимум откровенно дешевых в производстве и закупке деталей. Именно поэтому на логотип Apple добавили радужные полосы — это было главным конкурентным преимуществом.

По сути, Apple II стал пионером на рынке домашних ПК не только для гиков, но и для обычных (богатых) людей, первой ласточкой перехода от инструмента до бытового прибора.

Портативность от розетки до розетки. Первый ноутбук называли «чемоданный компьютер»

The Xerox Notetaker "portable" computer - 2013-04-16 - A Visit To Xerox PARC | <a href="https://www.forbes.com/pictures/elee45hkej/the-xerox-notetaker-portable-computer/" target="_blank" rel="nofollow noopener">Источник</a>

The Xerox Notetaker "portable" computer - 2013-04-16 - A Visit To Xerox PARC | Источник

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

Первый ноутбук появился в 1978 году, но не для простых людей. проект был строго экспериментальным, закрытым, а стоимость производства одного экземпляра была космической для того времени — около $50 000 (с учетом инфляции сегодня это около $230 000). Всего было собрано около 10 прототипов, которые использовались исключительно учеными Xerox для демонстрации технологического превосходства.  Инженеры создали конструкцию «чемодана». Именно эту архитектуру позже полностью скопируют коммерческие Osborne 1 и Compaq Portable.

<a href="https://habr.com/ru/companies/timeweb/articles/991810/" target="_blank" rel="nofollow noopener">Источник</a>

Источник

Собственно, да, Osborne 1 исторически верно называть первым в мире ноутбуком для простых (очень богатых) людей. Выход этого девайса буквально взорвал рынок — за весьма низкую цену в 1700 долларов вы получали одиннадцать килограмм технологий будущего и пакет дорогущего софта на сдачу.

В 1981 году Osborne 1 представлял собой мощный инструмент для бизнеса, на котором можно было печатать, делать расчеты и работать с языками программирования.

<a href="https://nosher.net/archives/computers/micro_decision_1982-05_001a" target="_blank" rel="nofollow noopener">Источник</a>

Источник

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

Рынок отреагировал соответствующе — буквально все, кто услышал эту весть, от оптовиков до простых пользователей, отменили заказы на Osborne 1 ради будущих новинок... И тем самым убили компанию-производителя, потому что на момент анонса кроме названия и обещаний не было ничего, включая денег на производство.

Первый мобильный телефон уж точно в карман не положишь, зато можно использовать в качестве предмета самообороны

<a href="https://www.mymobileindia.com/martin-cooper-inventor-of-the-motorola-dynatac-8000x-94-year-old-father-of-the-cellphone-uses-this-smartphone-but-concerned-with-peoples-phone-obsession/" target="_blank" rel="nofollow noopener">Источник</a>

Источник

Почти 4 тысячи долларов цена, 30 сантиметров длина и внушительный вес, но главное — статус. Всё это Motorola DynaTAC 8000X — первый в истории мобильный телефон, который поступил в продажу в 1983 году, пройдя путь в почти 10 лет разработок и бюрократических войн.

DynaTAC родился из жестокого противостояния компании Motorola и американского гиганта AT&T, который на тот момент уже представлял услуги сотовой связи, но только для автомобилей, и все внутри считали, что дальше салонов дорогих машин эта технология не пойдет.

Мартин Купер (один из ведущих инженеров компании) и команда Motorola категорически не соглашались с этим. Их манифест звучал так: «Люди хотят звонить людям, а не автомобилям». Они верили, что телефон должен быть привязан к конкретному человеку и свободно перемещаться вместе с ним. Проблема заключалась в том, что в 1970-х годах упаковать базовую радиостанцию и аккумулятор в предмет, который можно удержать одной рукой, считалось фантастикой.

Разработка концепта началась еще в 1968 году, а первый звонок Мартин Купер сделал 3 апреля 1973 лично, угадайте кому. Правильно, Джоэлу Энгелю из AT&T, после слов, что Купер звонит ему с улицы по сотовой связи, в трубке еще долго была тишина и злобное дыхание.

<a href="https://www.techspot.com/trivia/125-first-mobile-phone-motorola-dynatac-pricing/" target="_blank" rel="nofollow noopener">Источник</a>

Источник

Но, возвращаясь к самому телефону. Статус пионера целой индустрии накладывал ряд ограничений, и речь сейчас даже не о цене. Батарея держала всего 30 минут разговоров, а заряжался кирпич целых... десять часов.

<a href="https://habr.com/ru/companies/ibm/articles/184490/" target="_blank" rel="nofollow noopener">Источник</a>

Источник

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

Его выпустила IBM в 1994 году под названием Simon по цене в 900 долларов как бизнес-решение для нового времени, и главной его проблемой был факт, что при разрядке и отсутствии сети больше двух-трех дней его память полностью стиралась.

Так с разницей в 11 лет родились две индустрии — мобильные телефоны и КПК, которые в наше время сошлись в одно емкое слово «смартфон», без которого крайне трудно представить жизнь современного человека.

Такие дела.

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

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

Как искали в 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
103

Сеть ИОЛА, 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
19

Теряем невинность с Таненбаумом: 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
Отличная работа, все прочитано!

Темы

Политика

Теги

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

Сообщества

18+

Теги

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

Сообщества

Игры

Теги

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

Сообщества

Юмор

Теги

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

Сообщества

Отношения

Теги

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

Сообщества

Здоровье

Теги

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

Сообщества

Путешествия

Теги

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

Сообщества

Спорт

Теги

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

Сообщества

Хобби

Теги

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

Сообщества

Сервис

Теги

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

Сообщества

Природа

Теги

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

Сообщества

Бизнес

Теги

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

Сообщества

Транспорт

Теги

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

Сообщества

Общение

Теги

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

Сообщества

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

Теги

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

Сообщества

Наука

Теги

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

Сообщества

IT

Теги

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

Сообщества

Животные

Теги

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

Сообщества

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

Теги

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

Сообщества

Экономика

Теги

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

Сообщества

Кулинария

Теги

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

Сообщества

История

Теги

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

Сообщества

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

Теги

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

Сообщества