Глава 7

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

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

Линда, когда я позвал ее заглянуть к нам посмотреть, как живем, очень сильно смутилась, и, кажется, немного испугалась. Подозреваю, что не меня, а потенциальной встречи с Еленой, так как, увидев, что дома моей “старшей сестры” нет, как-то расслабилась и даже на мою новую комнату взглянула.

Проводив девушку, взялся за священнодействие – сборку компа. В своей жизни я собрал… сбился со счета, сколько системников. Едва родственники узнавали, что я умею – начинали звать в гости, чтоб “занялся любимым делом”, как настоящий тыж – “быстро, качественно, для вас всегда бесплатно”. По молодости не каждый раз находил моральные силы отказать дальней родне, но постепенно все же зачерствел, подвыгорел и выучил слово “нет”. Но десяток компов к тому моменту собрал.

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

Ну! Можно попробовать! Щелчок клавишей. Плата издала громкий и длинный бип, компьютер загудел на одной ноте. И… и ничего. То есть комп работает, даже надрывается, монотонно завывая, но не загружается. Чему там так гудеть-то? Да что за дичь?! Верните мне простой и понятный “кусок дерьма трэш-80”!

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

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

– О великие Император, Ктулху и Макаронный Монстр! – провозгласил я вслух. – В чем тут вообще логика – бесконечно крутить пустой флопик? Каждый раз его отключать неудобно!

Ответ, как оказалось, прозаичен: RTFM, то есть Read the fucking manual, прочитай долбаную инструкцию. Полистал книжки, найденные в коробке с компьютером, и в названной “руководством для DOS” узнал, что бесконечное вращение привода при пустом дисководе – не баг, а фича. Достаточно нажать клавишу “ресет” на клавиатуре и загрузка продолжится. Не приводился лишь ответ – “нафига”. Я всегда знал, что яблочники – извращенцы. Какие еще нужны доказательства?

Нормальные люди, безусловно, сначала читают руководство пользователя, а затем уже тянут влажные ручонки к ценной технике. Ни одного такого не встречал. Однако за качество документации, вложенной в коробку с компом, Джобсу огромный респект. Мне досталась не книжка-отписка “держите подальше от детей и домашних животных”, а очень обстоятельная инструкция, включающая описание распространенных проблем и даже подробное руководство по разработке на ассемблере под платформу. Не придется, как с Трэш-80, покупать книжку за свои кровные.

Что я всегда делал, заполучив новое железо – игрался. Увы, готовых игр под Эппл 2 мне не положили. Один из конвертов с дискетами, имеющихся в комплекте, маркирован, как Apple DOS 3.3, вторая дискета – пустая.

Расшифровку аббревиатуры DOS – дисковая операционная система – я в прошлом знал, но особенно о ней не задумывался, а знание реалий 82-го года меня подвело. Зачем к уже работающему компьютеру класть отдельный носитель с операционкой? Переустанавливать с него? Точно нет. Винчестер, то есть жесткий диск, хоть уже и придумали еще в 50-х, удовольствие дорогое и редкое.

А выходит так, что изначально ДОС – это не больше, чем драйвер для дисковода, вокруг которого постепенно накрутилось всякого до 30 гигов в системной папке на диске C в 2026. В нынешних реалиях, чтобы использовать дискету, я должен сначала загрузиться с другой дискеты, а затем вставить пустую во второй дисковод. Ну или устраивать безумную чехарду с жонглированием гибкими дисками. Реально гибкими, кстати, в совсем тонком пластиковом чехле. Одна ошибка – и ты ошибся. То есть повредил нежный магнитный слой и всё сломал. И даже такая фигня лучше, чем аудиокассеты для хранения кода!

Загрузился с дискеты. APPLE II DOS VERSION 3.3 SYSTEM MASTERAUGUST 25, 1980COPYRIGHT APPLE COMPUTER, INC. 1980]

Проверил свои навыки программирования хеллоу ворлдом. Всё еще достоин!

