# Downgrade #34

uav1606

Журнал "Downgrade" #34

### От редактора


Здравствуйте, уважаемые читатели.

Итак, вышел номер 34. Тема – «Компьютерная ностальгия». К сожалению, по теме номера статей прислали не так много, хотя, казалось бы, здесь есть где развернуться. Ну да ладно – в целом выпуск получился очень большой, статьи разнообразные, чего ещё желать?

В №34 сразу четыре новых автора: А.Е. Тарасов (о «Королевстве Эйфория»), О.Н. Чередниченко («Охота на лис»), В. Руденко (про Mac mini), И. Абрамов (о премии НДР).

Надеюсь, они и в дальнейшем будут присылать статьи в журнал.

Ещё здесь вы найдёте обзоры софта, юмор, интервью с создателями ТОП «Ижица» и многое другое. В общем, приятного чтения.

Как всегда, можете присылать свои предложения, пожелания, замечания, статьи и прочее на мой e-mail uav16060 [bobr-mutant] mail.ru


uav1606


### Теория Downgrade

#### Новости, события, комментарии


«КРИСС» в журнале «Радио»

Журнал «Радио» опубликовал описание компьютера «КРИСС». Компьютер собран на нескольких микроконтроллерах ATmega. Основой является ATmea1284P с внешней микросхемой статической памяти, на которой запущен эмулятор Z80. Еще несколько "мег" используется в качестве периферийных контроллеров.

Схема компьютера приведена в первом номере журнала за 2021 год, http://onepdf.ru/radio-1-yanvar-2021/, страница 28.

Кроме того, есть и сайт, посвященный компьютеру:

http://www.criss.fun


Вышла новая версия эмулятора BK

23 января на сайте http://gid.pdp-11.ru/ опубликована новая версия эмулятора BK - 3.11.2101.8545.

Этот эмулятор основан на исходниках Юрия Калмыкова и позволяет эмулировать компьютеры БК-0010-01, БК-0011 и БК-0011М с различными контроллерами FDD (стандартный, A16M, СМК-512) и HDD (самарский контроллер).

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

Скачать BK для Windows можно на указанном выше сайте.


Умер голландский инженер Лодевейк Оттенс

Работая в Philips, Лодевейк Оттенс (более известный как Лу Оттенс) со своей группой разработал в 60-е годы компакт-кассету, ставшую на многие годы стандартом для бытовых магнитофонов.

Также он принимал участие в разработке первого компакт-диска (CD), руководил различными подразделениями Philips, участвовал в разработке перспективной системы Video 2000.

Лодевейк Оттенс скончался 6 марта 2021 года в возрасте 94-х лет.


Утечка Windows NT 32-Bit v1.196

В конце декабря 2020 года была выложена очень редкая предварительная версия Windows NT, имеющая маркировку experimental pre-release development kit. На данный момент это самая ранняя известная 32-разрядная Windows (датируется сентябрём 1991 года).

Скачать эту версию можно на Old-DOS.ru:

http://old-dos.ru/files/file_1374.html#file22752


Обзор подготовили:

Вячеслав Рытиков (eu6pc)

Андрей Шаронов (Andrei88)

uav1606


#### ТОП «Ижица»: история отечественного игростроя


Вашему вниманию предлагается интервью с создателем и сотрудниками ТОП «Ижица» – объединения, которое в 90-е годы выпустило несколько интересных и самобытных игр (а также несколько других программ). Александр Лукьянов, Игорь Зельманов и Александр Мануйлович любезно согласились ответить на вопросы об истории организации и разработанных ею продуктах.

(Изначально мы связались с Александром Лукьяновым, а потом уже к беседе присоединились Игорь Зельманов и Александр Мануйлович.)


Вопрос Александру Лукьянову: Расскажите, пожалуйста, немного о себе (где и когда родились, проживали, учились... любая информация, которой вы сочтёте возможным поделиться).


Александр Лукьянов: Родился и вырос в Пензе. Учился в МЭИ, инженер-энергетик по специальности. После института вернулся (по распределению) в Пензу. Собственно, ничего особенно интересного…


Давайте восполним пробел в истории отечественной игровой индустрии. Расскажите, пожалуйста, о ТОП «Ижица». Чем являлась эта загадочная организация? (Мы привыкли к всяческим ОАО, ЗАО. Но ТОП никогда не встречали. :)

Кто стоял у её истоков и был вдохновителем, каким был первоначальный коллектив и род деятельности, планы, достижения, коммерческий успех, сотрудничество, ликвидация?


Александр Лукьянов: Основатель и вдохновитель Ижицы – Игорь Ильич Зельманов. Образовалась эта загадочная организация на основе отдела программистов, которым он, собственно, и руководил в Пензенском Научно-Учебном Центре (он же ПНУЦ).


Здание, в котором был ПНУЦ (весь 2-й этаж)


Первое время мы как-то существовали без названия, потом захотелось как-то обозначиться, отделить себя от ПНУЦа. Хотя реальное отделение де-юре произошло, когда я уже откололся. ТОП – аббревиатура от «Творческое Объединение Программистов», хотя там кроме программистов были и некоторые художники, и театральные режиссёры (один художник и один режиссёр :-). У Игоря была идея фикс – делать обучающие игровые программы, особенно на базе ТРИЗ, большим пропонентом которого он был (и остаётся по сей день). У него уже был опыт подобного – он был довольно знаменитым автором «генератора учебных курсов», программы для ЕС ЭВМ для генерации, как это ни смешно, именно разнообразных учебных курсов.

Организация была полностью некоммерческая. (Тогда вообще жить на продаже софта было довольно трудно, мало кому это удавалось. Пожалуй, только редактор «Лексикон» был более-менее продаваемым, да и то все его копировали направо и налево. Рынка программ как такового не было в принципе). Жили мы за счёт ПНУЦ – практически все были на зарплате, у всех были какие-то проекты ПНУЦ, которые мы выполняли. Ну и в остальное время на компьютерах того же центра делали что-то ещё для души. Собственно, тогда это было нормально, все так жили.

Пришёл я в ПНУЦ где-то в 91 году. Как программист ничего из себя не представлял, знал Фортран, Бейсик для TAP34 (это такая странная машина на i8080) и немного ассемблер. «Ижица» образовалась примерно году эдак в 92, наверное.


TAP-34. TAP34 – компьютер, на котором я начинал программировать. Флоппики у него 8”, раритет :-)

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

https://www.old-computers.com/museum/computer.asp?c=1298


Игорь Зельманов: Спасибо за интерес, ностальгические времена...

С аббревиатурой всё просто – ТОП «Ижица» – это Творческое Объединение Программистов «Ижица».


Ижица – потому что хотелось обозначить своё российское происхождение, тогда, в 1991 году, немного было российских разработчиков программ.  Кстати, многие были уверены, что мы всё воруем у американцев и переводим на русский язык. :)))

Творческое объединение – потому что тогда была лазейка в законодательстве, что интеллектуальная собственность, созданная личным трудом и проданная на сумму не свыше сколько-то – не облагается налогами. Вот поэтому мы были зарегистрированы как некоммерческая организация, и в названии мы постарались подчеркнуть, что наша цель – не извлечение прибыли, а помощь программистам в создании и продвижении интеллектуальной собственности.


Родилась «Ижица» из группы программистов в подразделении, которым руководил я. Мы занимались сначала обучающими программами на больших машинах – ЕС ЭВМ, потом  – на первых персоналках, и плавно от обучающих программ перешли к обучающим играм, как – в нашем понимании – высшей форме обучающих программ. Потом к нам примкнули люди со стороны – в первую очередь Михаил Михеев из политехнического института (ныне – доктор наук, профессор). Фактически он был нашим идеологом. Вообще, состав «Ижицы» был звёздным, никогда позже у меня не было такого коллектива. А мне довелось поработать в серьёзных компаниях – R-Style, Ozon, «Комус».

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


Сидят слева направо: Рита Левашова, Михаил Михеев, Игорь Зельманов, Елена Пальгова.

Стоят слева направо: Владимир Оглоблин, Валерий Решетников, Константин Молодцов, Наталья Михеева, Дмитрий Новиков, Наталья Володина, Александр Мануйлович


Сначала нам было комфортно, мы за зарплату занимались играми в рамках оплачиваемых госбюджетом НИОКР в Пензенском научно-учебном центре «Алгоритм»,  и ещё немножко начинали продавать. Мы ездили по образовательным конференциям, показывали игры. Все были в восхищении – в основном, конечно, из-за великолепной графики. Выставлялись на первых выставках – «Комтек», «Игромания».

Потом финансирование кончилось, нас вытурили в свободное плавание. Года три мы ещё потрепыхались – на финише мы выпустили комплект наших игр «Бизнес-игры» на CD-ROM – возможно, это был первый такой игровой продукт на рынке – в красивой упаковке, с документацией и методичками. В продаже он стоил $60. Для издания мы получили грант от Фонда Бортника. Но тогда буйным цветом расцвело пиратство, нас тоже спиратили, и продажи сошли на нет.

Всё закончилось, когда меня пригласили коммерческим директором в компанию «Кирилл и Мефодий», которая готовилась выйти на рынок с первыми высококачественными мультимедийными продуктами.

Трое наших ведущих программистов уехали работать в Штаты, и прекрасно там устроились.  Других сотрудников разобрали местные компании – в Пензе «Ижица» была крутым брендом. :)))

Кстати, мы даже проводили городские олимпиады школьников по программированию – что тоже не только добавляло нам PR, но и дало старт в профессии многим будущим  программистам.

У нас были так называемые дети полка – школьники 8-9 классов, которые работали с нами по вечерам на компьютерах девушек. Девушки не засиживались допоздна, а уходили, как нормальные сотрудники, домой, в семью. Самым замечательным персонажем был краснощёкий пятиклассник Серёжа Сандер – ныне один из самых известных экспертов по коммерческой недвижимости у нас в стране, хотя  давно живёт за рубежом.

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


Вопрос Александру Лукьянову: сколько человек было в коллективе «Ижицы» изначально? Ну и как менялся состав коллектива со временем – сотрудников становилось больше, кто-то уходил-приходил?


Александр Лукьянов: Трудно вспомнить, могу ошибаться и кого-то забыть. Как мне кажется, в изначальной группе было человек 7-8, потом к нам присоединились ещё человека 4-5. Все первые были сотрудники ПНУЦ, за исключением Михаила Михеева, нашего режиссёра, он сразу был сторонним, в нашей среде театральных режиссёров с опытом постановок театральных представлений не водилось. Последующий рост тоже был в основном за счёт сотрудников ПНУЦ из других отделов. Вроде бы только ещё один был совсем со стороны – Валерий Решетников. Ещё было много людей, которые вращались вокруг, наши знакомые и друзья, которые приходили, когда хотели, и помогали, где хотели. Мы тогда вообще больше напоминали некий клуб, нежели организацию разработчиков.


Ушёл первым, наверное, я – переехав жить в Москву. Мы потом ещё долго общались, я приезжал «в гости», но я уже в проектах не участвовал (я тогда занимался мультимедиа проектами «Интелкома»), и «Ижица» выделилась в отдельную организацию уже без меня.


Вопрос Игорю Зельманову: Александр Лукьянов упомянул, что Вы интересуетесь ТРИЗ - расскажите немного про это - что это такое, какие у Вас были (и есть) проекты на эту тему и т.д.


Игорь Зельманов:  Про ТРИЗ... Было 3 касания:

1. Книга «Алгоритм изобретения».

2. Подборка статей в журнале «Техника и наука», по которым мне на дипломе за месяц было велено написать программу, которая бы делала изобретения по ТРИЗ.

3. Знакомство с Альтшуллером, сперва заочное – эпистолярно, затем – вживую, на семинарах в Пензе, которые были организованы по моей инициативе.

Про книгу: эта книга попалась мне на книжном развале в букинистическом магазине в Одессе, где я гостил у своей тётушки после окончания первого курса университета (поезд Новосибирск - Одесса, отдельное приключение!). Название возмутило! Ну, совсем писаки обнаглели! Изобретения по алгоритму! Ради красного словца... Полистал... Чёрт, да тут такое! Действительно, алгоритм решения изобретательских задач... Купил, проглотил за день. А потом... Лет через 5. Письмо лично Генриху Сауловичу, мгновенный ответ. Приглашение к нам в Пензу провести семинар (благо, отец был директором дома научно-технической пропаганды), личное впечатление – он пришелец! С тех пор – ярый поклонник ТРИЗ. И пусть я не стал профессиональным тризовцем, ТРИЗ – это уверенность: для любых задач можно найти решение.

У нас в своё время родилась идея – сделать серию учебных игр на развитие творческого воображения и ТРИЗ. «Системный лабиринт» – это первая и единственная игра в серии. Вторую – «Космический изобретатель» (Astroinventor) – в полном объёме реализовать не удалось. Не хватило технологического мастерства.


Игра «Системный лабиринт» (она же «Замок»)


В Сети можно найти совсем немного ПО, разработанного ТОП «Ижица». В первую очередь это игры: «Матрёшки», Train, «Системный лабиринт» («Замок»), «Бизнес», «Цена&Спрос», Stock-marker, «БРОКЕР. Первые уроки», проект игры «Космический изобретатель», а также различные тесты.

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


Александр Лукьянов: Да, пожалуй, из хоть как-то начатого – это всё. Были попытки сделать что-то на базе движка от Leisure Suit Larry, который мы разобрали на части – но оно как-то не пошло, инструментарий мы не написали, а на псевдоассемблере от этого движка писать было очень трудоёмко. Идеи были – с реализацией были проблемы. Собственно идея «Матрёшек» мне пришла в голову именно как идея «простой игры для начала», которую мы могли быстро соорудить на тех технологиях, что у нас были готовы на тот момент. «Паровозик» вроде бы уже был попозже, вместе с «Лабиринтом».


Игорь Зельманов:  Да, Вы перечислили практически все. Был ещё технологически продукт – наша библиотека функций для игровой анимации SPRight Library. Покупателей было немного, но одним можно было погордиться – одна московская компания («Мир детства») разработала примерно 30 игр для малышей, используя нашу библиотеку.


Игра «Паровоз»


Игра «Матрёшки»


Не осталось ли у Вас самих игр или их исходников? Особенно каких-то неопубликованных малоизвестных версий? Может быть, поделитесь с читателями?


Александр Лукьянов: Дима Новиков выкладывал все наши игры, но не знаю, можно ли их скачать. У него они точно есть. Плюс они есть у Игоря Зельманова и у Вячеслава Ефремова, Вячеслав их использовал в своей практике обучения детей ТРИЗ. Вот его последний пост в FB на эту тему:

https://www.facebook.com/vyefrem/posts/1490793170992850

У меня были исходники и некоторые варианты игр, плюс моя спрайтовая библиотека (которая SPRight), но после продажи московской квартиры я это всё порастерял. Может быть, у ребят осталось. Дима Новиков у нас был очень хозяйственный, наверняка сохранил.


По поводу библиотеки спрайтовой анимации SPRight Library, разработанной ТОП «Ижица». Можете рассказать немного подробнее, что это за библиотека, где она использовалась? Может быть, у Вас сохранился экземпляр полной версии?


Александр Лукьянов: Нет, исходников у меня не сохранилось. Это был результат моего чтения документации по EGA и любопытства. Я придумал свой формат сжатых графических файлов на основе алгоритмов сжатия Хаффмана и ZIP в моей реализации (LGR-ки). Плюс написал простенькие тулы для создания спрайтов из последовательности рисунков. Всё это было для 16-цветной графики EGA\VGA. Для экономии места в памяти часть данных хранилась в видеопамяти, в невидимой зоне. В общем, ничего революционного, но работало неплохо и места занимало мало. Написано всё было на С плюс ассемблер в критических местах.


Прим. ред.: позже Дмитрий Новиков предоставил установочный комплект полной версии SPRight Library, за что ему огромное спасибо, скачать библиотеку можно здесь:

http://dgmag.in/N34/SPRIGHT.zip

Другие перечисленные игры можно скачать здесь:

https://www.old-games.ru/catalog/?developerCompany=2118

https://www.old-games.ru/forum/threads/ischutsja-raritetnye-rossijskie-igry.91772/page-2

https://archive.org/details/arbt_20200320


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


Александр Лукьянов: Особого плана разработок не было. Работали как свободные художники, кому что в голову пришло. Обсуждали, правда, всё совместно.

Подавляющее большинство графики (а может быть, даже вообще вся) – авторства Александра Мануйловича. Он у нас был единственный художник, хотя и с техническим образованием – он окончил ФизТех. Писали на «Борланд С++» и на «Борланд Паскале», все tools были самодельные. На каждую игру – один-два программиста. Игорь у нас был продукт-менеджер и общее руководство в одном лице. Я занимался графической библиотекой и немного играми, вот «Матрёшки» вроде бы полностью я писал. Хотя могу и соврать. «Лабиринт» была моя идея, но реализовывал уже не помню кто, я её точно до конца не доводил. Костя Молодцов как сел на «Цену и Спрос», так на ней и сидел, хотя идея была Игоря и обсуждали мы игру все вместе. Вроде бы он потом engine от неё даже продал какой-то московской команде, но это уже было без меня.


Вопрос Александру Мануйловичу:  Какое ПО Вы использовали для создания графики и анимации для игр? Как проходил процесс создания графики – что и как обсуждалось, делались ли эскизы, учитывались ли какие-то особенности программирования и т.п.?


Александр Мануйлович: Инструмент для рисования тогда был только один – Paintbrush. Помню, как специально докупили два мегабайта оперативной памяти, чтобы он загружался целиком, а не тарахтел с диска. Показалось таким облегчением! Ещё был сканер. Вначале black-n-white, ручной, похожий на гигантскую мышь. Потом что-то более похожее на правду появилось. Но обработка изображений всё равно велась почти попиксельно. Фотошопа ещё никто и не видел. И никакого RGB, какие-то палитры, уж не помню, сколько там было цветов. Тридцать два? Все градиенты – сеточки, никаких слоёв.


Фоновых картинок было не так много. В «Замке» все больше какие-то подземелья и просто картинки с предметами, как открытки. Рисование больше напоминало вышивание. Там ещё были какие-то «просто игры», без ТРИЗ'а. Про паровозик, помню. Кажется, до коммерческой версии так и не довели, но он был такой, визуально симпатичный. В него в самом деле можно было играть. )


Фазы для анимации собирал на одной картинке с технической разметкой, а потом лукьяновская программа их собирала в объекты для программы. Так же и со шрифтами. Сканировал буквы из журналов, чистил и дорисовывал, собирал на одной картинке с разметкой, а потом уже самопальная программа превращала их в код. Один файл — один кегль, никакого автоматического масштабирования. Т.е. всё было такое – на коленке, если что-то нужно – сделай это сам.


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


Потом уже появились почти современные графические пакеты Photoshop и Corel. Помню, как устанавливал этот Corel с коробки дискет. Тут я увлёкся полиграфическим дизайном и рекламой и решил, что компьютерных игр мне довольно. Поначалу пытался как-то совмещать, но долго это не продлилось. А, да, помню ещё, как делал какой-то рекламный ролик для «Ижицы», рисовал в Paintbrush, а собирал всё вместе в С++.


Какое «железо» Вы тогда использовали? Т.е. какие компьютеры у вас были, как они менялись с течением времени?


Александр Лукьянов: Начинали на «Правцах» – аналог IBM XT от наших болгарских друзей. Это были «личные компьютеры общественного пользования», на 2-3 программиста был один «Правец». С жёстким диском на 20 мегабайт (круть неимоверная по тем временам). CGA-графика. На этом я учил С по Кернигану и Ритчи. Потом, постепенно, ситуация начала улучшаться, ПНУЦ начал зарабатывать на компьютерной учёбе, торговле компьютерами и разработке программ (в основном бухгалтерских) – и у нас появились клоны IBM AT на i286 с EGA-картами. Потом мне попалось в руки руководство IBM по низкоуровневому программированию карт EGA – и это было начало библиотечки SPRight. Впрочем, насколько я знаю, тогда много кто делал спрайтовые библиотечки, популярное это было занятие.


«Правец» (источник – http://www.pravetz.info/pravetz-16es.html)


Почему так получилось, что достаточно много игр посвящены именно финансам и экономике? Были ли у «Ижицы» идеи или попытки разработки игр в других жанрах, более динамичных? К примеру, аркад или стратегий реального времени?


Александр Лукьянов: Это было сознательное решение Игоря. Он считал, что у таких игр был шанс в то время, ну и они были где-то как-то «обучающими», Игорь считал это основным в нашей деятельности.


Одна из экономических игр «Ижицы» – «Цена & Спрос»


Можно ли назвать «Ижицу» успешным коммерческим предприятием? Может быть, вы вспомните приблизительное количество клиентов и/или количество единиц проданного ПО?


Александр Лукьянов: Я бы вообще «Ижицу» на начальном этапе не называл бы «коммерческим предприятием». Т.е. мы старались чего-нибудь продать из наших разработок, но реально на эти продажи мы бы не прожили. Продажи были единичные, и какого-то дохода они не приносили. Но это моё мнение, может быть, Игорь думает иначе. Они, вроде бы, как-то существовали после ухода из ПНУЦ, но я к тому времени уже уехал в Москву.


Игорь Зельманов: Нет, коммерчески успешным предприятием мы не были. У нас было успешное сотрудничество с компанией «1С» – мы стали их поставщиком, и больше половины продаж приходилось на сеть «1С». При этом мы получили статус дистрибьюторов, и в качестве оплаты за игры могли покупать продукты «1С: Бухгалтерии» с хорошими скидками, чтобы продавать у себя в городе. У нас был недолгий период быстрого роста продаж, удвоение каждый месяц примерно в течение полугода – а потом спад практически до нуля: школы перестали покупать наши игры. Как мы потом поняли, началась первая чеченская война, и образованию обрезали финансирование. Всего клиентов было несколько сотен, если мне память не изменяет, 300-400 покупателей. Возможно, и меньше.


Каким образом и на каких носителях распространялся ваш софт? В Сети до сих пор функционирует ваш сайт (официальный?) http://izh-sup.chat.ru/, однако на нём, к сожалению, нет возможности что-то скачать.

Также мы знаем, что ПО от «Ижицы» выпускалось и на СD-дисках. (Существует как минимум один образ – «Бизнес игры»). Это был единичная попытка освоения компакт-дисков, или были и другие? :)


Александр Лукьянов: Компакт-диски тогда были довольно дорогим удовольствием, софт ходил в основном на дискетах. Была попытка продавать CD с набором игр, но это всё было уже позже, когда Игорь договорился с «1C» о продаже наших игр (если я, конечно, ничего не путаю). Это, наверное, лучше у него спросить.


Игорь Зельманов: Сначала игры продавались на дискетах, в пакетиках А5, которые мы сами клеили, с краткой документацией. На дискетах были напечатаны этикетки. Всё было очень пристойно. В те времена программы распространялись просто копированием с дискеты на дискету.

У нас был ПРОДУКТ. Даже защита от копирования была – разработки одной пензенской фирмы.

«Бизнес-игры» – это был единственный продукт на CD, куда уместилось всё, что было нами наработано.

Фирма «1С» обладала на тот момент единственной сетью сбыта по всей стране, и сотрудничество с ней было очень выгодным.


Александр Лукьянов: Да, мы там что-то такое пытались делать, привязывать игры к дискетам и тому подобное. Без особого, впрочем, успеха. Делалось это на уровне системных вызовов чтения нестандартных секторов диска. Дальше этого мы не пошли, насколько я помню.


Диск «Бизнес-игры 2000». Источник фото – https://archive.org/details/arbt_20200320


На Old-Games выложены игры «Ижицы» для DOS. Были ли попытки создать что-то для Windows 3.1?

Как вообще относились создатели «нединамичных игр» – логических головоломок, карточных игр, стратегий – к этой оболочке? Было ли у вас желание сделать что-то для неё?


Александр Лукьянов: Компьютерные тесты по экономике были сделаны для Windows. Я даже привёз в Пензу легальную версию Windows 3.0, подаренную мне ребятами из «Микрософт» в 92 году, незадолго до выхода Windows 3.1. Я из моей первой поездки в штаты приволок кучу книг по программированию, справочников и софта. А игры для Windows тогда писать казалось странной идеей – компьютеры были довольно-таки слабенькими, графика под Windows была так себе. Мультимедиа тоже только-только появлялась.


Как сложилась судьба коллектива? Общаетесь ли вы с кем-нибудь из них?


Александр Лукьянов: Все разошлись по своим дорожкам. Я уехал в Москву, а потом перебрался в штаты. Чуть позже ко мне присоединились Костя Молодцов и Валерий Решетников. Игорь Зельманов перебрался в Москву, там и сейчас. Саша Мануйлович и Дима Новиков в Пензе, насколько я знаю. Остальные тоже, вроде бы, в Пензе. Встречаемся иногда, первое время встречались чаще, сейчас уже довольно редко.


Моё фото с сыном, примерно 98 год, уже в штатах


Случались ли в вашей профессиональной жизни в то время какие-нибудь курьёзы, или смешные случаи? Может быть, что-то запомнилось?


Александр Лукьянов:  Да, в общем, у нас вся жизнь была, как один курьёз. :-)


Игорь Зельманов: С библиотекой SPRight связана забавная история об одной замечательной ошибке, которая произошла при разработке функций управления спрайтовой графикой. Спрайт - это графический объект, который перемещался по экрану как единое целое.


Программной разработкой занимался Саша Лукьянов, а картинки для тестов делал талантливый художник Саша Мануйлович.


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

Не надо удивляться! Это год был примерно 1990-й, и того обилия библиотек, которые сейчас есть для управления графикой, тогда ещё  не существовало. Кстати, потом мы узнали, что аналогичную разработку вела компания Gamos, только они разрабатывали её на Borland Pascal, а мы на Borland C++.


Так вот, картинки для теста были нарисованы замечательные – наш художник нарисовал маленького гномика с туеском за плечами и набор отдельных кадров спрайта для хождения вверх-вниз по экрану, вправо-влево и поворотов при смене направления движения с одного на другое. Всего примерно 36 или  больше кадриков. С большим трудом удалось заставить гномика двигаться по экрану быстро и не дёргаясь. Для управления этим гномиком все эти направления были запрограммированы на клавиши управления курсором. Это была замечательная победа! Первые варианты функций обеспечивали передвижение со скоростью сонной черепахи. Однако путём неимоверных усилий и неординарных решений удалось добиться вполне приличной скорости движения по экрану – не хуже, чем в популярной тогда игрушке «Принц Персии».

Следующий этап – движение нескольких объектов одновременно.

Для тестирования наш художник нарисовал в пару мальчику-гномику маленькую девочку косичками и мячиком, которая  – ля-ля-ля – скакала вприпрыжку, платьице развевалось, всё прекрасно.

Управление её движением вперёд-назад вверх-вниз и повороты повесили на другие клавиши, чтобы можно было независимо двум игрокам управлять каждый своим объектом.


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

И вот тут как раз проявился тот забавный эффект ошибки, ради которого рассказываю эту историю. При встрече друг с другом гномик и девочка мигали, попеременно появляясь на экране, создавая впечатление какого-то неприличного занятия. :))) И правда, когда они расходились – происходило чудо! Их количество удваивалось! После встречи на экране появлялись 2 девочки и 2 гномика! Причём они уменьшались в размерах – становились вдвое тоньше, если встречались при вертикальном движении, и вдвое ниже - если встречались при горизонтальном передвижении. И эти пары двигались синхронно. Поглазеть на это чудо собралась вся «Ижица», и хохот стоял невообразимый!


Самое поразительное состояло в том, что когда я рассказал эту историю ребятам из «Геймоса» – они тоже заржали: когда они разрабатывали свою библиотеку спрайтов на Паскале – у них была точно такая же ошибка!


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


Вопрос Александру Лукьянову: Когда и почему вы покинули «Ижицу»?


Александр Лукьянов:  Я встретил свою будущую супругу и перебрался к ней в Москву. Заодно и нашёл работу в небольшой организации, что делала контрактную работу для фирмы «Сименс» (софт для контроллеров управления электрическими подстанциями), что по тем временам неплохо оплачивалось. Параллельно работал в фирме «Интелком», мы делали развлекательные мультимедиа CD по заказу группы «СОЮЗ», довольно крупный издатель музыкальных и мультимедиа CD тех времён.


Вопрос Игорю Зельманову: Когда и почему ТОП «Ижица» прекратила свою работу?


Игорь Зельманов: Всего ТОП «Ижица» просуществовала 6 лет, с 1991 по 1996. Прекратила существование потому, что потерпела финансовый крах. К сожалению, эта судьба постигла не только нас – с тех времён из пятёрки фирм в живых осталась только фирма «Мэддокс».


Почему после распада ТОП на том же официальном сайте не выложили все игры в открытый доступ, и кому до сих пор принадлежат авторские права на них? :-)


