книги хакеры / журнал хакер / специальные выпуски / Специальный выпуск 4_compressed
.pdf
|
|
БАЙКА |
|
|
|
>СПЕЦВЫПУСК #4 |
003B |
59 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ству, над здоровяком - барменом, висел телевизор. |
выстрел, туша |
вздрогнула от попадания, и от не¸ отор- |
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
Бармен, сидя спиной ко мне, смотрел новости. Дик- |
вало кусок - очередной, видимо - мяса. Кровь обрыз- |
|
|
|
|
|
|
|||
|
|
|
|
|
торша CNN вещала на всю Америку по-английски: |
гала нас с Сайдом с головы до ног. Послышался оче- |
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
редной душераздирающий крик. |
|
|
|
|
|
|
|
|
|
|
|
|
- Волна террора прокатилась по планете. Вот уже пять |
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
дней в России, в подмосковном городе Лотошино, тер- |
- Эй, Ядовитый, ты только посмотри, кто к нам прие- |
|
|
|
|
|
|
|||||||
|
|||||||||||||||
|
рористами захвачен ликеро-водочный завод. До сих |
хал! - Сайдекс размазал кровищу по лицу рукавом, и |
|
|
|
|
|
|
|||||||
|
|
|
|
|
пор террористы никак не могут сформулировать свои |
зашел. Я проследовал за ним. |
|
|
|
|
|
|
|||
|
|
|
|
|
|||||||||||
|
|
|
|
|
требования... |
У противоположной стены стояла усатая-бородатая |
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
Неожиданно голос дикторши разорвал грохот выстре- |
личность в бандане, белом, забрызганном кровью ха- |
|
|
|
|
|
|
|||||
|
|
|
|
|
|
||||||||||
|
|
|
|
|
лов и жуткие, леденящие душу крики. Стреляли калиб- |
лате, накинутом на косую кожаную куртку, с помповым |
|||||||||
|
|
|
|
|
|||||||||||
|
|
|
|
|
ра из двенадцатого, где-то совсем рядом - |
может |
дробовиком, и в |
темных очках. Личность, неожиданно |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
быть, даже в соседней комнате. Запахло пороховой |
испустив очередной истошный крик, резко перезаря- |
|
|
|
|
|
|
|||
|
|
|
|
|
гарью. Мой аппетит моментально пропал, а инстинкт |
дила ружь¸, и с бедра, не целясь, снова грохнула по |
|
|
|
|
|
|
|||
|
|
|
|
|
самосохранения заработал. Я прыгнул под стойку, и |
коровьей туше. Запах пороховой гари стал резче. |
|
|
|
|
|
|
|||
|
|
|
|
|
закрыл голову руками. Стрельба сотрясала стойку, |
|
|
|
|
|
|
|
|
||
|
стаканы дрожали. |
|
Я не успел ничего сказать. Личность сняла темные оч- |
|
|
|
|
|
|
||||||
|
|
|
|
|
- Э, парень, вылазь! - голос бармена вернул меня к |
êè, è... |
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
жизни. - Ты чего туда залез? |
|
- Ядовитый! И здесь ты! |
|
|
|
|
|
|
||||||
|
|
|
|
|
- Òàê |
стреляют же, - мой голос оказался неожиданно |
- Е-мое, Холод, дарова! - Ядовитый обрадовано шмыг- |
|
|
|
|
|
|
||
|
|
|
|
|
писклявым. - заденут... Вечно у вас в Америке стрель- |
нул, бросил ружье, и поздоровался. - А я, видишь, по- |
|
|
|
|
|
|
|||
|
|
|
|
|
ба и мафия, сплошной рекет. Убить могут. |
ка на каникулах, Сайдексу помогаю... |
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
- Так ты русский? - Выстрелы и крики тем временем не |
- А чего из ружья-то? - я недоверчиво смотрел на Ядо- |
|
|
|
|
|
|
|||
|
|
|
|
|
прекращались. Бармен заулыбался, и, подав мне руку, |
витого, словно он был частью моего очередного дурно- |
|
|
|
|
|
|
|||
|
|
|
|
|
вытащил из-под стойки. Здоровенная ручища показа- |
ãî ñíà. |
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
лась мне знакомой... |
- Так, это, чтоб специальность не растерять, опыт, сам |
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
- Сайдекс? А ты сюда как попал? Ты не на учебе в Пра- |
понимаешь... А то как же я потом сяду в Унрыл-то иг- |
|
|
|
|
|
|
|||
|
|
|
|
|
ге? - только тут я понял, что вс¸ это время бармен го- |
рать? Что ребята скажут? - Ядовитый выглядел рас- |
|
|
|
|
|
|
|||
|
|
|
|
|
ворил со мной по-русски. - Ты тут чего делаешь? |
строенным. |
|
|
|
|
|
|
|
||
|
|
|
|
|
- О, Холод прилетел, - Сайд заулыбался. - Учеба - уче- |
- Аа, понятно. - Я, наконец, успокоился, взял себя в |
|
|
|
|
|
|
|||
|
|
|
|
|
бой, а работать тоже нужно. Вон, видишь, какой у ме- |
руки и тоже, как Сайдекс, локтем размазал кровищу по |
|
|
|
|
|
|
|||
|
|
|
|
|
ня бизнес. Самый - самый лучший магазин в черте |
лицу. - А меня, вот, ФСБ прислало. Рамхака ловить бу- |
|
|
|
|
|
|
|||
|
|
|
|
|
аэропорта! |
дем. Как там дела с ядерными ракетами, а? Я новостей |
|
|
|
|
|
|
|||
|
|
|
|
|
- Поняяяаатно, - я поднял, наконец, голову, но от каж- |
íå çíàþ. |
|
|
|
|
|
|
|||
|
|
|
|
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
дого очередного выстрела и крика вс¸ равно продол- |
Сайд и Ядовитый помрачнели. |
|
|
|
|
|
|
|||
|
|
|
|
|
|||||||||||
|
|
|
|
|
жал вздрагивать. - А что это грохает? |
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
- Никто не знает, что у него там толком. Говорят, си- |
|
|
|
|
|
|
|
|
|
|
|
|
- Не что, а кто. Да не бойся, это наш, хе-хе, мясник ра- |
дит в компьютерном центре, в подземном бункере на |
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|||||||||
|
|
|
|
|
ботает. Он со Въетнама малость того, возбудимый |
кнопке запуска ядерной ракеты по бывшему СССР. - |
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
стал. Агрессивный. Но специалист по мясу - классный. |
Сайд расстроено покачал головой. - Ничего не тре- |
|
|
|
|
|
|
|||
|
|
|
|
|
Видел? - Сайд кивнул на висящие вдоль стены делика- |
бует, никаких заявлений не делает. И вообще молчит. |
|
|
|||||||
|
|
|
|
|
тесы. - Вс¸ свое, с заводов не возим, чужого не дер- |
Но и внутрь бункера никого не пускает. Это тут неда- |
|||||||||
|
|
|
|
|
жим, андерстенд? Хочешь нашего монстра посмот- |
леко, под Вашингтоном, на старой ракетной базе “но- |
|||||||||
|
|
|
|
|
|||||||||||
|
|
|
|
|
реть? Да ты его и так знаешь!...- Сайдекс указал мне |
ìåð 2923908”. |
|||||||||
|
|
|
|
|
на дверь, ведущую в подсобку - выстрелы и крики раз- |
|
|
|
|
|
|
|
|
||
|
|
|
|
|
давались именно оттуда. Мы подошли, и он приоткрыл |
- Понятно. - У меня начал созревать смутный план дей- |
|||||||||
|
|
|
|
|
å¸... |
|
|
ствий. - Какой тут автобус до базы ходит? |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
За дверью оказался маленький мясной цех, по колено |
- Смеешься? Там все дороги перекрыты. - Ядовитый |
|||||||||
|
|
|
|
|
залитый кровищей. На крюке в центре помещения ви- |
тоже выглядел взгрустнувшим. - Как-то не хочется |
|||||||||
|
|
|
|
|
села истерзанная коровья туша. Грохнул ещ¸ один |
умирать всем миром из-за сумасшедшего програм- |
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
60 |
003C |
БАЙКА |
|
|
|
>СПЕЦВЫПУСК #4 |
|
||||||||||
|
|
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- ЕСТЬ НА ЧЕМ, - УЛЫБНУЛСЯ В ОТВЕТ ЯДОВИТЫЙ. - У МЕНЯ ТУТ БАЙК СТОИТ ВО ДВОРЕ - ТАКОЙ, чТО ХАРЛЕИ ОТДЫХАЮТ. И ВААЩЕ, ПОКА МЫ С ТОБОЙ ТУТ ВМЕСТЕ ПЕРЕМЕЩАЕМСЯ - НАС НИКТО НЕ ТРОНЕТ, - ТУТ ОН УГРОЖАЮЩЕ ПОТРЯС РУЖЪЕМ, И ПОЛЕЗ КУ- ДА-ТО ПОД СТОЛ. - ПОТОМУ, ЧТО МЫ - БАНДА. СЕЙЧАС, ПОГОДИ, БЕНЗОПИЛУ ДОСТАНУ ТОЛЬКО, И ПОЕДЕМ.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
миста |
- |
земляка, который ещ¸ и террорист, к тому же. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
Åñëè |
только по бездорожью... |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- Âîò |
и езжайте вдвоем! Быстрее разберетесь. А мне |
|
|
|
|
|
|
|
|
|
|
|
||
работать надо! - Сайдекс уверенно всучил помповик |
|
|
|
|
|
|
|
|
|
|
|
|||
обратно в руки Ядовитому. - Езжайте! Времени мало - |
Там, где не ходят |
автобусы |
|
|
|
|
|
|||||||
|
|
|
|
|
||||||||||
работы непочатый край! Вдвоем и поедете. А меня |
|
|
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
клиенты ждут. |
|
Распрощавшись с Сайдексом, |
|
|
|
|
|
мы вышли во |
|
|
|
|
||
|
|
|
|
|
|
|
|
|
äâîð. |
|
|
|||
|
|
|
|
|
|
|
|
|||||||
- Э, э, погоди, как-то ты вс¸ быстро порешил. А на чем |
Смеркалось. Он повел меня за |
|
|
здание магазина, |
ê |
ìà- |
|
|
||||||
|
|
|
|
|||||||||||
|
|
|
|
|
|
|
||||||||
мы поедем? - я вернулся к реальности. |
ленькой подсобной хатке. Поковырялся в замке |
|
|
|
|
старым |
|
|
||||||
|
|
|
||||||||||||
|
|
|
|
ржавым ключом, покрутил что-то, и дверца в подсобку |
|
|||||||||
- Есть на чем, - улыбнулся в ответ Ядовитый. - У меня |
со скрипом открылась. Отдав мне в руки бензопилу, |
|
||||||||||||
тут байк стоит во дворе - такой, что Харлеи отдыхают. |
Ядовитый ввалился внутрь. Через минуту послышалось |
|
|
|||||||||||
И вааще, пока мы с тобой тут вместе перемещаемся - |
фырканье, из-за двери повалил дым, и Ядовитый выка- |
|
||||||||||||
нас никто не тронет, - тут он угрожающе потряс |
тил во дворик потрясающего вида огромный байк с ги- |
|
|
|||||||||||
|
|
|||||||||||||
ружъем, и полез куда-то под стол. - Потому, что мы - |
гантской рулевой вилкой, фантастическим креслом с |
|
|
|||||||||||
банда. Сейчас, погоди, бензопилу достану только, и |
спинкой, и задним колесом, по меньшей мере, от Жи- |
|
||||||||||||
поедем. |
|
|
гулей. Байк ревел и дымил. Ядовитый жестом попро- |
|
|
|
|
|
БАЙКА |
|
|
|
|
|
|
|
|
|
|
>СПЕЦВЫПУСК #4 |
003D |
61 |
|
||||||
|
|
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
сил меня передать ему бензопилу, и приладил е¸ в |
Ядовитый на секунду повернул голову за плечо, ко |
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
специальный карман справа, рядом с предусмотри- |
мне. - Сейчас первый кордон будет, но нас за него |
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
тельно убранным помповым ружьем. Приоткрыл кожа- |
просто так не пропустят. Проклятые капиталисты! |
|
|
|||||||||||
|
|
|
|
ную сумку на боку - там оказались коробки с патрона- |
Держись, будем пробиваться с боем! Ружье возьми! |
|
|
|||||||||||
|
|
ми, двенадцатый калибр. |
|
- Как с боем, Ядовитый? Ты обалдел? Какое ружье? - |
|
|
|
|
||||||||||
|
|
|
|
|
|
|
|
|||||||||||
|
|
|
|
- Садись давай, поехали! - он проорал это с громкос- |
я, тем временем, судорожно выглядывал из-за плеча |
|
|
|||||||||||
|
|
|
|
тью реактивного самолета, но через рев мотора я его |
Ядовитого на дорогу - там и впрямь показался поли- |
|
|
|||||||||||
|
|
|
||||||||||||||||
|
|
|
|
едва слышал. - Ехать до ракетной базы - часа три - че- |
цейский кордон: сине-красные мигалки разрывали |
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
тыре, там ещ¸ кордоны миновать надо - учти. Так что |
ночную темноту на части, слышалась непривычная, |
|
|
|||||||||||
|
|
|
|
|
|
пропущенная через матюгальники буржуинская речь, |
|
|
||||||||||
|
|
|
|
|
|
|
||||||||||||
|
|
|
|
|
|
виднелись контуры заграждений и машин. - Мы же ко- |
||||||||||||
|
|
|
|
|
|
го-нибудь убить |
можем! |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
- Не боись, Холод, |
в патронах транквилизатор! Никого |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ты не убъешь - так, попугаешь только. - Ядовитый, не |
|
|
|
|
|
|
||||||
|
|
|
|
|
|
сбавляя хода, залез одной рукой за пазуху, и извлек |
|
|
|
|
|
|
||||||
|
|
|
|
|
|
две хоккейные маски - такие же, как в кино про Дже- |
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
ка-Потрошителя. - На, надевай! И ружье достань! Пат- |
||||||||||||
|
|
|
|
|
|
роны в сумке, помнишь? |
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
||||||||||
|
|
|
|
|
|
Ружье-то я взял, но ответить на вопрос Ядовитого не |
|
|
|
|
|
|
||||||
|
|
|
|
|
|
успел - к тому моменту кордон был уже совсем близ- |
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
ко. Ядовитый заорал страшным голосом, перекрики- |
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
вая собственный мотоцикл, выжал газ, и мы понеслись |
|
|
|
|
|
|
||||||
|
|
|
|
|
|
в сторону заграждений, подобно древнему рыцарю |
|
|
|
|
|
|
||||||
|
|
|
|
|
|
Дону Кихоту, с ружьем вместо копья наперевес. Нео- |
|
|
|
|
|
|
||||||
|
|
|
|
|
|
жиданно нам в глаза ударили прожектора, и из ружья |
|
|
|
|
|
|
||||||
|
|
|
|
|
|
я стрелял уже вслепую - возможно, в кого-то и попал, |
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
потому, что крики со стороны кордона стали на поря- |
|
|
|
|
|
|
||||||
|
|
|
|
|
|
док громче. И тут под колесо байка что |
-то попало, и |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
мы с Ядовитым полетели через голову в |
придорожную |
|
|
|
|
|
||||||
|
|
|
|
|
|
канаву... |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
История Рамхака |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
поторопимся, двигай телом! |
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
В канаве было мокро и грязно - я это прочувствовал |
|
|
|
||||
|
|
Я кое-как взобрался на железного коня Ядовитого, и |
сразу же, как только очнулся. Перед глазами висела |
|
|
|
||||||||||
|
|
|
|
|
|
|||||||||||
|
|
мы понеслись вдаль от аэропорта, куда-то в постепен- |
копна травы, растущая, видимо, из бортика канавы. |
|
|
|
||||||||||
|
|
но темнеющие сумраки привашингтонских прерий. Ве- |
Рядом, сжимая в руках сумку с транквиль - патронами, |
|
|
|
|
|||||||||
|
тер свистел в ушах. Что-то хрипело в моторе, спина |
валялся Ядовитый. Его косуха вымазалась в грязи, и |
|
|
|
|||||||||||
|
|
|
|
|
||||||||||||
Ядовитого наглухо закрывала мне обзор. Я оконча- |
уже не казалась такой блестящей, а темные очки поте- |
|
||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
тельно расслабился, впился замерзающими от ветра |
рялись. Слышались крики полицейских, а наверху бе- |
|
||||||||||||
руками в спинку мотоциклетного кресла, и, по-моему, |
гали блики фонарей. |
|
|
|
|
|
|
|
||||||||
|
|
заснул. Сколько я спал - не знаю. |
- ТССС! Они нас ищут! Холод, они не должны нас най- |
|
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
Пробуждение мо¸ наступило от окончательного рас- |
ти! Где мотоцикл? |
|
|
|
|
|
|
|
||||||
|
|
тряхивания. Ядовитый свернул с шоссе на какой-то |
|
|
|
|
|
|
|
|
||||||
|
|
жуткий грунтовый проселок, и вот уже с пол-часа тряс |
Подо мной лежало нечто жесткое и на ощупь вполне |
|||||||||||||
нас по ней. Было глухо, темно и холодно. Единствен- |
железное. Внутренняя ассоциативная система подска- |
|||||||||||||||
|
|
ная фара нашего чуда техники с трудом освещала про- |
зала, что это, возможно, и есть искомый Ядовитым |
|||||||||||||
|
|
|||||||||||||||
|
|
селочную дорогу. |
объект. |
|
|
|
|
|
|
|
||||||
|
|
- Холод, ты проснулся там? Вс¸, почти приехали. - |
- Вот он, подо мной валяется! Ты что, не чувствуешь? |
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
62 |
|
|
003E |
БАЙКА |
|
|
|
|
|
|
|
|
|
>СПЕЦВЫПУСК #4 |
|
||||||||
|
|
|
|
|
|
||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Ядовитый повернулся, и начал копаться в темноте и |
Тем временем крики над канавой стихли, а фонарики |
|
|||||
грязи. Потом оторвался, и расстроено откинулся на |
пропали - видимо, нас искали уже где-то поодаль. |
||||||
áîðò. |
- Ползти надо, - заявил Ядовитый. - По направлению |
||||||
|
|||||||
- Вот ведь блин, - голос Ядовитого дрожал. - Бензопи- |
вдоль дороги, то есть - в нашем случае - по дну канавы. |
||||||
ла погнулась в кармане - байк на не¸ упал. Не приго- |
Пока нас снова здесь искать не стали. Поехали? - он |
||||||
дится больше, не поработать мне с ней, родимой, над |
встал на карачки, повернулся ко мне задом, и почавкал |
|
|||||
|
|||||||
вырезками и ребрышками говяжьими. И кардан сломал- |
на четырех костях по дну нашего арыка. |
||||||
ся. На две части. - он показал мне кусок толстенной же- |
|
|
|
|
|
|
|
лезяки, и машинально сунул его в здоровенный карман |
Я заткнулся, повесил ружье на ремень за спину, чтоб не |
|
|||||
|
|||||||
косухи. - Каюк мотоциклу. Знаешь, Холод, я на следую- |
измазать сей благородный девайс окончательно, и по- |
||||||
|
|
|
|
|
|
|
|
щее лето к Сайду в магазин работать больше не пойду |
полз вслед за ним. |
|
|
|
|
|
|
- неохота. Поеду лучше на Кубу - там сигары, женщины |
|
|
|
|
|
|
|
и работа по специальности... |
Минут через пятнадцать ползти мы окончательно уста- |
||||||
|
ли. Было принято решение вылезти на дорогу, |
|
è, |
прики- |
|
||
|
|
||||||
- Ага. Кубинским Гуэрилльос в лесах помогать. - шепо- |
дываясь местными жителями, напрямую идти |
|
ê |
бункеру |
|||
|
|
|
|
|
|||
том огрызнулся я. - Ты уж лучше скажи, коммандос наш |
ракетной базы. Благо, когда мы вылезли, не |
обнаружи- |
|
||||
|
|
|
|
|
|
|
|
разлюбезный, что теперь делать будем. - У тебя права- |
ëè íè äóøè. |
|
|
|
|
|
|
то, кстати, на вождение мотоцикла есть? |
Дорога ко входу в бункер ракетной базы заняла минут |
|
|||||
|
|
||||||
|
|
||||||
- И на оружие тоже нет, - ответил в тон Ядовитый, и ди- |
десять - она выглядела как крохотный курганчик посре- |
||||||
ковато захихикал. |
ди поля, у входа стоял открытый армейский джип и |
|
|
БАЙКА |
|
|
|
>СПЕЦВЫПУСК #4 |
003F |
63 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
двое часовых. Я не спрашивал Ядовитого, откуда |
îí |
вый офисный стул валялся здесь же по частям, а в |
|
|
|
|||||
|
|
|
|
||||||||
|
|
|
|
знал, как идти к бункеру - это не имело значения. |
Ìå- |
дальнем и самом темном углу сидел... Рома |
|
|
|
||
|
|
|
|
ня больше интересовало другое. |
|
Хади, Рамхак - с огромной трехлитровой банкой само- |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
- Ядовитый, и что мы теперь будем делать? |
|
гона в обнимку. |
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
- Как что? Теперь надо убрать часовых. - к Ядовитому |
- А ну вставай! С самой России за тобой приехали, га- |
|
|
|
|
||
|
|
|
|
|
|
|
|
||||
|
|
|
|
вернулась обычная уверенность в себе. - Дай-ка мне |
дина! Вот ведь гад, и где он тут только “Балтику” взял. |
|
|
|
|||
|
|
|
|
|
|
||||||
|
|
|
|
ружье... |
- Ядовитый поднял Рамхака за шкирма, и прислонил к |
|
|
|
|||
|
|
|
|
|
|
стене. Тот, впрочем, не упал, и даже самогон не выро- |
|
|
|
|
|
|
|
|
|
Два выстрела - два попадания. Часовые успешно лег- |
нил, а даже открыл глаза, и... |
|
|
|
|
||
|
|
|
|
|
|
|
|
||||
|
ли у стен бункера, и мы подошли к ним. Здоровенные |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|||||
|
американские Джи-Аи храпели здоровым детским |
- Ùàñ êàê äàì... |
Больно... Капиталистическая свинья, |
|
|
|
|||||
|
|
|
|
||||||||
|
|
|
|
сном. Я порылся в карманах одного из них, и нашел |
вот. - Рамхак дыхнул на Ядовитого своим “заспиртуй |
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- НЕ ЧТО, А КТО. ДА НЕ БОЙСЯ, ЭТО НАШ, ХЕ-ХЕ, МЯСНИК РАБОТАЕТ. ОН СО ВЪЕТНАМА МАЛОСТЬ ТОГО, ВОЗБУДИМЫЙ СТАЛ. АГРЕССИВНЫЙ. НО СПЕЦИАЛИСТ ПО МЯСУ - КЛАССНЫЙ. ВИДЕЛ?
|
|
|
|
|
|
|
|
|
|
|
|
ключи |
от джипа. |
|
бабочку”. Такого |
обращения тот, естественно не стер- |
|
|
|
|
|
|||||
|
|
|
- Î! - |
Ядовитый повеселел ещ¸ больше, когда увидел |
ïåë. |
|
|
|
|
|
|
|
|
|
|||
|
|
|
табличку, |
наспех приклеенную на дверь бункера. - Ты |
- Ах ты паскудина, |
Родину позоришь, террористище |
||
|
|
|
только |
посмотри на это! |
международный! |
- Ядовитый неожиданно выхватил из- |
|
|
|
|
|
|
|
|
за пазухи кусок |
кардана, припрятанный ещ¸ в канаве, |
|
|
|
|
|
|
|
|||
|
|
|
Табличка |
гласила: |
|
и огрел им по голове неподготовленного Рамхака. Тот |
|
|
|
|
|
|
|
|
икнул, и упал, потеряв - таки банку с самогоном. Са- |
||
|
|
|
|
|
|
|||
|
|
|
Danger! |
Do Not Enter! Russian Nuclear Terrorist |
могон разлился по всему бункеру, и стек в аккуратные |
|||
|
|
|
Inside! |
Nuclear Hazardous! |
лужицы у стен. |
|
|
|
|
|
|
|
|
|
|
||
|
|
|
- Теперь |
вижу - мы по адресу. Ну что, пойдем? - Ядо- |
- Хватай его под мышки, и пошли отсюда. - Ядовитый |
|||
|
|
|
|
|
|
|
||
|
|
|
витый |
уверенно потянул на себя дверь в бункер, и |
выбросил кардан, и поднял мычащее тело с пола, а я |
|||
|
|
|
первым |
вошел в плохо освещенный проход. Мне оста- |
подхватил. |
|
|
|
|
|
|
валось |
только последовать за ним. |
Мы вынесли Рамхака на свежий воздух, и кинули в ку- |
|
||
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|||
|
|
|
В конце |
коридора оказалась небольшая зала, застав- |
зов джипа, ключи от которого нам так предусмотри- |
|||
|
|
|
ленная |
компьютерами - это и была главная и един- |
тельно подарил патруль. Уже рассвело. Я сел за руль, |
|||
|
|
|
ственная |
комната компьютерного ракетного центра. |
завел машину, и повел в сторону города. Ядовитый |
|
||
|
|
|
Òàì, |
впрочем был совершеннейший разгром. По полу |
нашел под сиденьем бутылку “Будвайзера”, и уже |
|||
|
|
|
катались |
бутылки из-под “Балтики”. Многие компью- |
вальяжничал: открывал е¸ об ствол своего бывалого |
|||
|
|
|
||||||
|
|
|
теры также валялись на полу с разбитыми монитора- |
помповика. Наконец открыл, отхлебнул, и протянул |
||||
|
|
|
ми, единственный, похоже, в помещении, пластико- |
ìíå: |
|
|
||
|
|
|
|
|
|
|
|
|
64 |
0040 |
БАЙКА |
|
|
>СПЕЦВЫПУСК #4 |
|
|
||||||
|
|
|
|
|
|
|
|
- На. Бодрит, как Мадрид. И улыбнись, наконец - мне, |
Õàïó Åíãä |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||
|
ветерану Вьетнама, надоело видеть твою кислую харю. |
- И что, он летел сюда прямо в коробке? - Покровский |
|
|||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
||||||||||||||||||||
|
|
|
|
|
|
|
|
|
||||||||||||||||||||
Я вспомнил цепочку событий, произошедших со мной |
явно был заинтересован. - Обалдеть! Я был в госпита- |
|
||||||||||||||||||||||||||
|
за последние три дня, поперхнулся пивом, и неубеди- |
ле ФСБ - его выпишут, как только пройдет сотрясение |
|
|||||||||||||||||||||||||
|
тельно состроил улыбочку. |
|
мозга. Сильно вы ему по башке |
дали. Он сам, между |
|
|
||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
прочим, говорит, что ничего не помнит - мол, приехал в |
|
|
|||||||||||||||||
|
- То-то же, - Ядовитый забрал у меня пиво. - Вс¸, ха- |
|
Урюпинск, пошел, с друганами посидел, потом они в |
|
||||||||||||||||||||||||
рош, ты за рулем! |
|
|
|
|
|
клуб поехали - праздновать дальше, потом что-то он |
|
|||||||||||||||||||||
|
|
|
|
|
|
|
|
|
там ещ¸, с какими-то беспутными женщинами... И ни- |
|
|
|||||||||||||||||
|
Дорога в магазинчик Сайдекса прошла без приключе- |
|
какого Вашингтона или ракетного бункера он не помнит |
|
|
|||||||||||||||||||||||
|
|
|
|
|||||||||||||||||||||||||
|
ний, е¸ я особо описывать не буду. Припомню, впро- |
- |
детектором лжи проверяли, не врет! Мне клялся, что |
|
||||||||||||||||||||||||
|
чем, что Рамхак в кузове успешно пришел в себя, и да- |
|
если б приехал в Вашингтон хоть на денек - первым де- |
|
||||||||||||||||||||||||
|
же пытался петь что-то нестройным голосом. Так же не |
|
лом купил бы себе фирменный дистрибутив Win’98, на |
|
||||||||||||||||||||||||
|
буду заострять сво¸ внимание на том, как мы распро- |
|
пятидюймовых дискетках - на память. Во парня торкну- |
|
||||||||||||||||||||||||
|
щались с Ядовитым и Сайдексом, и, как упаковав Рам- |
ло с этого самогона... |
|
|
|
|
|
|
|
|
|
|
||||||||||||||||
|
хака в огромную коробку из-под холодильника, сдали в |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
багаж, чтоб не покупать сразу два билета в Москву... |
- И не говори, Серег, - я блаженно отхлебнул кофе, |
|
|||||||||||||||||||||||||
|
|
|
|
|
|
|
|
поправил на груди медаль “за заслуги перед Отечес- |
|
|||||||||||||||||||
|
|
|
|
|
|
|
|
|
твом”, и нажал на кнопку телевизионного пульта. Те- |
|
||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||
|
|
|
|
|
|
|
|
|
леэкран вспыхнул, перед нашими глазами появилась |
|
||||||||||||||||||
|
|
|
|
|
|
|
|
|
заставка “Вестей”, и ведущая заговорила: |
|
|
|
|
|
|
|
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- Волна террора прокатилась по планете. Вот уже де- |
|
||||||||||||||||||
|
|
|
|
|
|
|
|
|
сять дней в подмосковном городе Лотошино, террорис- |
|
||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||
|
|
|
|
|
|
|
|
тами захвачен ликеро-водочный завод. До сих пор тер- |
|
|
||||||||||||||||||
|
|
|
|
|
|
|
|
|
рористы никак не могут сформулировать свои требова- |
|
||||||||||||||||||
|
|
|
|
|
|
|
|
|
íèÿ... |
|
|
|
|
|
|
|
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- Волна террора прокатилась по планете. Вот уже де- |
|
||||||||||||||||||
|
|
|
|
|
|
|
|
|
сять дней в подмосковном городе Лотошино |
|
||||||||||||||||||
|
|
|
|
|
|
|
|
террористами захвачен ликеро-водочный завод. До сих |
|
|
||||||||||||||||||
|
|
|
|
|
|
|
|
|
пор террористы никак не могут сформулировать свои |
|
||||||||||||||||||
|
|
|
|
|
|
|
|
|
требования... |
|
|
|
|
|
|
|
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
- ВОЛНА |
ТЕРРОРА |
ПРОКАТИЛАСЬ |
|
|
|
|
|
||||||||||||
|
|
|
|
|
|
|
|
|
ПО ПЛАНЕТЕ. |
ÂÎÒ |
УЖЕ ДЕСЯТЬ |
|
|
|
|
|||||||||||||
|
|
|
|
|
|
|
|
|
ÄÍÅÉ Â |
ПОДМОСКОВНОМ |
ГОРОДЕ |
|
|
|
|
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||
|
|
|
|
|
|
|
|
|
ЛОТОШИНО, ТЕРРОРИСТАМИ |
ÇÀÕ- |
|
|
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||
|
|
|
|
|
|
|
|
|
ВАЧЕН ЛИКЕРО-ВОДОЧНЫЙ ЗАВОД. |
|
|
|||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||
|
|
|
|
|
|
|
|
|
ДО СИХ ПОР ТЕРРОРИСТЫ НИКАК НЕ |
|
|
|||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||
|
|
|
|
|
|
|
|
|
МОГУТ СФОРМУЛИРОВАТЬ |
|
ÑÂÎÈ |
|
|
|||||||||||||||
|
|
|
|
|
|
|
|
|
ТРЕБОВАНИЯ |
... |
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
WWW.FANTOM.RU
в продаже с октября
В первом номере
журнала:
Роберт Асприн
предотвращает космическую войну.
Иэн Уотсон
вставляет реклам-
ные ролики прямо в твои сны.
Дэн Витлок
рассылает копии людей по факсу,
Элизабет Муун
предостерегает любителей фэнтези - Целоваться с лягушками - небезопасно!
Алексей Шведов
снимает новые экстремальные виды спорта на фо-
не хакерских войн.
À òàê æå
КОМИКСЫ
новости HI Tech, обзоры фантастики и многое другое.
Í Î Â Û É |
Ó Ð Í À Ë |
Ô À Í Ò À Ñ Ò È Ê È |
È |
Ô Ý Í Ò Å Ç È |
66 |
0042 |
КОНСТРУКТОР |
>СПЕЦВЫПУСК #4 |
||
СОЗДАЙ ЯЗЫК С |
|||||
КОНСТРУКТОР ДЛ |
|||||
The Hound of Winter (thow@ireland.com) |
|
||||
Частенько бывает, что в Сети |
будет реагировать на их появление в тексте |
||||
программы нового языка. |
|||||
находишь материалы, ценность |
|||||
|
|||||
которых поначалу неочевидна. |
Как это делается? |
||||
Иногда в поисках чего-нибудь |
Типы переменных интерпретатором опреде- |
||||
этакого бродишь по софтверно- |
|||||
ляются автоматически, как в Perl или Python, |
|||||
даунлоадному сайту и ничего- |
при использовании этих переменных первый |
||||
шеньки на нем вроде бы хоро- |
раз. Например, достаточно написать: |
||||
|
|||||
шего нет. Другое дело, когда |
example = 1 |
||||
кто-нибудь рассказывает про |
stringer = “PLC IS COOL!” |
||||
крутую фишку, скачанную в те- |
И переменная example будет целым числом, а stri- |
||||
чение бессонной ночи с како- |
nger - строкой. Сразу предупреждаю, что интер- |
||||
го-нибудь зимбабвийского сер- |
претатор не поддерживает язык со структурами, |
||||
вера или стащенную прямо под |
массивами и указателями.;-( Кроме того, исход- |
||||
ный файл на новом языке должен содержать |
|||||
носом у тамошнего растяпы-ад- |
всего две секции: описания глобальных пере- |
||||
ìèíà. Â ýòîò ðàç âñå áûëî íå |
менных и собственно процедуры на этом языке. |
||||
Запуск программы на новом языке происходит в |
|||||
столь романтично - редактор |
|||||
несколько этапов: |
|||||
нашего журнала рассказал мне |
1. В программу на Си++ подключаются библио- |
||||
о классной проге, которая яко- |
теки из скачанного архива PLC. |
||||
2. Вызывается процедура инициализации |
|||||
бы была найдена им на |
PLC_Startup(). |
||||
www.softseek.com и которая |
3. Вызывается Init() для описанного и исполь- |
||||
позволяет создавать языки са- |
зуемого языка. |
||||
4. Для каждой внешней команды вызывается |
|||||
мому. Честно признаюсь, доселе |
PLC_AddCommand(). |
||||
не видел ни одной программы, |
5. Загружается исходник программы для испол- |
||||
нения. |
|||||
которая позволяла бы созда- |
|||||
6. Он транслируется с помощью PLC_Compile() и |
|||||
вать языки и потом на них |
PLC_CompileStatements(). |
||||
что-нибудь писать. Любопыт- |
7. Проверяются ошибки. |
||||
8. Вызывается PLC_Execute(), и происходит ис- |
|||||
|
|
|
|
||
Что я скачал? |
|
|
полнение программы. |
||
|
3. Практически не требует усилий. |
9. Проверяются ошибки. |
|||
|
|
|
4. Распространяется свободно, но с ограниче- |
10. Вызывается PLC_Shutdown(). |
|
В каталоге образовалось несколько файлов - па- |
ниями - исходники не поставляются, а постав- |
|
|||
ра с документацией, пара исполняемых EXE- |
ляются уже откомпилированные библиотеки. |
Процедура PLC_CompileStatements() трансли- |
|||
шников и библиотеки для Microsoft Visual C++. |
Исходники можно получить у компании за день- |
рует содержание только одной из процедур в |
|||
Полное название продукта выглядит так: “The |
ãè. ;-( |
программе. Если же язык не позволяет делить |
|||
Adept Software Programming Language Creator |
Чтобы создать свой собственный бейсик или |
программу на процедуры (бейсик, к примеру) то |
|||
(PLC)”. Позволяет сия штучка не много, но дос- |
Си-подобный язык, придется немного потру- |
всю программу можно исполнить, вызвав |
|||
таточно, чтобы играть с ней пару недель. А |
диться. В общем случае понадобится написать |
PLC_CompileStatements() для всего файла с |
|||
именно: |
|
|
около сотни строк кода. Но все довольно прос- |
программой. |
|
1. Имеется встроенный интерпретатор простых |
то, да и архив снабжен работающим примером. |
В общем, прочитав все эти характеристики и ин- |
|||
конструкций языка Си. |
|
Необходимо расписать структуры данных для |
струкции, я решил создать что-то наподобие |
||
2. Можно создавать свои языки в примитивной |
различных типов нового языка, операторов, |
бейсика - на пробу. И раз уж “инструкция при- |
|||
форме и получать приличные интерпретаторы. |
ключевых слов и определить процедуру, которая |
лагается”, то и смотреть надо в нее. В комплек- |
|
|
КОНСТРУКТОР |
|
|
|
>СПЕЦВЫПУСК #4 |
0043 |
67 |
|
|
АМ, ИЛИ Я ПРОГРАММИСТА
|
|
|
|
те присутствуют файлы PLC_C.CPP и PLC_C.H - |
{“/”, 1, FALSE, |
PLC_OP_BOTH,}, |
>Link); |
|
||||
|
|
|
|
это определение языка для Си. Скопировав их в |
{“+”, 2, FALSE, |
PLC_OP_BOTH,}, |
Statement=PLC_TOKENNEXT(&Expression3- |
|||||
|
|
|
|
PLC_BASIC.CPP и PLC_BASIC.H, я приступил к |
{“-”, 2, FALSE, |
PLC_OP_BOTH,}, |
>Link); |
|
||||
|
правке |
|
этих файлов под бейсик. Файл |
{“<”, 3, FALSE, |
PLC_OP_BOTH,}, |
PLC_ExecExpression(PLC_TOK_Anchor(Expres- |
||||||
|
|
|
|
PLC_BASIC.H можно оставить неизмененным - |
{“<=”, 3, FALSE, PLC_OP_BOTH,}, |
sion1)); |
|
|||||
|
|
|
|
он подойдет и для бейсика. А вот PLC_BA- |
{“>”, 3, FALSE, |
PLC_OP_BOTH,}, |
while(1) |
|
||||
|
|
|
|
|
||||||||
|
|
|
|
SIC.CPP придется немного переписать. Первым |
{“>=”, 3, FALSE, PLC_OP_BOTH,}, |
{ |
|
|||||
|
делом |
необходимо |
изменить конструкции |
{“=”, 4, FALSE, |
PLC_OP_BOTH,}, |
if(Expression2!=NULL) |
||||||
|
||||||||||||
|
|
|
|
PLC_KEYWORD и PLC_OPERATOR, потом немно- |
{“<>”, 4, FALSE, PLC_OP_BOTH,}, |
{ |
|
|||||
|
|
|
|
го изменить процедуры ExecKeyword() и App- |
{“=”, 4, TRUE, |
PLC_OP_BOTH,}, |
PLC_ExecExpression(PLC_TOK_Anchor(Expres- |
|||||
|
|
|
|
lyOperator(). Структура PLC_KEYWORD содержит |
{“,”, 4, FALSE, |
PLC_OP_BOTH,}, |
sion2)); |
|
||||
|
|
|
|
список служебных слов языка, таких как IF, |
}; |
|
if(!PLC_DT_GetBool(&PLC_Result)) break; |
|||||
|
|
|
|
THEN, ELSE, FOR, GOSUB, GOTO. Из файла |
|
|
} |
|
||||
|
|
|
|
PLC_BASIC.CPP в этой структуре можно удалить |
Теперь осталось самое интересное - необходи- |
PLC_ExecStatement(Statement,NULL); |
||||||
|
|
|
|
все элементы, кроме вот этих: |
мо исправить процедуры ApplyOperator() и |
if(PLC_FlowStatus==PLC_FLOW_BREAK) |
||||||
|
|
|
|
PLC_KEYWORD KeywordList[]= |
ExecKeyword(), которые, собственно, и опреде- |
{PLC_FlowStatus=PLC_FLOW_NORMAL; break;} |
||||||
|
|
|
|
ляют то, как будет выполняться программа. |
else if(PLC_FlowStatus==PLC_FLOW_RETURN || |
|||||||
|
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
Процедура ExecKeyword() отвечает за исполне- |
PLC_FlowStatus==PLC_FLOW_GOTO)break; |
||
|
{ |
|
|
|
|
ние зарезервированных слов (IF, GOTO и т.д.), а |
else if(PLC_FlowStatus==PLC_FLOW_CONTIN- |
|||||
|
|
|
|
{ |
|
|
“IF”,””,””, |
|
ApplyOperator() должна проводить вычисления и |
UE) PLC_FlowStatus=PLC_FLOW_NORMAL; |
||
|
|
|
|
|
|
|
||||||
|
|
|
|
P |
L C _ |
K E Y _ O P E N , P L C _ K E Y _ E X P R E S - |
определять результат всяческих операций. |
PLC_ExecExpression(PLC_TOK_Anchor(Expres- |
||||
|
|
|
|
SION,PLC |
_KEY_CLOSE, |
|
|
sion3)); |
|
|||
|
|
|
|
PLC_KEY_STATEMENT, |
void ExecKeyword(PLC_TOKEN *Token,bool |
} |
|
|||||
|
|
|
|
|
||||||||
|
|
|
|
PLC_KEY_DONE, |
|
*IfResultPtr) |
|
break; |
|
|||
|
|
|
|
}, |
|
|
|
{ |
|
// GOTO |
|
|
|
|
|
|
{ |
|
|
“ELSE”,””,””, |
PLC_TOKEN *Statement,*Expression1,*Exp- |
case TT_KEY_GOTO: |
|||
|
|
|
|
PLC_KEY_STATEMENT, |
ression2,*Expression3,*TokenTemp; |
PLC_SYMBOL |
*Symbol=(PLC_SYMBOL*)- |
|||||
|
|
|
|
PLC_KEY_DONE, |
|
switch(Token->SubType) |
PLC_TOK_Pointer(Token); |
|||||
|
|
|
|
|
||||||||
|
|
|
|
}, |
|
|
|
{ |
|
S y m b o l = P L C _ S y m b o l S e a r c h ( S y m b o l - |
||
|
|
|
|
{ |
|
|
“FOR”,””,””, |
// IF |
|
>Name,0,false); |
// atp-search local scope only! |
|
|
|
|
|
PLC_KEY_OPEN,PLC_KEY_EXPRESSION, |
case TT_KEY_IF: |
|
if(Symbol==NULL || Symbol->LabelTar- |
|||||
|
|
|
|
PLC_KEY_DIVIDER, |
|
Expression1=PLC _ TOKENNEXT(PLC _ T - |
get==NULL) PLC_Err(PLC_ERR_UNKNOWN_LA- |
|||||
|
|
|
|
PLC_KEY_EXPRESSION,PLC_KEY_DIVIDER, |
OK_Anchor(Token)); |
BEL_s,((PLC_SYMBOL*)PLC_TOK_Pointer(Token))- |
||||||
|
|
|
|
PLC_KEY_EXPRESSION,PLC_KEY_CLOSE, |
Statement=PLC_TOKENNEXT(&Exp-ression1- |
>Name); |
|
|||||
|
|
|
|
PLC_KEY_STATEMENT, |
>Link); |
|
PLC_GotoToken=Symbol->LabelTarget; |
|||||
|
|
|
|
PLC_KEY_DONE, |
|
P L C _ E x e c E x p r e s s i o n ( P L C _ T O K _ A n c - |
PLC_FlowStatus=PLC_FLOW_GOTO; |
|||||
|
|
|
|
}, |
|
|
|
hor(Expression1)); |
|
break; |
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
{ |
|
|
“GOTO”,””,””, |
*IfResultPtr=PLC_DT_GetBool(&PLC_Result); |
} |
|
||
|
|
|
|
PLC_KEY_SYMBOL, |
|
if(*IfResultPtr) |
PLC_ExecStatement(PLC_T- |
} |
|
|||
|
|
|
|
PLC_KEY_DONE, |
|
OKENNEXT(&Expression1->Link),NULL); |
|
|
||||
|
|
|
|
} |
|
|
|
|
break; |
|
Точно так же в процедуре ApplyOperator() остав- |
|
|
|
|
|
}; |
|
|
|
|
// ELSE |
|
ляются только пункты, отвечающие за арифме- |
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
case TT_KEY_ELSE: |
тику и операции сравнения. А процедуру |
||
|
|
|
|
В структуре PLC_OPERATOR определены опера- |
Statement=PLC_TOKENNEXT(PLC_TOK_An- |
PLC_C_Init() нужно оставить неизмененной. Те- |
||||||
|
|
|
|
ции, которые можно проводить над различными |
chor(Token)); |
|
перь осталось только перекомпилировать при- |
|||||
|
|
|
|
элементами - переменными, числами и строка- |
if(!*IfResultPtr) |
PLC_ExecStatement(State- |
мер и попробовать какую-нибудь простенькую |
|||||
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
ми. Для своего бейсика я оставил только прос- |
ment,NULL); |
|
прогу: |
|
||||
|
|
|
|
тые арифметические операции и операции |
break; |
|
|
|
||||
|
|
|
|
сравнения “больше/меньше”: |
// FOR |
|
10 PRINT “Я ЭТО СДЕЛАЛ!” |
|||||
|
|
|
|
|
|
|
|
|
case TT_KEY_FOR: |
20 GOTO 20 |
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
PLC_OPERATOR OperatorList[]= |
Expression1=PLC _ TOKENNEXT(PLC _ T - |
|
||||||
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
{ |
|
|
|
|
OK_Anchor(Token)); |
Все довольно просто, если учиться на примерах. |
||
|
|
|
|
{“+”, 0, TRUE, |
PLC_OP_NEXTIFNOPREV,}, |
Expression2=PLC_TOKENNEXT(&Expression1- |
Теперь твоя очередь. Уверен: посидишь недель- |
|||||
|
|
|
|
{“-”, 0, TRUE, |
PLC_OP_NEXTIFNOPREV,}, |
>Link); |
|
ку - и сам напишешь свой собственный дельфи |
||||
|
|
|
|
{“*”, 1, FALSE, PLC_OP_BOTH,}, |
Expression3=PLC_TOKENNEXT(&Expression2- |
:). Желаю удачи! |
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
68 |
0044 |
КОНСТРУКТОР |
|
|
>СПЕЦВЫПУСК #4 |
|
ТВОЙ СОБСТ WEB-БРАУЗ
Horrific (smirnandr@mail.ru) |
|
|
Предварительные установки |
|
понент “WebBrowser” (он находится на закладке |
|
|
“Internet” или “ActiveX”) - у тебя появится белый |
Ты снова должен запустить Delphi. Именно он |
|
квадрат с именем WebBrowser1. После этого |
позволяет очень быстро и без особых проблем |
|
брось на форму “CoolBar”, который находится |
написать свой собственный браузер. Когда за- |
|
на закладке “Win32” палитры компонентов. Это |
пустишь, то найди закладку “Internet”. Здесь |
|
панелька, которая должна выровняться по вер- |
должен быть компонент “WebBrowser” (он дол- |
|
хнему краю на твоей форме. Теперь выдели |
жен быть последний). Если у тебя версия Delphi |
|
WebBrowser1 и перейди в ObjectInspector. Щел- |
меньше, чем пятая, то этого компонента может |
Рисунок 2 |
кни по свойству “Align” и в выпадающем списке |
и не быть. Он может отсутствовать и если ты от- |
|
выбери “alClient”. “WebBrowser” должен растя- |
казался устанавливать инет-компоненты (по |
|
нуться на все свободное место формы. В ре- |
умолчанию они ставятся). |
|
зультате ты увидишь нечто похожее на рисунок |
|
|
4. |
Выбери “Import ActiveX Control” из меню |
|
|
“Component”. Перед тобой должно открыться |
|
|
окно, как на рисунке 1. |
|
|
|
|
|
Рисунок 3 |
|
|
|
|
|
|
|
Рисунок 4 |
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Теперь брось на CoolBar1 (мы его недавно |
óñòà- |
|
||||||||
|
|
|
|
После того, как Delphi прошуршит |
мозгами, поя- |
|
новили на форму) панель “ToolBar” из |
закладки |
|
||||||||||||||
|
|
|
|
вится окно, которое сообщит об успешной уста- |
|
“Win32” и “ComboBox” из закладки “Standart” па- |
|||||||||||||||||
|
|
|
|
новке нового компонента. Нажми “OK” и закрой |
|
литры компонентов. Все это ты должен бросить |
|||||||||||||||||
|
|
|
|
все, что открыл Delphi. Для этого выбери “Close |
|
именно внутрь CoolBar1, иначе ты получишь |
|||||||||||||||||
|
|
|
|
All” из меню “File”. Теперь и у тебя есть компо- |
|
полный отстой. После этого нужно выделить |
|||||||||||||||||
|
|
|
|
нент “WebBrowser”, только он расположен на |
|
CoolBar1 и перейти в ObjectInspector. Здесь ты |
|||||||||||||||||
|
|
|
|
странице “ActiveX” палитры компонентов. |
|
должен изменить строку “AutoSize” на “true” (по |
|||||||||||||||||
|
|
|
|
||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
умолчанию она “false”). Сравни результат с ри- |
||||||||||
|
|
|
|
Как ты мог заметить, мы будем использовать |
сунком 5. |
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
“Microsoft Internet Controls”, т.е. движок установ- |
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
ленного на твоем компе IE. А это значит, что |
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
твой браузер подхватит все болезни и глюки |
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
своего движка. Единственное, что может успо- |
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
коить - так это то, что интерфейс не будет таким |
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
занудным. Он будет таким, как ты захочешь, по- |
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
Рисунок 1 |
|
тому что сделан твоими руками. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Первые шаги |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
В списке выбора |
этого окна (сверху) найди |
|
|
|
|
|
|
|
|
|
|
Рисунок 5 |
|
|
|
|
|
|
|
|
|
|
|
|
строку “Microsoft Internet Controls (Version 1.1)”. |
|
Сейчас ты уже готов приступить к программиро- |
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
Версия может отличаться, но нам с тобой - ак- |
|
ванию. Создай новый проект (“File” -> “New |
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
валанг. Теперь нажми кнопку “Install”. Перед то- |
|
Application”) и сразу измени заголовок и иконку. |
|
Если что-то не получилось, то читай статью за- |
||||||||||||||||||
|
бой откроется окно, как на рисунке 2, и запрос, |
|
Как это делается, я рассказал в статье про мега- |
|
ново. Если и это не поможет, то попробуй нака- |
||||||||||||||||||
|
как на рисунке 3. На запрос ты должен ответить |
|
медиа-плеер в этом же номере. |
|
тить пивка, это помогает думать :). Если все в |
||||||||||||||||||
|
“Yes”. |
|
Двигаемся дальше. Установи на форму наш ком- |
|
порядке, то выделяй ComboBox1 (выпадающий |
||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|