TSR
Когда я учился в техникуме, курсе на втором-третьем, зазнакомился с лаборантами-программистами и мне было позволено запускать в компьютерном классе свои программы, принесённые на дискетах. Простым смертным доступ к дисководам был закрыт.
Недавно я освоил новую концепцию в программировании под DOS: TSR (Terminate and Stay Resident) - после запуска программа завершается и отдаёт управление системе, но какая-то её часть продолжает работать в фоне незаметно для пользователя. Типичный пример такой программы: переключатель языка ввода на клавиатуре.
Наверное, начитавшись баек о BOFH (Bastard Operator From Hell), решил учинить что-то нехорошее. Написал программу, которая загружалась при старте компьютера и выбирала случайную клавишу на клавиатуре. Затем она завершалась, делая вид, что ничего не произошло, но на самом деле в памяти оставался небольшой кусочек кода, который отслеживал нажатия на кнопки. И когда нажималась та самая, случайно выбранная, компьютер отправлялся в перезагрузку.
Клавиша выбиралась совершенно случайно, поэтому вполне можно было целый день проработать за “заражённым” компьютером и ничего не заметить.
Но однажды в компьютерный класс привели первокурсников “знакомить с ЭВМ”. И одним из пунктов “знакомства” был запуск программы, прогоняющей системные тесты: проверялась память, монитор, клавиатура и т.п. Проверка клавиатуры заключалась в том, что на экране закрашивались кнопки на нарисованной клавиатуре, для чего эти кнопки следовало нажимать. И когда клавиатура была закрашена полностью - тест считался пройденным.
То есть в процессе тестирования нажимались абсолютно все клавиши на клавиатуре. Миновать перезагрузку не было никаких шансов.
Студенты добрались до тестирования клавиатуры и начали последовательно нажимать кнопки. В какой-то момент они сказали “Ой!” и начали показывать преподавателю на экран, где уже бежали строки загрузки системы. Преподаватель крайне расстроился и наорал на них, требуя рассказать, что они такого наделали, что компьютер перезагрузился. Студенты оправдывались, что ничего такого, только нажимали кнопки в тесте. “Нажали вот тут, и оно само!”. Запустили тест заново и проверили: нажимают - ничего не происходит. Ну, оно и понятно: клавиша-то каждый раз выбирается случайно. Злой преподаватель ушёл, а студенты продолжили “тестировать клавиатуру”, нажимая все кнопки по очереди.
Разумеется, дошли и до новой назначенной клавиши и опять ушли в перезагрузку. Но на этот раз призывать злобного преподавателя студенты боялись. Поэтому испуганно оглядывались и спрашивали у соседей: “А как запустить этот тест заново?” Нашлись толковые и подсказали, как найти и запустить эту программу с тестом в “Нортоне”.
На этот раз студенты дошли до фазы проверки клавиатуры, нажали пару клавиш и затаились. Делая вид, что они что-то там нажимают, они ждали окончания занятия. К счастью, вскоре пара закончилась и они ушли.
Лаборанты же, которые знали о моей программе и понимали всё происходящее, никому ничего не говорили, а глядя из-за двери на страдания новичков, тихонько хихикали в лаборантской.
На перемене, они, смеясь, рассказали мне о произошедшем. Я поулыбался вместе с ними, но гадкую программу из автозагрузки удалил.