Игорь Зельманов: Думаю, это вполне можно сделать. Надо только всё аккуратно подготовить. Напомню, игры были разработаны ещё под 286 процессор, под MS-DOS. Сейчас их довольно непросто запустить – благо, существуют симуляторы DOS под Windows. Надо будет этим заняться.


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


Александр Лукьянов:  Я уехал без особых проблем. Случайно нашёл объявление о найме программистов в недавно образовавшихся news-конференциях в новомодном тогда интернете. Нам его оплачивала фирма, доступ по модему в ночное время, вся романтика Рунета в 98-м году… Если я правильно помню, около $100 в месяц это стоило, бешеные деньги по тем временам.

Процесс оформления занял почти год, но я никуда не торопился и не особенно верил, что я куда-то поеду. Так что всё прошло нормально.

Причины – обычные колбасные. Я тогда уже несколько лет работал по контрактам на «Сименс», и мне поднадоело ездить в длительные командировки (по 2-3 месяца), отрываться от семьи. Хотелось некоторой стабильности. Ну и денег, конечно, тоже. Новая работа была связана с геномикой и вычислительной биологией, ничего об этой области я, на момент принятия меня на работу, не знал. Пришлось учить на ходу.

Потом помогал друзьям сюда перебраться.


Кем вы работаете сейчас? Над какими проектами трудитесь? Пригодились ли вам в последующей жизни знания и опыт, полученный в ТОП`е?


Александр Лукьянов:  Официально должность называется «системный архитектор», но реально это некоторая смесь работы девопсом, программистом и совсем немного системным архитектором. Область – вычислительная биология, геномы и прочее в этом же роде. Облачные и распределённые вычисления.

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

Знания и опыт, накопленный в «Ижице», конечно же, пригодился. Если ещё учесть, что до прихода в «Ижицу» я вообще, можно считать, не являлся программистом… :-)


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


Александр Лукьянов:  Нет, насколько я знаю никто, этим не занимался.


Как вы вообще сейчас относитесь к старым играм (не только от «Ижицы») – может быть, «ностальгируете» – вспоминаете/играете во что-нибудь из тех времён? (Скажем, для DOS.)


Александр Лукьянов:  Особенно играть как-то времени нет, но за индустрией слежу. Интересно. Многие идеи, что у нас были тогда – до сих пор не реализованы. Интересно, дойдёт ли до них дело.


Большое спасибо всем вам за интересный рассказ, благодаря ему история «Ижицы» не канет в веках и, возможно, вдохновит кого-то заняться разработкой игр. :-)

Удачи в ваших начинаниях и всего доброго!


На вопросы отвечали:

Александр Лукьянов

Игорь Зельманов

Александр Мануйлович


Вопросы задавали:

Вячеслав Рытиков (eu6pc)

Андрей Шаронов (Andrei88)

uav1606


#### Как я подсел на ПК


Были над моей колыбелькой развешаны компьютерные мышки и LPT-провода? Не помню :-) Но то, что впервые я пристрастился к отцовскому IBM-486 – это факт. Для того времени, а был это год 1993 – машина была достаточно современная. По крайней мере, в Ташкенте у моих детских друзей компьютеров не было.


В первый класс мы ещё не пошли, и времени было предостаточно. Ну и, конечно, все бегали играть в «Цветные линии», «Олимпийские игры» и «Прехисторика» ко мне домой. Вторая часть приключений доисторического мужика с дубинкой была на тот момент настоящим хитом. Затем появились первые маленькие звуковые колонки, которые нас всех удивили. «Окошки 3.1» и первые MIDI-треки с песнями Цоя и «Наутилуса», в количестве пяти штук. А что вы хотите, винчестер был двухгиговый. Четверть места занимал «Вынь-95», установленный впоследствии...


Незабвенным этапом приобщения меня к ПК было чтение умной компьютерной книжки. Которая претенциозно называлась «Энциклопедией профессора Фортрана». Очень многие первые сведения об ЭВМ для себя я почерпнул именно оттуда. Путешествуя по книге с друзьями – котом Иксом, гусеницей и самим  всезнающим прохвессором. Было очень интересно.


Дальше была школа и попытки приучить меня к таблице умножения. Путём установки в загрузчик компа хитрой проги. Которая не пускала никуда, пока не прорешаешь десять случайных примеров. Впрочем, таблицу я так и не выучил до сих пор. Пятью пять ещё туда-сюда, а дальше начинаются сложности. Неудача в запоминании объясняется спрятанной в ящичек стола шпаргалкой с ответами... Лучше всего этот случай описан в заметке «#257: Вспомнить всё» из текста «IT Happens. #1-800» в разделе «Юмор» нашего журнала. Я, кстати, и есть тот бывший ребёнок.


Одним домашним компом игрульки не ограничивались. Сказочным замком и одновременно пещерой сокровищ являлся для меня клуб игровых автоматов. Сваренный из железного каркаса и по форме напоминающий НЛО. Заходя внутрь, можно было увидеть множество многоруких и раскаявшихся бандитов – таких как, например, «Морской бой». И унюхать прокуренную атмосферу. (Для меня это один из вариантов памяти запахов. Проходя по улице и чуя какой-нибудь специфический запах, вспоминаю определённую компьютерную игру, связанную с ним.) А эти чёрные ручки и резиновый кожух перископа... С дощатой ступенькой под ногами для самых маленьких. Само здание, к сожалению, не сохранилось, но оно было похоже на краснодарский вариант, правда, без окон[1]:


А это уже тарелка ташкентского цирка (одно из мест работы автора):


...под куполом. Но уже другого, опознанного нелетающего объекта. С рядом расположенного рынка Чорсу.


Титанический труд провели авторы музея советских игровых автоматов в Питере и Москве по адресу http://15kop.ru/

В одной из серий Лапенко про Терминатора действие проходит именно там.


Открытие первых игровых клубов с приставками шло параллельно с такими же, но перламутровыми... со стационарками, в общем. Тройки, четвёрки – четыреста восемьдесят шестые модели были тогда лучшими. Админы были хитры и не давали коды от второго «Дума» просто так. Но я был хитрее и умудрился записать iDDqD на бумажку.


Впоследствии учёба перемежалась с попытками поиграть в компьютер. К последним классам школы последнее уже превалировало. Мой школьный товарищ даже заметил, что если бы он не тратил все свои карманные таньги на игровушки – то вполне уже мог бы купить компьютер себе домой.


К школьному периоду относятся и первые опыты в программировании. В десятом-одиннадцатом классах нас, наконец, допустили в комнату с «Правцами». Благо, что они выпускались у нас же в Ташкенте, и насыщенность ими школ была очень высокой. Самым забавным эпизодом был момент, когда я записал в тетрадку какую-то простенькую прогу с правцового зелёного экрана. Придя домой, я попытался воспроизвести её у себя на машине. И где бы вы думали? В первом попавшемся текстовом редакторе. Хм, да – в «Блокноте» Винды. Очень удивился, что прямо из «Блокнота» она почему-то не работает...


После проигрывания множества человеко-часов впустую я задумался о киберспорте. Перед поездкой на ВЦЖ встал вопрос – в какой дисциплине я силён. Оказалось, что по «Старкрафту». Победить корейцев на их территории, да ещё и в чемпионате, где спонсором является корейская же фирма – не представлялось возможным. Тем более у южан эта игра вообще религия. С их шестьюстами кликами по мышке в минуту. Иногда, правда, вторые места удавалось занять русскому или немцу... Но редко. Ладно, хоть поучаствовать. Я тренировался, смотрел репы (записи старых игр) и повышал уровень мастерства. Как вдруг пришла новость о том, что у федерации нашей страны по SC не нашлось финансов для отправки игроков на соревнование. Хотя на отправку команд по «Контре» и «Фифе» деньги нашлись... Сразу видна разница в опыте наших спортсменов по этим дисциплинам.


Финальным заходом в игровой клуб для меня были проводы товарища на ПМЖ в Россию. Отметить решили ночной сессией в игровых. После этого я окончательно вырос и стал использовать компьютер по более рациональному назначению. Хотя для того чтобы описать какую-либо игрушку в журнале, её всё равно приходится устанавливать и запускать.


За сим откланиваюсь, ваш


Владимир Веселов (Режиссёр Антаресов)


### Downgrade-видео

#### А я живу в Компьютерном городе


Когда познакомился с мультиком – честно скажу, толком не вспомню. Услужливая память говорит, что по выходным мы с мамой приходили в гости к бабушке. Пока мама и бабушка на кухне решали и обсуждали дела хозяйственные, ваш покорный слуга оставался в большой комнате в компании телевизора. Почему-то помнится, что именно в выходные были просмотрены первые выпуски «Розовой пантеры», клип на песню Доктора Александрова «Стоп наркотик» (чудесный выбор для ученика начальной школы, если не подготовительной группы садика! :-)). А ещё почему-то кажется, что первые серии сериала «Компьютерные войны» я тоже смотрел именно в выходные. Правда, потом почему-то, кажется, более поздние серии мы смотрели уже в будние дни в компании отца.

Было это давно и, как оказалось, достаточно хорошо забылось – «Дисней-клуб» по выходным как-то запомнился куда сильнее. Но приключения в странном городе тоже окончательно не затёрлись. Уже пять, максимум десять лет назад попался ролик «Забытые мультсериалы девяностых». Что-то из показанного вспомнилось – например, «Приключения Джонни Квеста» или то, что считали приключениями Супермена, но автор ролика назвал мультсериал «Герой боевика». Однако мультсериал про вампиров-упырей не вспомнил ни я, ни Елена, когда ей потом рассказал – она тоже не смотрела. И среди этого всего незаслуженно забытого («Большое путешествие Болека и Лёлика» не называлось – оно, по мнению автора ролика, достаточно известно, видимо)... Так вот, среди незаслуженно забытого ваш покорный слуга увидел знакомых персонажей: Хранителя Боба, Энзо, Дот Матрикс, Мегабайта, Гексу (не всех, возможно :-) – иначе бы обзорный ролик превратился бы в рецензию на один мультсериал :-)) и упоминание зловещего Пользователя. Мультфильм вспомнился, но я его тогда не пересмотрел, а на ус намотал. Конечно, детские воспоминания несколько отличаются – почему-то казалось, что дома города-Мейнфрейма должны были напоминать DIP-корпуса микросхем, но тут, возможно, фантазии от разглядывания бескорпусных картриджей «Денди» :-)... нет, не напоминают, а герои не используют дискеты в качестве скейтов... жаль, сейчас было бы круто :-).

Время же шло – в журнале появился раздел «Видео», где сперва публиковались рецензии на YouTube-каналы и ролики, потом и фильмы, потом ваш покорный слуга тоже начал, с подачи Александра Чуклинова, писать для этого раздела... и этой зимой (не буду врать, что мысль появлялась несколько раз, хотя, возможно, что и появлялась) решил наваять рецензию. То мультфильм соответствовал теме журнала, то нет (в ностальгию по нулевым не тянул :-)), но победила тема компьютерной ностальгии, а этой теме рассказ о мультфильме, который худо-бедно знакомил вашего покорного слугу с компьютерным миром, думаю, будет соответствовать. Итак...


Место действия


Где-то в сети шурша кулерами, размышляя процессором, жужжа SCSI-винтами, а то и чем более мощным и скоростным, находится Мейнфрейм.

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

(В «Википедии» предполагают, что это компьютер обычного домашнего пользователя.) Зритель же видит достаточно небольшой по площади, но по населённости вполне себе средний город. Город разделён, видимо, на уровни, так что нашлось место и светлым скверам, и тёмным углам, и приличному кафе, и грязной забегаловке.


Рис. 1. В центре Мейнфрейма


Что представляют собой обитатели и строения Мейнфрейма с точки зрения системы – не очень понятно. Разве что районы имеют названия секторов, и если часть находится под контролем системы, а обитатели зарегистрированы и имеют значок (см. рис. 2), то часть, как мы увидим в последних сериях первого сезона, находятся под контролем вирусов. Причём нам показан только один сектор, жители которого желают получить «гражданство», но, думается, он не единственный.


Рис. 2. Значок регистрации в системе. Видимо, все, кто не имеет такого значка, будут стёрты в случае перезагрузки и\или восстановления системы


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

Вот в таком городе и обитают наши...


…Герои


Практически всё повествование вертится вокруг Хранителя Боба, Дот Матрикс и её младшего брата Боба.


Рис. 3. Все трое на заставке мультфильма


Хранитель Боб, как утверждает закадровый голос в заставке первого сезона, пришёл в Мейнфрейм из сети. В популярных сейчас экранизациях комиксов «Марвел» подобный персонаж оказывается местным супергероем – рыцарем без страха и упрёка. Достаточно совестливым товарищем, чтобы не пройти мимо случившейся беды, достаточно сильным, чтобы надавать по щам злодею или бандиту, а то и бывшему товарищу, ступившему на кривую дорожку, но не таким сильным, чтобы победить зло окончательно. Исходя из последнего, герой должен каким-то образом договариваться со злодеями – хитростью ли, призывами к совести, кошельку или же в духе «Ну вырежешь ты всех, кто с тобой не согласен... И чего?». Примерно также ведёт себя и Боб. Плюс, именно его задачей оказывается участие в играх, ибо обычно никто, кроме Хранителя, не может противостоять пользователю. Последнее мы узнаем только в третьем сезоне, но и так понятно.

Дот Матрикс – казалось бы, мирная владелица кафе в престижном районе Мейнфрейма. Как легко догадался читатель, подруга Боба, а во втором сезоне, казалось бы, жена – в озвучке ОРТ в первом сезоне к ней обращаются «Мисс Матрикс», во втором же проскакивает и «Миссис Матрикс». Непонятка будет длиться до четвёртого сезона (хотя, возможно, зарубежный зритель с такими плюхами не сталкивался и всё понимал прекрасно), когда Дот Матрикс и Боб не попытаются пожениться – почему попытаются – рассказывать не буду, ибо в этом часть интриги :-) – смотрите, будет занимательно. :-)

А вот почему «казалось бы»? Да, Дот фактически владелица кафе (а вернее, ресторанчика с баром), но она же занимается и такими вопросами, какие в наших краях решают депутаты горсовета – присоединить ли территорию, организовать ли оборону города, как эвакуировать жителей, а после ухода Боба и Энзо в третьем сезоне именно она возглавила сопротивление. Так что, есть и мирные комбайны, а есть и мирные непримечательные владелицы кафе.

Энзо Матрикс, а в дальнейшем и просто Матрикс – младший брат Дот. Уж не знаю, с кем себя должен ассоциировать зритель, но ваш покорный слуга, в силу возраста, не мог себя ассоциировать больше ни с кем. :-) Любит сестру, Боба, родной город, пса, рубиться в игры, но его туда редко пускают, не любит манную кашу, наверное, и вирусы :-). Всё время пытается доказать, что достаточно взрослый и закономерно попадает в неприятные ситуации. Вот так вот, зритель – ходи с мамой за ручку, кушай кашу и не лазай по разрушенным гаражам – а то ещё найдёшь чего – или гильзы, или лимонку без чеки...

Однако паренёк далеко не балбес и во втором сезоне Боб именно его назначит новым хранителем вместо себя, а в третьем – после путешествий по играм (с подружкой они теми ещё «читерами» оказались) превратился во вполне себе взрослого амбала с самонаводящимся пистолетом (спойлер: и дал прикурить новым друзьям Боба в сети).

Кроме этого, нам встретятся и духовный лидер города Фонг (в английском варианте Phong, а не Pong, как показалось автору). Интересно, что в первом сезоне, чтобы получить совет Фонга, нужно было обыграть его в игру, напоминающую телеигровой Pong.


Рис. 4. Вот так выглядит игровое поле при поединке с Фонгом – разве не напоминает телеигры, которые сейчас называют Pong-консолями?


Также зритель увидит старую знакомую Боба – Мышку, видимо, комплект хакерских утилит, Андрайю – девочку, сбежавшую из игры с Энзо, потом ставшую его боевой подругой в третьей части и бродившую с ним по играм, Сёрфера Рэя – называвшего себя поисковой системой нового поколения, хотя, я думал, что это альтер-эго интернетчика, Телемайка – местного журналиста, а по совместительству и единственного телевизора в городе. Да и ещё много кого. Плюс не стоит забывать о рядовых жителях Мейнфрейма, которых именуют Биномами и нуляшками.


Рис. 5. Вот такими персонажами населён Мейнфрейм


Рис. 6. А это набегает пиратский софт (злодеями были одну серию)


Но кроме мирных жителей есть...


...и злодеи


Как полагается городку в американском боевике или, уж тем более, фильму о супергерое, всех жителей должен угнетать Злодей. Да, с большой буквы. Если уж во времена Робина Гуда находился шериф нотингемский, который никому не давал нормально жить, то в насквозь пародийном сериале, тем более, должен быть подобный персонаж. И он есть – прошу любить и жаловать – Мегабайт.


Рис. 7. Мегабайт собственной персоной с двумя подручными


Фактически, местный пахан (для системы и пользователя – вирус, который умудрился заразить целый сектор, хотя – в первой половине четвёртого сезона нам покажут и повеселей вирусы), подручные которого в первых сериях прессуют местную торговлю (Дот тоже разнесли заведение). В принципе, «человек» нормально устроился – даже имеет собственную резиденцию в городе. Но всё хочет стать суперзлодеем, чем и напрягает собственных подручных – то помеху изловил, то решил откачивать энергию из игр. И если бы хотел творить зло в масштабах города – тоже можно было бы терпеть, но сей гражданин рвётся в сеть, в Суперкомпьютер, чтобы развернуться там. Увы, именно это кажется для всех неприемлемым. Собственно, из-за этого и возникают основные проблемы с Фонгом, Бобом да и Дот, заодно.

Казалось бы, Мегабайт жил в городе достаточно давно и, до появления Боба, не встречал никаких достойных противников. Но на деле их связывает достаточно долгая и не самая приятная история, которую нам расскажут в последнем сезоне.

Кроме сего товарища в городе, а вернее где-то на задворках, проживает его, как выяснилось, сестра, а по совместительству заклятая подруга – Гекса (так значится в озвучке ОРТ). Эта уж действительно злодейка – какой должна быть злая волшебница в сказке, такая Гекса и есть – создательница артефактов, любительница просто попортить кровушку роду людскому – так, веселья для... ну и братцу гадость сделать, чтоб жизнь мёдом не казалась да и за прошлые грешки отомстить.


Рис. 8. Гекса в естественной среде обитания – собственном логове


В одной серии дорвалась до аналога Paint и показала всему городу, что такое настоящий постмодернизм. Вышло прикольно, но никому, кроме зрителя, видимо, не понравилось. :-)

Кроме того, зритель увидит и достаточно других злодеев и просто опасных существ.

Отдельной статьёй идёт Пользователь – никто его живьём не видел, но он есть. Хотя, кто-то в него и не верит. Вне игр пользователя никто не видел. Удивительно, что даже прикладной софт пользователь не запускает, хотя, как можно увидеть в одной из серий, порой пользователь что-то устанавливает, и это событие хоть и из ряда вон, но для жителей Мейнфрейма не новинка. Интересно, что в первых сериях у пользователя вообще не было даже лица.


Рис. 9. Пользователь в первых сериях


Однако в следующих сезонах лицо у пользователя появилось.


Стёб, аллюзии, пародии


Если читатель думает, что пародия всего сериала на американские боевики и фильмы о супергероях исчерпывает пародийную составляющую, то он очень ошибается. Авторы сериала посмеялись и над конкретными фильмами и играми тоже. Чего стоят, например, спецагенты Факс Модем и Дата Нулли.


Рис. 10. Нет, это Факс Модем и Дата Нулли – вы не подумайте... и то, что сестру Факса утащили наверх паукообразные, в которых не все верят, вообще чистое совпадение!


Рис. 11. Это заставка к серии «FireWall» третьего сезона...


Рис. 12. Пользователь в одной из игр. Нет, у наших героев волосы в зелёный цвет не выкрасились :-)


Рис 13. Это «Боб» в одной из игр – в четвёртом сезоне. Возможно, тут не очень узнаваем, но в игре он гигантский покемон :-)


В английской же статье, посвящённой именно эпизодам – https://en.wikipedia.org/wiki/List_of_ReBoot_episodes – в каждом из описаний серий есть подраздел Cultural references, который описывает, что же конкретно пародировали или над чем стебались в каждой из серий.

Ну и в своём постмодернистском творении Гекса вспомнила и Дали, Уорхола, и даже Мыслителя.


Рис. 14. Картину Сальвадора Дали, думаю, многие знают. Правда, сам название никогда не знал и посмотрел в «Википедии» – «Постоянство памяти». Вот над ней и постебались


Рис. 15. А это что-то в духе Энди Уорхола, как я понял


Рис. 16. Мыслитель


Рис. 17. Не в тему, но Боб тоже был увековечен :-)


Так что, автор с интересом посмотрел и посмеялся и сейчас. :-)


Ещё немного о сюжете и о двух концовках


Интересно, что в мультфильме со временем появляются и «мрачные тайны» вперемешку со «скелетами в шкафу» – сперва самое невинное – мы узнаем, что Мегабайт и Гекса – брат и сестра. Но уже в эпизоде «Андрайя» упоминается отец Дот и Энзо Матриксов и некий взрыв. Ваш покорный слуга решил, что пропустил эпизод, но нет. Только в четвёртом сезоне зритель узнает, что Боб пришёл в Мейнфрейм не просто так, а Мегабайт до этого там не царствовал. Но это уже пошли даже не спойлеры, а какие-то глупые намёки.

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

Стоит ли сейчас смотреть сериал – честно, даже не знаю. Как уже писал, когда сериал показывали по телевизору, мне было лет шесть-семь-восемь, компьютера у меня не было, и смотреть приключения компьютерных героев в компьютерном мире было интересно. Сейчас же что может дать сериал? Наивный, в целом, сюжет? Плосковатых героев? Но, с другой стороны, читатель может лишний раз увидеть, с чего начиналась трёхмерная анимация – не только у признанных классиков – студии Pixar, но и у других студий.

Автор же лишний раз вспомнил детство и грустно вздохнул. Нет, даже полностью просмотренный мультфильм не вернёт ни 97-98-го года, не усадит автора на диван в бабушкиной комнате перед включённым телевизором... Но на неделю послепраздничных каникул этот сериал захватил меня, заставляя проглатывать двадцатиминутные эпизоды один за другим, и не бросать, как это было с диснеевскими «Утиными историями», например.


Постскриптум: где же посмотреть?


Один из вариантов – как написано, в озвучке ОРТ – автор нашёл на «Яндекс-видео»: https://yandex.ua/video/touch/preview/?text=Komputernye%20voyny%20s1ep01 – написано, что взято из «ВКонтакта». Не всегда на страничке показывается ссылка на следующий эпизод. В таком случае автор скармливал запрос в духе «Компьютерные войны sXepYY», где X, как догадываетесь, номер сезона, а YY – номер эпизода :-). В качестве «путеводителя» по сериям – страничка мультфильма в «Википедии» (https://ru.wikipedia.org/wiki/ReBoot_(мультсериал)#Список_эпизодов или https://tinyurl.com/RebootEpList#Список_эпизодов) – по крайней мере, посмотреть, сколько эпизодов в каждом сезоне, вполне можно. Увы, порой озвучка на русском пропадает. В большинстве случаев такие моменты сопровождаются субтитрами, но были и ситуации, когда не было и текстового перевода, но достаточно редко. Такое ощущение, что мультфильмы собирали из оцифрованных записей (отдельная ностальгия – послушать писаную, явно не первый раз, кассету) и оригинального видео.

Четвёртый же сезон нашёлся на сервисе ZSerials (http://zserials.org/multserialy/reboot.php). Этот уже переводился и озвучивался сейчас, потому и к звуку претензий нет, но озвучивает один голос.


Андрей Шаронов (Andrei88)


### Книжная полка

#### Элита. К истории мифа на ZX Spectrum


Реклама из Computer & Video Games, №48, октябрь 1985-го года.


Давным-давно, когда на подоконниках росли цветы, а дамы носили причёски, два студента баловались программированием… достаточно сказать, что это были Дэвид Брэбен и Ян Белл, и поклонники «Спектрума» легко продолжат начатую историю. Игра с открытым миром, не ограниченная числом жизней и временем на прохождение. Игра, в которой не было сюжета в привычном на тот момент понимании, игрок сам определял стратегию своего поведения. Основоположник жанра space trading (космические симуляторы с элементами торговли). Одна из первых игр с 3D-графикой. Вполне достаточный набор для того, чтобы войти в историю. И вдобавок к этому, в комплекте с игрой шла фантастическая новелла «Тёмное колесо», вводящая читателя в мир игры, и неизбалованные геймеры фактически получали игру как возможность взаимодействия в описанном фантастическом мире. Фурор был гарантирован, и он состоялся!

Что касается истории создания игры, то из недавних публикаций на русском языке имеет смысл выделить статью 2014-го года «История «Elite» на stopgame.ru[2], а также перевод статьи из спецвыпуска журнала EDGE.RETRO (2003-й год)[3], опубликованный на сайте RetroID в декабре 2013-го, «Elite, история создания»[4]. Новый перевод этой же самой статьи из спецвыпуска, но более худшего качества, появился в декабре прошлого года на Хабре[5], а в январе этого года на dtf.ru, но уже с русским автором и без указания источника и факта перевода[6].

Конечно же, у игры есть свой русскоязычный сайт с дополнительными материалами (интервью с разработчиками, информация по некоторым версиям и локализациям игры, а также текст новеллы «Тёмное колесо»)[7]. Однако в видеоформате на русском языке о «Элите» ничего не было вплоть до февраля этого года, когда на YouTube-канале «Back to the past» – в День сурка! – появился фильм Алексея и Артёма Егоровых «История создания Elite»[8] Помимо освещения основных этапов истории создания игры, авторы свели воедино малоизвестные факты, что делает их работу по-настоящему уникальной.


Фрагменты фильма «История создания Elite».


Работа над фильмом заняла два месяца, и забавным, но случайным совпадением является то, что в октябре 2020-го года Сергей OldFartGamer Сухих, автор и создатель YouTube-канала «OldFartGamer»[9], выложил в свободный доступ переведённое им «Руководство по лётной подготовке космопилотов»[10] Книжку можно распечатать и самостоятельно переплести, но силами энтузиастов она была издана небольшим тиражом в типографии, именно такой экземпляр и лежит передо мной на столе.


За основу «Руководства» было взято оригинальное руководство к игре для компьютеров BBC Micro, но с учётом особенностей ZX Spectrum-версии. Все рисунки были перерисованы вручную, названия и термины сверены с публикациями в «ZX-Ревю», но есть и особенности: например, названия типов кораблей даны в переводе на русский, хотя и с указанием привычных Adder, Viper, Fer-de-Lance; в некоторых случаях перевод дан с учётом общей атмосферы игры, что очень даже правильно.

Атмосфера – это ключевое слово для «Руководства», потому что на неё работает и изложенный материал, и его подача. Буквально с первых страниц:

Добро пожаловать на борт корабля Кобра МК-3. Корабль был предоставлен Вам компанией «Сокол Делейси Спейсвейз» по договору с Галактическим Кооперативом Миров, чьи экзамены на космопилота Вы только что успешно сдали. Небольшое руководство по полётам, поставляемое вместе с кораблём, предназначено для ознакомления Вас со всеми аспектами космического полёта, боя и торговли, и мы надеемся, что оно будет Вам полезно.

Практически каждый раздел так или иначе содержит отсылки к тому миру, в котором происходит действие игры.

Таргоиды – заклятый враг Человечества. Во всех 8 галактиках есть по крайней мере 50 зон боевых действий между Человечеством и Таргоидами. Эта технологически развитая инсектоидная раса также находится в состоянии войны с 17 другими космическими формами жизни.

Это из раздела «Межпланетные полёты». Или вот фрагмент из раздела «Политический профиль Вселенной»:

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

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


Фрагмент «Руководства по лётной подготовке космопилотов».


Подробные характеристики кораблей, навигация и стыковки, межпланетные полёты и торговля – краткий перечень разделов «Руководства». Но есть и «Приложения», в которых даны некоторые подсказки, читы для 48К и 128К версий, таблица зависимости ранга от количества убийств и описание миссий, а также пульт управления пилота в виде клавиатуры с надписанными клавишами (что очень удобно!) и идентификатор кораблей (который можно скачать отдельно и распечатать в виде постера).

Немаловажная деталь: в оригинальном руководстве были указаны не все возможности игры. По всей видимости, это было сделано с умыслом – открытия были неожиданными и побуждали к дальнейшим исследованиям. Один из немногих «минусов» переводчика – «мифологическая» часть была им частично опущена, поэтому в «Руководстве» нет кораблей поколений, например. С другой стороны, он удержался от соблазна расширить текст за счёт открытий отечественных пилотов: в тексте нет упоминаний о двойных и невидимых планетах, о возможности заправки от звёзд, о том, что рост ранга связан с выполнением миссий… Эти открытия по-прежнему ждут новых пилотов.

В Советский Союз игра попала в виде пиратской версии, причём в нескольких вариантах взлома. В результате, у пользователей разных версий игра могла вести себя по-разному: кто-то видел корабли поколений, у кого-то была особо агрессивная полиция, а у кого-то даже планета Raxxla – потому что имела хождение и «доработанная» версия, в которую отсутствующая планета была добавлена. Информации было очень мало, зачастую она была просто отрывочной, что ещё больше мифологизировало игру.

Жаль, что «Руководство» появилось только сейчас, но с другой стороны – получилась хорошая книжка, которая может служить отправной точкой для зарождения интереса к игре и компьютеру ZX Spectrum.


Андрей Тумилович

(2:5020/570.10@Fidonet)


### Downgrade-железо

#### Год с Mac mini 2010 года. Опыт использования в 2020 году


1. Введение — От ретро РС к Mac mini.

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

Именно знакомство с таким миром и составляет для меня наибольший интерес и удовольствие.

Немного предыстории. Я «старый БК-шечник», пользовался компьютером «БК0010.01» с 1988 по 1994 год, пройдя путь от программирования на Бейсике дома до Клуба БК на Свиблово.

Где-то в 1998 году приобрёл культовый компьютер — Amiga 600, дополнил её акселератором на процессоре Motorola 68030 с математическим сопроцессором и 8 МБ fast RAM, жёстким диском и CD-ROM, превратив её таким образом в достаточно мощный по меркам Amiga компьютер. Просидев на данной конфигурации Amiga два года, я продал её местной видеостудии и надолго перешёл на PC. Менялись конфигурации компьютеров, и вот мне захотелось заглянуть в прошлое. Я стал приобретать старые системные блоки, продающиеся сейчас за копейки, восстанавливал их и пристраивал в хорошие руки.

Сейчас с рук можно купить самые разные ретросистемы — это и ZX Spectrum, и Commodore 64, и др. Но моя особенность использования ретротехники заключается в возможности её применения в современных условиях, пусть и с ограничениями.


2. Приобретение Mac mini.

Когда я в очередной раз просматривал предложения на Avito, моё внимание привлёк Mac mini. Поразмыслив немного, я уже более внимательно стал искать вариант покупки этого компьютера. И вот, наконец, удачное предложение — Mac mini 2010 года с расширенной до 8 ГБ памятью и диском SSD на 240 ГБ и ценником в 13 т.р. Созвонился и стал обладателем.

Выяснилось, правда, что встроенный накопитель DVD неисправен, но это не критично.

Более подробно о конфигурации моего «Мака»:


CPU — Core 2 Duo — 2.4 ГГц

RAM — 8 ГБ DDR3

Видео — GF 320M 256 МБ

SSD — 240 ГБ

OS — macOS High Sierra v 10.13.5 (2018 г.)


Идея заключалась в возможности его использования в 2020 году в качестве домашнего компьютера.

Подключаю свежеприобретённый Mac к монитору по HDMI. Подключаю USB-hub и беспроводную клавиатуру DEXP и мышь Logitech. Нажимаю кнопку питания — изображение есть, клавиатура определяется, мышь бегает, но с оговорками (об этом далее). Наслаждаюсь безупречным дизайном macOS.

Сразу по настройке клавиатуры. Если подключаете обычную от PC, чтобы было удобно работать с русским языком: Настройки/Клавиатура/Источники ввода/раскладка «Русская-ПК». Существует несколько вариантов настройки, в том числе и индивидуальное назначение клавиш, но в первом приближении это вполне рабочий вариант.

С мышкой такая ситуация. С «Маком» работает любая сторонняя мышь — да, это так, но скроллинг колёсиком такой рваный, что практически пользоваться невозможно. Решаю эту задачу с помощью утилиты SmothScroll. Это триал-утилита, пришлось потом её купить. Пока что это единственная платная программа для «Мака» у меня. Тут следует отметить — я не планировал вкладываться в soft для «Мака» без особой необходимости.


3. Мир Mac OS X.

Следующим шагом в моём освоении «Макинтоша» стал подбор программ под разные задачи. Программы желательно freeware. Сначала я бегло осмотрел AppStore и далее перешёл к сайтам с бесплатным софтом для «Мака».

Бросилось в глаза — программы бесплатные есть, но их значительно меньше, чем для Windows, что, впрочем, ожидаемо.

Ещё замечание — в мире «Мака» принято покупать программы. Даже за простую утилиту могут потребовать деньги.

Дистрибутивы программ для «Мака», скачанные со сторонних сайтов, имеют вид архивов с расширением dmg, и следует знать, для какой версии OS и архитектуры процессора этот файл — х86 или х64. Так что далеко не каждый dmg подойдёт в конкретном случае.

Так или иначе, я создал для себя подборку программ, удовлетворяющую лично меня:

OpenOffice 4.1.7, XnViewMP, VLC, AppCleaner, Transmission, RAR Ext.Lite, GIMP 2.10.14, ShortCut, DjVuLibre, большинство — хорошо известные бесплатные программы.

Установка программы происходит просто и интуитивно, только нужно знать, как это сделать. :). После двойного клика на *.dmg-файле откроется окно, где будет иконка программы и «папка App» — нужно перетянуть иконку на эту папку, и программа появится в LaunchPad.

Что касается интуитивности пользования MacOS, то тут не всё однозначно. Иногда какое-то действие выполняется действительно легко, а бывает и суровый Unix Way. Например, поменять размер значков в LaunchPad — открываем терминал и набираем:


defaults write com.apple.dock springboard-columns -int 9

defaults write com.apple.dock springboard-rows -int 7

killall Dock


Не очень интуитивно, согласитесь.


Для обучения работы в MacOS нелишним будет посмотреть пару обучающих видео на YouTube и желательно почитать несколько книжек. Мне, например, понравилась книга Райтмана М.А. «Самоучитель MacOS Mavericks» 2014 года.


Важной для меня была возможность подключения к «Маку» МФУ Samsung М2070. Для которого была заявлена поддержка «Мака». И действительно, скачанный пакет встал как родной, и я получил функционал как принтера, так и сканера.

А вот web-камера Creative HD720p хоть и была опознана, но изображение было настолько вязким, что я решил её не использовать. Может, виноват процессор, может — USB 2.0 интерфейс.

Для расширения дисковой памяти подключил внешний HDD через интерфейс FireWire 800, отформатировав диск в файловую систему ExFAT. Скорость более чем в два раза выше, чем у USB 2.0.

Так как встроенный DVD-RW оказался неисправен, для прожига дисков использовал внешний привод, подключённый через USB. Привод ASUS SDRW-08D2S-U lite нормально заработал, и я прожёг болванку ISO средствами OS. При подключённых внешнем HDD и DVD-RW «Мак» стал напоминать бутерброд.

Интересной оказалась задача записи видео со звуком с экрана компьютера. Без звука она легко решается через встроенный в OS плеер Qtime. А вот со звуком превращается в не очень простую задачу. Хотя есть много платных программ для этого.

Итак, скачиваем Sound Flower 1.6 в версии, в моём случае, High Sierra. Устанавливаем и получаем своего рода новый драйвер звука.

Выбираем его и далее уже средствами Qtime-плеера захватываем нужную часть экрана.


Немного об игровых программах

Поиск игр для «Мака» на сторонних сайтах оказался непростым делом, так как под мою версию MacOS игровые программы найти оказалось непросто. Поэтому я обратился в AppStore и сразу установил себе несколько симпатичных игрушек.


Понравилось то, что установленные игрушки оптимизированы для моего не самого нового «Мака» и работали вполне прилично.

Особенно хороши Armada Modern Tank и Toy Defense «Солдатики».


С торрентов скачал Kerbal Space Program.


Несколько слов об инструментах разработки прикладных программ в MacOS.


Иногда возникает необходимость разработать небольшую программу, что называется, для «дома и семьи». Что-то тяжеловесное и объёмное устанавливать не хотелось бы, и я остановился на нескольких продуктах.


Для небольших программ хорошо подходит мой любимый Python и интегрированная система PyCharm в варианте Community.


Ещё один бесплатный продукт — это Chipmunk Basic — интерпретатор языка программирования BASIC. Компактная и простая программа, идеально подходит для использования классических вариантов этого языка, например множества листингов различных полезных программ в старых советских журналах и книгах. На сайте проекта есть учебник. Из особенностей — нет поддержки русского языка.


И наконец, если требуется разработать более солидную программу с GUI, можно использовать всем известный Lazarus, который вполне успешно работает на «Маке».


4. Выводы об использовании Mac mini 2010 года в качестве домашнего компьютера в 2020 году.

Я использовал свой Mac mini как основной домашний компьютер в течение года, стараясь выполнять на нём весь спектр возникающих задач.

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


Что касается впечатления о Мире «Макинтоша», то оно совпало с тем мнением, что я слышал от людей, использующих «Мак». Мир «Макинтоша» — это мир творчества, но творчества не гиков (хакеров), а творчества людей с гуманитарным складом ума. Знакомясь с таким миром, можно почерпнуть много нового для себя в общекультурном смысле.

Думаю, что даже сам интерфейс OS, его GUI устроен так, что человек вместо бесконечной его настройки занимается работой над своими творческими задачами. Другими словами, центр внимания перенесён с самого компьютера на прикладные задачи.

Как и всё, это имеет и свои положительные, и отрицательные стороны.

Подводя итог, можно сказать, что Mac mini 2010 года с честью выполнил роль домашнего компьютера в 2020 году, и скажу более, я почувствовал нечто, что можно определить как привязанность к нему. Мне хочется его включать ещё и ещё — со мной давно такого не было...


Валерий Руденко (Beaver 1971)


#### Сюрприз от Sony (неприятный)


Вообще, фирму Sony я люблю.

Стоит вспомнить телевизоры и двухкассетники – просто мечта рядового советского человека и предмет гордости обладателя. Потом появилось профессиональное телеоборудование, дискеты 3,5”, фотоаппараты и сотовые телефоны. Думаю, список можно продолжить.


Когда моя жизнь стала связана с компьютерами, я, естественно, вспомнил старого друга и при первой же возможности (90-е годы) приобрёл на работу несколько 15"-мониторов. Модели точно не помню, тот, что попроще, назывался SX, а тот, что получше – SF. Один из них ещё продолжал работать в 2012 году, а второй стоял на шкафу в полной боеготовности.


И вот наступил 2021 год, и мне в руки попал ноутбук VAIO VGN-FS315MR.


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

Была установлена Windows 7 Ultimate и, как часто бывает, куча ненужного (с моей точки зрения) софта. К слову, ноутбук пролежал без использования, предположительно, с 2009 года.

Каково же было моё удивление, когда заглянув в системные настройки, я увидел объём памяти 512 МБ!

Полез внутрь – да, действительно, одна планка на 512 МБ, и тут ещё сюрприз – память DDR2, но PC2-3200!


Устанавливаю две планки по 1024 МБ, загружаюсь, и всё оживает (более или менее), я продолжаю деинсталляцию ненужного софта, и тут замечаю наклейку на корпусе ноутбука:


Он ПОСТАВЛЯЛСЯ с 512 МБ! Sony, ты это серьёзно? Пусть с ХР, пусть 2005-2007 год, но так мало да ещё и самой медленной памяти! При этом позиционируя себя премиум-брендом?

Спустя некоторое время нахожу планку памяти 2048 МБ, заменяю ей одну из 1024, загружаюсь и вижу картину – 3 ГБ (2 GB USABLE).


Оказывается, Sony ещё и выбрала чипсет i915GM/PM, ограничивающий поддержку памяти 2-мя гигабайтами. Тут, конечно, поблагодарить надо и Intel за такие поделия, ибо CPU-Z ВИДИТ обе планки и их характеристики.


Ну и вишенка на торте гвоздь в крышку гроба. Обнаружив, что не установлены драйвера на видеокарту, решаю посетить сайт поддержки. Найдя модель, читаю, что драйвера для операционных систем Windows 7 и более ранние УДАЛЕНЫ.


У меня всё. Стоит ли после этого удивляться или сожалеть об уходе Sony VAIO с рынка?


P.S. Когда верстался номер, мне в руки попал ещё один VAIO – PCG-41111V. Уже поновее, с предустановленной Windows 7, но опять 2 гигабайта оперативки.


Romanson

romanson@land.ru


### Downgrade-софт

#### «Вселенная» Командира Нортона


«Нортон Коммандер» или просто «Нортон». Не сказать, что название преследовало меня всю жизнь, но как-то отложилось когда-то в памяти – то ли мама называла в те времена, когда их усаживали за компьютер. Возможно, с тех времён и «Автокад» думал, что от слова авто, то бишь, автомобиль :-). А, может быть, со страниц журнала «Радио» – да, журнал много уделял внимания своим компьютерам – РК86 и «Ориону», но обзоры литературы по РС публиковали исправно. В анонсах упоминали и Нортоновы утилиты, и коммандер. В рассказах мамы Norton Commander и DOS сливались в одно. «Компьютер старый – под Нортоном ещё работает» сказала она про 386-ой, который стоял у друзей семьи. На деле оказалось, что стоит третья винда... Но что же за «Нортон»?

Немного завесу приоткрыла книжка Леонтьева «Персональный компьютер 2002» - автор сперва рассказал, как же поставить винду, если можно загрузить только DOS – как раз для удобства предлагалось использовать один из трёх файловых менеджеров: Norton Commander, Volkov Commander, DOS Navigator. Были указаны некоторые горячие клавиши. Далее был небольшой обзор Нортон-подобных файловых менеджеров. Увы, в конце главы обещанного справочника по горячим клавишам не оказалось – только горячие клавиши винды...

Следующим шагом стало приобретение за 65 руб. диска «Архиваторы и файловые менеджеры» – доводом в пользу было наличие в списке Norton Commander 5.0 для DOS. Norton Commander на диске нашёлся – худо-бедно, с ошибками, матюками, проклятиями в адрес Билла Гейтса удалось программу поставить, нормально работать с ней тогда не получилось – далеко не все программы удавалось запустить (стартовали Dr.Web 4.28, GTA Vice City, но с некоторыми программами и играми возникали проблемы), привычные названия каталогов, например Documents and settings, заменялись последовательностью цифр, хотя и название DOCUME~1 тоже вспоминается, а порой программа разворачивалась на весь экран, но при этом русификация «сбивалась» (версия была русская). Конечно, разворачивание проги на весь экран радовало, но хотелось бы сохранить русские буквы. А ещё хотелось, чтобы все программы из состава «Нортона» нормально работали, что требовало наличие DOS или хотя бы Win9x. Увы, как уже писал, поставить её тогда не хватало знаний и умений :-)

Увы, когда появился старый компьютер, «для простоты и быстроты» был установлен Volkov Commander, который умещался на дискету. Только в 2015-м году, при сборке очередной машины, поставил-таки творение Джона Соча. Именно пятую версию и, вроде бы, русскоязычную. Всё хотел помучить её более подробно и описать это дело, но как-то руки не доходили. Позже на другом компьютере поставил IBM HandShaker, о котором писал в 26-м номере. Что ж, настал черёд и Norton Commander’a.


Установка и базовые возможности


Нет, в этот раз я не буду описывать тонкости установки программы. Только скажу, почему возникли проблемы под Windows XP – установщик использовал прямой доступ к жёсткому диску, на что экспишка жаловалась и предлагала запретить безобразие. Даже толком невозможно было понять, поставилась программа нормально или же нет. Под DOS же проблем таких не возникло – программа нормально поставилась и даже, вроде бы, внесла изменения в autoexec.bat и config.sys.

Да, забыл сказать – программа доступна на Old-DOS (http://old-dos.ru/dl.php?id=847) – ещё бы не была доступна :-).

При этом программа предполагала установку не только под DOS, но и под Windows 95 и OS/2. Вот так – не менее стабильная, чем WinNT (ХР как раз представительница этого семейства), полуось прекрасно могла работать с NC и от этого не становилась менее стабильной!

Ну, раз уже программа наша установлена, почему бы и не запустить её? По старой привычке набираю


C:\nc\nc


Жму Enter и... пред нами появляются знакомые синие панели. «Снимите шляпу» писал Леонтьев. Что ж, присоединяюсь. :-)


Рис. 1. Да, вот они – синие панели «Нортона»


Казалось бы, отчего такие восторги? Но подумайте, каково было человеку взаимодействовать с компьютером через диалог командной строки? Хотя, если открыть ту или иную статью на линюшную тематику, обычно описываются манипуляции в консоли, а не с помощью местного двухпанельника – Midnight Commander. Уж не знаю, кому как, но мне лично не очень было удобно гулять с помощью команд cd, ls (аналог dir, хотя и dir работала в некоторых дистрибутивах, вроде). А в «Нортоне» пользователь получал возможность без ввода команд гулять по каталогам, создавать новые, просматривать и редактировать, а также копировать, удалять и перемещать файлы – и это только базовые функции. Они доступны в любом файловом менеджере.

Вот только открывающийся по нажатию клавиши F3 просмотрщик – вершина айсберга. Простенькая «программка» скрывает кучу «вьюверов». Ведь с помощью просмотрщика Norton Commander можно просмотреть не только текстовые файлы или же другие файлы в двоичном или HEX-формате. Нортон может глядеть и картинки, правда, должны они быть в формате BMP или PCX.


Рис. 2. В просмотрщике Norton Commander открыт графический файл


Но это ещё не всё – даже при просмотре текстовых файлов нортоновский «вьювер» может удивить. Ведь открываются и нормально просматриваются не только текстовые файлы в кодировке CP866, но и файлы с кодировкой Windows CP1251 или КОИ8. Да, вы можете создать текстовый файл в блокноте винды, и он будет нормально открыт средствами Norton Commander. Такой приём предлагалось использовать для распечатки файлов на принтере D100 в одной из статей по подключению этого принтера к PC-совместимому компьютеру в «Радио» (если кому интересно – №1 за 2003-й год :-). Но оказалось, что Norton Commander может открыть также файлы в формате RTF и WinWord. Ваш покорный слуга был очень удивлён, что созданный в WordPad файл с рецептами для мамы удалось прекрасно просмотреть из NC. Увы, с файлами Word 97+ такой фортель уже не прошёл. Я очень был удивлён, как же так – ворд открывает прекрасно как файл с рецептами, так и файлы, созданные в самом ворде, а «Нортон» открывает только рецепты. Не сразу догадался, что формат файла разный, хоть значки одинаковы.


Рис. 3. Диалог выбора формата открываемого файла, вызываемый по нажатию клавиши F8


Правда, никогда не пробовал открывать документы с иллюстрациями, да и не похоже, что есть возможность просматривать документы с разными шрифтами. Просто я действительно подумывал использовать «Нортон» для распечатывания, попадись мне нестандартный принтер, который можно заставить печатать только под DOS. Увы или не увы, но судьба распорядилась иначе. Мы купили Robotron CM6329.01, который прекрасно работает под управлением Windows и без проблем печатал всё напрямую из виндозных программ – даже из браузера когда-то пытался печатать страницы :-) – что-то, но получалось.

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


Копаемся в настройках


Настройки Norton Commander находятся в одноимённом пункте меню, доступном по нажатию клавиши F9. Выбираем пункт меню Команды->Конфигурация и нам открывается диалог настройки программы (см. рис. 4).


Рис. 4. Диалог настройки Norton Commander


Все настройки распределены по разделам:

Экран: настраивается цветовая схема «Нортона» – на выбор предлагается несколько цветовых схем – две цветные – основная и альтернативная (см. рис. 5), чёрно-белые – обычная и оптимизированная, как я понял, для ЖК-дисплея ноутбука. Плюс присутствует опция графический режим – увы, никогда не мог понять, что же там такого графического (см. рис. 6). Плюс, присутствуют опции отображения меню в верхней части экрана и часов, отображения на полный экран, а также подсказок по горячим клавишам.


Рис. 5. Альтернативная цветная цветовая схема. В принципе, такую схему тоже встречал – вроде у Norton Commander 4.0 с сайта Антиквара


Рис. 6. Графический режим оформления – трудно сказать, что там такого графического, да и режим по умолчанию всегда казался куда симпатичней, хоть и, возможно, аскетичней, хотя и не замечал подобного


Рис. 7. Разве что в диалогах крестики заменились на квадратики с галочками


Рис. 8. Вот так выглядит тот же самый диалог в стандартном режиме – лично мне он привычней


Опции панелей: настраивается режим отображения панелей, некоторые моменты при работе с файлами – например, перемещение курсора вниз при выделении файла клавишей Insert – да, можно отключить перемещение курсора. :-)

Гашение экрана: выбор заставок и настройка параметров гашения экрана. Да, перед нами не просто файловый менеджер – разнообразие заставок сопоставимо с виндой. Лично мне всегда нравились «Мыши-рокеры». Правда, и «Мультик» и «Лица» при первом просмотре показались знакомыми, хотя, не помню, чтоб меня прямо знакомили до этого с компьютером так активно – с показыванием заставок «Нортона».


Рис. 9. «Мышерокеры» – шикарная заставка :-)


Рис. 10. Тот самый «Мультик», хотя и половина заставок – тоже анимированные


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

Принтер/мышь: настраиваются опции принтера и мыши. Интересно, что программа позволяет выбрать не только параллельный, но и последовательный порт (а «Лексикон», пишут, работает только с принтерами, подключёнными к LPT). Плюс поддерживаются не только матричники в текстовом режиме, но и лазерные принтеры, работающие с языком PostScript. Правда, при неотображении шрифтов – невеликое преимущество. Как уже писал выше, я серьёзно хотел использовать «Нортон» для распечатки файлов на принтере. И, хоть с СМ6329 этого не понадобилось, подобная возможность в дальнейшем пару раз выручала – когда начинал эксперименты с Robotron K6314 и не смог распечатать из винды, попробовал печатать из «Нортона», правда, только латиницу – принтер нормально её печатал. Потом то же самое делал и для D100M – тоже были проблемы с кабелем. Уж не знаю, предполагали создатели, что функцию печати будут использовать таким способом, но действительно помогает.

Редактор: собственно, программа предлагает вызов встроенного или альтернативного редактора.

Подтверждения: настраивается отображение диалогов подтверждения действия.

Сжатие: настраиваются параметры сжатия.

Как видим, программа не только имеет относительно гибкие настройки (есть и гибче), но и обладает достаточно широким набором различных функций – серьёзной библиотекой скринсейверов, средствами печати, несколькими цветовыми схемами. Да, для файлового менеджера некоторые из функций избыточны и в других программах отсутствуют, но, если программа претендует на роль оболочки, которая встанет между пользователем и голой DOS – почему бы и нет. Да, мы не говорим о полноценном заменителе Windows, но «Нортон» претендует примерно на такую же роль – стать рабочим пространством пользователя. Поэтому Norton Commander, как кажется, пытается предоставить пользователю как можно больше различных функций – распечатка, просмотр документов и графических файлов в разных форматах доступны из самой оболочки, но ещё масса функций доступна из отдельных утилит.


Norton Commander’s utilities


Да, с набором Norton Utilities комплект встроенных утилит тягаться не может. В составе «Нортона» нет утилит проверки и дефрагментации дисков, нет антивируса, но имеющиеся утилиты для меня были не менее интересны. Большинству утилит соответствуют отдельные исполняемые файлы, но их также можно вызвать соответствующими пунктами меню вверху экрана.

NCDD: увы, это не Norton Commander Disk Doctor – это Norton Commander Disk Dupe – программа для копирования дискет. Как и другие программы для работы с дисками, данная программа требовала прямого доступа к дисковой подсистеме компьютера, чем вызывала ругань Windows XP.


Рис. 11. NCDD – нет, это не программа проверки дисков, но вполне полезная программа копирования дискет


NCSF: а это программа форматирования дискет. Копировать дискеты мне особой необходимости в 2004-м не было, а вот форматнуть дискету попробовал. Винда протестовала, но отформатировать всё же получилось. Правда, дискета прожила потом недолго.


Рис. 12. NCSF – программа для форматирования дискет


NCFF: программа для поиска файлов – аналогичная программа есть в составе нортоновских утилит – FileFind. Вот с ней проблем не припомню – файлы даже какие-то находила, но, если запускать «Нортон» из винды – не думаю, что проку много. А вот если кроме DOS и «Нортона» ничего нет – весьма и весьма полезный инструмент.


Рис. 13. NCFF – программа для поиска файлов – аналог File Find из комплекта Norton Utilities


NCSI: ещё одна программа, имеющая аналог в Norton Utilities – информация о системе. Напоминает урезанную SysInfo. Программа из Norton Utilities не особо баловала информацией о компьютере, здесь же сведений и того меньше – краткое описание компьютера, информация о дисковых накопителях, о процессах в памяти и... всё. SysInfo содержала ещё информацию о портах и хоть, может быть, примитивный, но тест производительности, который некоторые тоже использовали для оценки мощности компьютеров. Я, например, держу файлик, где записаны результаты этого теста для различных систем – как собранных компьютеров, так и «суповых наборов» – достаточно интересные сведения. В NCSI такой тест отсутствует, но и в Windows даже подобные встроенные средства появились не сразу – вроде, в Windows 3.x ещё не было – только в Windows 95 появился диалог «Свойства системы», а тест производительности – вроде, уже на Windows 7, если не позже. По крайней мере, во времена Windows 9x мои друзья, кому посчастливилось обладать компьютером, тестировали машины только встроенным тестом ArtMoney и не более того. Более «объективная» оценка железа выполнялась запуском той или иной игрушки – работает – ещё толковый компьютер, нет или с тормозами – компьютер ужасный. :-) Вот и у товарища нормально шёл Quake 3, но почему-то не мог запустить CS 1.6 или даже 1.5. Так и определялось, что может Celeron 433, а что – Duron 650 или 850 МГц. :-)


Рис. 14. NCSI – общая информация о компьютере


Рис. 15. Информация о дисках


NCCLEAN: кроме того, в составе Norton Commander присутствует чистильщик – тоже весьма функциональная и полезная программа. Если учесть, что CleanSweep ещё не поставлялась компанией Symantec, весьма полезная программа.


Рис. 16. NCCLEAN – встроенный чистильщик – в составе винды тоже далеко не сразу появились такие средства


NCZIP: встроенный архиватор. Казалось бы, программа хорошо интегрирована с оболочкой – выделите курсором архив, нажмите Enter и откроется содержимое архива (см. рис. 17). Увы, попытка скопировать или хотя бы открыть для просмотра файл потерпела неудачу. Раньше я думал, что проблема, как обычно, в винде, но и сейчас под DOS просто так скопировать из архива не вышло. Сочетание Alt+F6 тоже вызвало ошибку.


Рис. 17. Содержимое архива, открытое для просмотра в одной из панелей


PLAYWAVE: программа для воспроизведения WAV-файлов. Когда-то мне казалось, что есть CD-плеер, но или он не поставился оттого, что инсталлятор не нашёл сидюк (в составе компьютера его нет), или же в разных дистрибутивах произвольно отсутствуют те или иные программы. Увы, у меня сейчас нет на старом компьютере WAV-файла, чтоб проверить работу этой программы.

Как видно, в составе «Нортона» присутствуют достаточно разнообразные, полезные и интересные утилиты – как системные, так и прикладные – архиватор, какой-никакой плеер и другие. Сейчас были указаны программы, которые доступны в виде отдельных исполнительных файлов, но есть компонент, который, в принципе, можно рассматривать тоже как утилиту. В меню, вызываемом по F9, откройте меню «Правая панель» или же левая. Выберите пункт «Дерево каталогов» и содержимое данной панели превратится в знакомое по проводнику Windows древо (см. рис. 18). «Ну, поменял отображение, и что из этого?» – спросит читатель. А вот что – в составе Norton Utilities присутствовала программа NCD – Norton Change Directory, реализующая именно такую структуру. Эта программа – фактически альтернативный файловый менеджер, разработанный Питером Нортоном. Уж как получилось Питеру Нортону и Джону Соча договориться – неизвестно, но вариант отображения в духе NCD также присутствует. Интересно, что программа не была исключена из комплекта Norton Utilities и существовала параллельно Norton Commander – в «IBM PC для пользователя» – по крайней мере, пятом издании – вы можете прочитать и об этом файловом менеджере в разделе, посвящённом утилитам Нортона.


Рис. 18. Древовидная структура каталогов – фактически альтернативный файловый менеджер и альтернативная концепция в составе Norton Commander


В составе Norton Commander присутствует ещё множество различных утилит – вьюеры, конвертеры, даже отдельная программа, осуществляющая выход из «Нортона» – ncexit.com. Некоторые из них интегрированы с оболочкой так, что мы даже не замечаем их работы, например, просмотрщики. Но отдельно хотелось бы отметить сетевые и коммуникационные утилиты. Увы, практически ничего не получилось протестировать – ни в далёком 2004-м, ни в 2015-м, ни сейчас – всё же, для осуществления связи надо иметь, например, два компьютера, с установленным «Нортоном» – увы, пока что это тяжеловато. Но, например, связь через последовательный порт средствами NC уже описывалась в журнале (см. статью truedowngrade «Нуль-модемное соединение: практика» в «Downgrade-журнале» №9). Программу NCMAIL я, к сожалению, у себя не нашёл, но, вроде бы, такая программа была. Но есть утилита, которая когда-то буквально очаровывала меня не меньше, чем заставки и возможности работы с принтерами – Telemax. О ней бы хотел рассказать отдельно.


Telemax – одна из жемчужин комплекта


Не только Microsoft лицензирует и покупает программы для включения в свои комплекты. Так поступает и Symantec – были куплены разработки Питера Нортона и его товарищей, были куплены PCTOOLS, была куплена CleanSweep да много чего ещё. Говорят, и Telemax тоже купили...

Однако программа достаточно органично вписалась в состав Norton Commander. Уж не знаю, пользовалась ли в те времена популярностью или же пользователи предпочитали ходить на BBS и связываться между собой другими терминалками, но мне лично эта программа очень нравилась.

Увы, тогда у меня был Win-модем, с которым не особо разгуляешься, а винда, как уже догадался читатель, поднимала крик «Программа желает получить прямой доступ к порту СОМ3» и к другому порту тоже, :-) просто модем был объявлен третьим КОМом. Но удалось с помощью терминалки покидать модему AT-команды, и даже удалось, вроде, позвонить с помощью ATDP, но серьёзно терминалкой практически никогда не пользовался. Но всё равно она лично мне нравилась больше, чем аналогичная программа из состава IBM HandShaker’a, описанного в 26-м номере журнала.

Итак, всё же взглянем на героя раздела. Программа, как и большинство утилит, представлена отдельным файлом – telemax.exe, так что, можно запустить её таким образом, либо командой меню Команды->Терминал.

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


Рис. 19. Диалог настройки последовательного порта


Функций, может быть, меньше, чем у терминалки HandShaker’a, но самые основные присутствуют: порт, скорость обмена, управление потоком, количество стоп-бит, разрядность передаваемых данных и т.д.

После окончания настройки вам станет доступен экран, в котором можно вводить команды модему (см. рис. 20). Увы, проверенный в боях с различным коммуникационным софтом USR Sportster для шины ISA куда-то задевался, и сейчас проверить в действии не получится. Но когда-то такой фокус получался даже с Win-модемом.


Рис. 20. Главный экран Telemax


Но на диалоге настроек COM-порта и экране, где можно напрямую управлять модемом или другим подключённым к последовательному порту устройством, возможности программы не заканчиваются. К услугам пользователя, например, диалог настройки параметров модема (например, строки инициализации). А под пунктом Настройки->Линия связи прячется диалог настройки параметров последовательного порта. Перейти в верхнее меню программы, как и в Norton Commander, можно с помощью клавиши F9.


Рис. 21. Диалог настройки параметров модема


Кроме того, пользователь может изменить режим терминала, включив эмуляцию VT100 или же режим TTY. Также можно поменять кодировку символов – DOS, КОИ-8 или же Windows.

Кроме того, присутствует телефонная книга с возможностью набора номеров оттуда.


Рис. 22. Телефонная книга


Рис. 23. Диалог ввода телефона для звонка – совсем не обязательно самому командовать ATDP или ATDT модему и вписывать номер для дозвона – программа позволяет это сделать куда «культурней»


Не забыты и стандартные функции терминальных программ – не только возможность передачи текстовой информации, но и файлов – Telemax позволяет как принимать, так и отправлять файлы на удалённый компьютер.

Интересно, что программа с такими возможностями была актуальна и в начале 2000-х. Я, к сожалению, не застал времена BBS, да и ФИДО как-то прошло мимо меня, хотя и интересовался этим делом. Но один раз получилось воспользоваться терминалкой для связи и передачи фотографий. Так получилось, что друзья семьи предложили нам передать фотографии. Чтобы не расходовать интернетное время, предложили связаться терминалкой. Увы, была использована не нортоновская, а стандартный виндозный HyperTerminal. Можно сказать, для меня это был первый опыт использования терминальной программы. Как выяснилось, не последний – правда, потом уже использовался TerraTerm и TerraTerm Pro – на популярный PuTTY так и не перешёл :-). Telemax, увы, мучил больше для развлечения, ибо с Win-модемом он дружил очень плохо. Максимум, что получилось – позвонить с помощью AT-команд, и всё.


Заключение. Так мир или файловый менеджер?


Что можно сказать в заключение? Обозревать легендарную программу сложно, тем более, когда существуют книги, детально описывающие возможности программы, показывающие скриншоты – например, «IBM PC для пользователя», к которой пришлось обратиться, так как в книжке Леонтьева были перечислены только горячие клавиши Windows. Но мне хотелось рассказать о собственных впечатлениях – как же приходилось бодаться с Windows XP, не желавшей давать досовской программе хоть каплю свободы – доступа к портам, дискам. Как эта программа в любой момент могла вывалиться в полный экран с «кракозябрами» вместо кириллических букв. Но при этом так хотелось с этой программой работать, хоть и спрашивали «Да зачем тебе это?».

А ещё хотелось показать, что Norton Commander – это не только две таблицы, дающие возможность управлять файлами – копировать их, перемещать, удалять и создавать. Нет – «Нортон» всё же больше, чем файловый менеджер, хоть это и основная его функция. Но кроме средств управления файлами, в составе Norton Commander есть куча различных утилит, характерных больше для оболочек, таких как Windows. Эти утилиты, встроенные функции, такие как печать или заставки, порождали, как когда-то казалось, какой-то мир, который не ограничивался операциями над файлами. Пользователь мог обитать в этом мире так же, как может обитать в Windows, Linux, а сейчас, увы, в мире сайтов – выполнять в «Нортоне» часть нужных ему действий, не обращаясь к сторонним программам. Пожалуй, для полноты не хватало только парковщика жёсткого диска, который входил в комплект Norton Utilities. Именно таким виделся «Нортон» для меня в далёком 2004-м.

Интересно, что примерно таким же, как мне кажется, видел своё детище создатель интегратора «Виктория» – не файловым менеджером, а полноценной оболочкой, в которой будет жить и работать пользователь – создавать документы, управлять ими, возможно, что что-то ещё. К сожалению или к счастью, в дальнейшем пришлось выбросить большую часть функций и оставить только возможность управления файлами. Разве что сетевые возможности «мутировали» в сторону поддержки FTP, а то и почтовых протоколов и, возможно, сейчас, облачных хранилищ. Остальные же функции взяла на себя Windows или Linux, а создатели файловых менеджеров сочли ненужным их дублировать.


Андрей Шаронов (Andrei88)


#### Конверсия значков Macintosh


В прошлом году я смотрел на архивы CD, записанные году в 2003-м, и обнаружил свалку архивов .SIT/.HQX и лежащие рядом архивы значков формата Windows. Как была выполнена конверсия, я забыл, поэтому решил восстановить проделанные действия.

Google услужливо предоставил массу ссылок на описание процесса конверсии, но эти способы мне не помогли. Как тут быть? Установить эмулятор Basilisk II и убить время на поиски и установку OS 7.5?


Где-то нашелся конвертер Icon Archiver 4.0, который выполняет конверсию:


Процесс вышел нудный: скопировать архив на диск, запустить эмулятор, распаковать архив, запустить программу, сконвертировать значки, сохранить в папку, закрыть эмулятор. Запустить утилиту работы с образами дисков HFVExplorer и извлечь файлы. Ох, как долго!


Я не помню, что возился так долго, поэтому продолжаю искать. Поиски вывели на упоминание о программе IconShop, вот на этом я и остановился. Для распаковки архивов понадобится Aladdin Expander (https://winworldpc.com/product/aladdin-expander/5x), после установки нужно настроить архиватор:


Перед запуском архиватора отмените ассоциацию с расширениями архивов.

Теперь нужно скачать с сайта утилиту IconShop 1.13 (http://web.archive.org/web/20071216103307/http://users.telenet.be/liontech/IconShop.zip) - сайт давно умер, поможет "Машина времени интернетов".


Процесс простой:

- распаковать .SIT, перебросив архив на окно Aladdin Expander

- созданную папку перебросить на окно IconShop, сохранить файл как .ICL.


А как извлечь иконки? Найдется масса вариантов, например бесплатная  @icon sushi (http://www.towofu.net/soft/e-aicon.php) или архиваторный плагин для Total Commander.


А где взять эти архивы значков?

Macintosh Garden: https://macintoshgarden.org

Macintosh Repository: https://www.macintoshrepository.org

На сайтах художников - http://www.multiart.nu/cci (есть и версии Win95).

На FTP, где лежат файлы иконок - надо уметь искать.


А зачем это надо? Хотя бы для использования в целях оформления рабочего стола. Или, для коллекции - в чем-то старые иконки напоминают работы стиля pixel art.


Прим. ред.: упомянутые выше программы можно скачать одним архивом здесь:

http://dgmag.in/N34/macicons.zip


Sh


#### FineReader бонусом


Когда автору купили компьютер, он достаточно быстро скопил скопированные на болванки или же просто на винт диски-сборники софта. Конечно, среди них были и дистрибутивы FineReader. Но когда был куплен сканер, вспомнились книги Леонтьева, который говорил о том, что усечённая версия FineReader или CuneiForm обычно включается в комплект поставки сканера.

Заиметь на халяву лицензионную версию распознавалки? Не самая плохая, но и, возможно, не самая рациональная идея. На дисках были различные версии FineReader. В конечном итоге, можно было попросить в прокате другой диск-сборник с новой версией FineReader (по крайней мере, автор так поступил, когда ему понадобился MS Office и Norton Utilities – другое дело, что вместо офиса ХР потом поставил 97-й, а место криво установленных 2003-х утилит заняли 2002-е :-)), но так случилось, что ваш покорный слуга установил именно версию FineReader’а, которая шла со сканером, и использовал чаще всего именно её. Программа запускалась не только на WinXP, но даже на Linux (SuSe 10.0) под Wine, но с некоторыми проблемами. Хоть программа и использовалась под WinXP, но версия была достаточно старой и сейчас с успехом может быть запущена и на Windows 9x. А раз так, то почему бы не рассказать о ней на страницах журнала?


Качаем и ставим


Автор не представил героя обзора? Прошу прощения. Прошу любить и жаловать – FineReader 4.0 Sprint. Данная программа шла на диске с драйверами сканера Mustek 1248UB. Сейчас программа доступна на old-dos.ru http://old-dos.ru/dl.php?id=21106. Несмотря на российское происхождение, программа на Old-DOS, а, возможно, и в комплекте со сканером тоже (в этот раз я нашёл программу на сайте, а не загружал её сам) не имеет интерфейса на русском.

Также при установке автор отказался от регистрации – на предложение о регистрации нажал Skip. Вместе с FineReader Sprint установилась оценочная версия FineReader Professional и FineReader Forms. Честно, никогда не интересовался этими программами (в контексте установленной FineReader Sprint) – разве что имею подозрения, что FineReader 3.0 Pro – ломанная оценочная версия из комплекта FineReader 3.0 Light, но это другая история. Пользовался же только Sprint.

Поэтому запускаем программу, например, командой Пуск->Все программы->ABBYY Fine Reader->ABBYY FineReader 4.0 Sprint. Откроется главное программы, показанное на рис. 1.


Рис. 1. Главное окно FineReader Sprint


Теперь можно перейти к детальному рассмотрению программы.


Несколько особенностей взаимодействия с программой


Прошу прощения за ещё одно лирическое отступление – как только ваш покорный слуга поставил программу (кстати, вроде тогда понадобилось ещё перезагрузить компьютер – сейчас же этого не было), решил опробовать её в деле. Для этого уложил на сканер листок или книжку и запустил сканирование и распознавание текста. Программа имеет два варианта (как и старшие собратья, в принципе): сканировать и распознать самостоятельно – в данной версии за это отвечает кнопка Scan & read– или же отдельными кнопками Scan и Recognize – каким тогда воспользовался автор – он не помнит :-). Но так получилось, что в результате была нечитаемая белиберда. Было весьма странно – у программы уже четвёртая версия – едва ли за это время не решили проблему распознавания обычных книжных страниц. Поверить, что первые версии требовали чёткой распечатки лазерным принтером на белой бумаге и распознавания в чистой комнате, было можно (на деле же и FineReader 2.0 прекрасно справляется с задачами распознавания не самых качественных листов), но четвёртая версия вообще не могла распознать ни одного слова. Как же так?

Увы или не увы, но причина оказалась простой и сложной одновременно. Простой от того, что ваш покорный слуга просто поторопился и не расстроил программу до конца и сканировал неправильно. А сложной...

Во-первых, надо было выбрать язык распознавания. Да, интерфейс, как и был, останется англоязычным, но программа допускает включение распознавания русскоязычного текста. По умолчанию же включён английский. Как исправить положение? В меню Language (см. рис. 2).


Рис. 2. Выбор языка распознавания из выпадающего меню


Здесь можно выбрать пункт Russian и программа будет использовать для распознавания словарь русского языка.

Во-вторых, у программы сканирования, которая шла в комплекте со сканером, режимом сканирования по умолчанию был цветной с разрешением 100 dpi. Для программ распознавания символов Леонтьев, в частности, рекомендовал использовать режим чёрно-белого сканирования (даже не оттенков серого, который обычно использует ваш покорный слуга для «ксерокопирования» документов) с разрешением 300 dpi. Первый же раз всё сканировалось в режиме по умолчанию.

В отличие от более ранних версий программы, FineReader Sprint общается со сканером только через интерфейс TWAIN (уж не знаю, осталось ли прямое обращение к драйверам в профессиональных версиях, и умела ли работать с драйверами напрямую FineReader Light – предшественница «Спринта», способная работать на третьей винде). Однако здесь работа с TWAIN-интерфейсом не вызывает таких проблем, какие автор наблюдал во время экспериментов с FineReader 2.0 из «Русского офиса» и CuneiForm под Windows 3.x. Хотя и не запускал программу из ворда. А раз так – пользователь имеет возможность без проблем использовать режим Scan& read и в программе управления сканером выбрать нужный фрагмент сканируемого текста.

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


Рис. 3. Интересующий текст выделен в окне предпросмотра сканирующей программы


Сканируем и распознаём


Итак, мы выделили интересующий фрагмент и отсканировали его. Если вы нажали кнопку сканирования и распознавания, программа получит отсканированное изображение и распознает его в соответствии с выбранным словарём. Вот такой результат получил автор при сканировании русскоязычного текста и распознавании с помощью английского словаря (включён по умолчанию).


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


Рис. 5. Тот же текст, распознанный с помощью русского словаря. Фрагменты, в которых программа не уверена, выделены зелёным цветом


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

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

Чтобы выбрать такой режим, щёлкаем по треугольнику рядом с кнопкой сохранения в файл. Появится выпадающее меню альтернативных действий (рис. 6).


Рис. 6. Меню для выбора альтернативных действий, выполняемых над результатом распознавания. Даже и забыл, что программа поддерживала не только Word, но и Excel, а уж тем более Lotus Word Pro и Word Perfect


После выбора передачи текста в Word, кнопка изменилась на значок ворда, а текст действительно был переслан в ворд. Интересно, что эту операцию удалось проделать с 2007-м вордом. Честно, даже не надеялся на подобное – в своё время использовал максимум Word 2002, а скорее 97-й. 2007-го ворда тогда и в проекте-то не было... надеюсь... как и формата docx. :-)

В своё время автор попытался использовать программу под Linux (SuSe 10.0) под Wine. Программу удалось без проблем поставить средствами штатного инсталлятора. Инсталлятор решил, что программа ставится на сетевой диск и, вроде, без каких-либо проблем. Проблемы возникли дальше. Для связи со сканером FineReader использует интерфейс TWAIN, в Linux же применяется интерфейс SANE, который по крайней мере четвёртая версия FineReader’а не поддерживала. Но у программы есть возможность распознавать текст с графических файлов. Для этого в меню альтернативных действий кнопок сканирования и сканирования и распознавания есть пункты для работы с графическими файлами.


Рис. 7. Программа может не только отсканировать текст, но и распознать текст с графического файла


Необходимый текст был отсканирован отдельной программой в необходимом режиме (чёрно-белый с разрешением 300 dpi), сохранён и открыт FineReader’ом. В принципе, распознавалка всё сделала нормально, но делать так постоянно желания откровенно не было. Увы, сейчас, ввиду отсутствия установленной линюшки, повторить такое не получится.


Заключение


Рассказывать о достаточно простой для использования программе сложно. Конечно, есть определённые моменты, которые автор не разглядел сразу. Если добиться нормального распознавания отсканированного текста удалось достаточно быстро – ну не может программа совсем не распознать отсканированный текст, то о функции передачи результата распознавания в ворд автор узнал достаточно поздно. Стереотип о том, что облегчённая версия имеет минимальный функционал, явно не располагала к поиску дополнительных возможностей. Бесплатная программа запросто могла только сохранять результат в RTF-файл, который потом открывался и правился в ворде. А заодно, один раз, был скормлен «Сократу» – это так решил смеха ради перевести домашнее задание по английскому – пол-урока с товарищем смеялись потом.

Программа проработала активно полтора года, пока учился в школе. Потом ещё периодически использовалась и в институте, но уже не так активно, хотя, эксперимент с Linux и Wine проводился именно в то время. Да, достать профессиональную версию не вызывало большого труда, но урезанная версия вполне себя оправдывала. Тем более, когда узнал, что результат распознавания может быть передан напрямую в Word.

Ещё подкупал угловатый строгий интерфейс, напоминающий Windows 9x. Старые компьютеры и старые виндозы будут в далёкой перспективе. Пока же старое железо – даже второй или первый пень – было мечтой. Поставить вместо WinXP или параллельно 98-ю винду не хватало ещё знаний и умений. Поэтому радовался хотя бы частичной имитации старого компьютера – классическая тема WinXP, самый старый, какой смог найти, MS Office (97-й) и старый FineReader. Хотя бы так. :-)


Андрей Шаронов (Andrei88)


#### Stylus – мой первый переводчик для Windows 3.1


Когда ваш покорный слуга начинал возиться со старым компьютером, он попытался создать среду, аналогичную той, что была на новом компьютере. Увы, завести на старом компьютере интернет тогда не получилось. Но хотелось приблизиться к «старшему брату» хотя бы в оффлайн-программах. С играми проблем не возникло :-), текстовый редактор тоже удалось поставить без проблем – им стал WinWord 6.0 (кто бы сомневался :-), также была установлена старая версия Norton Utilities, в какой-то момент нашёлся и файловый менеджер, как на новом компьютере – «ДИСКо Командир 2.1» – на новой машине работал «Командир» пятой версии. Но одной из программ был переводчик. На большом компьютере попеременно поработали PROMT XT, X-translator, «Сократ Персональный 4.1», «Сократ 98». Увы, для Windows 3.1 с наскоку найти переводчик, как это получилось, например, с вордом, русификатором ParaWin или архиватором – сперва WinZip, потом и Aladdin archiver (он же Sitex) – не получилось.

Автор знал, что существуют версии Stylus для Windows 3.х. А статьи, посвящённые компании «Арсеналъ», утверждали, что даже «Сократ 3.0» может запускаться под третьей виндой. Это сыграет с автором злую шутку, когда Iezekil будет предлагать скинуть на почту программы с диска-сборника переводчиков и ваш покорный слуга вместо «Русского офиса» попросил третий «Сократ», который оказался «Сократом 97». Но поиски шли – www.filesearch.ru, который тогда был весьма недурственным файловым поисковиком, нашёл Stylus 3.0.1, который работал только с Win95. А раз так, значит под третьей виндой должна работать вторая версия.

И вот, как-то раз в теме обмена софтом для третьей винды на www.fdd5-25.net появился дистрибутив Stylus. Автор тут же его скачал и перекинул на старый компьютер. Увы, программа не порадовала – для 386SX на 40 МГц с четырьмя мегабайтами ОЗУ программа оказалась несколько тяжеловесной. При этом оказалась весьма сложная интеграция с Word’ом – добиться появления панельки инструментов переводчика в окне ворда не получилось. На форуме тоже развели руками.

Сейчас же, размышляя над темой журнала, автор вспомнил о возне переводчиками и решил одну из статей посвятить именно им. Тем более, что другие успехи, например, с выжиманием 256 цветов из 512 килобайтных видеокарт :-) или запуском бюджетных звуковых карточек для ISA, вселяли оптимизм – возможно, что-то тогда не доглядел или упустил. Но, чтобы проверить, надо выкачать программу снова, установить её и...

Казалось бы, всё просто – надо только найти тему на форуме, скачать архив или же хотя бы увидеть версию или объём архива, чтоб найти программу на http://old-dos.ru. Увы, форум «Пятидюймовки» претерпевал изменения, и часть контента терялась. Но в юбилейном выпуске журнала редактор привёл ссылку на обсуждение журнала на fdd5-25.net. Так почему бы не пройти по ссылке и не поглядеть другие темы? Что ж, переходим по адресу – http://fddforumhist2006.err200.net/forum/ – и начинаем копаться в темах. Софтовый раздел практически пуст, поэтому начинаем копаться во всех других темах, где такая тема могла бы появиться – в флейме, например, в других разделах. Увы, автор хоть и нашёл свои старые посты, чему был удивлён и даже рад, нужную тему найти не удалось. Что тогда? Ваш покорный слуга написал редактору журнала – возможно, что есть ещё какие-то архивы форума. И да, архивы нашлось – на самой «Пятидюймовке» начали собирать архивную копию форума http://textconf.fdd5-25.net/. Увы, и там ничего не нашлось.

Оставалось только одно – открывать страницу Stylus для Windows 3.x на old-dos.ru – http://old-dos.ru/files/file_4284.html – и медитировать. Версии 2.21 и 2.51 отпадают сразу. Там настроить интеграцию с Word (и Excel) куда проще, чем добраться до создания связи с внешними приложениями через DDE. Тем более, Stylus 2.51 может интегрироваться без проблем не только с приложениями Microsoft, но и с распознавалками текстов, проверщиками орфографии и программами-словарями (см. статью «Вездесущий Stylus» в 23-м номере). Может быть, версия 2.0? Увы, но в архиве четыре дискеты, а память почему-то выдаёт, что дискеты только две. Остаётся только один вариант – Stylus для Windows 1.0 - http://old-dos.ru/dl.php?id=3642. Качаю её, открываю архив и да – в архиве дистрибутив из двух дискет! В оставшихся папках лежит Stylus для DOS.

Но почему отложилось в памяти, что программа второй версии? Ответ прост – из книжки Леонтьева ваш покорный слуга знал, что есть Stylus для DOS. Автор верил в сквозную нумерацию версий – ведь Dr.Web, первые версии которого разрабатывались под DOS, при переходе на винду получил номер версии 4.х, версии VentaFax для винды получили номер 3.х, «Компас-График» для Windows получил версию 5.х. Аналогично сквозная нумерация была у MS Office (хоть и «Микрософт» порой «мухлевал» с версиями, но ваш покорный слуга об этом тогда не знал). Вот и думалось – Stylus 1.0 – для DOS, Stylus 3.0.1 – для Win95. Соответственно, между ними должна уместиться вторая версия для Windows 3.x. То, что Stylus для DOS имеет версию 4.0, автор узнал только сейчас.

Итак, качаем, распаковываем на старую машину и запускаем установку. Собственно, установка практически не вызвала проблем. Единственное, что удивило – запрос пароля на словари.


Рис. 1. Запрос пароля, который, в дальнейшем, будет использоваться для работы со словарями. Пользователь должен придумать его сам – нигде этого пароля нет :-)


Кроме того, возникла проблема с распаковкой файла RUBCOLL (http://dgmag.in/N34/rubcoll). Не знаю, с чем это связано – или с процессором (на компьютере стоит UMC U5S :-), или с Windows 3.11 – раньше, вроде бы, эксперименты проходили на Windows 3.1 for Workgroups, но на новом компьютере установка прошла без проблем. Поэтому, если что, прилагаю данный файл. После замены «битого» файла перенесённым с нового компьютера, программа запустилась.

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


Рис. 2. Главное окно Stylus


Увы, но даже в первой версии необходимо создавать новый файл перевода – то же самое мы увидим и во вторых версиях. Кому как, но автору как-то не очень это удобно. Тем более, что будущие PROMT и X-translator уже сразу будут открывать двухпанельный интерфейс.

Что ж, создаём файл, вбиваем тестовый текст и запускаем перевод командой Translate->Make или же кнопкой . Программа спросит – стоит ли сохранять файл с переводом и выдаст результат перевода в появившейся нижней панели (см. рис. 4)


Рис. 3. Вбит тестовый текст


Рис. 4. Текст переведён. Непереведённое слово выделено красным цветом. Да, в данной версии Stylus не знает слово «галактика»


Что ж, теперь попробуем взаимодействие с Word’ом. Действительно, в меню не было отдельных кнопок или пунктов/диалогов меню, отвечающих за интеграцию с продуктами Microsoft. За интеграцию с внешними приложениями отвечает диалог, вызываемый либо командой File->Links…, либо кнопкой    – см. рис. 5.


Рис. 5. Диалог динамической связи с внешними приложениями


Для того, чтобы была возможность связать Stylus и Word – обе программы должны быть запущены. При этом в списке Applications диалога (см. рис. 5) должен появиться Word, а внизу – открытые документы. Для установки связи необходимо выделить нужный документ и нажать кнопку Add. После этого можно закрывать диалог кнопкой Close. Теперь необходимо перейти в Word и скопировать фрагмент, который нужно перевести в буфер обмена. Когда-то это сделать получилось. Получилось это сделать и в Stylus 2.51. Увы, в этот раз не получилось – опять же, не знаю, почему именно – либо из-за версии Windows, или же из-за процессора.

Общие впечатления программа оставила неоднозначные – и тогда, и сейчас – да, программа 93-го года – одна из первых программ для Windows 3.x, и если вы посмотрите скриншоты в файле помощи, то увидите, что по цветовой гамме они ближе не к Win 3.1/3.11, а к Windows 3.0. Вы много видели российских программ, которые могут работать под этой версией Windows? Автор может назвать только русификаторы – ParaWin и CyrWin – ну и, может быть, первые версии «Прописи». А тут – переводчик!

Но программа показалась тяжеловесной – и тогда, и сейчас – хоть и в этот раз программу запускал на UMC U5S 40 МГц с 32 МБ оперативной памяти, на котором Windows 3.11 вполне себе неплохо работает. Тем более, что при переводе из ворда должны быть запущены две достаточно тяжеловесных программы. Да и каждый раз устанавливать связь между двумя программами... ну не знаю. Хотя и в хелпе утверждается, что после установки связи Stylus анализирует набираемый в ворде текст и, в случае изменения, изменяет и перевод. Но автору кажется, что такая процедура не намного легче, чем копирование текста через буфер обмена.

Поэтому поиски переводчика продолжились. Iezekil (да, тот самый, кто участвовал в становлении «Полигона Призраков») предлагал переслать любую программу с купленного на базаре сборника словарей и переводчиков. Увы, ваш покорный слуга заказал третью версию «Сократа», а не связку «Сократа» и FineReader’а, которую, в следующий раз, удалось найти только в 2017-м году. Но и тогда – на «Полигоне Призраков» Сергей Добряк выложил ссылку на сайт http://ap4w3.narod.ru/, где удалось найти «Сократ 1.0». Оказалось, что версии на old-dos.ru (http://old-dos.ru/dl.php?id=4954) и с сайта Another software for Windows 3.1 (http://ap4w3.narod.ru/socrat-1.rar, http://ap4w3.narod.ru/socrat-2.rar) различаются. Автор до сегодняшнего дня об этом, если честно, не догадывался – на old-dos.ru выложена версия с англоязычным интерфейсом, которую переключить на русский не получилось. На ap4w3.narod.ru лежит версия с интерфейсом на русском языке. Плюс у версии на old-dos.ru картинка заставки цветная, а не чёрно-белая. Ну и некоторые различия в составе дистрибутивов.


Рис. 6. Главное окно версии «Сократа» с old-dos.ru


Рис. 7. Главное окно версии «Сократа» с ap4w3.narod.ru, с которой возился автор


Да, программа, как и Stylus, требует наличия в запущенном виде как «Сократа», так и Word’a (только «Сократ 2.0» можно будет запускать кнопкой на панели инструментов в ворде). Однако переводчик даёт возможность установить в Word’e свою панель инструментов. Для этого в окне переводчика необходимо нажать кнопку  . В окне Word командой Вид->Панели инструментов открыть диалог настройки панелей инструментов (см. рис. 8) и установить галочку на пункте Socrat Translator.


Рис. 8. После нажатия кнопки добавления меню в окне «Сократа», в списке панелей Word’a появится соответствующая панель инструментов. Такая настройка производится только один раз. Потом панель будет появляться по нажатию кнопки, хотя, у автора вообще вроде требовалось только, чтоб «Сократ» и Word были запущены


После этого среди панелей Word’a появится панель инструментов переводчика (см. рис. 9). В дальнейшем панель останется только включать нажатием кнопки в переводчике, хотя автор почему-то вспоминает, что ему и этого не требовалось. Поэтому, чтобы панель была в ворде всегда, он даже ставил «Сократ» в автозагрузку с последующим сворачиванием.


Рис. 9. Панель «Сократа» в Word’е – в отличие от второй версии, кнопки относятся только к переводу – FineReader будет лицензирован позже


Конечно, трудно сравнивать такие программы – одного из пионеров отечественного софта для Windows и программу, которая была разработана во времена расцвета Windows 3.1 (а как ещё можно назвать 95-96-й год?). Что мог Stylus в 95-м году – видно по версии 2.51, к лету 95-го и у «Арсенала» появится связка «Сократ»+FineReader, но у автора на руках не было таких версий. Да и компьютер не радовал производительностью. Поэтому и получалось – выбирал из того, что было, и запускал на том, что было. В результате «Сократ 1.0» стал основным переводчиком на старых машинах автора до 2011-2012-го года, когда удалось-таки найти «Сократ 2.0». К сожалению, на старых машинах такой необходимости в программе-переводчике не было, какая была на компьютерах с Windows XP. Но всё равно автор нет-нет, да поставит какой-нибудь переводчик или другую офисную программу на старый компьютер ради очередного эксперимента.


Андрей Шаронов (Andrei88)


### Программирование

#### Как я игру FoxHunt на Радио-86РК со "Спектрума" портировал


Цель данной публикации — дать лёгкий старт в разработку для ретрокомпьютеров людям, не имеющим намерения погружаться с головой в многонедельное изучение тонкостей ретроплатформ и их ассемблеров. При необходимости это можно будет сделать позже. Игру будем разрабатывать в среде XDev на языке Оберон-3 с использованием подсистемы K580Dev: http://zx.oberon.org/xdev


Выбор именно паскалеподобного Оберона вызван, во-первых, стремлением показать, что разработка для Радио-86РК на этом языке возможна, а во-вторых, мы по максимуму абстрагируемся от ассемблера. Я надеюсь, что статья будет неплохой отправной точкой для людей, желающих что-то разработать для ретрокомпьютера, но кто не смог преодолеть барьер ассемблера. Написать таким образом очень сложную и динамичную игру для ретро вряд ли удастся, но как язык Оберон нагляден, писать на нём приятно и для выбранной игры его скорости с головой хватит. Исходную Спектрум-версию игры «Охота на лис» Савелий Иванков разработал тоже на Обероне, так что мы будем использовать этот же язык.


Радио-86РК (дальше РК-86 для краткости) — советский самодельный 8-разрядный персональный компьютер конца 80-х годов, разработанный коллективом журнала «Радио». Описание его впервые было опубликовано в цикле статей в журнале «Радио» № 4-6 за 1986 г. Авторы цикла — Д. Горшков, Г. Зеленко, Ю. Озеров, С. Попов.


Это простой и медленный компьютер на процессоре КР580ИК80А либо КР580ВМ80А (аналог Intel 8080) с текстовым режимом 64x25, вообще лишённый цветности и даже текстовых атрибутов типа инверсии знакомест, с непрограммируемым знакогенератором, содержащим 128 символов (без строчных букв). ОЗУ: 16–32 КБ, ПЗУ: 2 КБ. Позже компьютер был доработан: подключен RAM-монитор (с дисководом RK-DOS 2.95), аппаратный таймер КР580ВИ53 и цветной текстовый режим. Для этой доработки сделано несколько игр, «выжимающих из платформы всё»: особенно хочется отметить DIZZY 7/5 (http://rk86.smart-tv-home.ru/games.htm).


Нам понадобится один из эмуляторов, поддерживающих РК-86:


Эмулятор "Башкирия-2М" (b2m) — http://bashkiria-2m.narod.ru

Эмулятор "Emu80" — http://emu80.org


Скачаем среду разработки XDev (нам подходит полная версия или XDev Lite — это непринципиально): https://github.com/Oleg-N-Cher/XDev/releases

Распакуем архив в любую удобную для нас папку, но чтобы в пути не было пробелов.

Также скачаем подсистему K580Dev: https://github.com/Oleg-N-Cher/K580Dev

И распакуем в эту же папку. Должно получиться так:


Bin\

K580Dev\

License.txt

README.md

ReadMe.txt

XDevLite.exe


Для работы с проектами, находящимися не в папке подсистемы, требуется прописать в переменной окружения XDev путь к папке среды разработки (например: d:\Projects\XDev), чтобы скрипты сборки знали, где находится нужная им подсистема.


Для работы с подсистемой K580Dev требуется установленный компилятор z88dk, который используется средой разработки в качестве компилятора заднего плана (бэкэнда):

http://nightly.z88dk.org

Важно, чтобы переменная окружения PATH содержала путь к z88dk/bin. После установки скопируйте папку K580Dev\Bin\z88dk в установленный z88dk — это нужно, чтобы добавить новую целевую платформу rk86.


Внутри K580Dev нас интересует в первую очередь подпапка Mod с примерами модулей. Запустим XDevLite.exe и попробуем их открывать (File => Open) и запускать (F12). Для успешного запуска файлов типа .rk у нас должна быть прописана ассоциация на выбранный нами эмулятор. Я советую "Башкирия-2М", в нём есть отладчик.


(!) ВНИМАНИЕ: некоторые антивирусы находят угрозу в полной версии XDev. На XDevLite пока вроде не кидались, но мало ли. Это связано с тем, что XDev собран в .exe при помощи линкера компонентной среды BlackBox Component Builder, довольно экзотичной в мэйнстрим-мире, и антивирусы очень плохо это переваривают.


Исходная версия игры использует следующие модули:


Basic (доступ к стандартным возможностям ZX Spectrum BASIC);

Console (для свободного доступа ко всем 24 текстовым строкам экрана; дело в том, что стандартный ZX-BASIC имеет доступ только к верхним 22 строкам, а нижние - это служебная область, доступ к которой возможен лишь ограниченно - через канал #0).

GrFonts (подключаемый русский шрифт с псевдографикой, взятый из русификатора KeyRus (режим CGA, 8x8 точек) Дмитрия Гуртяка.

GrTiles (графический модуль для вывода тайлов).


В нашем порте будем использовать только набор возможностей "Монитора", прошитого в ПЗУ, что при всей скудности даёт нам уверенность, что игра запустится на всей линейке совместимых с "Радио 86РК" компьютеров ("Апогей", "Микроша", "Партнёр", "ЮТ-88" ("Монитор-F"), "Микро-80" и т.д.).


По-хорошему, медленность вывода текста "Монитором" даже пугает. Но у нас всегда есть запасная возможность сделать библиотеку прямого доступа к видеопамяти. Но сейчас мы для более органичного погружения в мир советских восьмибитных компьютеров всё-таки остановимся на выводе через "Монитор". Это придаст нашему порту некую дополнительную универсальность при работе на других РК-совместимых машинках. Но, повторюсь, динамическую игру писать с выводом через "Монитор" такое себе удовольствие. Ещё и курсор постоянно мелькает в позиции вывода текущего символа. При помощи подпрограмм для прямого доступа к видеопамяти мы могли бы загнать его в какую-то одну позицию и пусть себе там и мигает. Именно так сделано в игре Dizzy 7/5. Погасить курсор средствами "Монитора" невозможно, а настолько погружаться в мир РК-86, чтобы писать подпрограмму для прямого доступа к видеопамяти, да ещё и на ассемблере, да ещё и работающую на разных РК-совместимых, что-то совсем не хочется. Поэтому ограничимся "Монитором". Это не совсем правильно для разработки игры, но для начала и так хорошо. Тем более, мы даже язык высокого уровня не сможем обвинить в тормознутости вывода — тут в "Мониторе" дело.


Если вам интересно чуть углубиться в низкоуровневое устройство РК-86, то вот страничка из журнала "Радио" той эпохи, показывающая некоторые вызовы "Монитора" и как устроена видеопамять в моделях 16К и 32К (кстати, наш порт будет работать на них обеих):


А вот знакогенератор РК-шки. В нём действительно отсутствует один псевдографический уголок. Но на самом деле он есть, просто его "Монитором" не вывести.


Кстати, при выводе текста "Монитор" понимает управляющие коды типа курсор влево, перевод строки или очистка экрана. Что лишает нас возможности выводить через "Монитор" некоторые символы, коды которых совпадают со служебными (например, один из псевдографических уголков). Это досадно, но не смертельно. Постараемся обойтись без этого уголка. А все нужные нам уголки будем конструировать из двух символов.


Наш порт игры будет одномодульным проектом и для его разработки нам, в общем-то, даже не нужно знать точки входа в подпрограммы Монитора. Работа идёт на уровне мнемонических имён процедур и констант подсистемы K580Dev (модуль RK86). Чтобы увидеть набор средств, предоставляемых модулем RK86, откроем наш модуль FoxHunt.Mod, пропишем там импорт RK86, выделим имя модуля мышкой и выберем из меню XDev => Show Definition. Увидим мы примерно следующее:


DEFINITION RK86; (* Oberon-3 *)


CONST

Bell = 07X;

ClrScr = 1FX;

NoKey = FFX;

RusLat = FEX;


PROCEDURE- CURSOR (x, y: INT8);

PROCEDURE- GETCHAR (): CHAR;

PROCEDURE- GETKEY (): CHAR;

PROCEDURE- PRESSED (): BOOLEAN;

PROCEDURE- PUTCHAR (ch: CHAR);

PROCEDURE- PUTHEX (n: INT8);

PROCEDURE- PUTSTR (str: POINTER TO ARRAY [notag] OF CHAR);

PROCEDURE- QUIT;

PROCEDURE- RANDOMIZE (seed: INT32);

PROCEDURE- RND16 (): INT16;

PROCEDURE- RND8 (): INT8;

PROCEDURE- WAIT (time: INT16);


END RK86.


Отсюда примерно понятно, как сделать наш первый Hello World (он, разумеется, уже есть в подсистеме K580Dev):


(*$MAIN*) MODULE Hello; IMPORT RK86;

BEGIN

RK86.PUTSTR("HELLO WORLD!");

END Hello.


Здесь всё проще некуда. Директива (*$MAIN*) говорит среде, что это главный модуль, и начинать исполнение программы нужно с него (в самом языке Оберон нет понятия главного модуля). Дальше прописан импорт модуля RK86, потом исполняемая секция модуля и идёт вызов PUTSTR с параметром строкового типа. Дальше конец модуля и точка. Когда мы скомпилируем и запустим этот модуль клавишей F12, у нас будет собран и запущен в эмуляторе по умолчанию (сделайте ассоциацию расширения .rk с эмулятором РК-86) двоичный исполняемый файл в формате .rk, подходящий для загрузки в эмулятор.

Размер бинарного файла нашего Hello.rk составляет 39 байт, что сопоставимо с размером программы, закодированной на ассемблере.


Немного о структуре проекта на XDev. Проект мы разместим в отдельной произвольно названной директории. И у него будет такая структура:


Bin — здесь находятся скрипты компиляции сборки проекта Compile.bat и Build.bat

Mod — здесь размещены модули проекта (для удобства подсветки синтаксиса GitHub'ом я использую расширение .Mod, хотя здесь логичнее было бы .ob3 (диалект Оберон-3).

Obj — эту директорию среда использует для промежуточных файлов процесса сборки. Также в ней размещён конфигурационный файл транслятора Оберона в Си, в котором можно прописать опции трансляции — общие для всех модулей и/или отдельные для каждого. Типичный Ofront+.par для K580Dev содержит строку -sx3 -21 (символьные файлы пересоздавать, индексы массивов не проверять (это дополнительные накладные расходы для и без того дохлой РК-шки), размер адреса 2 байта (16 бит), размер типа SET 1 байт (самый лучший размер для эффективности на восьмибитных процессорах).

Sym — эту директорию транслятор Оберона в Си использует для хранения бинарных интерфейсов модулей. У нас тут хранится файл RK86.sym (взятый из подсистемы K580Dev/Lib/Sym) и небольшой скриптик для обновления символьных файлов из недр подсистемы (что бывает нужно в процессе активной модификации библиотек).


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


XDev у нас - среда разработки под Windows. Наверно, не составило бы большого труда сделать версию и для Linux, но лично мне работать под виндой комфортнее, и я этим не занимался. Поэтому сборочные скрипты у нас являются самыми обычными командными файлами Windows (в просторечии — батники, от расширения .bat).


Compile.bat вызывается по нажатию в среде кнопки F11 (скомпилировать текущий модуль) и для начала проверяет существование переменной окружения XDev, потому что он ищет подсистему по пути, заданном в этой переменной. Скрипты сборки скрывают излишнюю сложность от пользователя, и в них просто задаются необходимые нам свойства проекта. Так выглядит типичный функциональный Compile.bat:


@ECHO OFF

IFNOT "%XDev%"=="" GOTO XDev

ECHO Please set system variable XDev=X:\Path\To\XDev

PAUSE

EXIT


:XDev


SET MainMod=FoxHunt

%XDev%\K580Dev\Bin\Compile.bat %1


Здесь задано только одно свойство проекта: имя главного модуля. Более того, в одномодульных проектах его можно опускать. Так что, как видите, всё предельно просто.


Кстати, проекты подсистемы ZXDev могут конфигурироваться через удобное графическое окошко задания свойств, но для подсистемы K580Dev я это не успел сделать, но не страшно. Такой простой батник можно написать и самому.


Build.bat вызывается при нажатии F12 (собрать и запустить проект) и устроен подобным же образом:


@ECHO OFF

IF NOT "%XDev%"=="" GOTO XDev

ECHO Please set system variable XDev=X:\Path\To\XDev

PAUSE

EXIT


:XDev


SET MainMod=FoxHunt

::SET FileExt=rka

%XDev%\K580Dev\Bin\Build.bat %1


Отличия минимальные: вместо Compile.bat вызывается Build.bat подсистемы. Есть одно закомментированное свойство: расширение целевого файла, который сгенерируется при сборке проекта. По умолчанию оно будет соответствовать целевому компьютеру "Радио-86РК", а раскомментировать это свойство можно, чтобы получить расширение, характерное для компьютера "Апогей". Это удобно, если разные расширения ассоциированы с разными эмуляторами.


Какие ещё можно задавать свойства в сборочных скриптах? По задумке набор свойств варьируется от платформы к платформе. Конкретно для K580Dev мы можем использовать следующие свойства:


MainMod — имя главного модуля программы (если он единственный, можно опустить).

Modules — список всех модулей проекта, кроме главного (для многомодульных проектов), перечисленных через пробел с расширением .o (скомпилированный объектный файл zcc).

Options — опции компиляции для компилятора заднего плана (бэкэнд).

Include — пути для поиска заголовочных Си-файлов. Эта опция понадобится при своей особой структуре проекта. Стандартная предлагаемая структура уже всё учитывает.

Libraries — пути для поиска библиотек и сами библиотеки. Тоже требуется при нестандартных путях и пользовательских библиотеках. Библиотеки подсистемы дополнительно указывать не нужно. Так что это поле тоже очень часто пустое.

Clean — “уборка” временных файлов после компиляции проекта. По умолчанию уборка включена, и пользователь не видит этих файлов. Но они могут и понадобиться — например, для просмотра карты памяти программы, использованных в ней процедур или для поиска ошибок на уровне ассемблера.

Start — автозапуск собранной программы в ассоциированном с расширением эмуляторе. По умолчанию включено.

Pause — не закрывать “чёрное окошко компиляции”, которое обычно мелькает (когда запускается батник) и сразу пропадает. Здесь можно увидеть логи компиляции и сборки. По умолчанию выключено. Но может быть полезно для поиска ошибок на уровне Си.

FileExt — расширение генерируемого образа магнитной ленты (по умолчанию .rk).


Подсистема K580Dev использует компилятор zcc из пакета z88dk. Кстати, про z88dk хочется сказать особо, что его команда разработчиков — молодцы — ребята отзывчивые, проект развивается очень стремительно, о поддержке в z88dk процессора 8080 и советских компьютеров я сам узнал недавно, что дополнительно мотивировало на портирование игры и написание этой статьи. Ведь некоторая ностальгия по РК-86 у меня имеется: хоть живой РК-совместимой машинки в своё время у меня и не было, но журнал "Радио" с простынями листингов и вкусным описанием ассемблера я в своё время читал. И первый ассемблер, который я учил, это именно ассемблер КР580 (он же Intel 8080).


Итак, вернёмся к нашему порту игры и вспомним, что у нас в распоряжении текстовый одноцветный экран размером 64x25, до странности медленный вывод текста через вызовы "Монитора", простейшее бипанье на динамик и клавиатура с отечественной латинской раскладкой — такой же, как русская ЙЦУКЕНГ.


Запрограммируем стартовый экран с меню, экран помощи и экран настроек. Здесь в оригинале используется несколько цветов, чего невозможно добиться на РК-86, поэтому упростим картинку до обычного текстового режима, учитывая, что в знакогенераторе РК-86 нет строчных букв. Нам понадобятся следующие функции "Монитора": очистка экрана, установка курсора в нужную позицию, вывод символа и строки, чтение нажатой клавиши (используем вызов GETKEY вместо GETCHAR, он без задержки и без звука), задержку времени (в условных единицах, под миллисекунды не калибровал), а также генерацию псевдослучайного числа — всё это есть в модуле RK86. Для очистки экрана просто будем выводить служебный символ с кодом 1FH. Так будет выглядеть стартовый экран на РК-86:


Чтобы передать правильно исходные пропорции игры (под 32x24), очевидно, что лучше всего будет на РК-86 выводить каждую букву через пробел. Тогда размеры будут соблюдены, и вид игры не пострадает. Также будем активно использовать псевдографические символы:


Эксперименты по отрисовке игрового поля показали, что при одноцветном исполнении очень большую выразительность приобретает насыщенность выведенного символа. Если включенные (светящиеся) точки занимают большую часть символа, то глаз легко выхватывает его среди остальных символов. Сначала была мысль границы клеток выполнить псевдографикой и убирать обводку для активной клетки, но цифры (количество лис) смотрятся очень невзрачно на поле, заполненном жирной псевдографикой. Потом пришло понимание: у нас же есть аппаратный курсор! Который всё равно мигает, и надо его куда-то приткнуть, чтобы не мешал. А раз так, то пусть он нам помогает. Опытным путём было выяснено, что размер клетки 4x2 символа не позволяет нормально отцентрировать цифру. И когда она сбоку, а курсор слева, то при игре ощущается некоторый дискомфорт. Так пришла мысль выделить для клетки одну строку и три столбца (слева и справа — пусто), а границы клеток поля заполнить не псевдографикой, которая очень сильно обращает на себя фокус внимания и сбивает его с действительно значимой информации, а менее насыщенными символами: "+" для пересечений, "-" для горизонтальных линий и "!" для вертикальных (символа "|" — вертикальная черта — в знакогенераторе РК-86, к сожалению, нет). Так было достигнуто отображение, при котором границы клеток не обращают на себя внимание. И тогда появилась ещё одна интересная мысль: выделить саму лису и флажок, помечающий отсутствие лисы, более насыщенными символами, так они легче бросаются в глаза. Для флажка я взял псевдографическую горизонтальную чёрточку (типа прочерк, но более жирный, чем "-"; он даже интуитивно воспринимается как отсутствие чего-либо, т.е. лисы), а для лисы псевдографическую стрелку влево. Помните, у нас остались пустые символы справа и слева от цифры-количества лис? Их я решил использовать для отрисовки так называемых axes — восемь направлений по вертикалям, горизонталям и диагоналям, которые облегчают просчёт того, какие клетки заденет выстрел. Сделав несколько разных проб, какие символы будут смотреться лучше всего (пробовал и "!", и "*" (кстати, смотрится неплохо), но в итоге остановился на символе "/". Насыщенность у него слабая, и глазу легче выделить его. Просто если не придерживаться этих эргономических вещей, то у нас будет на поле чисто каша, где что-то понять весьма непросто, особенно с непривычки и после цветов на Спектруме. Я играл в порт на РК-86, пробуя и так, и эдак, пока не добился наибольшего комфорта игры, чтобы зрением легко воспринимались и лисы, и флажки, и цифры, и axes (направления).


Небольшой хинт: если открылось 0 лис, нажмите пробел, и по всем направлениям отрисуются флажки. Это работает и для других цифр, но только если это количество лис по всем направлениям уже открыто. Кстати, эту часть авторского кода не пришлось особо править при портировании.


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


Были ли в процессе разработки глюки? Да, были. Критичные проблемы с порчей памяти были вызваны тем, что генератор случайных чисел даёт отрицательные цифры, и я обращался к массивам по отрицательному индексу, затирая другие переменные. Эта ошибка нехарактерна для программирования на Обероне, т.к. обычно проверка индексов на правильность по умолчанию включена. Но из-за накладных расходов, ещё и на очень тормозном РК-86, пришлось её выключить.


Как только набор необходимых низкоуровневых подпрограмм был разработан, я забыл о регистрах, стеке и низкоуровневости вообще, и сосредоточился на прикладном уровне. А вот это для Оберон-программирования как раз характерно.


Есть ли куда развивать данный порт игры? Пожалуй, что можно было бы увеличить скорость отрисовки axes (направлений), но только используя прямой доступ к экранной памяти. С этим есть сложности. Корифеи РК-86 с форума zx-pk.ru сами ещё не решили данную проблему для парка РК-совместимых. Я тем более не обладаю настолько продвинутым знанием архитектуры каждой из РК-совместимых машинок. Так что мы с вами коснулись только самой верхушечки разработки для этого семейства ретромашинок. Тем не менее, порт игры получился весьма играбельным и недурным на вид (смею надеяться!), и не очень выбивается из спектра остальных логических игрушек для РК-86, а особенно написанных на BASIC.


Вы можете скачать исходники оригинала/порта и собранные образы игры по ссылке https://github.com/Oleg-N-Cher/FoxHunt


Телеграм-группа, посвящённая портированию игры FoxHunt:


https://t.me/foxhuntzx


Буду рад посодействовать появлению любых ретропроектов на Обероне — от игровых до прикладных и системных. Ваши вопросы, идеи, предложения. Найти в сети меня легко по нику Oleg N. Cher.


Выражаю искреннюю благодарность Савелию Иванкову (Yprit) за предоставленный исходник игры и Александру Завгороднему (Kakos Nonos) за помощь при подготовке статьи.


Олег Чередниченко (Oleg N. Cher)

olegncher@gmail.com


#### Режим обучения своими руками (окончание)


ВСТУПЛЕНИЕ


И снова здравствуйте, уважаемый читатель. Если не всем, то многим довелось хоть раз в жизни прочитать какое-нибудь фантастическое произведение. Понимаю, что фантастика фантастике рознь, у каждого отношение к разным направлениям в пределах этого жанра может быть от «зашибись» до «ну так се» и даже «полный отстой». Да и условная субъективная граница между фантастичностью и правдоподобностью может существенно колебаться туда-сюда, одному подавай злых колдунов с драконами, похищенных прекрасных принцесс и добрых молодцев с волшебными мечами, другому – путешествия во времени, третьему – освоение дальнего космоса и контакт с инопланетным разумом, а иному так и вообще всё в одном :-). Признаюсь, что был такой период, который пришёлся на последние школьные и студенческие годы, когда количество читаемых книг «космического» направления жанра т.н. “science fiction” преобладало над остальными. Сейчас, конечно, некоторых авторов и тем более названий из тех, что прочитал, даже и не вспомню. И вот однажды в середине 90-х приобрёл я книгу неизвестного мне на тот момент писателя-фантаста. Одно его произведение так меня впечатлило, что послужило толчком в постепенному преображению моего сознания и мировоззрения от радикального атеистическо-материалистического к, скажем так, умеренной «золотой» середине. Эта книга и сейчас со мной, хотя много других я отдал или просто выкинул за ненадобностью. Кто автор и как называется произведение, думаю, многие догадаются и без подсказки. Лучше здесь замолвлю слово за другого писателя-фантаста. Одним из любимых представителей данного жанра был Гарри Гаррисон, его определённо юмористический стиль тогда вызывал чувство некой пародии на серьёзную научную фантастику. Я уже давно не читаю книг и не смотрю фильмы «космической» тематики. Как я теперь понимаю, то была не пародия. Суть в том, что астронавты с инопланетянами и «звёздные войны» ещё менее вероятны, чем злые колдуны с драконами и принцессы с молодцами :-).


ЭПИЗОД VI– ВОЗВРАЩЕНИЕ НЕПОБЕДИМОГО


> « – Вы арестованы за нанесение ущерба имуществу банка! – Ко мне, протягивая лапищи, уже нёсся робот-охранник.

> – В другой раз, рухлядь ржавая, – счёл необходимым ответить я и приставил к его груди стрекало для свинобразов. Два контактика на конце стрекала выдавали вольт триста со вполне приличным амперажем. Вполне достаточно, чтобы прошибить свинобраза весом с тонну, что уж говорить об этом роботе. Естественно, изо всех его дыр повалил дым, и чучело рухнуло на пол, грохоча, как мусорный бак»


> Гарри Гаррисон – «Рождение Стальной Крысы» (1985)


Итак, следующий пример – игра “Tongue Of The Fatman” (https://www.old-games.ru/game/download/1753.html), помеченная в разделе «Файлы» как «Floppy-версия» (Язык: English). Это ещё один интересный т.н. “fighting”, на этот раз от компании Activision.

Вам не надоело переодеваться, уважаемый читатель? Кимоно больше не пригодится, достаточно будет трусов типа «семейные» :-).


Сначала нам предлагается выбрать бойца из десяти возможных красавцев разных мастей. Пусть им будет самый первый слева, это гуманоид с планеты Земля, другими словами – человек, ну или по крайней мере внешне похожий на такового. Назовём его, например, Джеймс Боливар диГриз, он же Скользкий Джим :-).


Затем хозяин турнира в пренебрежительной форме требует ответа на один из каверзных вопросов, связанных со знанием текста руководства. Наш герой мог бы, конечно, сказать что-нибудь типа «В другой раз, свинобраз!» и треснуть хама по лбу стрекалом, но оного пока нет в наличии, так что лучше это сделать немного позже, в конце турнира :-).


Вместо преждевременного акта насилия введём любую произвольную последовательность символов, жмём ‘Enter’ и… Правильно! Удивительно, но факт. Закрадывается подозрение, что т.н. “copy protection” уже взломана. В начале 90-х архив с игрой мне попался в оригинальном виде, поэтому пришлось ковырять самостоятельно. Что ж, есть повод посмотреть, как это сделал кто-то другой.

Выходим из игры в DOS, нажав дважды комбинацию клавиш Ctrl-Esc, о существовании которой я намедни в руководстве прочитал, раньше этого не знал и выходил по Ctrl-Alt-Del :-(.

Итак, запускаем DEGLUCKER, следом за ним игру. На экране с запросом ввода ключевого слова нажимаем клавишу ‘Pause’ для всплытия инструмента. Оказаться можем в произвольном месте, в том числе и в BIOS-е, так что начинаем не торопясь продвигаться по коду, осматривая достопримечательности :-). Можно было, конечно, поступить и по-другому, ввести легко опознаваемую последовательность символов, вызвать инструмент, поискать в памяти буфер с введённой строкой и установить точку останова на доступ к ней. Так или иначе, но в данном примере нужное нам место находится достаточно быстро.


По смещению 8DD9 командой CALL 8AF8 {1.1} вызывается процедура проверки введённого ключевого слова. После анализа её работы выясняем, что на выходе в регистр AX заносится единица, если всё верно, иначе регистр AX обнуляется. Это значение помещается в регистр DI и по смещению 8DE0 командой OR DI,DI {1.2} будет установлен или сброшен Zero Flag (ZF) для дальнейшего принятия решения о переходе. Хммм… Никакого условного перехода мы не видим! Вместо команды JZ (опкод 74) или JNZ (опкод 75) стоит себе такой наглый безусловный JMP (опкод EB), смотрит на нас, да ещё и ухмыляется! Вот, значит, где и как чьи-то шаловливые ручки поработали :-). Запомним это, позже восстановим как было, по логике игрового кода здесь должна стоять команда JNZ. Далее по смещению 8DE4 следует команда DEC [WORD BP-0002] {1.3}, которая уменьшает количество попыток ввода, их оказывается целых три. Если все попытки израсходованы, то по замыслу разработчиков с нами надо бы попрощаться. Кстати, хотелось бы обратить внимание на такой нюанс, когда результат работы команды DEC достигнет нулевого значения, то будет установлен Zero Flag (ZF) и условный переход можно было бы сразу сделать при помощи команды JZ. Таким образом, следующая после DEC команда CMP [BP-0002],0000, занимающая аж четыре байта, совершенно лишняя, такая «оптимизация» на совести компилятора языка высокого уровня, в данном случае исполнимый файл содержит строку “Turbo-C - Copyright (c) 1988 Borland Intl.”. Так, просто взгляд мимоходом зацепился. Двигаемся дальше и отмечаем, что полученное выше значение регистра AX на выходе передаётся в процедуру более высокого уровня, ну и мы отправимся наверх следом за ним.


По смещению 8C19 командой CALL 8C79 {2.1} вызывается процедура, которая и производит все действия по реализации “copy protection”. Из неё, собственно, мы сюда и выскочили, как чёрт из табакерки :-). Значение регистра AX копируется в регистр SI, затем по смещению 8C20 командой OR AX,AX {2.2} устанавливается или сбрасывается Zero Flag (ZF). Мы, уважаемый читатель, наверное, уже не удивимся, обнаружив ещё один безусловный JMP, шаловливым ручкам его пришлось сюда поместить, так как значение в регистре AX не было должным образом установлено. Запомним и это, позже поправим, здесь также должна стоять команда условного перехода JNZ. Давайте уж сразу закончим дело с проблемой “copy protection”, черкнём на бумажку несколько байт для поиска этих участков игрового кода в исполнимом файле и выходим из игры.

Скопируем файл FATMAN.EXE с новым именем, например, FATTRN.EXE, в котором и будем производить все необходимые изменения. Файл ничем не запакован, так что запускаем HIEW, ищем записанные байты и... Вот те на! Нету! Как же так? Нужно успокоиться и немножко подумать. Можно в инструменте поставить точки останова на функции работы с файлами прерывания INT 21 и подсмотреть какие открывает и подгружает основной модуль. Или, например, просто взглянуть «со стороны» на прочие игровые файлы, их много, может быть, среди них что-то нас заинтересует? Есть несколько файлов с расширением .OVL, такое часто имеют программные оверлеи. И точно, в них находится явно осмысленный исполнимый код. Откроем в HIEW файл DISK13.OVL и снова поищем те самые байты. Ну вот, на этот раз всё прекрасно нашлось :-). Сделаем копию файла с именем DISK13.TRN и загрузим его в HIEW для дальнейшего редактирования.


Сначала восстановим условные переходы, которые были приговорены шаловливыми ручками {1}{2}, а затем сделаем более красиво. Зачем нам, уважаемый читатель, вообще напрягать себя, да и других желающих поиграть, вводом каких-то там ключевых слов? Мы же выяснили, что при правильном вводе в регистре AX будет единица. Поэтому сделаем так – заменим по смещению 4829 команду CALL, запускающую весь процесс, на команду MOV AX,0001 {2.1}. Типа «махнул кот в колпаке своей волшебной палочкой» … ВЖУХ! … и нету больше никакой “copy protection”. Да, он способен не только темы на форумах раз в неделю поднимать! :-)


Нужно проделать ещё кое-что. Так как мы переименовали главный игровой файл и один из оверлеев, найдём в файле FATTRN.EXE оригинальные имена этих файлов и изменим их соответствующим образом {3}. Заодно уж поправим и расширения имён двух других оверлеев, они нам позже понадобятся. В итоге при запуске игры сразу попадём на экран с сообщением о том, что всё сделали правильно.


Вот теперь вроде бы всё хорошо, но всегда хочется ещё лучше. Найдём файл FAT.TXT и заглянем в него {4}.


Ба! Да это же как раз те сообщения, которые выводятся в процессе проверки! Надо бы над ними немножечко поколдовать :-). Делаем копию файла с именем FAT.TRN … ещё раз ВЖУХ! … и ещё раз в файле FATTRN.EXE ищем и изменяем оригинальное имя файла {5}. Запускаем игру и любуемся :-).


Особенностью данного вида “fighting”-а является возможность делать ставку на результат текущего боя, увеличивая тем самым в случае победы количество «у.е.» на своём счету, перед началом турнира на нём лежит 1000. Во время боя разрешается применение разных приспособлений для защиты и нападения, которые можно приобрести в магазинчике доктора Кадавера. Давайте-ка туда сейчас и отправимся.


Мы можем выбрать только те приспособления, на которые нам хватает средств. Но это в нормальной игре, у нас же задача создания режима обучения. Что будем делать? Например, можем увеличить количество средств на счету до допустимого максимума, чтобы выбирать без ограничений. Или сделать любое приспособление в магазинчике бесплатным типа «демонстрационный пробник», это даже интереснее, так и поступим. Что будем искать? Игра позволяет взять не более четырёх приспособлений, то есть в коде, скорее всего, должна присутствовать проверка количества выбранного товара. Или сравнение и изменение имеющихся средств на счету в процессе товарно-денежных отношений. Лучше, конечно, применить комплексный подход :-). Вызываем инструмент и начинаем поиск, который вскоре приносит свои плоды. При выборе любого витринного образца просто невозможно пройти мимо следующего замечательного места игрового кода.


Каждый образец имеет свой порядковый номер, на основе которого загружается его цена. По смещению 809C командой MOV [BP-0010],DX {3.1} номер сохраняется для последующего использования. Далее двумя подряд командами MOV {3.2} в регистры DX и AX заносится из сегмента данных текущее количество средств на счету нашего героя, а командами SUB и SBB {3.3} оно уменьшается на сумму ставки перед текущим боем, если она уже сделана, типа «замороженная» сумма на счету. Здесь надо сказать пару слов о том, что все финансовые расчёты в игре происходят в каких-то других единицах, а для вывода сумм на экран в привычных для нас «у.е.» в должном месте вызывается процедура перевода. После внесения поправки доступное для покупок количество средств двумя командами MOV {3.4} также сохраняется для дальнейшего использования. Вот мы и добрались до проверки количества выбранного товара, по смещению 80B4 команда CMP [BX+003C],0004 {3.5} суёт нос в нашу сумку, типа «бери ношу по себе, чтоб не падать при ходьбе». Если у нас уже имеется четыре приспособления, то на этом всё, достаточно. Иначе в стек помещается номер выбираемого образца и командой CALL 0D61 {3.6} вызывается процедура загрузки цены, которая заносится в регистры DX и AX. И, наконец, две команды CMP {3.7} сравнивают цену образца с количеством доступных средств на нашем счету, если их недостаточно, то выбрать этот товар не получится. Запишем на бумажке несколько байт для поиска рассмотренного участка кода в файле, позже исправим в угоду нашей цели.


Если же средства позволяют, то по смещению 80D7 командой CALL 899A {4.1} вызывается длиннющая процедура, которая выводит информацию о выбранном товаре и производит все действия по купле-продаже. Нас в ней будет интересовать только пара коротеньких фрагментов.


По смещению 8A43 вновь видим команду CALL 0D61 {5.1}, то есть вызов процедуры загрузки в регистры DX и AX цены образца. Но если в первом случае выше это требовалось только для проверки того, что данное приспособление вообще нам «по карману», то здесь значение цены сохраняется в «расчётных» переменных двумя командами MOV {5.2}. Именно в этом месте и требуется внести изменения для обнуления цены образца. Запишем ещё несколько байт для дальнейшего поиска в файле. После подтверждения покупки товара происходит списание средств с нашего счёта. По смещению 8C19 две команды MOV {6.1} заносят значение цены из «расчётных» переменных в регистры DX и AX, а идущие сразу за ними команды SUB и SBB {6.2} уменьшают состояние нашего счёта в сегменте данных. Как уже несложно догадаться, в режиме обучения «расчётные» переменные будут содержать нулевые значения :-).


Приведу уж и код самой процедуры загрузки цены, которая располагается по смещению 0D61 {7}. Она вызывается не только в приведённых выше фрагментах, относящихся к выбору текущего образца, а гораздо чаще при загрузке цен вообще любого товара. Это можно использовать для создания альтернативного варианта, изменение кода непосредственно этой процедуры приведёт к обнулению цен всех предлагаемых приспособлений в магазинчике доктора Кадавера.

Теперь внесём необходимые изменения в исполнимый файл. Нужные участки кода находятся в файле DISK2.OVL, скопируем его с именем DISK2.TRN и загрузим в HIEW.


В первом фрагменте можно было бы обойтись просто командой безусловного перехода по нужному смещению, в обнулении значения цены здесь нет необходимости, но раз уж делать красиво, так делать. Главный принцип в подобных делах – «Не навреди!» – звучит немножко как каламбур :-), но всё-таки желательно вносить как можно меньше неопределённости в работу программы. Взглянем на оригинальный код, разобранный выше в окне отладчика {3.6}. Команда PUSH [WORD BP-0010] заносит в стек номер образца, это параметр для процедуры загрузки цены, а POP CX в данном случае выступает лишь в качестве короткой формы команды восстановления указателя стека ADD SP,0002 после вызова процедуры. Один байт вместо трёх, это уже оптимизация без кавычек, однако :-). Тем не менее, регистр CX получает соответствующее значение. Нам нужно организовать обнуление двух регистров DX и AX, а это очень удачная парочка, так как для подобной операции потребуется всего три байта, столько же занимает команда CALL 0D61. Заменяем вызов процедуры на команды XOR AX,AX и CWD{6.1}. Действия во втором фрагменте аналогичны, но обнуление значения цены в этом месте необходимо {7.1}. Запускаем игру, заходим в магазинчик, выбираем образец, смотрим. Как и было ожидаемо, цена товара теперь равна нулю.


Так, минуточку… почитаем описание… да это же самое настоящее стрекало! Теперь Скользкий Джим сможет взять сразу четыре штуки и вволю погонять стадо свинобразов туда-сюда.

Кстати, если бы мы пошли по альтернативному пути и внесли подобные изменения непосредственно в код процедуры загрузки цены, которая находится в файле FATTRN.EXE по смещению 1361, то магазинчик доктора Кадавера предстал бы перед нами в следующем виде.


Займёмся теперь укреплением физического состояния нашего героя. Система учёта динамических изменений во время боя не такая уж и простая. Каждый из бойцов имеет три показателя (красный, синий, зелёный), за уровень жизни отвечает средний (синий). Ещё у каждого может быть до четырёх приспособлений, при задействовании которых необходимо учитывать их влияние в реальном времени, так как многие имеют не разовый, а длительный эффект. Плюсом к этому ставки на бой ограничены по времени, что также требуется иметь в виду. Что ж, начинаем первый бой, наш герой справа.


Вызываем инструмент и начинаем исследование, используя, как и раньше, комплексный подход. Некоторые участки кода трассируем, ставим точки останова на исполнение возможных ответвлений и на доступ к подозрительным переменным, выявляем очевидные и не очень зависимости. Через некоторое время находим три процедуры, расположенные в памяти друг за другом, они являются универсальными, то есть используются для обслуживания обоих бойцов. Каждая отвечает за изменение одного из трёх показателей, нас будет интересовать средняя.


По смещению 67F6 командой CALL 7D9A {8.1} вызывается процедура чтения текущего значения уровня жизни, на выходе оно находится в регистре AX, а потом копируется в регистр SI. По смещению 67FD командой ADD SI,[BP+0006] {8.2} вносится поправка, но нам, уважаемый читатель, никто же не запрещает её не вносить :-). Далее по смещению 6825 командой CALL 7DB4 {9.1} вызывается процедура записи обновлённого значения уровня жизни. Итак, Скользкому Джиму снова повезло, вдобавок к халявным приспособлениям из магазинчика мы наградим его званием «Непобедимый». Для этого нам придётся немного доработать игровой код, присмотримся повнимательнее к «поправочной» команде ADD. Как уже отмечено выше данная процедура обрабатывает изменение уровня жизни обоих бойцов. Но как узнать, кто есть кто? Заглянем внутрь вызываемой процедуры чтения текущего значения, которая является ещё более универсальной, чем рассматриваемая.


Значения всех показателей хранятся в сегменте данных, для доступа к нужному в данный момент используется команда MOV AX,[BX+3206] {10.1}, адресация косвенная с добавлением фиксированного смещения. Переменная часть вычисляется и заносится в регистр BX, так, для показателя уровня жизни нашего героя он будет равен 0034, а другого бойца – 0002. Таким образом, нужно всего лишь добавить проверку регистра BX и дело, как говорится, в шляпе :-). Осталось прояснить вопрос с размещением проверочного кода.


Ага! Нашлась парочка маленьких нулевых блоков, очень похоже на выравнивание на границу параграфа. Да нам много и не потребуется, достаточно будет только одного верхнего по смещению 4EB6 :-). Стратегия такая – заместо команды ADD SI,[BP+0006] {8.2} вживить команду CALL вызова процедуры по смещению нулевого блока, в котором и разместить проверочный код с последующим возвратом. Всё, записываем на бумажке несколько байт для поиска в файле, покидаем инструмент и выходим из игры.

Приступаем к редактированию исполнимых файлов. Интересующая нас процедура находится в оверлейном файле DISK3.OVL, который нужно скопировать с именем DISK3.TRN, а нулевой блок – в главном файле FATTRN.EXE. Да, бывает и так :-).


Открываем в HIEW файл DISK3.TRN, ищем то самое место и по смещению 0EAD заменяем команду ADD SI,[BP+0006] на команду CALL {8.1} вызова процедуры на вычисленное ранее в памяти смещение 4EB6 в сегменте кода. Затем находим нулевой блок в файле FATTRN.EXE и по смещению 54B6 добавляем проверочный код. Если регистр BX равен 0034, то это внесение поправки для нашего героя, и мы её пропускаем, в противном случае для другого бойца выполняем {9.1}. «Всё понятно? Ну слава Богу!», как обычно говорил, исписав формулами всю доску, наш препод по «вышке» :-). Запускаем игру, начинаем бой и проверяем всё ли сделали правильно.

В итоге, у нас получился т.н. “Tongue-Of-The-Fatman-Trainer-Mode-Pack”, который позволяет убрать “copy protection”, взять бесплатно товар в магазинчике и получить неуязвимость в бою выбранного героя. Скачать архив с изменёнными и готовыми к употреблению файлами можно с сайта журнала по ссылке http://dgmag.in/N34/FATTRN.zip. Требуется только распаковать содержимое архива в каталог с игрой и запустить файл FATTRN.EXE.

Хотелось бы ещё отметить такой нюанс. В магазинчике есть особое приспособление, самое дорогое, применение которого во время боя сразу поражает другого бойца насмерть. Оно появляется в продаже не всегда и в нормальной игре, даже при максимальных ставках на результат боя, его возможно приобрести только ближе к концу турнира. Последним соперником будет сам хозяин турнира – тот самый свинобраз, который ранее домогался ввода ключевого слова. Так вот, у него в арсенале это приспособление будет и если он успеет его задействовать, то неуязвимость выбранному герою не поможет! Хуже того, на самого хозяина турнира это приспособление не действует, то есть нет смысла брать его в магазинчике перед последним боем :-(. Можно, конечно, ещё покопаться в игровом коде и разобраться с системой автоматического выбора и загрузки приспособлений для другого бойца и, например, добавить проверочный код с блокировкой выбора смертельного приспособления. Или поискать участок кода, который «убивает» выбранного героя, а затем его обойти. Фантазируем, пробуем, всё в наших руках :-). Я же предложу следующий вариант, тем более для его реализации у нас уже вся информация имеется.

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

В прошлом эпизоде был показан пример использования программы-загрузчика для изменения игрового кода «на лету», то есть непосредственно во время исполнения. Но свойство неуязвимости героя, добавляемое при помощи параметра командной строки, всё равно было статическим и действовало постоянно. Для динамического включения-выключения определённого свойства напрашивается задействование «горячих» клавиш. Поэтому наша программа-загрузчик должна, во-первых, выяснить «на лету» все нужные места для внесения изменений в игровой код и, во-вторых, отслеживать нажатия клавиш на клавиатуре. Создавая выше режим обучения в статическом виде, мы не задумывались о том, какие действия производит основной модуль с оверлейными файлами, это было неважно. Но в случае написания программы-загрузчика всё не так просто. Пикантность ситуации состоит в том, что после запуска основной модуль подгружает фрагменты разного размера как из оверлейных файлов, так и из самого себя, по мере необходимости. Таким образом, нужные нам места для внесения изменений не всегда будут находиться в памяти! Статья уже получилась длинная, так что разбор процесса написания программы-загрузчика вынесен за её пределы в качестве, скажем так, добровольного самостоятельного изучения, здесь же отмечу только главное. Итак, обработчик прерывания INT 21 будет отслеживать загрузку фрагментов игрового кода в память функцией чтения файла 3F и вносить требуемые статические изменения, а обработчик аппаратного прерывания клавиатуры INT 09 – «скан-коды» нажатых клавиш и динамически включать-выключать разные свойства. Такой вариант реализации посредством внедрения своего кода в адресное пространство программы-«жертвы» я называю «активным», то есть контролируется оригинальный код. Но возможно применить и альтернативный «пассивный» вариант, контролирующий оригинальные данные, в котором при нажатии «горячих» клавиш будет работать, например, обработчик аппаратного прерывания таймера INT 08 и тупо «долбить» одним и тем же заданным значением одну и ту же конкретную ячейку памяти. Или, соответственно, не «долбить», когда не требуется. Никаких проблем написания такого «пассивного» варианта нет, мы выше выяснили местонахождение нужных переменных, содержащих значения уровня жизни для обоих бойцов, при желании можно попробовать. Мне же больше нравится «активный» вариант. Архив с ASM-исходником программы-загрузчика с комментариями и готовый к использованию COM-файл можно скачать с сайта журнала по ссылке http://dgmag.in/N34/LOADER.zip.


На этой торжественной ноте можно бы и закончить. Ставить т.н. “like” не прошу, они мне ни к чему, я их не коллекционирую :-). Лучше выпьем ещё по чашке кофе за нового чемпиона – Джеймса Боливара диГриза, гуманоида с планеты Земля, человека. На правах нового хозяина он теперь может плюхнуться в роскошное кресло поверженного свинобраза и раскурить привезённую с родной планеты ароматную кубинскую сигару :-). Мы то, уважаемый читатель, понимаем, что это не кресло и не сигара, а только идея кресла и идея сигары. Равным образом как и сам Скользкий Джим лишь идея человека, воплощённая ребятами из Activision. Реальные сигары курят реальные люди, сидящие в реальных креслах за компьютером, и пьют реальный кофе. Как мы с вами, не правда ли? :-) Кстати, уважаемый читатель, а какого цвета кофе? Коричневый. А почему кофе коричневый? Потому, что кофе коричневый. Или потому, что где-то снаружи есть реальный кофе и он действительно коричневый. Может быть, он на самом деле фиолетовый, а какой-то идиот из компании Real Activision сделал его здесь коричневым. Так они, должно быть, ржут над нами, пьющими коричневый кофе... :-) Маленький тёпленький прудик, говорите? Хех… Забудьте об этом!


ЗАКЛЮЧЕНИЕ


Этот номер журнала выходит под флагом «компьютерной ностальгии», но за себя могу сказать, что воспоминания о некоторых старых компьютерах, отдельных «железках» и программном обеспечении вызывают к жизни и образы людей, так или иначе связанных с ними. Память человеческая как стена, на которой висят фотографии разных лет, отражающие былые события и их участников. Посмотришь – с кем-то до сих пор общаешься, кого-то не видел давным-давно, кого-то уже никогда не увидишь, а некоторых так и вообще лучше б не знать… Только вот со стены можно снять фотографию и убрать с глаз долой в ящик, или даже порвать и выбросить. А из памяти стереть гораздо проблематичнее. Можно, конечно, подзабыть временно, но в любой момент какой-то предмет, место или даже просто звучащая фоном песня может вызвать внезапный приступ ярких воспоминаний. И старые компьютеры тоже могут выступить в роли подобного предмета, запуская загрузку c «облачного» сервера в нашу оперативную память той или иной информации из прошлого :-).

В пятом эпизоде я упоминал о машинке «Роботрон» CM 1910, за которым и начал своё путешествие в этот увлекательный компьютерный мир. Небольшой рабочий кабинет, у стен два шкафа с бумагами, в центре два больших стола (слева – моей матери, справа – её хорошей приятельницы), на каждом по «Роботрону» и по принтеру, большое окно с видом во дворик, на котором совершенно нечего было разглядывать. При слове «Роботрон» я во всех красках сразу представляю себе этот кабинет, как будто только что оттуда вышел :-). Понятно, что мать свою я никогда не забываю, хотя и вижу не слишком часто, а вот другой женщины давно уже нет, её образ оживает только в данном контексте. Несмотря на то, что мои родители  по образованию учителя физики, мать, в отличие от отца, который всю жизнь преподавал в Универе, никогда не работала по специальности, а устроилась в Вычислительный Центр прикладным программистом. В детстве я не раз бывал у неё на работе, бегал по большому машинному залу среди компьютерных шкафов, магнитных барабанов и т.п., но тогда, конечно, меня это мало интересовало. Перфокарты, кстати, использовал в качестве закладок для книг :-). Гораздо позже я расспрашивал её о технике, на которой она работала – «Минск 32», «ЕС 1022», «Искра», «Нева», что-то ещё, уже не помню. Но вот «Роботрон» зацепил… За ним я состоялся как уверенный пользователь DOS, наловчился управлять Digger-ом и Lode Runner-ом, познал основы Turbo Pascal :-). На данный момент у меня есть такая машинка в полностью рабочем состоянии, потребовался целый год, чтобы выявить «глючные» комплектующие и подобрать им замену.

Подобных устойчивых ассоциаций я могу привести много, но хотелось бы упомянуть ещё об одной. Спустя некоторое время стала меня посещать мысль, что «Паскаль – это не очень интересно». Тогда я уже знал, что есть машинный язык, который ассемблером зовётся. По моей просьбе мать договорилась с одним из системных программистов, чтобы тот прочитал мне «вводную» лекцию по теме. Человек этот был инвалидом, организация устроила ему рабочее место на дому. Когда я в первый раз пришёл к нему в гости, он уже сидел за «двойкой». Серьёзный, суровый человек, много курил, но спокойно и терпеливо разъяснял мне непонятное и отвечал на вопросы. Записал мне на дискеты Tech Help, Turbo Assembler и документацию к нему, некоторые другие интересные программы. Всего заходил я к нему раз пять. Через несколько лет, в середине 90-х, случайно узнал о его судьбе. Он жил вдвоём со своей матерью, которая за ним ухаживала, а когда её не стало, то говорили, что в достаточно короткий срок его споили «чёрные» риелторы и забрали квартиру :-(. Так ли всё это было – не знаю, но в любом случае человека давно уже нет, а я ему благодарен и вспоминаю в процессе набора каждой ассемблерной программы…


«Серой громадою высится над головой.

Годы проходят стена остаётся стеной.

Сколько потерянных лиц отражает она.

Сколько потерянных лет за стеной…

Стена!»


«Чёрный обелиск» – Стена (1991)

https://www.youtube.com/watch?v=UphILPOgOYY


На этом у меня всё, благодарю за внимание :-).


P. S. Музыкальное сопровождение – W.A.S.P., "Ария", "Чёрный обелиск", "Круиз", Tina Turner, Nek, Eros Ramazzotti, Dr. Alban, 2 Brothers On The 4th Floor, Aqua, Corona (для безопасного прослушивания – ватные шарики в уши!), Владимир Кузьмин, Владимир Высоцкий, а также произведения Bach и Haydn.


Forza3dfx


### Интернет и сети

#### Проект "Народное достояние Рунета"


Добро пожаловать на сайт НДР!


В далёкую эпоху Web 1.0, когда доступ в интернет был медленным, люди находили время делиться своими увлечениями, знаниями и опытом, создавая домашние странички на бесплатных хостингах. Невысокая скорость интернета и небольшой объём бесплатно предоставляемого дискового пространства только способствовали полёту творческой мысли. В то время личный сайт был нечастым явлением, и люди нередко старались создать уникальный и необычный дизайн сайта. Хостинги narod.ru, newmail.ru, by.ru, boom.ru обрели всенародную популярность. На голом энтузиазме и простом желании поделиться с другими своим опытом, знаниями, взглядами люди создали много необычных и самобытных сайтов. Немалая часть любительских интернет-страничек выросла в крупные сайты, а иногда даже в целые мини-порталы.


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


Время не стоит на месте, и на смену бескорыстной эпохе Web 1.0 медленно, но верно пришла коммерческая эпоха Web 2.0. C приходом Web 2.0 практически не осталось места бескорыстию – распространение рекламы и извлечение прибыли было поставлено во главу угла. Кроме того, множество любительских сайтов стало пропадать по тем или иным причинам. Мы считаем, что с уходом Web 1.0 в интернете не стало чего-то неуловимого, но очень важного. Не столько художественного, культурного или технического. Это было настоящим информационным первопроходчеством выходцев из бывшего СССР, как знаменитые в прошлом полярные экспедиции, удивительные полёты чкаловцев и первые космические запуски. Любители, создававшие свои домашние странички «на Народе», были пионерами русского Интернета!


Это не совсем ностальгия, как может показаться на первый взгляд. Ведь возможности Web 1.0 оказались далеко не исчерпаны. Мы решили учредить нематериальную премию «Народное достижение Рунета». Основная цель нашей премии состоит в привлечении внимания к сайтам, размещённым на бесплатных хостингах, а также к сайтам любителей, выполненным в Web 1.0 стиле. К сожалению, политика администрации бесплатных хостингов претерпела значительные изменения не в пользу сайтов. Нужна помощь энтузиастов-добровольцев, небезразличных к судьбе сайтов, для поиска, скачивания и восстановления.


Нам, авторам премии, очень хочется показать Интернет с другой стороны. Для нас он не только бесконечная реклама и коммерция из каждого угла. По мере наших скромных возможностей мы всячески поддерживаем независимые проекты и порталы, созданные на основе Web 1.0.


Администрацией проекта ежеквартально проводится отбор как крупных проектов, так и простых домашних страничек. В будущем планируется внедрение опросов, а пока с авторами можно связаться по электронной почте, адреса указаны на сайте «Народного достояния», и по IRC каналу #www.fdd5-25.net. Автору вручается специальный баннер размером 88x31 с указанной на нём номинацией. Код для его вставки высылается по почте, указанной на сайте.


Эту статью писали авторы НДР и добровольцы:


Наталья (aka luniaini) – коллекционер ссылок, автор сайта http://musu_pilseta.neonarod.com


Илья (aka abrbus) – основатель проекта, реставратор сайтов Web 1.0, автор сайтов http://abrbus.ru и http://vinda.dax.ru


FDDVORON – автор проекта, автор Web_1.0 блога http://fddvoron.name


RBMK – доброволец, автор сайта http://mb7707.su, один из редакторов этой статьи


Официальный сайт нашей премии – http://ndr.abrbus.ru


Прим. ред.: непосредственно перед выходом статьи автор прислал следующие дополнения:


1. У нас появился новый домен – http://narodweb.ru. Старый домен тоже по-прежнему активен.


2. Обновился дизайн сайта. Он стал более солидным и «профессиональным».


3. Мы обзавелись новым IRC каналом – сервер irc.gramsk.ru, порт 6666, кодировка Windows-1251. Наш канал – #ndrirc. Инструкцию по установке и настройке клиентов смотрите тут – http://narodweb.ru/irc.html


4. Также мы приглашаем аудиторию НДР на ICQ-сервер KICQ – http://narodweb.ru/kicq.html


Илья Абрамов (abrbus)

FDDVORON

RBMK

luniaini


### Downgrade-арт

#### Девять миллиардов ударов по клавишам


То, каким будет день, я определяю по температуре воды, когда открываю утром кран. Если сразу идёт тёплая, день будет хорошим, продуктивным, а вечер — приятным. Холодная, непрогретая вода предвещает какую-нибудь гадость, что настигнет примерно в обед. Кипяток — жди нервотрёпку и бешеные гонки без результата. Ну, а если водоснабжение вообще отключили и на доске возле подъезда нет объявления, то случиться может всё что угодно.

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

— Суеверие, — сказал своему отражению в зеркале, когда причёсывался. — Суеверие и… этот… как его? — задумался, вспоминая интересный термин из прочитанной на досуге статьи. — Карго-культ!

Следуя по коридору на кухню, я услышал характерное «блямк» из спальни. Кто-то с утра пораньше ищет меня посредством всемирной паутины. С секунду поразмыслив, пришёл к выводу, что не произойдёт ничего плохого, если проигнорирую сообщение. Тем более, на кухне уже вовсю взывал закипающий чайник.

Бутерброд с колбасой и сыром вверг в привычную прострацию. Хлопающими от недосыпа глазами я смотрел на дерево за окном и на суетливых утренних птичек, как щебечут и прыгают с ветки на ветку. Вид вообще замечательный: раскидистая липа гладит по стеклу сочно-зелёными листьями. Завораживает, идти куда-либо совсем не хочется.

Но тут в мою эйфорию вторглось повторное блямканье из спальни. И кому это я так понадобился? Подобная настойчивость необычна. Минутное колебание — и любопытство перевесило: поплёлся на зов из интернета, прямо с бутербродом и чаем.

— Ну, надо же… — пробормотал я, заглянув в экран компьютера. — Давно не виделись…

Кобальт! Сколько лет, сколько зим!

А, в самом деле — сколько? Не могу припомнить. Наверное, полгода или год не было от него вестей. Можно, конечно, посмотреть историю сообщений, но с занятыми руками как-то не то.

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

Однако моё недовольство почти сразу смягчилось, когда подумал о том, сколько Кобальт платит за реализацию своих сумасбродных идей. Никогда не скупился и не динамил с переводом денег. Я поймал себя на том, что даже теперь, имея постоянную работу с неплохим окладом, был бы не прочь подшабашить у загадочного Кобальта.

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

Резюме, да… Незаметно для себя я переместился обратно на кухню…

Было это года три назад, сидел тогда без денег, поскольку выпускников ВУЗов без опыта особо не берут. Перебивался случайными подработками, сидел на интернет-бирже неприкаянных фрилансеров. Там-то и нарвался на Кобальта, заявки которого здорово выручили как в финансовом плане, так и по части получения реальных программистских навыков, живых производственных знаний. Со временем перепрыгнули с биржи-посредника на прямое общение, однако настоящего имени и хоть какой-то конкретики о роде деятельности Кобальта я так и не узнал.

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

Да и платит неплохо.


— — —


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

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

— Что не так? — вполголоса спросил у Юрки — моего ближайшего соседа.

— Почту посмотри, — буркнул тот.

Я заглянул в папку с полученными письмами и сразу всё понял.

Нет, точнее — не понял.

А если ещё точнее, то я понял, что произошло что-то крайне нехорошее, но что именно — нужно было разобраться. А для этого необходимо изучить содержимое почтового ящика. Однако сделать это не так-то просто, потому что за ночь на общую рассылку отдела прилетело 317 тысяч писем. От водопада низвергающихся сообщений в глазах зарябило, но в заголовках улавливалась одна и та же тема.

— Взломали? — тихо спросил я.

— Заспамили, — поправил Юра. — Триста тысяч регистраций на восемнадцати сайтах.

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

— Почти все — «аэрдэшные», — продолжал Юра, а я вдруг почувствовал, что надо было на сегодня брать отгул. — Семь из них полночи валялись в отрубоне. Такие дела.

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

Словно прочитав мои мысли, Юрка сказал:

— Он заходил десять минут назад.

— И как? — насторожился я.

— Как-как… — усмехнулся Юра. — Вот так! — Юра сделал неприличный жест. — Обещал зайти ещё раз, после оперативки у генерального. Видимо, будет вторая серия…

— Хватит болтать! — рявкнул со своего места неуравновешенный Денис. — Поработать не пробовали?

Мы с Юрой дружно замолчали и уставились каждый в свой монитор. Но Денис уже вошёл в раж:

— Блин, я всегда говорил, что облажаемся мы с этими шаблонами! Напихали им старья всякого!

— Всё-всё, не кипятись, — попытался успокоить Юра. — Это была…

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

— Да ладно тебе! Успокойся! — вступился Сергей — он у нас что-то вроде авторитета. — В конце концов, решение принимали все вместе. Не забывай — даже шеф одобрил.

— Шеф-шеф… — промямлил Денис, сбавляя обороты. — Мало ли чего он там одобрил… — с каждым словом Денис говорил всё тише вплоть до того, что через четверть минуты мы совсем перестали его слышать.

Вообще, он, конечно, прав. Защита от спама на обслуживаемых нами сайтах АРД — древность на грани исторических артефактов. Обычно мы говорим, что это лучше, чем ничего, и это тоже отчасти справедливо.

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

Так, если говорить о делах насущных, то желающему зарегистрироваться в личном кабинете на каком-либо сайте компании АРД, достаточно лишь дать ответ на простенькую задачку вида «2х2=?» Примитив из эпохи пятилетней давности. Нет ничего удивительного в том, что любой современный более-менее сообразительный робот-вредитель за минуту решит с сотню подобных примеров и, соответственно, наклепает сотню регистраций. А сайт при этом выпадет в осадок, с чем мы сегодня и столкнулись.

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


— — —


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

Вообще, если б я заранее знал о сегодняшних неприятностях на работе, то ни за что не подумал бы заходить к Жене. Но так уж получилось, что ещё с вечера закинул в сумку объёмистую книгу с намерением вернуть её владельцу. Книга посвящена базам данных, взял почитать года полтора назад и, если честно, осилил лишь первые страниц тридцать. Женя уже пару раз достаточно прозрачно намекал, что, мол, пора бы и честь знать, вот я и запланировал визит к товарищу.

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

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

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

Я махнул рукой, но потом всё же добавил:

— Запарился немного на работе.

— Ой, не говори! — поддержал Женя и ухмыльнулся — нет, это не злорадство, это у него такая манера разговаривать, я, например, привык и воспринимаю нормально. — Тоже сегодня целый день на ногах, даже пообедать не получилось. Есть курить?

— Ты же бросил.

Женя тоже махнул рукой:

— На сегодня мораторий отменяется.

Я достал пачку, и мы закурили.

— Главное, знаешь, спамеры одолели… — чуть закашлявшись, пожаловался Женя.

— Да ты что? — удивился я. — Вас тоже?

— Ага, натурально. Никакой антиспам не помогает. Наседают — мама не горюй!

— Вот-вот! — с пониманием поддакнул я.

— Задолбали закидывать запросами — все базы падают. Безопасники нас скоро расстреляют всех к чёртовой матери! — вновь хохотнул Женя, но тут же одёрнулся и осторожно оглянулся по сторонам.

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

— А у вас-то что? — спросил я, чтобы перебить неловкую паузу. — У вас же двойной периметр, защита должна быть нехилая.

— Наверно, — пожал плечами Женя. — Я в такие дебри не лезу. Сам же знаешь, что специалист из меня — так себе. Занимаюсь в основном ритуальным программированием.

— Чем-чем?

— Ритуальное программирование, — как ни в чём не бывало сказал Женя. — Ну, знаешь, это когда берёшь чужие разработки и бездумно вставляешь их в свою систему. Сам понимаешь: разобраться, как всё это на самом деле функционирует… целой жизни не хватит.

— А-а-а… — озадаченно протянул я. — Ну, типа карго-культа, — ввернул умное словечко.

— Ага, точно! — кивнул он. — Тоже читал про такую штуку. — Женя опять улыбается, но мне это не кажется таким уж забавным.

Карго-культ — это крайне примитивный и ложный взгляд на суть происходящего. Например, если бы я по утрам выкручивал кран до упора и ждал, когда из него польётся горячая вода, рассчитывая, что это принесёт мне удачу в сегодняшних начинаниях. Связи никакой, но человек будто бы уверен в том, что поможет.

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

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

— А что такого? У нас тут многие так делают, — с невинностью нашкодившего мальчишки улыбнулся он. — Я, конечно, понимаю, что это нехорошо… Но ты знаешь… — Женя понизил голос и придвинулся ко мне на полшага. — У меня всё чаще возникает ощущение, что… ну, как тебе сказать… — замялся, а взгляд озабоченно забегал из стороны в сторону. — Мне кажется, что мы настолько запутались, что уже давно перестали что-либо понимать… — Женя смотрит на меня как-то странно, и это несколько нервирует. — Ну, представь, что никто во всём мире ничего не понимает: в технике, в науке, в компьютерах этих долбаных.

— Ну, и?

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

— О господи… — Внешне я лишь отступил в сторону, однако внутренне шарахнулся от Жени как от чёрта лысого. — Скажешь тоже…

Я отвёл взгляд в сторону и только тут заметил серое лицо в окне четвёртого этажа. Некто мрачный из Жениной конторы с подозрением посмотрел на нас и тут же скрылся в темноте кабинета.


— — —


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

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

— Неразговорчивый ты какой-то, — пожаловалась она. — Задумчивый.

— Да, ты знаешь… — промямлил я, не представляя, что можно тут сказать.

— О чём думаешь? — пытается растормошить меня Света.

— О работе… Проблемку тут подкинули. Как в интернете отличить человека от робота.

— О-о-о, тест Тьюринга решаете?

— Это ты откуда такие слова знаешь? — удивился я.

— А вот знаю! — кокетливо улыбнулась Света. — Думаешь, я научпоп не читаю?

— Нет, просто…

— Ух ты! А это ещё что такое?

Мы остановились возле небольшого старинного и неухоженного здания с колоннами. Если память не изменяет, раньше здесь располагался дом культуры. Потом по ночам тут гремела шансоном и мигала лампочками ночная кафешка с танцами и шашлыками. Сегодня же перед входом красовался размалёванный фанерный щит, на который и обратила внимание Света.

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

— Прикольно! — ахнула Светка. — Тысячу лет не видела! Айда в кино! Смотри — начало через десять минут!

— Да ты шутишь! — усмехнулся я и хотел было прибавить что-то насчёт старья, которое с таким же успехом можно не смотреть ещё пару тысяч лет.

Но Светка меня опередила:

— Классика! Так романтично!

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

— Опять задумался, — насупилась она. — Ну, мы идём или нет?

— Да-да… — брякнул я, а в голове неожиданно вспыхнула совсем другая мысль.

Разглядывая аляповатую афишу, в которой как-то не к месту смотрелись цветастые и расплывчатые «ретроспективный показ фильмов-оскароносцев» и «от создателей лучших блокбастеров», я думал о том, что никакой Терминатор не смог бы разобрать, о чём тут речь. Ведь если бы не надписи, то и я не понял бы, что изображено на картинке. Значит, и роботу эту задачу не решить. В отличие от «2+2».

— Ну, что ты завис? — нудила Светка. — Идём уже, а?


— — —


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

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

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

— Матрицы-шматрицы… — услышали мы, когда он приблизился. — Терминаторы… — продолжал, глянув на афишу возле колонн забытого кинотеатра. Тут дворник прибавил неприличное слово, но в рифму.

Света хихикнула. Старик заметил, пощурился в нашу сторону и спросил:

— Молодёжь, огонька не найдётся?

— Найдётся, — кивнул я и нехотя полез в карман за зажигалкой.

Дворник подошёл к нам, дыхнул перегаром и закурил.

— Я говорю: в наше время такого не было. — Он опёрся о метлу и явно настроился на то, чтобы почесать языком. — В моей молодости были домовые и лешие! — заявил будто бы нравоучительно и даже поднял вверх узловатый палец.

Светка опять хихикнула, на что дворник с укоризной протянул:

— Эх, молодёжь! Не верите вы во всё это. Ни во что не верите. А знаешь ли ты, куда они все подевались?

— Кто?

— Ну, эти — лешие, домовые и прочие полтергейсты.

— И куда они подевались? — с задорным интересом спросила Светка, а на ухо мне шепнула: — Такой прикольный дядька.

— Куда-куда? — усмехнулся старик. — Известно — куда. В компьютеры они все переселились! Вот так вот! — Без всяких затей он достал из кармана спецовки чекушку, отвернул крышку и глотнул из горла. — Они ведь, знаешь, такие существа… Ну, эти, домовые — они без людей жить не могут. Как бы хранители очага или что-то такое. А раз люди ушли в компьютеры да в эти ваши интернеты, то и они туда переселились. Раньше дом оберегали, а теперь компьютеры охраняют, ага.

— Антивирусы такие? — пошутил я.

— Ну да, — нисколько не смутился весёлый дворник. — Вот ты — кто будешь?

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

— Ух ты! Я ведь тоже в прошлом программист. На каком языке пишешь?

— На «Джаве».

— Вон ты как! Слышал про такой. Но не использовал. А я всё больше на «Ассемблере», ну, и перфокарты тоже застал. Но ничего, значит, ты меня понимаешь. Я это всё к чему… — В задумчивости дворник подвигал метлой. — К тому, что у них ведь тоже свой синтаксис есть. У домовых и колдунов, например. Их заклинания — что твой язык программирования, так ведь? И молитвы там всякие — тоже. То, что молитва у священника, в синтаксисе другого языка может быть проклятием. Чуешь, куда клоню? А у католиков или мусульман такие слова, может, вообще ничего не значат, а?

Если честно, то разговор с умным дворником постепенно начал раздражать, однако из вежливости и расчёта, что побыстрее отвяжется, я многозначительно протянул:

— Ну да, всякое может быть.

— Я к тому, — не унимался он, — что никто не плохой. Просто у каждого свой синтаксис. Правила построения — вон как!

В этот момент запищал телефон, я с радостью схватил трубку и нажал на кнопку ответа.

— Слушай, тут такое дело… — без всякого приветствия сказал взволнованный голос, и я не сразу узнал Женю. — Только это между нами, ладно?

— Что случилось? — Я внутренне напрягся.

— Ты никому не рассказывал про наш разговор?

— Какой разговор?

— Сегодняшний. Когда ты заходил ко мне. Ну, ты понимаешь, о чём я…

— Ничего я не понимаю… — наотрез отказался я и подумал, что ещё никогда не сталкивался с таким Женей — голос растерянный, подавленный. — Ты что — пьяный?

— Ну, помнишь, я ещё… Никакой я не пьяный! Ну, я ещё сказал тебе, что… Короче, никому ничего не говори! Ты не обязан отвечать на их вопросы! Они не могут тебя заставить!.. Блин… Всё, я пошёл… — обречённо сказал Женя, после чего в трубке зачастили нервные короткие гудки.


— — —


Cobalt: То, сколько сил потребуется на выполнение работы, вас не должно волновать. Затраты будут хорошо оплачены.

Вы: Да, спасибо, я уже понял.

Cobalt: Задача непростая, я бы даже сказал — нестандартная, но она очень важна. Надеюсь, это объяснять не нужно?

Вы: Нет, конечно, я всё понимаю.

Cobalt: Очень хорошо. Вы читали задание?

Вы: Да, ознакомился. Есть вопросы.

Cobalt: Спрашивайте! Для этого я и зашёл в чат.

Cobalt: Вы тут?

Cobalt: ?

Вы: Да, тут. Извиняюсь — отвлекли.

Вы: Самое главное — я не до конца понял, зачем это нужно?

Вы: К чему такие сложности? Всё это может выполнить скрипт.

Cobalt: Так нужно! Таких вопросов не задавайте!

Cobalt: Некоторые нюансы просто примите на веру, остальное — спрашивайте.

Cobalt: Куда опять пропали?

Вы: Тут я.

Вы: Формулирую вопрос. Секунду!

Вы: Значит, нужно написать код. По вашим оценкам, примерный объём кода — около 9 млрд. символов. Во-первых, я хотел спросить: откуда взялась такая цифра? Во-вторых, объём очень большой, одному человеку написать такой код будет непросто. Чисто физически. Давайте попробуем разбить общую задачу на подзадачи?

Вы: Это в качестве предложения.

Cobalt: Вы невнимательно прочитали то, что я написал вам утром.

Cobalt: Постарайтесь посерьёзнее отнестись к этой задаче.

Cobalt: Максимально серьёзно.

Вы: Извиняюсь! Видимо, неправильно понял.

Вы: Минуту! Сейчас ещё раз перечитаю техзадание.

Cobalt: Не стоит! Я и так вам объясню. Только будьте так любезны: читайте внимательно и, если есть какие-либо вопросы, сразу спрашивайте!

Cobalt: Итак, код самой программы писать вам не нужно. Она уже написана. Это понятно?

Вы: Да.

Cobalt: От вас же требуется написать вспомогательную программу, при помощи которой этот код будет введён.

Вы: Хм…

Cobalt: Что такое? Какой вопрос?

Вы: Для начала, хотелось бы взглянуть на вашу программу. Что за код?

Cobalt: Это исключено!

Cobalt: Не обсуждается!

Cobalt: В определённый момент, когда у вас всё будет готово, я укажу вам базу, с которой будет считываться код. Скачивание будет поэтапным. Ваша программа будет забирать код кусками, фрагментами. Это понятно?

Вы: Пока не совсем. Ну да ладно. А дальше?

Cobalt: Лучше сразу спрашивайте!

Вы: Да нет, пока всё ясно. А дальше?

Cobalt: Дальше всё очень просто. По завершении, когда весь код будет скачан и вбит, моя программа будет выполнена. Собственно, вот и всё.

Cobalt: Но есть нюанс, и это самое сложное.

Cobalt: Вы читали пункт №5?

Вы: Секунду!

Вы: Сейчас…

Вы: Не понял. Что это означает? Почему так?

Cobalt: Повторю: некоторые моменты мы обсуждать не будем! Я плачу вам деньги, вы выполняете работу. В конце концов, деньги немалые, сумма вас устроила. Поэтому не вникайте в то, зачем всё это нужно.

Вы: Да, конечно. Это понятно.

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

Cobalt: Не тысячи, а миллионы. Но зачем так — вам знать не нужно.

Cobalt: Если вам так проще, то можете думать, что код закрытый, представляет собой коммерческую тайну. Поэтому мы можем показать отдельно взятому человеку лишь его часть, но не целое. Маловероятно, что такое количество людей задастся целью собрать код воедино. Такое объяснение вас устраивает?

Вы: Ну да, пожалуй.

Cobalt: А если точнее?

Вы: Да, вполне. Устраивает.

Cobalt: Очень хорошо. Объём моего кода — около 9 млрд. символов. По моим предположениям, каждый пользователь может ввести примерно 10-15 символов из этого кода. Но должен это сделать своими руками, со своего компьютера. Ваша задача — придумать и написать программу, которая заставит пользователя ввести нужные нам символы. Может быть, это будет какая-то лотерея или тест, в ходе которого человек нажимает на клавиши в нужной нам последовательности. Это уж вам решать. Теперь понятно?

Вы: Кажется, да. Пользователь вводит нужные нам символы, после чего другой такой же пользователь вводит следующий блок символов. Все эти блоки на самом деле часть вашего кода. Блоки подсовываются пользователям в определённой последовательности. После того как последний блок будет вбит, запустится ваша программа. На этом задание будет выполнено. Так?

Cobalt: Совершенно верно! Не зря я решил дать этот заказ именно вам.

Cobalt: Однако есть немаловажный нюанс — если пользователи будут вводить фрагменты друг за другом, на это уйдёт очень много времени. Поэтому нужно продумать алгоритм так, чтобы пользователи вводили фрагменты параллельно друг другу, как бы одновременно множество фрагментов.

Вы: Ах, да! Я как-то не подумал об этом.

Cobalt: Но не вздумайте писать скрипт, который сам выполнит ввод символов! Это легко проверить!

Вы: Нет, что вы! Даже в мыслях не возникало!

Вы: Другой момент — что будет, если пользователь передумает вводить предложенные символы?

Cobalt: Да-да, такой сценарий тоже должен учитываться алгоритмом. Разъяснения по этому поводу находятся в 22-м пункте техзадания. Другими словами, если пользователь передумает, его блок символов передаётся следующему пользователю.

Вы: А, да, вижу. Есть такой пункт.

Cobalt: Также прошу обратить внимание на пункт №17. Там указано, что нельзя использовать программы, которые подменяют вводимые пользователем символы.

Вы: А, ну да, логично.

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

Вы: Понял. Теперь более-менее задача ясна.

Cobalt: Это точно? У вас больше не осталось ко мне вопросов?

Вы: Да.

Cobalt: Хорошо. Тогда спрошу я: сколько времени потребуется на реализацию?

Вы: Пока сказать не могу. Нужно подумать. Есть тут одна идея.

Cobalt: Это очень хорошо, что идея уже есть. Думайте! Решайте! Сроки поджимают.

Cobalt: Если вопросов больше нет, то желаю вам продуктивно поработать! Жду промежуточные результаты завтра утром!

Вы: Спасибо! Секундочку! Всё же есть один вопрос!

Cobalt: Деньги уже перечислены. Проверьте состояние счёта на вашей карте.


— — —


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

Поднимаясь с кровати, мельком взглянул на часы — 6:42. Вообще-то, должен был поспать ещё добрых восемнадцать минут, каждая из которых на вес золота, если учесть, что лёг два часа назад. Но в дверь позвонили три раза, поэтому рассчитывать, что оставят в покое, не приходится.

Я открыл и посмотрел в проём. На пороге стояли два хмурых человека. Может, тоже не выспались? Ни слова не говоря, один из них ткнул мне в лицо удостоверением, после чего оба прошли в квартиру, закрыв за собой дверь на замок.

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

— Пройдёмте, — буркнул тот, что повыше, подхватил меня под локоть и буквально впихнул в кухню.

Второй указал на табуретку и, когда я присел, мрачно спросил:

— Что он вам рассказал?

— Кто? — с трудом вымолвил я, ощущая, как дрожат колени — то ли от страха, то ли от утренней прохлады.

— Евгений Зайцев. Вы разговаривали с ним вчера вечером.

— Да, собственно…

— Неправильный ответ. Быстрее! Что он вам рассказал?

— Да ничего особенного… Сказал, что никто ничего не понимает.

— В каком плане?

Они нависли надо мной, а я вдруг осмелел — действительно, какого чёрта?

— Ничего я вам не буду говорить! Вы не имеете права… — к концу фразы голос мой потерял уверенность.

— Что ещё он сказал? — невозмутимо продолжил высокий.

— Что никто ничего не понимает, но все продолжают что-то делать. Вот, собственно, и всё, больше ничего не говорил.

— Не лгите нам! — сказал второй угрожающе, и мне показалось, что они сейчас начнут меня бить. — Что он вам сказал про электрон?

— Про… электрон… — Мысли хаотически забегали в голове. — Ничего не говорил.

— Неправда! Он сказал вам, что электрон никто не видел.

— Какой электрон? Вы о чём вообще?

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

— Не было! — взмолился я. — Не говорил он ни про какие электроны!

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

— Господи! Да что вы такое говорите! — возмутился я.

— Он сказал вам также, что никакой науки не существует, а всё это — выдумка, чтобы обмануть общественное мнение. Может, вы и это отрицать будете?

— Буду! Не было такого!

— Какого именно не было? Не было обмана общественного мнения?

— Нет, я про то, что…

— Значит, нет? Значит, вы тоже считаете, что обман имеет место? Может, вы ещё и думаете, что есть некий заговор с целью обмана? Отвечать быстро!

— Да ничего я не думаю!

— Думать! Быстро! — приказал второй. — Отвечать! Что вы знаете об обмане общественного мнения и заговоре?

— Ничего я не знаю! — выкрикнул я и как-то обмяк всем телом. — Не знаю я ни про теорию заговора, ни про науку!

— Про теорию никто пока не говорил, — поймал меня на слове тот. — Значит, вы и теорией владеете? А что насчёт науки? Кто ей управляет?

— Я придерживаюсь научной точки зрения, — твёрдо заявил я, уже совсем не понимая, что за балаган происходит у меня на кухне. — Наукой управляют учёные!

— Что вам известно про комитет управления наукой?

— Да какой ещё к чёрту комитет?

— Откуда вам известно про структуры управления научными знаниями?

— Женя мне сказал, — не к месту вырвалось у меня. Вдруг охватила потребность говорить хоть что, любую чушь, лишь бы это соответствовало их ожиданиям и они побыстрее убрались. — Он сказал, что Солнце вращается вокруг Земли! — ляпнул я.

— Это уже теплее! Так-то уже лучше! — одобрил высокий. — Говорите только правду, это вам впоследствии поможет!

— А американцы на Луне видели инопланетян!

— Ну, вот тут-то не надо увиливать! Это он сказал вам, когда понял, что разговор прослушивается. Я же спрашиваю: что он сказал до этого?

— Не помню… — обессилено ответил я. — Бред какой-то…

— Кстати, чем вы занимались сегодняшней ночью?

— Работал.

— Сверхурочные?

— Типа того. Подработка.

— Вот как? Кто заказчик? — со зловещим интересом спросил высокий, а я понял, что вот сейчас действительно допустил глупость. Если они узнают о Кобальте и его странном заказе, то объясняться придётся очень долго.

— В общем, так! — Второй подхватил меня под руку и заставил подняться. — Придётся вам проехать сейчас с нами!

— Куда это ещё? — испугался я, а они уже вытолкали меня с кухни и повели в спальню. — Я никуда не поеду!

— Одевайтесь! Не поедете же вы в одних трусах!

— Мне на работу надо!

— Ваш работодатель уже оповещён.

— Оповещён? О чём?

— О том, что вы сегодня не придёте.


— — —


То, где я был, осталось для меня загадкой. Заходили через заднюю дверь. А когда они меня отпустили, провели к главному выходу. Уже сойдя со ступенек, я оглянулся на табличку и к своему удивлению прочёл: «Институт пчеловодства и животноводства». Остаётся лишь догадываться, кого сотрудники данного учреждения считают за пчёл и, особенно, за животных.

Ответ на этот вопрос достаточно чётко сформировался в моей голове за целый день пребывания в неприятной организации. Едва добравшись до киоска на углу, я купил две сосиски в тесте и газировку, которые тут же буквально проглотил — моя первая еда за сегодня. Переведя дыхание и немного собравшись с мыслями, позвонил шефу.

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

— Надеюсь, ты не пострадал? — заботливо спросил шеф. — Как всё прошло? Без потерь?

Такой оборот поставил меня в тупик, и я вновь промямлил что-то неопределённое. Шеф же, наоборот, вдруг принялся излагать подробности: оказывается, ему ещё ранним утром позвонили из некоего учреждения и сообщили, что один из его подчинённых мобилизован на очень важную и почти секретную операцию по борьбе с организованной преступностью. Как я понял, звонивший каким-то образом продемонстрировал свою легитимность и правомочность действий, так что у шефа не возникло сомнений или вопросов. Более того, провозглашалось моё высочайшее значение для операции, а выполнение гражданского долга выставлено чуть ли не как пример для подражания.

— В общем, расскажешь завтра, как всё было. Больше не отвлекаю. Отдыхай! — закончил шеф и бросил трубку.

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

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

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

Быть может, врождённая впечатлительность и развитое воображение играли со мною в не самую приятную игру, однако мне вдруг представилось, что не так уж далёк Женя от истины. Что, если и в самом деле научно-технический прогресс взметнулся до такого уровня, что даже происходящие в обыденности вещи стали нам совершенно непонятны? Ни для кого не секрет — качество сегодняшнего образования оставляет желать лучшего. Так представь себе, что наработки предшествующих эпох для нас теперешних — что-то за гранью. Открытия Ньютона или Пастера, выведенные ими законы со школьной скамьи для нас — аксиома, не подлежащая обсуждению. Поэтому и не вникаем в саму суть, а просто заучиваем — просто потому, что так надо.

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

Много, слишком много приходится принимать на веру, а истина как витала где-то в облаках, так там и осталась, и ни на шаг ты к ней не приблизился. Хотя и мнишь себя умным и образованным. Вот и получается, что в какой-то момент связь времён прерывается. А если кто-либо решил приглядеться повнимательнее, то открытое и изобретённое до нас становится совсем непостижимым. И Женя говорит, мол, все только делают вид, что в курсе, а на самом деле ничегошеньки не понимают, но продолжают что-то делать, действовать, не вникая. Тем, кто наверху, такое положение тоже не особо нравится, однако что они могут предпринять? Ага, так же как все — с умным видом надуть щёки, продолжать по накатанной. Ну, и плюс — пресечь лишние вопросы, одёрнуть, если кто вдруг вздумает вдаваться в подробности или вносить смуту.

Работает — не трогай! А то можешь и сломать. Ведь если сломаешь — починить будет уже некому.

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

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

Но в последний момент отпрянул. Дверь была не заперта.

Этого ещё не хватало…


— — —


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

— Пришёл… — сказала Света, выйдя в прихожую. Голос без выражения, безо всякой эмоциональной окраски, просто констатация факта.

— Угу, — так же уныло ответил я и принялся расшнуровывать кроссовки.

— Где был?

— Ой, не спрашивай… Всё равно не поверишь.

Я поднял голову и взглянул на Светку. Несмотря на грозный вид — сжатые в кулаки руки упёрлись в бока, брови сдвинуты, губы нервно сжаты — она показалась мне такой родной и прекрасной. Света — самая лучшая на свете! Пусть и передник у неё заляпан, а котлеты наверняка подгорели.

— Я ему целый день звоню, а он трубку не берёт! — продолжает она. — Недоступен, блин! Мог бы хоть СМСку отправить! Ты где был?!

— Свет, сейчас всё расскажу, — примирительно говорю я, но Света не слушает.

— Переживала, между прочим! Юре позвонила — тот говорит, что ты отпросился. Женя тоже ничего толкового не сказал.

— Та-а-а-к! — протянул я, продолжая стряхивать с ноги кроссовок, который никак не хотел слезать. — Ты звонила Жене? И как он?

— Как? — озадачилась Света, мой вопрос её удивил. — Как-как? Никак! Сказал, что приболел и сидит дома. Про тебя ничего не знает.

— С ним точно всё нормально?

— Ну, вроде, да… А чего это тебя вдруг так интересует его состояние? — Света с вновь возникшим подозрением упёрлась в меня взглядом. — Стоять! Ты мне ответишь на вопрос: ты где был?! Уж не с Женей ли вы там опять куролесили? Да так, что он аж заболел?

— Нет, ну что ты! — я старался говорить как можно мягче. — Женя тут совсем ни при чём… То есть… — задумался, понимая, что как раз Женя тут очень даже при чём. — Ну, в общем, это не то, что ты имеешь в виду… — закончил я, хотя вот так говорить уж точно не стоило.

— А что я имела в виду?

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

— Ой, да ладно тебе подлизываться! — отвечает Светка. — Иди руки помой и переоденься. Котлеты стынут.

— С макарошками? — вспомнил я старую шутку из интернета.

— Нет, с Наташкой, — усмехнулась Света. Значит, оттаяла.

— Слушай, а у Жени действительно всё нормально? Тебе он не показался каким-то странным или…

— Да чего ты пристал со своим Женей! Спал твой Женя, когда я ему звонила. По крайней мере, голос был такой… как всегда, тормозной.

— Ну, вот и славно! — сказал я, а сам подумал, что надо бы ему позвонить. Чуть позже, когда всё окончательно уляжется.

Странно, конечно, что он до сих пор не дал о себе знать. Хотя я ведь тоже не вышел на связь с ним. Будем надеяться, что на этом наши приключения закончились, решил я.

— Свет, знаешь что…

— Что? — Она прижалась ко мне всем телом и подняла взгляд. Глаза большие и по-детски наивные.

— Выходи за меня замуж! — сказал вдруг я. Неожиданно даже для самого себя.

— Вот ты сейчас серьёзно? — с замиранием в голосе спросила Света.

— Да. А что такого?


— — —


То, сколько заплатил Кобальт, честное слово, не имело для меня большого значения. Деньги — это важно, но всё же где-то в глубине души я идеалист. Если задача сложная и интересная, готов работать бесплатно. Ну, или почти бесплатно. Символическая сумма, разумеется, не повредит.

А поставленная Кобальтом задача была как раз из разряда заковыристых, из тех, что мне так нравятся. И как к месту пришлись проблемы с сайтами АРД. Одно к одному, можно подумать — сама судьба постаралась и преподнесла подарок…

Казалось, руки меня не слушаются. Пальцы сами стучат по клавиатуре, выписывая программный код. Нет, не код — музыка! Симфония для программиста, соло отчаянного одиночки.

А получается вот как. Если для спам-роботов задачки типа «дважды два четыре» слишком примитивны, и они их с лёгкостью решают, то что же придумать взамен? Пример с интегралами? Ага, конечно: ни один пользователь-человек не осилит, просто развернётся и уйдёт с сайта, не зарегистрировавшись и не авторизовавшись. В то время как для любого компьютера трёхэтажный логарифм — семечки. Нужно что-то другое, такое, что человек поймёт и запросто разгадает, а робот — нет.

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

Идея, разумеется, не моя. Просто нужно быть в курсе последних новинок. Читать материалы по специальности — наше всё. Вот и натолкнулся недавно на статейку одного заграничного автора — между прочим, довольно известного теоретика-разработчика. Достаточно лишь вывесить на обслуживаемых нами сайтах такие блоки искажённых символов — и служебная задача решена!

Вроде бы, я даже рассмеялся в голос. Тут же обернулся — всё в порядке, Светка мирно посапывает на диване. Улыбается во сне — как мило! Идиллия! Как жаль, что она не знает, чем сейчас занят её ненаглядный. Не посвящена в тайну моего гениального плана.

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

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

Разместив в углу монитора счётчик введённых символов, я встал и в привычном возбуждении зашагал по комнате. Есть у меня такая привычка — ходить из угла в угол и потирать ладони.

— Не топай… — сквозь сон пробубнила Светка.

— Хорошо, — тихо ответил я.

Пришлось снять тапки и ходить босиком.

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

В последние несколько минут я думал о Кобальте и его программе. Что он этим хотел добиться? Для чего предназначается неведомый код?

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

Когда вернулся в комнату, за окном уже намечался рассвет. Счётчик давно перевалил за 8,8 миллиардов. По моим прикидкам, оставалось минут десять. Самое время праздновать победу, подумал я и отпил из кружки кофе.

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

Ну, и ладно! Утром спишемся. Ощутимо клонило в сон, я широко и с удовольствием зевнул. Ничего не нарушало предрассветного спокойствия, разве что счётчик на экране.

Наконец и он замер, запечатлев заранее известное мне значение.

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


Артём Курамшин

http://kuramshin.me/


#### Making of «Makes sence»


Страница https://www.pouet.net/prod.php?which=87467


Возникшая пандемия в 2020 году нанесла удар не только по IT, но и по демосцене: внезапно стали отменяться заранее объявленные demoparty, причём организаторы отказывались проводить мероприятие онлайн, мотивируя тем, что «мы хотим собраться и встретиться». Так получилось, что я не планировал участвовать в следующих demoparty, а также в Demosplash, но ряд событий повлиял на моё решение. Во-первых, накопилось несколько демоэффектов, которые были написаны после возникших идей. Во-вторых, я стал сомневаться в необходимости участия в demomaking. К тому же для создания демо не было идеи. Общение в канале Telegram дало подсказку – просто запустить эффекты под музыку. Так я и поступлю – синхронизирую демоэффекты под музыку, а дальше посмотрим, как получится.


Движок демо я написал 6 лет назад, при разработке понадобились некоторые особенности.

Начало:


di

jp start_demo

include "utils.inc"

callbyHL: jp (hl)

;--------------int--------

INTVEC  PUSH AF,BC,DE,HL,IX

EXX:PUSH AF,BC,DE,HL

EXA:PUSH AF


ld hl,(callb4)

ld a,h:or l:call nz,callbyHL


ld a,(curpage):and #18:or 1

ld bc,#7FFD:out (c),a

call PLAY

ld a,(CurPos)

ld (notecnt),a

ld a,(curpage)

ld bc,#7FFD:out (c),a

v1:ld hl,0:inc hl:ld (v1+1),hl,(intcnt),hl

POP AF:EXA

POP HL,DE,BC,AF:EXX

POP IX,HL,DE,BC,AF

EI:RETI


callb4 – указатель на вызываемую процедуру. Это связано с тем, что процедура pt3 player занимает большое количество тактов, а после начала рисования демоэффекта  возможен побочный эффект, который называется «сечение с лучом».


Две полосы цвета пересеклись с лучом, который отображает память. Причина: в тот же момент процессор записал

другие данные. Для старой школы сечение с лучом считается непрофессиональным.


Поэтому в векторе прерывания вызывается сначала процедура-демоэффект, а потом процедура-проигрыватель pt3.

Важное требование – чтобы по количеству тактов две процедуры уложились за один фрейм.


Часть постоянно используемых процедур – очистка экрана, распаковка данных, сжатых zx7, подсчет адресов down_hl и down_de – объединены в общий файл utils.inc. Для удобства все адреса формировались с помощью скрипта Lua:


LUA

local fp = assert(io.open("demovars.inc", "wb"))

local ss=tostring( sj.get_label("uservar1") )

ss=string.gsub(ss , "%s", "")

fp:write("uservar1=")

fp:write(string.format("#%x",ss) )

fp:write("\r\n")

assert(fp:close())

ENDLUA


При подготовке всех частей использовалась заготовка


;DEFINE rel ;comment for sna,un for code

device zxspectrum128

ORG #6000

begin

... весь код..

IFNDEF rel

include "../utils.inc"

ELSE

include "../demovars.inc"

ENDIF

end

display /d,end-begin

IFNDEF rel

savesna "title.sna",begin

ELSE

savebin "01colsq.code",begin,end-begin

ENDIF


После готового кода можно убрать комментарий у директивы  DEFINE rel и получить готовую рабочую часть для демо.


А теперь по порядку.


Square circle


Идея возникла после написания статьи в одно электронное издание. Цвет квадратиков достигается за счет возникшего пространства, а сами квадраты стираются, а потом рисуются. Здесь же используется вызов callb4, потом музыка.

Титры переходят к следующей части.


Stack Color Squares


Как реализовать заливку экрана, я уже  писал в статье в журнале Downgrade. Здесь тот же самый случай – используется анимация для спрайта 16х16 точек. Идея анимации родилась после увиденной GIF-ки. Кажется, я писал сам эффект на двух платформах – ZX и Atari, размер интро 256 байт.

Идея раскраски проста – два квадрата движутся, но не пересекаются. Поэтому экран можно закрасить по атрибутам, условно обозначив цвет1 и цвет2:


12 22 21 11

12 11 21 22


Позже цвета меняют значения:


По отзывам зрителей, получился  jaw-dropping effect. И здесь используется callb4.


Two circles


Основа эффекта – сложение данных из таблицы:


При выводе на экран я использовал старый трюк, что был применен в Story (https://www.pouet.net/prod.php?which=78753): рассчитанные данные сравниваются с предыдущим кадром. Если данные совпадают, то знакоместо и цвет не рисуется.


They killed the demoscene


Были использованы графики функций:


Трюк в том, что координаты точек сохраняются и точки стираются со смещением на +7 в участке памяти.

Во фразе заложена одна идея, продолжение которой в


Они О...


Это просто анимация, сконвертированная из GIF-ки.


9 кадров заняли 1546 байт.

Посвящено одной тусовке: "В поисках спокойствия они убили демосцену. Они страх потеряли".


Падение рядового Райана


Увидел в интернетах картинку и решил попробовать простой эффект:


Для всех частиц нужны данные:

y – текущая координата

dy – скорость движения 1-2

c – цвет 0-15


Для всех значений частица стирается, значение цвета уменьшается на 1, координата Y уменьшается на dy. Если цвет достиг 0 или Y достигло отрицательного значения, то новые данные инициализируются. «Рядовой» рисуется атрибутами значения 64 (ink=white, paper=white). Сами значения «цветов» для частиц – текстура ordered dither.


Deformation


Основано на эффекте, который назывался plane deformation. Модель на PureBasic:


Dim t1.a(32,24)

Dim t2.a(32,24)

Dim s.a(256)

Dim c.a(256)


amp.a=32

For i=0 To 255

s(i)=Int(amp+(amp-1)*Sin(i*#PI/128))

c(i)=Int(amp+(amp-1)*Cos(i*#PI/128))

Next i


For y=0 To 23

For x=0 To 31

xx=x-15

yy=y-11

t1(x,y)=Int(255*Degree(ATan2(xx,yy))/180)

t2(x,y)=255-(xx*xx+yy*yy)>>1

;    Debug 255-t2(x,y)

Next x

Next y


da.a=0

dr.a=0

If InitSprite() And OpenWindow(0,0,0,640,480,"SineWave",#PB_Window_SystemMenu) And OpenWindowedScreen(WindowID(0),0,0,640,480,0,0,0)

Repeat


StartDrawing(ScreenOutput())

Box (0,0,640,480,0)


For y=0 To 23

For x=0 To 31

an.a=t1(x,y)+da

ra.a=t2(x,y)+dr


co.a=(s(an)!c(an))-ra;&

;   co.a=(s(an)+c(an))&ra;&


Box (x*8+256,y*8,8,8,RGB(co,0,0))

Next x

Next y

da=da+7

dr=dr+2

StopDrawing()

FlipBuffers()

Until WindowEvent()=#PB_Event_CloseWindow

EndIf


CreateFile(0,"coolsin.bin")

For i=0 To 255

WriteAsciiCharacter(0,s(i))

Next i

CloseFile(0)


CreateFile(0,"cooldata.bin")

For y=0 To 23

For x=0 To 31

WriteAsciiCharacter(0,t1(x,y))

WriteAsciiCharacter(0,t2(x,y))

;    Debug 255-t2(x,y)

Next x

Next y

CloseFile(0)


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


Sinedots


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

Стал искать: часть Killed the demoscene влезла в сторонний код. А всё потому, что нужная память не очищалась, и код залез неизвестно куда – в вектор прерываний.

Работает эффект так (t1,t2 – таблицы синуса):


a0.a=0

b0.a=0

c0.a=0

d0.a=0

If InitSprite() And OpenWindow(0,0,0,640,480,"SineWave",#PB_Window_SystemMenu) And OpenWindowedScreen(WindowID(0),0,0,640,480,0,0,0)

Repeat

a.a=a0

b.a=b0

c.a=c0

d.a=d0

StartDrawing(ScreenOutput())

Box(0,0,640,480,0)


For i=0 To 255

x.a=t1(a)+t1(b)

y=t2(c)+t2(d)

Box (x,y,1,1,$FFFFFF)

a+$82

b+$83

c+$FE

d+1

Next i


StopDrawing()

FlipBuffers()

a0+7

b0+8

c0+9

d0+10

Until WindowEvent()=#PB_Event_CloseWindow

EndIf


Two firedots


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


Bars


Эффект написан после изучения кода Raster effect, сам эффект реализован иначе, чем я думал. Сделан эффект просто: полоска состоит из спрайта 8х8, поэтому экран закрашивается с помощью стека, данные берутся из буфера. Первоначально эффект уложился в 256 байт, на написание ушло два часа, на подбор узора для полосок – три часа. Если в этом году состоится Chaos Constructions, то интро будет опубликовано вместе с исходником[11].


Greetings


Традиционные приветствия, ну как без них обойтись? Для анимации использовалась GIF-ка 66 кадров, я написал простой конвертер фаз анимации для спрайтов размера 16х24 точек. Вывод на экран сделан просто:


;подготовка LUT

bw    equ $B800; 2048 байт

;generate data for output

ld hl,bw

genlp:

ld a,l

ld b,8

push hl

ge2:

add a,a

push af

sbc a,a

and 7-1;цвет

ld (hl),a

inc h

pop af

djnz ge2

pop hl

inc l

jr nz,genlp


;вывод спрайта, HL=адрес спрайта, DE - адрес атрибутов

ld b,bw/256

ld c,(hl)

inc hl

dup 8

ld a,(bc)

ld (de),a

inc b

inc de

edup


Smile, rotozoomer!


Эффект я написал по алгоритму http://madteam.atari8.info/index.php?prod=fx#rzoom, позже потратил время на оптимизацию 1frame-эффекта. Замысел ротозумера в выводе на экран: данные рисуются по $4000-$40FF, $4800-$48FF, $5000-$50FF. На следующем шаге к адресам добавляется смещение (0..7)*256, вышел Delayed rotozoom.


Финал


Реализация эффекта простая: рисуется линия y=sin(x)+sin(a*x), после чего сплошная заливка реализована  Eorfill.


Это финал демо, идея в том, чтобы зрители дали ответ на заданный вопрос: «Имеет ли смысл demomaking?». Думаю, да, имеет.


Прим. ред.: исходники демо, а также бинарники и доп. утилиты можно скачать здесь: http://dgmag.in/N34/ms_src.zip


Sh


### Downgrade-игры

#### По следам игры «Королевства Эйфория»


В новогоднем 33-м номере журнала Downgrade за 2020 год опубликована статья «И снова про “Королевство Эйфория”», в которой были приведены ссылки на исходный код на языке программирования Basic двух предшествующих прототипов этой игры. Мне стало интересно, как эти игры будут выглядеть в ОС CP/M на ZX Spectrum-совместимом компьютере Profi. Так что решил сделать их небольшой перевыпуск.

Первая игра – The Sumer Game. Исходный код приведён из журнала BASIC Computer Game за 1978 год. А сама игра была создана в ещё более раннем 1968 году! Скорее всего, это первая игра в этом классе. В ней отсутствует ряд элементов, появившихся позже, в частности нет войн. Отличительной её чертой является ограничение времени игры десятью годами правления, то есть ходами, по прошествии которых подводятся итоги. Такой вот блиц-вариант. Подходящий формат для организации чемпионата по этой игре. Перевёл её на русский язык и внёс незначительные доработки. В частности, сделал возможным выход из игры в операционную систему в любой момент. Но постарался максимально сохранить исходное оформление и антураж.


Рисунок 1. Запуск игры The Sumer Game в ОС CP/M.


Вторая игра – The KINGDOM of EUPHORIA – датирована 1981 годом. А в статье приведена ссылка на код игры от 1984 года для компьютера ДЗ-28, уже на русском языке. В неё внёс более существенные правки. Во-первых, были выявлены и исправлены несколько ошибок или опечаток. Во-вторых, значительно переработана справка, исходный вариант мне совершенно не понравился. В-третьих, были добавлены подсказки о предельных возможных значениях запрашиваемых показателей при покупке или найме, на которые хватает имеющихся ресурсов. По своему опыту игры в «Королевство Эйфория» ещё в 90-е годы могу сказать, что всё равно играешь с калькулятором, и отсутствие такой информации только раздражает. В-четвёртых, так же как и в The Sumer Game, добавлена возможность выхода из игры в любой удобный момент.


Рисунок 2. Запуск игры The KINGDOM of EUPHORIA в ОС CP/M.


Для ОС CP/M у меня есть 8 разных интерпретаторов языка Basic. Наиболее часто в CP/M используется интерпретатор MICROSOFT BASIC-80. Но неожиданно выяснилось, что он воспринимает русские буквы в тексте программы как токены команд, со всеми вытекающими последствиями. Беглый поиск путей обхода проблемы результата не дал. После чего было принято решение о смене интерпретатора, благо есть из чего выбирать.

Большинство из имеющихся альтернативных интерпретаторов языка Basic обладали той же проблемой. В конечном итоге выбор пал на интерпретатор BBC BASIC. Как позже выяснилось, данный интерпретатор считается одним и самых быстрых для процессора Z80. Также он обладает уникальной возможностью по поддержке языка ассемблер и позволяет писать на нём программы прямо внутри кода на Бейсике.

Интерпретатор BBC BASIC развивается и в настоящее время. Существуют его версии под ОС Windows (64 bits), Mac OS-X (64 bits), Linux (64 bits), Raspberry Pi (32 bits). Есть утилиты для Windows, позволяющие создавать на этом языке приложения для Android- и Java-машин. При этом новые версии интерпретатора обладают значительной совместимостью с версией под ОС CP/M. Что даёт уникальную возможность писать в ОС CP/M межплатформенные программы, способные работать в современных ОС, в том числе и для мобильных устройств. Более подробный материал можно найти на сайте http://www.rtrussell.co.uk/. На текущий момент последние изменения на нём датированы мартом 2021 года. А так выглядит та же версия игры The KINGDOM of EUPHORIA, запущенная под ОС Windows 10.


Рисунок 3. Запуск игры The KINGDOM of EUPHORIA в ОС Windows 10.


Добавил к обеим играм заставки под расширенный экран Profi. Для чего незначительно доработал программу вывода картинок в формате grf, идущую в приложении к моей статье «Расширенный экран “Profi”, что это такое и как с ним работать. Практикум 001. Загрузка картинки. GRF» написанной в соавторстве с Чертковым В.Ю. и опубликованной в 26-м номере журнала ZaRulem (https://vk.com/prospeccy).

И для создания атмосферности добавил в игры фоновую музыку. Для чего воспользовался возможностью ОС CP/M запускать резидентные задачи и адаптировал под версию ОС CP/M dos 5.30 резидентный плеер AY-музыки от Черткова В.Ю., который изначально работал в его ОС PQ-DOS.

Хотя в итоге работа над выпуском релиза этих игр и затянулась, она привела к совершенно неожиданным результатам по расширению границ возможностей ОС CP/M.

По этой ссылке - https://yadi.sk/d/xIr-_ZyOL1fNNQ - можно скачать образ диска с играми в формате pro (работа с ним аналогична работе с образами дисков в формате trd). Для запуска игр нужно воспользоваться sume.bat и euphoria.bat соответственно.

Образ диска загрузочный, так что с него можно загрузиться. На IBM PC наиболее популярны два эмулятора, которые могут эмулировать Profi, это ZXMAK2 (https://archive.codeplex.com/?p=zxmak2) и Unreal Speccy (https://sourceforge.net/projects/unrealspeccy/). У Unreal Speccy больше возможностей, но сложнее настройка, тогда когда ZXMAK2 все настройки проведёт сам.


Много материала по компьютеру Profi можно найти на форуме и в группе ВК.


* Форум: https://zx-pk.ru/forums/102-profi.html

* Группа поддержки компьютера Profi: https://vk.com/profi1024

* YouTube-канал «Зазеркалье» https://youtube.com/channel/UCXqa3CJYDKt_X8i6FYlprQQ


А.Е. Тарасов  (ТАЕ)


### Прочее и юмор

#### Представляем вашему вниманию подборку лучших заметок из текста "IT Happens. #1-800"


#187: Технологии будущего

В одной конторе, где я в своё время работал, был один товарищ.

Трубку домофона в той конторе повесили у двери, к двери он сидел ближе всех, но бегать на каждый звонок ему было лениво.

Как он решил эту проблему? Он подключил контакты кнопки домофона, открывающей дверь, через реле к флоппи-дисководу, расшарил доступ к диску A:, вывел всем ярлычки "Открыть дверь".

После этого любой работник мог открыть дверь по локальной сети.


#188: Прокомментировано величайшими писателями

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

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

Такой высокохудожественной программы я не писал никогда.

Комментарии содержали в себе величайшие произведения русской и мировой литературы, стихи, прозу – всё подряд. Даже один мой стих!

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


#246: Вспомнил детство

Нашёл на чердаке «Спектрум». И кассеты к нему.

Час возился с разъёмами, чтобы подключить его к LCD-телевизору.

Час искал разъёмы и паял переходник от бумбокса на пятиштырьковый контакт.

Полчаса учил нидерландца, как можно жрать советские кассеты типа "Мелодия", вручную подкручивая натяжение роликов.

Сфотографировал исходник любимой в детстве игры с экрана. Распознал на компе, подправил вручную.

Два часа искал вменяемый эмулятор бейсика. В итоге запустил. Под «Вистой».

Прошло шесть часов. Сейчас я на 28-м уровне этого убожества и меня та-а-а-ак прёт!

А завтра – работать.


#257: Вспомнить всё!

Я как-то написал программку для проверки таблицы умножения.

Меня попросили знакомые, у которых ребёнок после школы первым делом за комп садится, а уже потом, с хорошего пинка, начинает учить уроки.

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

Дописал прогу и выложил на работе в общую папку с названием "Запусти меня".

Через полчаса все менеджеры повторяли таблицу умножения.


#270: В Тулу со своей оргтехникой

Стою на крыльце своей конторы, дышу воздухом. Контора наша занимается продажей ПК, оргтехники, ремонтом и т.д.

Подходит мужичёк, изучает вывеску, рекламу.

– "Компьютеры и оргтехника" – читает. – А что такое "оргтехника"?

– Ну, принтеры, факсы и т.п. – объясняю я.

Задумался мужик. Потом спрашивает:

– А самовары у вас есть?

– Ээ? Наверное, нет.

– Жаль... – грустно вздыхает мужик. – А где купить, не знаете? Только мне обязательно тульский нужен!

Даже как-то жалко стало, что помочь ничем не могу.


#300: И тебя вылечат...

Знакомый в студенчестве устроился сисадмином в психушку. Точнее, в её администрацию, что была с ней в одном здании.

День поработал. Пропадает Интернет. Главврач в панике: ему срочно нужно было отослать документы. Начинает товарищ разбираться. Интернет был вай-фаевский и шёл через радиоантенну на крыше. Всё, вроде, в порядке. Тогда парень решил проверить антенну.

А здание психушки большое: лестниц, чердаков и крыш очень много. Вот, он выбрался на крышу, бродит по ней. Ищет, как к антенне лучше подобраться. Крыша с антенной была чуть выше, чем все остальные. Встал друг у края – вроде лестница видна. Прыгнул пару раз – точно, лестница есть!

Тут его схватил подкравшийся сзади санитар. Он увидел нашего сисадмина в окно и решил, что кто-то из психов хочет спрыгнуть.


#307: Швабра повышенной секретности

Работал в казначействе.

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

Доступ имеет только он самый и... угадайте кто?

Русский человек сразу поймёт: уборщица! Лень оставаться людям вечером для надзора за ней.


#316: Вот вам вантуз, будете диджеем

Как-то на пьянке у друга врубили музыку и поразились убогому качеству звука. "Как из сортира" – сказал один товарищ. И более точной характеристики звучания дать было трудно.

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

Смотрю – Realtek, вроде бы дрова более-менее свежие. Тут до меня доходит, что у оного «Реалтека» должна быть в трее контрол-панель, которой не наблюдается. Смотрю процессы, убиваю RTDHCPL, перезапускаю экзешник – и, о чудо! В трее оно таки появляется. Залезаю в эту самую контрол-панель и падаю с кресла: в настройках стоит убогий доп. эффект – "Ванная комната"...


#334: Найти и перепрятать!

Два с лишним года назад устроился инженером в компцентр института, доверили филиал. Опыта мало – после колледжа сразу. Классы были запущены, вирусов куча, беспорядок на серваке. К тому же собирали сетку там второпях, в надежде, что через полгода съедут, но, как грится, нет ничего более постоянного, чем временное.

В итоге, сеть в одном из классов (17 машин) собрана на 8-портовых антикварных свитчах, два из которых, в связи с нехваткой дырок, соединены тонким коаксиалом. Именно этим фактом изначально мне объяснили крайне низкую скорость загрузки доменного профиля. Но уж что-то уж больно долго он грузился, даже для 10-мегабитки – по 15-20 минут!

Через пару недель друзья мне порекомендовали посмотреть папку перемещаемого профиля. Оказывается, мозговитые первокурсники, утомлённые тем, что их любимый Контр-Страйк удаляют из папок групп, догадались спрятать его в эту самую папку профиля. 300 метров профиль, однако..


#452: Лучший мой подарочек...

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

Я посмотрел на эти мучения и решил подарить девушке наборчик: USB-удлинитель, USB-фонарик, свитч USB и прочую подобную мелочь. Через некоторое время зашёл в гости, заодно поинтересовался, как дела с подарком. "Супер!" – радостно сообщила подруга и пошла показывать. Из всего набора она воспользовалась только ЮСБ-фонариком, прицепив его сзади системника, чтобы было посветлее...


#539: Почти взаправду

Работал я одно время в Политиздате при ЦК КПСС "инженером" (профессии "сисадмин" тогда ещё не было) и, поскольку всё крутилось достаточно стабильно, я, а также мой непосредственный начальник коротали день, гоняя "Принца". Того самого, первого. И гоняли его так упорно, что уходили не в конце рабочего дня, а часов в десять вечера, когда здание на сигнализацию ставить надо было.

Однажды вечером уходим домой, идём к лифту. Свет в коридоре уже давно выключили, только на стене через какой-то интервал висят ночники, типа аварийного освещения, ещё и подмигивают, на полу коридора – паркет. Мы поворачиваем за угол и видим, что в одном месте паркет вспучился и частично рассыпался. Днём протечка была из сортира. Не сговариваясь, мы совершенно синхронно разбегаемся и перепрыгиваем через это место с вытянутыми вперёд руками. Потом останавливаемся у лифта и начинаем ржать.


#545: Дуйте, дуйте, ветры!

Длинным зимним вечером сидел я в скуке, озадаченный классическим вопросом: "Чем бы заняться?".

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

Светодиод подключён на проводки кулера и хорошо закреплён. Полученная конструкция выставлена за окно на сильный холодный ветер. Кулер вертится – светодиод горит. Автор счастлив.

Утром закреплю его на подоконник, будет измеритель силы ветра.


Полностью все заметки вы можете прочесть, например, здесь: https://www.rulit.me/books/it-happens-1-800-read-162143-50.html (а также на оф. сайте http://ithappens.ru – прим. ред.)


Подборку составил Владимир Веселов (Режиссёр Антаресов)


#### Просто разный юмор


### Над номером работали


Дизайн/вёрстка/главный редактор – uav1606

Редакторы – Вячеслав Рытиков (eu6pc), Андрей Шаронов (Andrei88)


Авторы:

Андрей Шаронов (Andrei88)

Артём Курамшин

Андрей Тумилович

Forza3dfx

uav1606

Владимир Веселов (Режиссёр Антаресов)

Sh

А.Е. Тарасов (TAE)

Илья Абрамов (abrbus)

В. Руденко (Beaver)

О. Чередниченко (Oleg N. Cher)

Romanson


Интервью:

А. Лукьянов, И. Зельманов, А. Мануйлович


Сайт журнала: http://dgmag.in


Раздел журнала на "Полигоне Призраков":

http://sannata.org/articles/dgmag/


Группа ВКонтакте:

http://vk.com/dgmag


E–mail главного редактора:

uav16060 [cobaka] mail.ru

# Примечания

1

В статье использованы фото из следующих источников: https://yuga.ru, ЖЖ Андрея Дамирова https://radimir-87.livejournal.com/16032.html, фильм «Внутри Лапенко», https://olx.uz («Правец») и др.

2

https://stopgame.ru/blogs/topic/59518

3

https://archive.org/details/EDGE.RETRO.N2.2003.The.making.of.special/page/56/mode/2up

4

http://www.retroid.ru/index.php?id=82

5

https://habr.com/ru/post/533174/

6

https://dtf.ru/retro/612046-istoriya-elite

7

https://www.elite-games.ru/elite/

8

https://www.youtube.com/watch?v=p53q3GZAcJI

9

https://www.youtube.com/channel/UCYsKTr6lnE191acjfal5CjA

10

Взять его можно вот тут: https://yadi.sk/d/ino2OPri3YNfFu?w=1 или тут: https://drive.google.com/drive/folders/1Ub1_UP4PqKMc8cQJJt9bKebx94KEzSvb

11

Страница демо на Pouet.net: https://www.pouet.net/prod.php?which=87467