Ну, что, пацаны, змейка? Поленившись в очередной раз набирать код по памяти, подключил верный магнитофон, для чего пришлось влезть с кабелем внутрь корпуса-телевизора. Отыскал в мануале команду загрузки. Авторы предусмотрительно написали, что при работе с внешними носителями нужно в командной строке добавлять суффикс, указывающий адрес, куда он подключен, что особенно важно с записью. Забудешь указать, что пишешь в слот расширения номер шесть, и сохранишь змейку на системную дискету, записав поверх DOS. И всё, никакого тебе ctrl-z или вопроса “вы уверены, что желаете перезаписать?” Ищи новую операционку, если не подсуетился защитить дискету от перезаписи, заклеив специальное окошко наклейкой. Суровые нынче времена!

На всякий случай сверился с талмудом, подал команду на чтение с магнитной ленты и… ERR! Ошибка! Книги дали ответ и на эту проблему – Эппл 2 понимает только те кассеты, что записывались на яблочных компьютерах. Стив Возняк в своей сумрачной гениальности создал собственный алгоритм записи, естественно, проприетарный.

Ну ладно, всего триста строк кода. Воспроизвел по памяти и даже нигде не опечатался и… ERR! Не код, а песня…2 в 16-ой способов отстрелить себе конечностиОтладка даёт представление о вечности

Разобрался! RTFM! У Трэш-80 и надкушенного яблока слишком разные диалекты бейсика. Бейсика, Карл! Там, где компьютер от Радиорубки позволяет взять и напечатать символ по координатам, одной командой PRINT, чудо-техника от Эппл требует сначала спозиционировать курсор двумя отдельными действиями. Я ненавижу тебя, Стив Джобс! Как-то вообще у меня отношения со Стивами не сложились. Тот, который Возняк, вроде как ничего мужик, много сделал для опенсурса и вообще гениальный инженер, на шее у которого проехался делец Джобс. Но… и он тоже ведь приложил руку к этому дерьму. Ох, Гектор, братан, знал бы ты, насколько прав, когда называл краденый комп не иначе, как миерда! Я тебя еще вытащу!

Полная страданий отладка… За окном уже начало темнеть и я наконец-то сделал это! На мусорном компе получалось проще. По экрану нешустро поползла змейка из буковок О, пожирающая символы звездочек. Видимо, сказывается то, что на процессоре будущие купертины также сэкономили и поставили камень всего в 1 МГц, в то время как у Z80 тактовая частота целых 1.7МГц – почти в два раза больше.

С улицы как раз послышался звук двигателя, затем бодрый лай Дюке и к нам в трейлер ввалился цыганский табор. Вернее, Елена и ёе подруги-парикмахерши.

– Тобалито! Отличные новости! Мы завтра идем за покупками в Зонко! – прокричала Елена. – Глория и Трейси съездят с нами.

– Зачем? – вышел я из комнаты.

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

– Ох, этот Круз такой горячий, – мечтательно закатила глаза Трейси. Не пялиться в ее легкомысленное декольте – то еще испытание. И лишь милый образ Линды, воскрешенный в памяти, дал какой-то иммунитет. Хоть слюни пускать не начал.

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

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

– Да с математикой она ему помогает, – озвучила версию старшая из женщин.

– Очень мудрое предположение, мэм, – похвалил я, – простите, мне пора идти учиться. Хорошо, я буду вас ждать у ворот школы.

А мне и правда нужно в свою комнату, но только не домашку делать, а продолжить освоение Эппла. И никакого смущения, честно-честно. Так-то завтра после уроков я собирался попытаться применить совет Феликса по поводу замера напряжения на выходе блока питания к Галаге и таки заработать еще сотню баксов у Ковальски, но приодеться тоже нужно. Я не модник, скорее даже наоборот, но встречают по одёжке, а мне еще на чиновника из службы опеки достойное впечатление производить.

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

Первая же проблема, с какой я столкнулся – в текстовой раскладке Эппла не нашлось символа-квадратика, в отличие от трэш-80. Ну и кто тут у нас мусор? Блоки из букв О же смотрелись убого. Кроме того, цветной видеовыход так и просил поиграться с раскраской фигур в их классические цвета, а далее уже и редактор кода с подсветкой символов нашаманить. Увы, в текстовом режиме чудо пока еще не купертинской мысли буквы раскрашивать не умеет. И они еще взяли на себя смелость поместить на свой логотип все цвета радуги!

Наплевав на ущербность текстового режима, перешел в графический. Разрабы Ультимы под него, вон, полноценную РПГ выпустили. Чем я хуже? Я уже большой мальчик и мне полагаются серьезные взрослые игрушки. Надо всего-то отрисовать разноцветные прямоугольники…

