Необычный заказ: разработка под CP/M
Древний дисковод ожил и издавая чудовищный скрежет стал медленно загружать мое послание.
Через какое-то время на экране появились строки:
NE PUERO GLADIUM, DR. KRIGER. 04.03.2026
Три пары глаз повернулись ко мне в немом изумлении.
— Это длинная история, нам лучше присесть.
Человек, перешагнувший порог моего маленького офиса в тот летний вечер явно имел отношение к спецслужбам — армейскую выправку и годы тренировок не спрячешь так просто.
Рослый и поднятутый, в безупречном костюме и с острым, пронзительным взглядом — он производил серьезное впечатление.
И тем странее выглядел этот заказ.
— Он самый, рад наконец познакомиться лично.
— Вы написали, что для нас есть работа. Хотя исходя из содержания письма, задача выглядит довольно.. необычной.
— Это проблема? Мне рекомендовали вас как опытных профессионалов..
— Просто уточняю детали, дабы убедиться, что мы понимаем друг друга.
— Итак, вы действительно используете компьютеры.. из 1987 года?
АРХЕОТЕХ
Копаясь в сети в поисках очередного археотеха, был обнаружен удивительный репозиторий, в котором один почтенный джентельмен, недавно отошедший от дел, собрал невероятную подборку дичи инструментов разработки для компьютеров конца 70х — начала 80х:
CP/M, если кто вдруг не знает (коих среди читателей точно будет большинство), это такая операционная система из далекого-далекого прошлого, созданная аж в 1974 году.
Разумеется давно и крепко забытая обывателями. Для сравнения и понимания исторического периода:
в 1977м году вышел первый фильм Джорджа Лукаса по вселенной «Звездных Войн», а в 1975м закончилась война во Вьетнаме.
Практически любые компьютерные материалы тех лет представляют историческую ценность, а тут аж целый репозиторий, забитый под завязку редчайшим археотехом.
Чтобы вы смогли оценить объем и сложность проделанной работы:
каждый компилятор или средство разработки из этой коллекции пришлось специально оцифровывать, считывая данные с невероятно старых носителей информации — дискет или магнитной ленты.
C помощью дисководов, которым лет по пятьдесят, типа такого:
Представляете, чего стоило все это оживить, запустить и заставить работать?
Физические процессы, механические повреждения и влияние среды при этом никто не отменял.
Если быть совсем точным, то сначала был обнаружен немного другой репозиторий от этого же почтенного автора, где была собрана похожая коллекция, но для более обыденного DOS.
Лишь несколько недель спустя обнаружилось, что совсем рядом находится настоящее сокровище утраченной цивилизации — чистый археотех.
От такого изобилия начала капать слюна и дергаться глаз:
Скорее всего ничего из длинного списка выше вам знакомо не будет, поскольку все эти древности на десяток-другой лет старше даже автора этих строк.
Отдельный восторг у искушенной публики вызовет наличие скриптов сборки под Unix (Linux/Mac/BSD).
Примерно из-за таких изумительных проектов хорошие инженеры навсегда бросают пить.
Но вернемся в мой кабинет — к гостю с армейской выправкой и странными, хотя и законными запросами.
— Этот разговор будет долгим. Не найдется ли у вас чем освежиться?
Специально для таких случаев в минибаре хранилась дежурная бутылочка Macallan. И правильный лед.
С наслаждением сделав глоток, гость медленно перекатывал стакан между пальцами пока лучи заката переливались на его гранях.
— Увы, не могу. «Врачи-убийцы» настрого запретили любой алкоголь.
— Какая жалость. Со мной они такое провернули только к седьмому сезону.. Возвращась к вашему вопросу.
— Про компьтеры 80х и их современное использование.
— Видите ли, это все сценаристы и лично создатель сериала.
Решили, что для уникальной атмосферы необходимо смешать гаджеты из совершенно разных эпох.
— У них определенно получилось, рейтинг IMDb не даст соврать.
Ламповые компьютеры 60х, мейнфреймы IBM 70х и 8-битные микрокомпьютеры 80х спокойно существуют в одном мире с мобильными телефонами и видеосвязью.
— И все это на протяжении десяти сезонов!
— Четырнадцати. Делаем продолжение.
Искусство искусством, но прежде чем погружаться по локоть в «кровавый ад разработки» 80х c линковщиками и компиляторами, стоит рассказать о технических реалиях тех лет — оборудовании и самой операционной системе CP/M.
Будет интересно, даже если вы, дорогой читатель, не старше третьего GTA.
ЭПОХА МИКРО
Между огромными мейнфреймами, занимающими машинные залы и первым домашним PC с DOS а затем и Windows, был относительно краткий период рассвета (1970-1980) микрокомпьютеров:
A microcomputer is a small, relatively inexpensive computer having a central processing unit (CPU) made out of a single integrated circuit microprocessor.
Да, это официальное название, «микрокомпьютерами» назывались множество разных девайсов от разных производителей, предназначенных для игор домашнего использования.
Это был настоящий бум домашней электроники и сотни разных компаний по всему миру начали создавать свои линейки для новой отрасли — домашних компьютеров.
— Интересная история, крайне.. необычная.
Рассказ гостя определенно заинтриговал.
За долгую жизнь со мной случилось столько разнообразной херни, что заказ на разработку для компьютера из 80х от мультяшного персонажа из сериала про супершпионов уже не казался чем-то невероятным.
Куда больше вопросов вызывал сам процесс.
— Но все же, что конкретно мы должны реализовать?
KAYPRO II
Одной из компаний, решивших поучаствовать в гонке первых домашних компьютеров была Kaypro Corporation:
Kaypro Corporation was an American home and personal computer manufacturer based in Solana Beach, California, in the 1980s
Хотя сама компания давно не существует, она успела наследить оставить след в истории компьютеров и сердцах благодарных потомков.
Первый же ее продукт имел оглушительный успех:
by mid-1983 the company was selling more than 10,000 units a month, briefly making it the fifth-largest computer maker in the world
Пятая в мире по продажам, рядом с Apple и IBM — в первом ряду, не где-то сбоку, причем с первого продукта.
Кстати с названием тоже есть интересный нюанс:
The first Kaypro model to be released commercially was branded as the Kaypro II; at the time, one of the most popular microcomputers was the Apple II
Так что цифра «два» в названии модели была добавлена ради конкуренции с Apple, а не в качестве порядкового номера — настолько сильна была ненависть жажда наживы.
Именно этот продукт — домашний компьютер Kaypro II был выбран в качестве полигона для восстановления процесса разработки под CP/M.
И последующей сдачи этого фантастического проекта для столь особенного заказчика.
Только посмотрите на эту брутальную «няшу» в стильном металлическом корпусе:
Кстати, этот самый Kaypro II еще и позиционировался как мобильный:
Its RS-232 port was widely used by service technicians for on-site equipment configuration, control and diagnostics
И действительно использовался инженерами для полевых работ, примерно как современные ноутбуки:
Ну как можно было пройти мимо такого сказочного девайса?
— У нас в.. организации есть один сотрудник. С наци.. ээ немецкими корнями и такой же педантичностью.
Мой гость сделал еще один глоток виски, явно наслаждаясь процессом.
— Отвечает за техническое сопровождение и разные.. эксперименты. В некотором смысле — ваш коллега.
— К великому сожалению, последнее время он начал.. скажем так, проявлять неустойчивость. Рассказывал коллегам о своей избранности и незаменимости. Стал требовать сдавать ему кровь.
— Даже представлять не хочу, для чего ему могло понадобиться столько крови, но нам срочно необходимо это прекратить.
CP/M
Стоит рассказать и про операционную систему тех лет, благо очень немногие из читателей дожили имели шанс с ней поработать:
CP/M,originally standing for Control Program/Monitor and later Control Program for Microcomputers, is a mass-market operating system created in 1974 for Intel 8080/85-based microcomputers by Gary Kildall of Digital Research, Inc.
Внешне это сильно похоже на более привычный отечественному пользователю DOS, хотя конечно же CP/M появилась гораздо раньше.
Кстати скриншот выше это тоже настоящий артефакт, который был сделан после случайной археологической находки — были обнаружены исходники четырех первых версий CP/M, примерно 1975-79 годов.
Так вот на этом скриншоте — работающая CP/M версии 1.3.. собранная из найденных исходников!
Помимо внешнего узнавания, сейчас будет еще и весьма знакомая история:
CP/M eventually became the de facto standard and the dominant operating system for microcomputers,in combination with the S-100 bus computers. This computer platform was widely used in business through the late 1970s and into the mid-1980s.
«Де-факто стандарт» и «доминирующая операционная система» — никого не напоминает?
А дело между прочим происходило задолго до Microsoft и ее первых продуктов.
Отдельных лулзов доставит и вот такой замечательный девайс:
Наберите побольше воздуха, сейчас поплохеет:
The Z-80 SoftCard is a plug-in Apple II processor card developed by Microsoft to turn the computer into a CP/M system based upon the Zilog Z80 central processing unit (CPU). Becoming the most popular CP/M platform and Microsoft's top revenue source for 1980, it was eventually renamed the Microsoft SoftCard, and was succeeded by Microsoft's Premium Softcard IIe for the Apple IIe.
Оказывается самым прибыльным продуктом мелкомягких когда-то была плата расширения для.. компьютеров Apple, позволяющая использовать на них операционную систему CP/M.
— Несмотря на все наши таланты и умения, думаю не сможем помочь.
Окинув гостя взглядом и оценив его серьезную физическую подготовку, я добавил:
— Полагаю в вопросах наказания, проучения и приручения вы дадите сто очков форы кому угодно..
—Конечно же речи не идет о применении насилия, мы мирные землепашцы люди. К тому же для такого существуют.. профильные специалисты.
— Нет, боюсь все несколько сложнее.
— Я хочу чтобы вы проучили коллегу морально — с помощью вашего ума и инженерных талантов.
Прикончив остатки виски, гость одним движением вернул пустой стакан на стол и внимательно посмотрел на меня.
ЭМУЛЯЦИЯ
Нетрудно догадаться, что настоящего микрокомпьютера из 1987 года у меня никогда не было, поскольку в те годы я успел только-только появиться на свет.
Поэтому большая часть описываемых ниже приключений снова будут происходить в эмуляции.
«Большая часть» — потому что действующий компьютер 80х я все же нашел и даже смог запустить на нем собранное приложение.
Содержание статьи сразу заиграло новыми красками, правда?
Вообще 8-битные микрокомпьютеры быстро завоевали популярность, фактически создав новый рынок домашней электроники и оставив заметный след рваную рану в юных сердцах.
Благодарные пользователи, убившие детство на первые компьютерные игры и выросшие затем в бородатых программистов, наклепали горы самых разных эмуляторов этих машин.
Я отобрал для вас три абсолютно разных эмулятора, для максимального погружения в тему микрокомпьютеров и эстетику 80х.
В качестве тестовой среды на этот раз использовался обычный Mageia Linux, чтобы не отвлекать внимание читателей на любимую FreeBSD.
Кстати вот тут находится очень интересная подборка образов дискет для компьютеров Kaypro, включая исходники — на случай, если статьи покажется мало и захотите продолжить банкет.
MYZ80
Начнем с самого отбитого хардкорного.
Перед вами настоящий дедушка эмуляции — действующий эмулятор CP/M, написанный в 1991м году под MS-DOS:
MyZ80 does more than just emulate the CPU though, it's a complete Z80 computer emulation
Этот эмулятор когда-то был коммерческим продуктом — «shareware», хотя и без каких-либо технических ограничений. Исходного кода найти не удалось, так что использовать будем его готовую сборку.
Один из отзывов, благодаря которому эту штуку вообще удалось отыскать в современном интернете:
This is one of the few PC CP/M simulators which appears to actually Boot
CP/M and not a "CP/M like command interpreter", thereby allowing you to
see what the operating environment actually looked like.
Шарму добавляет адрес для обратной связи — в сети FIDO:
Via FIDONET: direct to my point 3:640/208.3.
c/o Z-Node 62, Perth, Western Australia (3:690/718).
BBS number: From Australia: 09 450 0200.
From outside Australia: Overseas access number +619 450 0200.
Ссылка указанная выше, на самом деле лишь сохраненная копия сайта автора, поскольку и сайт и сам проект были давным давно заброшены.
Все ссылки для скачивания битые, но нужный файлик myz80124.zip со сборкой эмулятора легко находится в сети, можно скачать например тут.
wget http://www.z80.eu/downloads/myz80124.zip mkdir myz80cpm && cd myz80cpm unzip ../myz80124.zip
Внутри будет весьма необычный для современности набор файлов:
MYZ80.EXE — очевидный бинарник эмулятора, но проблема в том что это 16-битное приложение для DOS, запустить которое в современном окружении представляет проблему.
Так что придется использовать еще один известный эмулятор — Dosbox, чтобы запустить внутри винтажный MYZ80.
Dosbox присутствует в пакетах большинства операционных систем , для моей Mageia установка выглядит вот так:
urpmi dosbox
А так эта «матрешка» выглядит в работе:
Самое важное, ради чего были нужны заморочки аж с двумя эмуляторами — виртуальные диски, связанные с файловой системой DOS:
Поскольку Dosbox в свою очередь дает виртуализацию дисков непосредственно из хоста — получаем отличный способ быстро перебрасывать файлы в виртуальную CP/M.
Что важно при любой разработке с использованием эмулятора.
Собственно, то самое тестовое приложение EXMPL.COM на заглавной картинке было сначала скопировано в каталог с эмулятором:
cp ../../src/cpm_compilers/manx\ aztec\ c\ v106d/EXMPL.COM .
Затем импортировано в виртуальный диск CP/M:
Все это проще и быстрее, нежели описываемый ниже вариант с Mame и полной эмуляцией Kaypro II, но к сожалению не дает того самого «ощущения от использования», что это реальная машина тех лет.
Так что я пошел дальше в своих изысканиях.
— Проучить коллегу по опасному инженерному делу, за приличные деньги..
Моему гостю этого знать не следовало, но я готов был таким заниматься совершенно бесплатно и на регулярной основе.
— ..путем разработки под столь винтажный компьютер.
— Практически совершить уринотерапию..
— Боюсь, уринотерапия тут не поможет — коллега все же имеет немецкие корни. У каждой нации свои.. культурные особенности.
MAME
Mame это очень известный эмулятор самых разных машин и архитектур, как устаревших так и современных, когда-то созданный ради запуска игор, выгруженных из старых игровых автоматов.
С помощью Mame, мы получим почти настоящий Kaypro II, с оригинальным ROM и оригинальным образом загрузочной дискеты с CP/M — прямо из 80х.
Mame присутствует в пакетах многих дистрибутивов Linux и BSD, для Mageia устанавливается командой:
urpmi mame
Дальше нужно будет скачать загрузочный образ 5.25-дискеты с CP/M 2.2, например отсюда, затем специальные ROM-файлы для самого Kaypro II и его весьма специфической клавиатуры, отсюда.
Архивы называются kayproii.zip и kaypro10kbd.zip, их необходимо копировать как есть, не распаковывая.
mkdir kayproii-machine && cd kayrpoii-machine mkdir roms disks
cp ~/Downloads/kaypro*.zip ./roms/
7z e ~/Downloads/KAYPRO\ II\ 64k\ CPM\ vers\ 2.2.7z -o./disks/
mame kayproii -w -rompath ./roms -flop1 disks/KAY64CPM.IMD
Если все шаги выполнены правильно, появится заставка Mame с описанием эмулируемой машины:
После нажатия любой клавиши, загрузится сама CP/M и вы увидите такое приглашение:
Если сейчас выключить эмулятор и запустить снова — обнаружится, что система восстановила состояние на момент выключения, некий аналог режима сна в современных ноутбуках.
В большинстве случаев это помогает работе, но временами может мешать.
Особенно если учесть, что в 1987м не было подсистемы управления питанием (ACPI) и компьютеры выключались по нажатию кнопки на корпусе.
Никаких вам shutdown now или halt, только железная кнопка, только хардкор.
Чтобы сбросить сохраненное состояние — если оно вдруг начнет мешать, достаточно удалить этот файл в каталоге с настройками:
rm ~/.mame/sta/kayproii/auto.sta
Теперь расскажу про еще один важный нюанс, на изучение которого было убито больше всего времени и сил, чем на всю эту статью.
ФОРМАТ ФЛОППИ
Существует определенная хитрость с форматированием дискет для CP/M под Mame, связанная как с особенностями реализации в самом Mame, так и со спецификой Kaypro.
Да в те далекие времена существовали разные, несовместимые между собой форматы дискет.
У меня не получилось подцепить в Mame образ дискеты, созданный в cpmtools (см. ниже) и описанный ниже вариант оказался единственным работающим.
При запуске Mame нажимаем Tab, открывается меню системное меню:
Выбираем пункт File Manager, затем выбираем floppydisk2:
Задаем название, с обязательным указанием расширения .dsk, выбираем формат kaypro2:
Cозданный образ дискеты должен появиться в каталоге, из которого запускался эмулятор.
Запускаем повторно, с указанием созданного диска:
mame kayproii -w -rompath ./roms -flop1 disks/KAY64CPM.IMD -flop2 test2.dsk
Уже из CP/M запускаем программу форматирования:
initdisk
Выбираем формат диска для Kaypro, он идет самым первым в списке, поэтому нажимаем 0.
Программа форматирования сама выберет диск B, запустится форматирование:
После форматирования, можно перейти на диск B и убедиться что он читается, хотя и не содержит файлов:
Выключаем эмулятор и приступаем ко второй части концертной программы — разборками с пакетом cpmtools, для того чтобы записывать файлы с хоста на созданный образ дискеты.
Кстати образ с пустым, отформатированным под Kaypro II диском рекомендую сохранить, поскольку любая ошибка при работе с cpmtools (например если забыть указать формат -f kpii) этот диск убивает.
Если бы мне давали доллар каждый раз, когда я слышу эту фразу — давно бы стал миллионером..
— Наш коллега из организации, назовем его для простоты доктор Кригер, свято уверен, что только он один может.. как это он выразился?
«Создать новую электронную жизнь в древнем компьютерном теле».
— Надеюсь, ваш коллега хотя-бы вводит код руками, а не другим органом.
Гость посмотрев с удивлением, ненадолго задумался.
— Я уже упоминал, что вы с ним похожи?
CPMTOOLS
Это весьма известный набор инструментов для работы с файловыми системами CP/M, за авторством Michael Haardt.
К сожалению работа над оригинальным проектом прекращена, так что мы будем использовать более современный форк, уже из Github:
git clone https://github.com/lipro-cpm4l/cpmtools.git
./configure make
В результате сборки появится несколько бинарников, готовых к запуску:
Для всех последующих увеселений будут использоваться в основном эти два: cpmls и cpmcp.
Первый предназначен для просмотра содержимого образа диска, второй — для копирования внутрь файлов с хоста.
Копируем созданный образ диска в текущий каталог:
cp ../../work/kayproii-machine/test2.dsk .
./cpmls -f kpii test2.dsk
./cpmcp -f kpii test2.dsk README 0:README.TXT
Повторный запуск cpmpls должен показать содержимое диска с тестовым файлом:
NTVCM
Наконец последний эмулятор CP/M, который тоже придется использовать, хотя и опосредованно:
Virtual CP/M Machine. Emulates CP/M and the 8080/Z80 on Linux, MacOS, Windows, and real-mode 8086 DOS to run CP/M .com files
Кстати последний он еще и в том смысле, что это новая разработка, созданная (судя по коммитам) буквально пару лет назад.
Созданная, для того чтобы эмулировать систему из 80х, представляете?
Этот самый ntvcm придется собрать и добавить в переменную PATH, поскольку эмулятор создан тем же автором, что собрал репозиторий с компиляторами под CP/M и используется из скриптов для тестов и.. кросс-компиляции.
git clone https://github.com/davidly/ntvcm.git cd ntvcm make
Дальше просто добавляете этот каталог в переменную PATH:
export PATH=$PWD:$PATH
На этом подготовка к оргии празднику древней разработки наконец завершена и мы снова переносимся обратно в офис.
— Короче, коллега Кригер считает, что только он один в силах что-то написать для нашего Kaypro II.
— Что вообщем-то правда, поскольку остальные умеют все эти ваши компьютеры только включать и выключать.
Тут мой гость понял, что наверное не стоило показывать зависимость от будущего исполнителя.
— Но разумеется, у нашей организации есть и другие варианты.
— Пробовали привлекать «юные дарования», как самые перспективные. Закончилось.. не очень хорошо.
Достав из внутреннего кармана пиджака конверт, гость выложил на стол несколько фотографий.. полных неописуемого ужаса.
— Бедный парень.. это же парень, правда?
Увиденное на фото заставило шевелиться последние остатки волос.
— Когда его нашли, он был в бреду и ползал в ванной, обмазавшись собственными экскрементами.
— Весь пол, стены и даже потолок были изрисованы чем-то коричневым — символами, похожими на египетские иероглифы:
— Это распиновка EPROM, для Z80.
— Хм, гляжу вы действительно разбираетесь.
Тут гость привлек мое внимание, указав на одну из фотографий.
— Вот здесь, на стене было загадочное послание, оставленное.. аналогичным способом.
— Но его смысл мы так и не смогли разгадать.
— Нет идей что бы это могло значить?
НЕПРЕРЫВНОЕ ВЕСЕЛЬЕ
Возвращаясь к тому адскому репозиторию с компиляторами, наконец рассказываю основное:
как современному ребенку вести разработку для компьютера из 1987 года.
Цепочка необходимых действий выглядит следующим образом:
- Сборка;
- Тестовый запуск с помощью
ntvcm; - Запуск с помощью
myz80; - Запуск в Mame с образом настоящего Kaypro II;
- Сеанс рукоблуд.. ээ переход к следующему примеру.
И начнем мы с того самого примера, показанного на заглавной картинке в фоне.
собираем только самые простые варианты, так как каждый сложный имеет свою специфику, требующую отдельного описания.
Но даже в этом случае показать получится очень далеко не все — интересных компиляторов и тулчейнов в репозитории просто чудовищное количество.
Начнем разумеется с компилятора языка С, но.. особенного.
Aztec C
Спасая цитату из погибающей википедии:
Aztec C is a discontinued C programming language compiler for CP/M-80, MS-DOS, Apple II (both Apple DOS 3.3 and ProDOS), Commodore 64, early Macintosh, Amiga, and Atari ST. It was sold commercially by Manx Software Systems[1].
Судя по обнаруженным материалам, это был весьма известный и популярный продукт для тех лет.
А еще это вариация языка С до стандартизации, поэтому и называется не просто компилятором, а прям отдельным языком:
Aztec C — a programming language for a variety of platforms
Редкое для современных бюрократических реалий зрелище: компилятор, забивающий на стандарты и правила.
Так выглядела обложка руководства пользователя, версии для Amiga:
А вот так выглядел каталог с компилятором в версии для MSX:
Так что это был популярный и известный инструмент, с весьма скромными прайсами:
Сложно из 2026 года оценивать цены 1980х, но судя по прайсу выше, Aztec C был явно не самым дорогим софтом, тем более для разработчиков.
Переходим в каталог manx aztec c v106d и запускаем сборку примера:
./m.sh EXMPL
Да, обязательно КАПСЛОКОМ и обязательно без указания расширения, поскольку в скрипте идет вызов как компилятора, так и линковщика.
Будет собран COM-файл для CP/M, который проще всего запустить с помощью эмулятора от автора репозитория:
ntvcm EXMPL.COM
Так весь процесс выглядит в действии:
Теперь запустим на втором эмуляторе — MYZ80, чтобы убедиться в корректности только что собранного приложения.
Копируем созданный EXMPL.COM в каталог с эмулятором и запускаем его через Dosbox:
cp ../../src/cpm_compilers/manx\ aztec\ c\ v106d/EXMPL.COM . dosbox MYZ80.EXE
import EXMPL.COM
Этим действием, файл будет скопирован с хоста в виртуальный диск (дискету) CP/M, откуда его наконец можно будет запустить:
EXMPL
Наконец в качестве дембельского аккорда контрольного примера, показываю запуск и работу в Mame.
Переходим в каталог с cpmtools и выполняем:
./cpmcp -f kpii ../../work/kayproii-machine/test2.dsk ../cpm_compilers/manx\ aztec\ c\ v106d/EXMPL.COM 0:EXMPL.COM
Этим действием мы запишем наше собранное приложение EXMPL.COM в образ дискеты для Kaypro II.
./cpmcp -f kpii ../../work/kayproii-machine/test2.dsk
Должно быть видно содержимое образа дискеты, с новым файлом внутри:
Наконец запускаем максимально близкую к реальности эмуляцию компьютера Kaypro II в Mame:
mame kayproii -w -rompath ./roms -flop1 disks/KAY64CPM.IMD -flop2 test2.dsk
Чтобы не раздувать статью до совсем уж скотских размеров, для всех остальных компиляторов покажу только финальный запуск в Mame.
Пусть ваше больное воображение дорисует недостающее.
— Ладно, думаю мы договорились.
— Небольшое приложение для Kaypro II образца 1987 года, для причинения моральных страданий немецкому инженеру.
На этом мой гость задумался, как будто вспоминая важную деталь.
— Как же оно называется? Туда запихиваются такие плоские черные штуки? Д.. дди.. доо..
— Работу необходимо сдать на 5.25 дискете, я понял.
Это был первый раз в моей жизни, когда надо было сдать работу на пятидюймовой дискете.
Но с учетом роста цен на чипы памяти и SSD — думаю далеко не последний.
(гомерический хохот за кадром)
Закончив переговоры, мой гость попрощался и ушел, оставив меня в глубоких раздумьях об истинной природе вещей.
О том, что не надо упарываться, коль жизнь подбросила уже упоротый проект.
Чтобы потом не размазывать собственное говно по стенам и потолку в процессе отладки.
Но работа есть работа и вскоре я приступил к насилию над поисковыми системами, рыская по сети в поисках археотеха, способного помочь с разработкой под столь лютый винтаж.
Microsoft COBOL
Малоизвестный ныне факт, но компания Microsoft когда-то продавала компилятор COBOL:
Microsoft produced a COBOL compiler for CP/M. This product was also licensed to IBM as IBM Cobol Compiler.
Я собрал и запустил пример, который производит вычисление корня методом Ньютона:
./m.sh SQUARO
Для запуска помимо SQUARO.COM надо перебросить в эмулятор еще и файл RUNCOB.COM,иначе не заработает.
Так этот пример выглядит в работе, на фоне (в редакторе) можно заметить исходный код на COBOL:
Microsoft COBOL оказался хотя и интересным, но все же мало актуальным компилятором, так и не нашедшим широкого применения в свое время.
Врядли приложение на COBOL было лучшим вариантом, чтобы утереть нос немецкому коллеге-инженеру.
Однако был еще один важный вопрос, который стоило закрыть прежде чем выбрать наконец язык реализации.
alex0x08: нужны тайные знания ордена
alex0x08: надо программку одну запустить, на железе из 1987 года :)
alecv: эк же тебя жизнь скрутила..
alecv: нет чтобы как все — миксуешь себе Сlaude Соde с фентанилом да вбиваешь промпты, представляя что ты в LA..
Pro Pascal
Кто ищет — всегда находит, поэтому очень скоро обнаружилась еще одна невероятная дичь редкость:
Prospero Pascal is a full-featured Pascal that includes everything you need to begin writing stand-alone programs for your Atari ST.
Компилятор Паскаля для 8-битных компьютеров с блекджеком и блудницами с дополнениями и доработками:
Prospero Pascal is a superset of ISO Standard Pascal. In addition to the standard features, this package offers a number of extensions including dynamic strings, single- and double-precision floating-point arithmetic, an assembler-level interface, and separate compilation of program segments. Moreover, Prospero Pascal offers a high degree of portability.
Динамические строки, вычисления с плавающей точкой, поддержка ассемблерных вставок и все это в 1983м году!
На Паскале и под Atari, если кто вдруг не понял.
Разработкой занималась маленькая британская компания Prospero Software, закрытая к 1998му году.
В качестве примера была взята реализация "симулятора жизни":
./m.sh LIFE
К сожалению автоматически (из скрипта сборки) оно не линкуется, так что пришлось вызывать этот шаг отдельно:
ntvcm PROLINK.COM LIFE,PASLIB/S
Так эта программа выглядит в работе:
Все выше конечно весьма занимательные (для археологов и некрофилов) штуки, но самое интересное я приберег напоследок.
Пару дней спустя я сидел в кафе напротив Казанского собора, наслаждаясь утренним кофе и редким для этих мест ярким солнцем.
Внезапно мне в бок воткнулось что-то твердое и холодное.
— Не оборачивайся, не задавай вопросов.
Незнакомец что-то положил в карман моего пальто.
— Посылка доставлена, внутри найдешь пятидюймовую дискету с записью сборки для твоего заказчика.
— Достаточно воткнуть ее в дисковод.
— Но как вы.. как вы смогли записать ее в 2026м году?!
— Тайны ордена, посторонним знать не положено.
Давление на мой бок ослабло и незнакомец исчез.
Borland Pascal 1.0
Тот самый Паскаль, ставший для многих первой любовью первым языком программирования, поскольку именно на нем много лет обучали кодингу в школах и некоторых ВУЗах этой страны.
В результате чего появлялись на свет такие как автор, для которого Паскаль тоже когда-то был самым первым.
Но то что я сейчас покажу — не просто «какой-то там Паскаль» и даже не «какой-то там Паскаль» от фирмы Borland, ставшей законодательницей мод в паскалестроении.
А еще с первой версии стартовала история и знаменитой среды разработки, с помощью которой осуществлялась сборка и отладка программ.
Вот он, тот самый TURBO.COM, который позже превратится в TURBO.EXE:
Кусочек руководства пользователя с адресом «небольшой компании-стартапа» на просторах Калифорнии:
А я почему-то всегда был уверен, что Borland начиналась как европейская компания — удивительные открытия порой приносит компьютерная археология.
Для тестов, были скопированы TURBO.COM и HELLO.PAS на образ дискеты, который затем подключили в эмулятор.
Код HELLO.PAS это классический «Hello, world», с которого начинали свой трудовой путь и карьеру все программисты:
program hello;
begin
writeln( 'hello davidly' );
end.К сведению, davidly это ник дедушки-автора, собравшего сей сказочный репозиторий.
Так все действо выглядит в эмуляторе Mame:
НЕЛЕГКИЙ ВЫБОР
Итак, у меня набралось четыре варианта на выбор:
- Первая релизная версия Borland Pascal;
- Редкая версия Pascal, с крутыми (для 1983 года) фичами;
- Microsoft COBOL, без комментариев.
И конечно же Aztec C — реализация языка С до его стандартизации, настоящий артефакт.
Надо было выбрать что-то одно и я решил кинуть кости, оставшиеся в офисе со времен бурной молодости:
Мысленно назначив каждому варианту по грани, я подбросил кубик в воздух, поймал и медленно положил на стол, накрыв ладонью.
Но не потому, что верю в судьбу или так подсказал какой-то сраный кубик. Просто в любой непонятной ситуации я всегда выбираю Си.
И такой подход еще ни разу не подводил.
ПОСЛЕДНЯЯ ПРОВЕРКА
Старый, дореволюционной постройки дом в самом центре Питера, с гербом масонского ордена на барельефах разумеется привлекал внимание туристов, наделавших немалое количество селфи на его фоне.
Но мало кто даже из коренных петербуржцев догадывался, что находится внутри.
Меня встретили у неприметной двери, в которую надо было постучать определенным образом и строго в нужной последовательности.
Затем надев на голову черный мешок, непроницаемый для любого света, аккуратно сопроводили в тайное помещение ордена.
С незапамятных времен Советского Союза, этот тайный орден хранил уникальные знания и что самое важное — поддерживал в рабочем состоянии удивительные машины из далекого прошлого.
Спектрумы, Амиги, старые рабочие станции Sun и HP, DEC и даже Alpha.
Денно и нощно (обычно по субботам) монахи ордена без устали смазывали, паяли и окуривали все это благовониями, дабы ублажить «дух машины» обитающий в старом железе.
Орден ревностно хранил свои секреты и мне очень далеко не сразу было позволено хотя бы приблизиться к их древностям.
Но все же мне необходима была их помощь для последней проверки перед сдачей этого фантастического проекта:
запуска собранного приложения для машины из 1987го на реальном компьютере 1987го.
Меня сопроводили в специальную, строго охраняемую комнату, где на постаменте, под защитным стеклом находился артефакт из далекого прошлого.
Robotron 1715 — 8-разрядный персональный компьютер производства ГДР. Производился на заводе VEB Robotron.
Версия 1715M, сохраненная в ордене это «экспортный» вариант, когда-то давно поставляемый в Советский Союз.
С величайшим почтением нашептывая молитвы загрузки, послушник в черном балахоне приблизился к постаменту и приложил ладонь к считывателю отпечатков пальцев.
Защитное стекло начало медленно опускаться.
Не прекращая молитвенные напевы, послушник вставил кабель питания в древнее устройство и наконец нажал кнопку запуска.
Первыми ожили вентиляторы, оповестив своим гулом о начале пробуждения машины от долгого сна. Затем коротко пискнул спикер, сообщив об отсутствии неполадок в оборудовании.
Последним ожил древний ламповый монитор — лампам требовалось время для прогрева, поэтому надписи появились не сразу.
Наконец запуск и загрузка операционной системы SCP — аналога CP/M, но из ГДР были завершены.
Появилось приглашение ввода команд:
А>
Послушник взял мою пятидюймовую дискету с записанной сборкой и с благоговением вставил ее в древний дисковод, не забыв выставить специальную защелку в вертикальное положение.
Затем на не менее древней механической клавиатуре он ввел:
B: MESSAGE.COM
Дисковод ожил и издавая чудовищный скрежет начал загружать мое послание доктору Кригеру.
Через какое-то время на экране появились строки:
NE PUERO GLADIUM, DR. KRIGER. 04.03.2026
Что в переводе с латыни означает:
НЕ СТОИТ ДАВАТЬ БОЕВОЙ МЕЧ МАЛЬЧИКУ, ДОКТОР КРИГЕР.
Проверка удалась и написанное мой приложение для компьютеров 80х под CP/M действительно успешно запустилось на настоящем компьютере из 1987 года.
ЭПИЛОГ
Как мне позднее сообщили, коллега по опасному инженерному делу — доктор Кригер действительно впечатлился и на какое-то время перестал терроризировать сослуживцев сливая с них лишнюю кровь.
Обратив вместо этого пытливый взор на мою скромную персону и заставив немного побегать по Питеру от целой армии роботов.
Как это было, что за смуглая красавица спасла меня от неминуемой гибели и почему я больше не смотрю «Битву экстрасенсов» — обо всем этом вы узнаете из следующих серий.
В наше непростое время, когда практически все сколь-нибудь серьезные темы находятся под контролем или запретом, с риском уголовного преследования, остается только использовать «Эзопов язык», превращая излагаемый материал в сказку для непосвященных.
Если вас, дорогой читатель, волнует реальность описываемых событий, задумайтесь о том, что чип Z80 (и его клоны) является вторым по распространенности на планете, а операционная система CP/M c момента своего появления никогда не покидала прошивок промышленного оборудования.
Закончилась война во Вьетнаме, вышли первые «Звездные войны», развалился Советский Союз, вышли первый и второй «Терминаторы», появился Linux, затем Google — все это время продолжали работать станки, с программируемой логикой на Z80, а временами даже с управляющим софтом под CP/M.
Это на самом деле ведь никогда не заканчивалось.
Теперь задумайтесь, а как бы происходила проверка компетенций, прежде чем допускать до подобного проекта? Не тестовым ли приложением?
Но кто именно был гостем с военной выправкой думаю вам выяснять не стоит, это секретная информация.