Бот - Максим Іванович Кідрук
Бот очуняв, почав скімлити та раптом затих. Обвів усіх зачумленим поглядом. Тимур знову потягнувся до пульта і натиснув кнопку. Цього разу він утримував її кілька секунд і різко відпустив. Утретє повторювати не довелося — «малюк» зрозумів. Перехилившись над пультом, він взявся зі скаженою запеклістю натискати клавішу «DLGHT». Він утримував кнопку кілька секунд, поки м’язами не прокочувалась масляна насолода, в результаті чого натиск м’якшав. Рука розслаблялась. Потому бот дві-три секунди оговтувався і знову тиснув «DLGHT». Чоловіків і Лауру, які згуртувалися довкола, він більше не помічав.
Під час одного з натискань Лаура поторсала бота за плече. Смикнула за носа. Ляснула по щоці. Нуль реакції. Для «малюка» більше не існувало нічого, окрім чарівної кнопки, що дарувала кайф.
— Гадаю, ми можемо його залишити, — сказала Лаура. — Він не встане з цього місця до самої смерті.
CV
Субота, 29 серпня, 04:16 (UTC -4)
«EN-2», другий інженерний корпус
— Я можу почати працювати над програмою прямо зараз, — мовив Тимур. — Все одно не засну.
— Скільки тобі потрібно часу? — спитала Лаура.
— Не знаю, думаю, небагато. Максимум — кілька годин.
— Ти впораєшся так швидко?
— Це проста процедура. Крім того, я встиг добре розібратися в командах мозкового компілятора.
— Тоді до роботи!
Тимур перелопатив достатньо уривків програмного коду, щоби зрозуміти принципи програмування ботів. Більшість функцій детально описані і проілюстровані прикладами в мануалі, складеному Кейтаро, Вадимом Хортом та іншими програмістами, що працювали на «NGF Lab». Українець без особливих зусиль вималював у голові алгоритм і за дві години до світанку приступив до реалізації.
Насамперед створювався екземпляр класу nfBrainAction. Тимур назвав його Operation. Наступним оголошувався примірник класу nfImpact. Він ініціювався функцією NewImpact (), що викликалася з Operation. На цьому етапі Тимур отримував доступ до мозку, виходив за межі мозкового процесора. Далі задавався тип операції (om_Stimulation — стимуляція, а не зчитування імпульсів) і частина головного мозку, в якій проходитиме стимуляція (LIMBUS — лімбічна система). У змінну Coordinates типу nfImpactCoordinates записувались координати майбутньої стимуляції — HYPOTHALAMUS — гіпоталамус. Куди посилати імпульси, визначила Лаура; саме в гіпоталамусі знаходиться центр задоволення. Параметри імпульсів налаштовувались у структурі Imparam (типу nfImpactParam). Туди передавалися значення інтенсивності (ii_Normal — середня) та інтервалу, через який запускатимуться імпульси (100 мілісекунд). Робоча частина програми складалася з конечного циклу. Шістсот разів викликалася функція Delight.Activate (). Враховуючи заданий інтервал, стимуляція мала тривати рівно 60 секунд.
У самому кінці психіатр порадила додати функцію Imparam.HormoneCheckupOn (). Власне, функцію вибирав Тимур. Лаура лиш пояснила фізичний принцип, який мав бути закладений у програму і без якого стимулятор найбільш імовірно не працюватиме. Річ у тім, що за чуттєве задоволення у людини відповідає допамін — гормон, який виробляється мозковою речовиною надниркових залоз, а також багатьма іншими органами. Цей гормон діє безпосередньо на центр задоволення. Більшість наркотиків збільшують потік допаміну в 5 — 10 разів, даючи можливість людям, що їх споживають, отримувати задоволення. Так, амфетамін напряму збільшує викид допаміну, впливаючи на механізм його транспортування. Кокаїн блокує механізми зворотного захоплення допаміну, збільшуючи його концентрацію в синаптичному просторі. Алкоголь нейтралізує дію антагоністів[110] допаміну. Якщо наркоман продовжує стимулювати центр задоволення, мозок адаптується до штучного підвищення рівня допаміну, гальмуючи виробництво гормону і зменшуючи кількість рецепторів, що на нього реагують. Подальший розвиток хімічної толерантності призводить до незворотних змін у нейронах. Задоволення притупляється, а згодом зникає зовсім. Знайдена Тимуром функція HormoneCheckupOn () дозволяла «виключати» перевірку будь-якого гормону, примушуючи мозок ігнорувати згубний вплив на організм. Таким чином Тимур та Лаура перестраховувалися від того, що мозок ботів може адаптуватися до великої концентрації допаміну (hc_Dopamine).
Остаточно функція стимуляції набула такого вигляду:
nfBrainAction
Operation (System.GetOperation (NEW_DI RECT_ACTION));
if (!Operation.m_lpDispatch) return;
nfImpact
Delight (Operation.NewImpact (BRAIN_GLOBAL_PENETRATION));
if (Delight.m_lpDispatch)
{
Delight.SetOperationMode (om_Stimulation, TRUE);
Delight.SubGlobalTarget (LIMBUS);
nfImpactCoordinates
Coordinates (Delight.GetPosition (HYPOTHALAMUS));
if (Coordinates.m_lpDispatch)
{
Delight.SetTargetCoordinates (Coordinates);
Delight.SetOperationType (ot_Pulse, ot_Point);
nfImpactParam
Imparam (Delight.GetImpactParamDefini tion ());
if (Imparam.m_lpDispatch)
{
Imparam.SetImpulseIntensity (ii_Normal);
Imparam.HormoneCheckupOn (hc_Dopamine, FALSE);
Imparam.SetInterval (100);
Imparam.Update ();
}
}
else return;
for (int i=0; i<=600; i++) Delight.Activate ();
Clear ();
}
О 7:45 суботнього ранку бота, який до цього часу безперервно бавився з кнопкою «DLGHT», відірвали від пульта. «Малюк» довго оговтувався. Його лихоманило.
Очунявши, бот повернувся до депресивного, напівкататонічного стану.
Тимур наклав на його голову спеціальні електроди і скомпілював написаний код на мозкові плати. Запис процедури пройшов успішно, про що свідчило повідомлення по центру інформаційної панелі: PROCEDURE IS CHECKED AND COMPILED SUCCESSFULLY.
Тимур телющився на екран, на якому зависло повідомлення. Секунди спливали, але з ботом нічого не відбувалося. Подеколи він відключався, поринаючи у важку дрімоту. Потім прокидався і починав тихенько квилити, тягнучись пальцями до пульта, на якому блискала кнопка «DLGHT».
— Ну давай… давай же… — шепотів Тимур. Від напруження на скронях хлопця виступили краплини поту. — Запускай, ну… Здогадайся!
Після припинення стимуляції у бота впав кров’яний тиск, почалася брадикардія. Ніхто не знав достеменно, чи він куняє, чи втрачає свідомість.
Минуло кілька хвилин. Тимур повторив компіляцію. Процедура наново записалась на мозкові плати. І знову успішно — процесор «сприйняв» код. Утім, бот не запускав модуль. Він або не розумів, або не хотів його активувати.
Алан та Ріно скоса зиркали на програміста.
— Я думаю, йому потрібен час, — розгублено пробубнів Тимур. Хоч він і підозрював, що проблема не в часі. Можливо, бот не може вибудувати логічний ланцюжок «стимуляція — кнопка DLGHT — заборона користуватися кнопкою — запис процедури». Він просто не вловлює суть процедури.
— Спробуй додати команду на самозапуск після компіляції, — запропонував Алан.
Тимур вставив перед тілом основної процедури системну функцію — SetAutoRun (). Вона автоматично запускала модуль на виконання відразу після компіляції. І спробував скомпілювати змінений код.
Результат вийшов очікуваним. Реалізований Хортом функціонал по обробці макросів заблокував компіляцію. На інформаційній панелі вискочив червоний знак оклику і напис: COMPILATION FAILED! ERROR 117: INVALID DESCRIPTOR.
— Воно не хоче компілюватись, — зціпивши зуби, проказав Тимур.
— Бачу, — спохмурнів Алан.
— Що означає ця помилка? — ткнула пальцем в екран Лаура.
— INVALID DESCRIPTOR — неправильний вказівник на функцію чи процедуру. Компілятор не може заштовхати в голову бота функцію SetAutoRun (). Відповідно, решта коду також лишається не скомпільованою.
— І що тепер? — докинув з-за їхніх спин Хедхантер.
— Тільки чекати, — сказав програміст. — Чекати, поки бот не запустить стимулятор сам. Вибору у нас нема.
Ріно Хедхантер піднявся і залишив лабораторію. Вийшовши