Территорию трейлера мы с Еленой поделили и сделали перестановку. Я отдал ей кухню и всю двухъярусную кровать. Нам же с Дюке достался диван, на каком ранее спал Гектор. И, пожалуй, так даже удобнее.
Я передвинул свою тканевую занавеску на несколько метров и Елена чуть ли от восторга не запищала, получив собственное личное пространство хотя бы в несколько квадратных метров только для неё. Ну, точнее, несколько квадратных футов или, как тут принято говорить в быту, примерно с парковочное место для мотороллера или двуспальную кровать. Квартирный вопрос портит не только москвичей – он интернационален и международен.
Елена даже ужин мне приготовила из имевшихся продуктов – риса, острого соуса и тушенки. Жареный рис с мясом, внезапно! Но очень вкусный, я наблюдал за готовкой, но не сообразил, в чем секрет. Возможно, в таймингах.
– Что, Тобалито, твоя итальянская хайна так не умеет? – ехидно поинтересовалась. Своячница, золовка, девериха, сватья… меня всегда запутывали специальные слова для обозначения непрямых родственных отношений.
– Очень вкусно, – подтвердил я, – твоя еда великолепна, может быть, даже и панамский овощной суп сможешь приготовить? Хотя нет, не надо. Не думаю, что кто-то в штатах с ним справится. Но это та самая полезная еда, о какой офицер Кастильо говорил. Как нам и надо.
– Что за суп? – насторожилась Елена. – С брокколи? Терпеть их не могу. Миерда!
– На мясном или хотя бы курином бульоне, с добавлением картофеля, моркови, белокочанной капусты, томатной пасты и… это панамский секрет, но раз ты жена Гектора, то имеешь право знать – красной свёклы, которая добавит сладости. Ой, да оставь, просто детская мечта – попробовать суп, который готовила наша бабушка. Не Линду же мне просить его приготовить.
Не знаю ничего о тебе, бабуля Криса, и прости, что прикрываюсь твоим светлым образом. Но очень уж нормального горячего хочется, а не только фастфуда. Я все эти бургеры, пиццы и прочее тако очень даже уважаю, но только лишившись привычных блюд, осознаю, насколько к ним привязался. А для Елены – новый кулинарный вызов, способ отвлечься от невеселых мыслей.
– А и приготовлю! – азартно пообещала Елена.
– И еще офицер говорил про чистоту. Я тут подумал: если мы начнем снимать обувь при входе в дом – не потребуется потом мыть пол на случай визита опеки. А чтобы ноги не мерзли, будем носить тапочки. Представляешь, как в шикарных отелях из тв-шоу. Выходишь из душа и ноги в чистые теплые тапки. Уверен, все богачи так делают. Чем мы хуже?
Очень дешевая примитивная манипуляция. Наверняка придется повторить ее десяток раз перед тем, как привычка выработается. Верните Гектора! Пусть сам со своей женой нянчится.
– И Дюке, – печально вздохнула Елена, – мне тяжело говорить, но ему нужны вольер и будка, а это куча денег. У меня столько нет.
– Я решу данный вопрос, – пообещал ей, – а пока – стрижка.
Еще один кирпичик в копилку несомненных достоинств Елены Прекрасной – она без дураков неплохой парикмахер. Десять минут работы даже не машинкой, а ножницами – и воронье гнездо у меня на голове стало напоминать стрижку. Даже чуточку модельную. Хотя, по сути, ничего не изменилось.
Усталость взяла своё, я буквально рухнул на диван и отрубился, чтобы проснуться в два часа ночи – сна ни в одном глазу. Рядом заворчал Дюке, хорошо, что не решивший лечь, где привычно – на моей бывшей кровати, теперь отданной Елене. Минут десять пялился в темный потолок, прокручивая события как вчерашнего дня, так и предшествовавших ему недель. Мог ли я где-то поступить умнее? Предложить способ, как спасти Гектора от ареста? А может быть, и вовсе сбежать? Спас бы я брата Криса, если бы сразу поднял кипиш по поводу компов, а не на утро? Скорее всего, точка невозврата минула в момент вступления Гектора в банду, и если не за кражу из элитной школы, так за что-то иное его бы приняли. Все, что я мог бы сделать – заработать сразу много денег и дать парню возможность порвать с криминалом. Но буду с собой честен – сделал, все что мог. Так что хватит рефлексировать – надо заниматься делом.
Включил телевизор, отрубив на нем звук. Подрубил к нему помойный TRS-80. MEMORY_SIZE? Попробовал просто нажать на Энтер, вдруг там дефолтное число уже прописано – и сработало, комп-клавиатура загрузился. Вот я тупень, раз сразу не догадался!
Мысленно провалился в код, придуманный заранее, начав с бессмысленного комментария, всего-то заголовка программы.
10 REM --- TETRIS ---
И так далее! Та самая классическая реализация тетриса, какую я мысленно написал, еще лишь задумавшись от разработке компьютерных игр в новой жизни. Меньше тысячи строк кода. Пара десятков правок, вызывающих желание запустить клавиатуру в телевизор. Так жить нельзя! Я не прошу выдать мне современную IDE с синтаксическими подсказками, но заново набирать каждую строчку для исправления опечаток уже попахивает мазохизмом. Когда там изобретут нормальный блокнот? Или что-то из никсового? Nano? VIM? Последний я не перевариваю, заставлять юзера зубрить десятки сочетаний клавиш для всех операций – уже садизм. Но и на Вим бы согласился!
Наверное, свинство с моей стороны – шуршать ночью клавишами и мерцать экраном. Но Елена как похрапывала, когда я только включил ТВ, так и продолжила, когда я ушел с головой в разработку. Умаялась, бедняжка. У меня был тяжелый день? Всё познается в сравнении – девчонке намного хуже пришлось.
Два с половиной часа в состоянии потока, когда код рождался как будто бы сам. И, наконец, после очередной команды RUN отрисовался игровой стакан, а в верхней части экрана заспавнилась первая фигура – блок L. Не возгордиться бы, насколько я хорош. Надо будет Киму новой игрушкой похвалиться. Уверен, он бы оценил, но… нет. Попросту стыдно подобное полное убожество показывать.
Опять я стукнулся о те же грабли. Каждая итерация главного цикла программы занимала громадное количество времени. Я получил всего 2-3 кадра в секунду! Столь низкий FPS подойдет для оценки логики, но не геймплея.
Производительности бейсика однозначно недостаточно, что еще первая ревизия змейки наглядно показала. И, сомневаюсь, что, достань я Эппл 2 из-под бойлера, всё так уж улучшится. Вся проблема в самом языке, в интерпретаторе. Когда программа выполняется построчно, а не собирается в быстрый байт-код – ожидать от нее скорости не стоит. Напрашивается вариант оптимизации с ассемблерными вставками, но нужен отсутствующий мануал.
Надо раздобыть компилятор Си – он под TRS-80 точно существует, спасибо за знание кодеру с птичьим прозвищем. А еще мне потребуется дискета, чтобы на ней компилятор держать. И дисковод для чтения дискеты. И второй – для сохранения на него готового экзешника.
В блоке расширения размером с полноценный системник сами флоппики не вместились, лишь разъёмы для их подключения. И, насколько я помню каталог Радиорубки, стоимость дисковода ужасает. Пятьсот баксов! Дороже, чем Вик-20!
В далеком двадцать первом веке мы привыкли к сотням гигабайт на жестком диске и ССД. В 1982 у меня код программы и компилятор не факт, что на одну дискету влезут. Память дико дорогая и измеряется даже не сотнями, а десятками килобайт.
Но у Эппл 2 флоппи-диск драйв наверняка есть, даже, может быть, два, как в том витринном моноблоке Модель 3. Не удивлюсь, если ради них в магазин электроники кодер и приходил. Если бы не вредный Стив, то я мог бы той же лазейкой воспользоваться, хотя ходить и канючить “дайте посидеть за компом” как-то ломает.
Могу ли я как-то решить проблему дорогой памяти вот так, на коленке? Ну… в теории… стандарт VHS уже существует и покорил мир. А каждый фильм – это, считай, гигабайты данных. Плёночные бэкапы и в двадцать первом веке еще использовались – потому что дешево и даже надежно. Но, во-первых, у меня попросту не хватит ни знаний, ни ресурсов, во-вторых, игры интереснее, в-третьих – нет смысла вкладываться в тупиковый путь.
Щелк! Телевизор погас. Светодиод на блоке питания погас. Фонарь уличного освещения прекратил работать. Циферблат будильника… нет, остался работать, там батарейки внутри. Всё, кина не будет, электричество кончилось. А я не успел переписать готовый код на бумажку, дабы не восстанавливать потом по памяти. Может быть, и хорошо – нефиг гениальные активы где попало на листочках оставлять.
На ощупь аккуратно отключил от телека контакты, прикрутил обратно антенну. Если не обзаведусь отдельным ТВ для кодинга, стоит как-то упростить процедуру. Для денди на модуляторе сигнала имелся специальный рычажок, переключающий между игрой и телевидением. Не так сложно что-то в том же духе сколхозить, наверное. Вернулся в кровать. Все еще не спалось, а потому начал развлекаться любимым делом – мысленно переписывать код тетриса уже под Си.
Так и не уснул. В половине шестого прошел на кухню, поставил чайник на плиту. Утро начинается с кофе! И с яичницы-глазуньи. Сделал и на себя, и на Елену.
– Тобалито, ты что, готовишь?!! – выглянувшая из-за своей занавески девушка выглядела все так же ошеломительно. Спала она, к счастью, не голая и не в тоненьком пеньюаре, а во вполне пристойной пижаме. Я ее уже скоро и вовсе начну как деталь обстановки воспринимать, надеюсь. Мозг ко всему привыкает, в том числе к внеземной красоте.
– Ага, угощайся, я и на тебя сделал.
К яишенке еще бы и сала. Ну или хотя бы бекона, его я в супермаркете видел, но пожадничал купить. И хлебушка, черного, бородинского. Но пришлось его заменить ватным тостовым, поджаренным на той же сковороде до румяной корочки.
– Но… это я должна была приготовить! – перешла на ультразвук девушка. – Я обязана заботиться о карнале своего мужа!
– Это всего лишь яйца, чтобы их пожарить – твоего таланта не нужно. Зато ты на работу не опоздаешь, а я в школу. Дюке, гулять!
Пока мы с питбулем прохаживались по парку, я присматривался к вольерам, имеющимся у некоторых трейлеров. Я ведь пообещал обеспечить Дюке жилплощадью. Перефразируя пацанскую гоп-присказку, “Синьор сказал – синьор сделал”.
Конструкция у всех простейшая – сетка-рабица, натянутая на столбы из металлических труб и привязанная проволокой. У некоторых пёселей даже будку делать поленились, натянули сверху вольера брезент. Старые шины в качестве собачьих игрушек. Алюминиевая кастрюля – как поилка. Всё, как у нас в российской глубинке. И не скажешь так сразу, что “город Ангелов” и где-то относительно неподалеку голливудские звезды пьют текилу из пупка стриптизерш. Или столь славную традицию пока не завели и мы с Мисс Июль успеем ее создать?
– Что, дружок, хочешь пожить снаружи? – спросил у пса и получил добродушное “гав”. В общем-то, не исключено, что ему и правда так окажется комфортнее. Не надо весь день терпеть, чтобы сделать свои дела собачьи. И колючее тигровое одеяло в качестве подстилки отдам.
Итак, рецепт собачьего загона прост – столбы, рабица, и много упорного труда. Даже с бетонированием никто не загоняется. Я пошатал столб на вид пустующего вольера – попросту в твердую сухую землю вбито. И выглядит как выход – арендовать другой трейлер, где ограда уже есть. Или, быть может, купить готовый, пустующий и перенести? Взять в аренду? Вариант! Нужно с управляющим парком обговорить. И в помощь кого-то найти. Я не безрукий, но что забивать столбы, что сетку таскать – умаюсь.
Продуктивно прошелся. А когда вернулся, нашел возле дома целый девичник.
Около трейлера стояла песочного цвета ржавая малолитражка, за рулём мексиканка лет тридцати, вполне себе симпатичная, если бы не мешки под глазами. Очевидно, не высыпается. Выражение лица – как у сисадмина, ходившего в бухгалтерию извлекать скрепки из принтера после сотого последнего китайского предупреждения. “Как вы меня все достали”.
В дверях нашего дома образовался затор из еще одной тридцатилетней мексиканки с кучей кудряшек, Трейси и Елены. Блондинка хотя бы на работу оделась прилично – в клетчатую фланелевую рубашку и обтягивающие джинсы, но ей не мешало бы застегивать больше пуговок. Деревенская такая мода. Мне нравится.
Женщины увлеченно рассматривали полароидные фото со свадьбы, оплаченные в часовне и сделанные темнокожей помощницей преподобного Джимми Вельвета, уверяя жену Гектора, что она принцесса, королевна, и муж у нее первый парень на деревне, какого стоит ждать из тюрьмы хоть сто лет. Возможно, даже правильно советовали – мужик-то он в самом деле неплохой, да еще и брат скромной будущей иконы мира видеоигр.
– Орале! Тобалито, иди к тетушке Кармен, дай я тебя пожалею. Вача-вача, какой худой, одни кости! – воскликнула чикана, стоявшая у двери. – Ничего, у Елены на кухне ты быстро вес наберешь. А это еще что за дела? Ты сам себя оболванил, чико? Ай, ке барбаро, вы только гляньте на этот ужас! Трейси, зацени, что у парня на голове!
– Ай, пор фавор! Отцепись ты от него, Кармен! – вспыхнула Елена. – Отличная у него стрижка, перфекто!
Кажется, я понял, почему Гектор не купил питбулю намордник. Вот почему! Одного раздраженного не рыка, а ворчания Дюке хватило, чтобы сороки-парикмахерши подхватили Елену под руки, усадили в машину на заднее сиденье и уехали на работу. Хорошие девчата, как я думаю, неравнодушные и искренние. Но за пару минут в их компании мне уже и самому рычать не хуже собаки захотелось. Настоящий сенсорный шок.
На кухонном столе обнаружил бумажный пакет с бутербродами. Карамба! А я уже думал, что упустил момент и с вечера себе перекус не подготовил. Да, совсем простые сэндвичи с яйцом, да еще и без расчета на Кима, но все равно приятно, когда о тебе заботятся. Хорошая ты женщина, “тётя Лена”, счастья вам с “Герой”, здоровья и деток… вот тут уже, пожалуй, после того, как он откинется. Принимать ответственность еще и за младенца мне не хочется.
На выходе из парка меня встретила троица знакомых чикано. Атос, Портос и Арамис.
– Хоми, мы про Гектора знаем. Копы – ублюдки! Иглесиас – рато! Будет что нужно – обращайся. Компренде?
Пожал им руки. Почему бы и не припахать на постройку вольера, например. Хотя я больше на помощь рукастого Мигеля нацелился.
Главным разочарованием дня, сильнее, чем проблемы с производительностью тетриса, для меня стало отсутствие Кима на дневной отработке. Единственный друг, как-никак. Компьютерные журналы ему принес, раз он тоже фанатеет, и пшик. Обидно.
Кроме того, я после ночного сеанса кодинга весь день зевал, меня клонило в сон, что даже Миллер заметил. Не знаю, состояние ли тому виной или соперник, но математик взял у меня три партии в блиц из пяти, причем в двух их них я очень по-глупому зевнул. Сначала коня, в следующей игре и слона.
– Если вы явитесь в том же состоянии на турнир в Бакли, мистер Колон, то до крайности меня разочаруете, – недовольно выговорил математик, поставив мне мат. – Вы вообще сегодня спали? Восемь часов сна каждый день. Чем бы вы там у себя в гетто ни занимались! Смотрели отвратительные музыкальные клипы по ТВ, катались с дружками-бандитами на нелепых прыгающих машинах, приставали к девушкам…
– Программировал на Бейсике под TRS-80, – устало зевнул я. – Вы бы только знали, как всё плохо у него с производительностью. Нужно переходить на Си, там весело, есть два в шестнадцатой способа отстрелить себе конечности… ааа…
Миллер, может быть, и козлина, но хоть с кем-то насчет помоечного компа и экстремально низкой скорости интерпретируемого языка поделиться хотелось, а Ким не пришел. Не скажу, что у математика прямо челюсть отвисла, но нечто в его взгляде поменялось.
– Умойтесь холодной водой и поезжайте домой, – велел учитель.
Послушался ли я его? Нет! У меня же дедлайн, надо хоть какие-то деньги заработать для эмансипации.