О Великий Ктулху! Как же я ошибался!

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

– Да пендехо ты яблочный! – крикнул на несчастный комп, уже будучи далек от радости, что я его спас. – Это что за цветомузыка?

Ответ, как всегда, в процедуре RTFM!

Старший бит (бит 7) каждого байта видеопамяти является битом задержки фазы. Если он равен 0, пиксели отображаются в фазе с цветовой поднесущей NTSC, давая фиолетовый и зеленый цвета. Если он равен 1, фаза сдвигается на 90 градусов, давая синий и оранжевый.

До Штирлица не дошла шифровка из центра. Он перечитал еще раз – всё еще не дошла.

Я искренне считаю себя не полным дебилом. Да, иногда я веду себя, как клинический идиот, но то в сложных ситуациях, связанных с общением с людьми. Мы, хомосапиенсы – сложные. А вот компьютеры обычно простые и в них, я думал, хорошо разбираюсь и секретов не осталось. Но вот перечитал... вроде бы понятным английским языком написанную фразу и нифига не вдуплил. Что значит – всего четыре цвета? Почему именно эти? Как гениальные парни смогли написать ULTIMA с подобными ограничениями? Игра что, цветная, но зелено-фиолетовая? А как мне текст рендерить? И ладно четыре, мерцание-то зачем?

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

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

Но как разработчик Принца, а он трудился в одиночку, как и я, устранил мерцание? С производительностью-то известен ответ – ассемблер. Среди книжек есть и руководство по нему.

RTFM!

Полчаса лихорадочного листания страниц толстой красной книги и вырывания волос на ягодицах я нашел:

Цвет точки жестко привязан к ее координате X. Зеленый и оранжевый могут быть отображены только в нечетных столбцах. Фиолетовый и синий – в четных. Сдвиг точки на соседнюю колонку неизбежно приведет к смене фазы и, как следствие, изменению цвета.

Ха! А что если двигать сразу по два пикселя? Интерфейс получится визуально более отзывчивым? И я смогу задействовать все четыре цвета. А чтобы фигуры стыковались лучше – в белую рамочку их заключить!

Стало понятнее, но всё еще что-то не то. Обоих Стивов давно бы засудили за настолько неприкрытый обман с цветами. Эппл 2 ведь умудрился стать стандартом для бизнеса? Как насчет рисования всяких графиков?

RTFM!

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

Тормознутый hi-res для графики высокого 280х192 разрешения и с упоротой зависимостью цвета от координаты X, да еще и сходящий с ума при попытках обращения через ассемблер – ячейки видеопамяти расположены не последовательно, их адреса прерываются и нельзя просто так взять и нарисовать длинную прямую линию, нужно составлять ее из отрезков.

Но есть и луч света в темном царстве жадности Стива Джобса – графический режим низкого 40х48 разрешения lo-res, в котором еще и несколько текстовых строк в нижней части экрана доступны. Как раз поместится текущий счет и анонс следующей фигуры в упрощенном символьном виде: I, J, L, O, S, T, Z.

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

На Принца Персии вроде бы четыре года ушло, и это при том, что разраб до того выпустил другую игру, файтинг про карате. Да ну нафиг! Я лучше сменю платформу на спектрум, Вик-20 или даже какую-нибудь Атари, изначально предполагающую игры. IBM совсем скоро начнет захватывать рынки, Коммодор 64 – очень массовый компьютер – выйдет… не помню, когда.

Я написал Тетрис за одну ночь и даже поспал парочку часов перед подъемом. Или меньше? Ни о чем не жалею! Только я, код и упрощенный графический режим. Смотрелась итоговая поделка так себе – цветные кубики 2х2 крупных пикселя сливались в сплошную массу. А при уничтожении линии сдвиг вниз прорисовывался с задержкой в половину секунды, но получилась та самая игра, тот самый геймплей, попавший в особенности физиологии мозга. Сел попробовать что получилось, и залип на полчаса, раз за разом получая дофаминовую награду, когда собирал полную линию.

Маленький шаг для одного программиста – огромный прыжок для всей игровой индустрии, которой я не хочу позволить скатиться в то не самое приятное состояние из 2026, какое запомнил.

Загрузка...