Упомянутые группы/команды
M.M.A/SPEED CO.'97
Проблема запуска файлов с диска всегда интересовала как простых пользователей, так и программистов. Казалось бы, и проблемы-то никакой нет - нашёл файл и запустил командой RUN "GLUK". Так нет, даже этот казалось бы примитивный процесс, и то удалось автоматизировать!
Какой-то коварный программист в TECHNOLOGY RESEARCH реализовал в TR-DOS функцию, благодаря которой команда LOAD или RUN (а также POKE и PEEK) без операнда запускает бейсик-файл с именем "boot". По-видимому, этим действием он хотел загладить свою вину по сверхлевому кодированию самой дисковой системы. Так начали появляться на свет программы, позволяющие так или иначе облегчить выбор и запуск файлов из каталога.
Ниже я хочу изложить ряд своих (да и не только своих) мыслей по поводу развития BOOT'остроения и некоторых современных его тенденций. Особо рекомендуется для прочтения тем начинающим программистам, которые уже выросли из переделок чужих загрузчиков и хотят попробовать написать что-то своеобразное - boot'ообразное!
Для начала давайте посмотрим на то, что уже было сделано в этой области за тот период времени, что SPECTRUM существует на просторах нашего необъятного ZX-USSR. Но для начала, следует провести чёткую границу между boot-программой и файл-коммандером. Будем считать, что любая программа, позволяющая запускать на исполнение файлы с диска, будет именоваться boot'ом. Если же в этой программе есть намёк на копирование информации, то это уже commabder. Тема идеального файл-командера тоже очень интересна, но её обсуждение оставим на следующий номер журнала. А сейчас: "Назад - в будущее!".
Итак, история boot'остроения в России началась с появлением первых образцов BETA DISK INTERFACE. Ни одного западного boot'а я, да скорее и никто другой, не видел. Да и единственной фирменной программой, рассчитанной на TR-DOS, был DISK DOCTOR.
Как только отечественные программисты очнулись ото сна, на свет стали появляться первые поделки на тему boot'ов. Первые подобные программы были написаны по следующему принципу: составлялся сборник игр, названия программ зашивались в строку DATA в BASIC'е и затем, вводя номер программы или выбирая её дико дергающимся курсором (тоже естественно от BASIC'а), можно было наконец запустить полюбившийся файл. Этот способ был интересен еще и тем, что зачастую программы на подобных дисках были защищены следующим способом. Все BASIC и CODE файлы переименовывались в буквенноцифровую комбинацию. Затем файлы на диске усиленно перемешивали, и простому пользователю было трудно понять, какой файл является той или иной игрой, и какие кодовые блоки нужны ей для работы. Вывод же каталога был запрещён путём занесения непечатных символов в имя диска.
Как видите, boot стал не просто средством автоматизации, а единственным способом достижения цели в борьбе за запуск файла. К тому же пользователь не мог использовать подобный boot в своих целях, переписав его на другой диск, так как все имена запускаемых файлов изначально хранились в boot'e.
Но время шло, и стали появляться первые образцы настоящих boot-программ. Их появление сдерживалось ещё и тем, что традиционными средствами БЕЙСИКА было невозможно считать в память нулевую дорожку, содержащую файловую информацию. Освоив азы TR-DOS'а, первые программисты родили на свет первые настоящие boot'ы! Большинство из них по-прежнему состояло из 80-90 процентов BASIC'а и нескольких машинно-кодовых процедур для работы с диском. Этот этап развития характерен появлением одного из основополагающих принципов - выбор файла производится курсором, для управления которым нужно всего 5 клавиш или один джойстик.
Следующим ключевым шагом стало написание
полностью ассемблерных
boot-программ. Один из
самых известных подобных boot'ов был написан в 1991-ом году.
Автором его был скорее всего некто M.RUSALOV,
и так как этот boot
очень понравился нашим хаккерам, только самые ленивые из них не создали собственную его переделку. Стоит отметить, что при наличии в каталоге более 20 BASIC файлов, данная программа не работала и выдавала сообщение "No more 20 files". Это, казалось бы, чисто техническое ограничение вылилось затем в теорию игровых boot'ов (т.е. специальных boot'ов для дискет с играми).
Интересная идея была предложена в boot'е от
TOLLYSOFT'92,где выбор
файлов происходит
в окошке, очень
похожем (фактически копией) на окно меню в машинах с
128кб памяти. К тому же
этот boot занимал всего 5 секторов! Так началась еще одна эпопея в создании boot'ов - минимизация размеров программы.
В том же 1992-ом, Shi-Soft выпускает вполне удобный boot размером в два сектора. Фактически эта программа поставила рекорд, который превзойти было невозможно. И лишь в 1995/96-ом годах наши самарские хаккеры POLTERGEIST и MAXSOFT смогли реализовать сначала несколько примитивный, а затем вполне рабочий вариант односекторного boot'a!
Ситуация на рынке boot'остроения испытывала некоторый застой, пока не появилось воистину эпохальное творение - ZYX BOOT. Эта программа фактически положила начало современной концепции BOOT-DEMO. Здесь было всё, о чём только мог мечтать простой пользователь!
Как и любую другую подобную программу, ZYX-BOOT постигло немыслимое количество взломов, переделок и мутаций. Припоминаю даже диск, на котором было записано порядка 60-ти разных видов и подвидов этого boot'а с разной музыкой и спрайтами.
Долгое время программирующий народ пребывал в бездействии, так как практически не было новых идей по ещё большей автоматизации и упрощению запуска программ. И вот явилось новое чудо, CODEBUSTERS BOOT by RST#7.
Впервые (для boot'остроения) применённая в этом шедевре программирования технология смены дисков просто вдохнула новую жизнь в саму идею! Сотни программистов выдрав процедуру опроса дисковода, бросились на штурм вершин автоматизации и дизайна. А когда ещё один гениальный человек из Харькова - COBRA - догадался поддержать способ замены музыки, предложенный RST#7, у простого народа проснулся новый интерес. Теперь на диски стали записывать самые новые и модные boot'ы, да и музыка в них стала играть самая крутая и престижная.
Последним штрихом к этой истории стало появление boot-программ, требующих для работы 128K памяти! Кто первым "додумался" до этого, точно сказать трудно, но претендента два: ROM BOOT (BY ROM/S.B.U.H.G.) и BOOT by SILICON BRAINS. Обе эти программы были выпущены в 96-ом году и используют режим 128KB только для реализации более крутых визуальных эффектов.
Так каким же должен быть идеальный boot с точки зрения современного пользователя?
Для начала, стоит уяснить, что boot может быть игровым и системным. Для первого очень удобен принцип скроллирующего окна, а для второго просто необходимо как можнобольше файлов отобразить на экране одновременно. На системных дисках может находиться от 30 до 60 запускаемых файлов и лазить по ним в маленьком окне очень неудобно. Именно поэтому, на всех своих системных дисках я записываю ZYX-BOOT! С другой стороны, в последнее время подобные системные boot программы появляются всё реже и реже. И это вполне объяснимо! Сейчас новый boot пишется не столько ради необходимости, сколько ради того визуального эффекта, которым собирается вас поразить новоявленный RST#7. А если на всём экране будет каталог диска, то где же будет тот самый гиперкрутой эффект? Вот и плодят наши программисты огромную массу игровых boot'ов, а системных и не видать! Многие мои знакомые уже дошли до того, что на системных дисках держат вместо boot'а какой-либо коммандер. Но это же противоестественно!
Итак, продолжим. Поскольку стандарт на системные boot'ы придумать трудно за их неимением, рассмотрим игровые.
Выбор файла в подобной программе обычно производится курсором из окошка, в котором происходит скроллинг. Размеры окна должны быть не меньше 6-8 символов в высоту, иначе трудно охватить взглядом содержимое диска.
Скроллинг в окне должен управляться максимальным числом возможных комбинаций клавиш и джойстиков. Разумно поддержать следующие варианты:
┌----------------------┬-----------------┐
│вверх попиксельно │ Q,S,9,вверх │
├----------------------┼-----------------┤
│вниз попиксельно │ A,X,8,вниз │
├----------------------┼-----------------┤
│вверх на один файл │ O,6,влево │
├----------------------┼-----------------┤
│вниз на один файл │ P,7,вправо │
├----------------------┼-----------------┤
│выбор файла │ ENTER,SPACE,0,М │
└----------------------┴-----------------┘
Если у вас под рукой есть такие устройства как KEMPSTON MOUSE или AY-MOUSE, никто не запрещает (а даже рекомендует) их тоже поддерживать.
Хочу предостеречь начинающих программистов от одной часто встречающейся ошибки. Если у вас клавиша "ПРОБЕЛ" опрашивается каквыбор файла, то может произойти следующая ситуация: пользователь наводит на нужный ему файл курсор, нажимает на клавишу BREAK (CAPS SHIFT + SPACE) и происходит запуск программы. Но в ближайшие миллисекунды всё останавливается и вы вываливаетесь в BASIC. Почему это происходит и как с этим бороться, понять не трудно. Важно недопускать таких ошибок в своих творениях.
Смена дисков - это тоже важный элемент в современном boot'е. С одной стороны, следует обрабатывать этот процесс автоматически, но с другой стороны, не на всех дисководах этот способ работает без проблем. На некоторых машинах, из-за неправильно собранного контроллера или неисправности самого дисковода, автоматическая перезачитка диска порождает дикое трещание, грозящее полным выходом системы из строя. Естественно, есть и такие программы,которые даже на таких дисководах функционируют вполне нормально, хотя диски перечитываются автоматически. Всё дело в том, насколько правильно реализован ассемблерный алгоритм. Возможно, в ближайших номерах журнала мы приведем текст правильно работающей процедуры опроса дисковода. Ну а пока, давайте попробуем решить проблему в корне - как определять смену диска, автоматически или вручную?
Кардинально к решению этого вопроса подошёл самарский программист MAXSOFT. Его абсолютно не устраивало автоматическое зачитывание дисков ни в какой форме, так как на эмуляторе SPECTRUM'а на IBM этот метод приводит к страшнейшим глюкам. Вот небольшой дизассемблер программы MAXBOOT 11:
LD A,(#5DбE) : Проверка
CP #31 : номера
CALL Z,#CEDB : MODE
LD A,(#5DбE)
CP #32
CALL Z,#CEDЧ
......................
#CEC8 LD C,#13
CALL #3D13
LD A,(#SCDD) : Проверка на
CP #49 : эмулятор
RET NZ : UKV-DEBUGGER
#CEDЧ POP HL : Отключение
LD HL,#C9AF : автозачитки
LD (START_OF_AUTOCHECK),HL
RET
#CEDB LD HL,#801 : Проверка на
CALL #CEC8 : эмулятор
CP #1C : Z80
JR Z,#CEDЧ : (LUNTER)
LD HL,#ЗDAD
CALL #CEC8
LD HL,#ЗEB5
CALL #CEC8
LD HL,#1FFD
CALL #CEC8
RET
Идея заключается в следующем. В BASIC загрузчике находится строка текста "MODE 1", где единица - это один из трёх режимов работы:
1 - тест на эмулятор SPECTRUM'а и если да, то отключение автозачитывания.2 - автозачитывание всегда выключено. 3 - автозачитывание всегда включено. Таким образом, если вас не устраивает, что ваш дисковод гудит от автозачитки, то вам достаточно с помощью дискового доктора поменять одно число в BASIC'е и программа будет работать так как надо. Ручное перезачитывание удобнее всего повесить на клавишу SPACE (естественно если она не задействована у вас как ВЫБОР), а продублировать клавишей R. При создании автозачитывающей процедуры, нужно обратить внимание на сам алгоритм работы. Зачастую, неправильно написанный алгоритм приводит к ошибкам при работе с защищёнными от записи дисками. К тому же, само зачитывание диска нужно начинать только тогда, когда пользователь уже вынул старый диск и начал вставлять новый (см. MAXBOOT#11).
На время считывания нового диска, приходится полностью останавливать работу всех визуальных эффектов и проигрывание музыки. Радикально решил эту программу хаккер UNWINDER/CODERS ACADEMY. В его boot'е применён квази-мультизадачный драйвер чтения с диска (как в BATTLE COMMAND и INSULT). Поэтому, при смене диска экран гасится, но музыка продолжает играть, что создает неповторимое ощущение живости происходящего. Вообще, если бы этот boot не требовал 128K памяти, то можно было бы признать его лучшим на сегодняшний день как по сервису, так и по дизайну.
Буквально после первого же boot'а, написанного на свете, люди поняли ненужность вывода в окно выбора файлов самого файла "boot". Мотивировалось это тем, что boot всегда записывается на диск первым и будет только мешаться при выборе файлов. Отдельные "горячие головы" призывали даже к полному игнорированию не только этого файла, но и любого другого, начинающегося на маленькую букву. Действительно, это предложение было актуально во времена, когда существовали дисковые версии по "методу Родионова", то есть содержащие в себе не один, а два BASIC блока. Запускаемым являлся лишь первый, а при попытке запуска второго, в лучшем случае пользователь отделывался лёгким испугом.
Сегодня подобных дисковых версий практически не осталось, зато появились новые форматы игр и журналов - disk size. Такая игра или электронный журнал занимают целый диск и естественно имеют имя boot. Если подобный диск вставить в игнорирующий boot, то вы не сможете запустить игру или журнал, так как файл с именем "boot" на экране не отображается. Надеюсь, я убедил вас в нужности отображения самого файла "boot"? Ну а для тех, кому противно постоянно видеть перед глазами слово boot в первом пункте каталога, могу предложить следующий способ. После зачитывания диска в окне выбора печатается первым файлом boot, а уже затем названия всех остальных программ. При этом курсор сразу устанавливается на вторую программу. Таким образом даже если сразу после загрузки нажать клавишу ВЫБОР, то запустится не boot, а действительно первая на диске (после boot'a) программа.
Естественно, современный boot должен уметь переходить с одного дисковода на другой по нажатию на клавиши 1 (дисковод A), 2 (дисковод B), 3 (дисковод C) и 4 (дисковод D). Конечно, можно возразить - у большинства из простых пользователей нет даже второго дисковода, ну а третий или четвёртый вообще является излишеством. Но не стоит забывать про намечающуюся тенденцию перехода на диски и дисководы 3.5', и в этом случае конфигурация с двумя 5.25' и одним 3.5' дисководами может стать объективной реальностью. Да и возвращаясь к пресловутым эмуляторам, стоит заметить, что в последней версии UKV можно создавать на жёстком диске образы гибких дисков, а затем работать с ними, как с дисководами "C" и "D".
Естественно, может произойти такая ситуация, когда пользователь пытается выбрать дисковод "D", хотя имеет лишь дисковод "A". В таком случае, самый эффективный способ заключается в том, чтобы сделать 5-10 циклов попыток перехода на другой накопитель, и если они завершились неудачей, вернуться на исходный дисковод. Музыка является неотъемлемой частью современного boot'а и задача программиста как можно более облегчить пользователю её замену. Самым распространённым является способ записывания музыки в отдельный файл сразу после самого boot'a. Музыка должна быть скомпилирована соответствующим редактором, без проигрывателя. Таким образом сам проигрыватель должен быть стандартным и находиться внутри тела программы. Обычно один boot играет музыку, созданную лишь в одном из редакторов (ASM, ST, PT, STP). Поддержка сразу всех известных форматов музыки трудна ещё и тем, что хранить в памяти 3-4 проигрывателя довольно расточительно и опять начинается нехватка памяти для реализации супер-гипер-видео эффектов.
В качестве выхода из этой ситуации могу предложить следующее. После загрузки в память boot'а, содержащего все проигрыватели, подгружается сама мелодия и тестируется на принадлежность к тому или иному редактору. Затем все остальные проигрыватели, не нужные для работы, уничтожаются и на их место декомпрессируется сам boot. Так можно экономить память и поддерживать все существующие музыкальные форматы. Хотя в принципе достаточно включить в boot два проигрывателя - от PRO TRACKER'а и SOUND TRACKER PRO. Сейчас мало пишут музыки в ASM'е, а любую мелодию из обычного SOUND TRACKER'а можно легко перевести в формат STP.
Стоит также помнить о том, что пользователь может случайно или специально записать после boot'а вместо музыки нечто другое. В этом случае, достаточно провести тест мелодии на принадлежность к редактору и если есть предположение что это вовсе не музыка, то просто не воспроизводить её!
Кстати, вопрос однозначного определения на принадлежность компилированной мелодии к тому или иному редактору, очень непростой! Конечно, можно разломать такую программу как VIRTUAL PLAYER (by DISMASTER) и выдрать все проверки, но нам хотелось бы, чтобы сами авторы муз. редакторов (в частности KSA) дали официальные способы однозначного определения принадлежности компилированной музыки к тому или иному редактору. Наш журнал с удовольствием опубликует подобную информацию. Вот и всё, что я хотел сегодня вам рассказать о том, какие boot'ы были, есть и будут. Естественно, моё мнение может быть необъективно. Поэтому прошу всех, кому интересна данная тема - пишите письма с советами, комментариями и предложениями. Мы всё обязательно опубликуем.
-════════════════════════════════════════
* * * * *
- От авторов
Редакционная статья третьего номера Оберона рассказывает о широком распространении в России и ближнем зарубежье, преодолении производственных трудностей и стремлении удовлетворить интересы различных читателей, включая геймеров, программистов и хакеров.
- Как написать в Oberon - M.M.A
Руководство по отправке статей в Oberon с использованием ZX-WINWORD. Детальное объяснение форматов и процесса для текстов, графики и музыки. Взгляд на редакционные практики и предпочтения.
- Свиток - M.M.A
Исторический обзор игры THE EIDOLON на ZX Spectrum, охватывающий процесс ее восстановления и механики игры, включая уровневые задачи и предысторию.
- Свиток
Dark Star - космическая стрелялка, где игрок управляет кораблем против тиранической расы пришельцев. Игроки настраивают параметры, перемещаются по космосу и сражаются с врагами на различных уровнях сложности. Стратегическое планирование и навыки важны для успешной игры.
- Свиток - M.M.A
Подробная механика игры с Mechnotech klp2. Стратегия включает в себя обезвреживание реакторов и управление трансформациями дроидов. Информация о различных типах дроидов и доступном оружии.
- Обо всём - M.M.A
Обсуждение взаимодействий читателей с редакцией 'Оберона', включая отзывы о предыдущих выпусках и комментарии о совместимости игр и улучшениях содержания журнала.
- Обо всём - M.M.A
Автобиографическая статья раскрывает роль автора в самарской сцене ZX Spectrum, описывая его вклад и устремления. M.M.A позиционирует себя как лидера и инноватора в сообществе. Подчеркивается важность локального распространения и культурного влияния.
- Amiga rulez? - M.M.A
Критическая статья о современной компьютерной культуре, противопоставляющая платформы IBM и Amiga. Обсуждается влияние стандартизации IBM на общество и продвигается Amiga как символ креативности и индивидуальности. Отражает эволюцию использования компьютеров и предпочтений с эпохи ZX Spectrum.
- Каким быть 'boot' - Unbeliever
Статья исследует эволюцию загрузочных программ для ZX Spectrum, обсуждая ранние разработки и ключевые инновации со временем. Выделяются значительные прорывы в автоматизации и дизайне, включая полностью ассемблерные загрузчики и введение современных функций. Заключительная часть текста содержит размышления об идеальных характеристиках загрузочных программ с точки зрения современного пользователя.
- Письмо от Queen Software
Открытое письмо от Queen Software критикует дизайн ZX-WINWORD и русскую раскладку клавиатуры, осуждает 'Mortal Compot' и деградацию игр, делится мнением о демосцене и эмуляции компьютеров.
- Обзор - Unbeliever
Обзор предлагает инсайты о различных играх, эксклюзивных для 128K ZX Spectrum, выделяя такие названия, как 'Space Gun', 'World Championship Soccer' и 'Night Breed'. Особое внимание уделяется их графическим достоинствам и игровым механикам. Кроме того, в статье обсуждается приобретение программного обеспечения Spectrum через Интернет.
- Обзор ассемблеров - Maxsoft
Обзор различных ассемблеров для ZX Spectrum, с акцентом на их сильные и слабые стороны. Рассматриваются EDAS 3.3, AFS, XAS, ZX-ASM, ALASM, MASM и TASM 4.1. Каждый ассемблер оценивается по производительности, функциональности и удобству использования.
- Наш ответ - M.M.A
Критический анализ электронного журнала FAULTLESS, выявляющий проблемы плагиата и качества контента. Сравнение с OBERON и другими журналами. Предоставлены предложения по улучшению FAULTLESS.
- Наш ответ - Alex Noman
Дискуссия о совместимости и возможностях компьютеров Scorpion и Profi с ZX Spectrum. Критика заявлений Chung Software о языках и методах программирования. Обсуждение ОС, таких как CP/M и iS-DOS, в контексте их полезности в современном программировании.
- Наш ответ
Обсуждение различных толкований термина 'хакер' в русском языке, с акцентом на различия и заблуждения.
- Железо - Dr.Death
Инструкции по подключению AY-3-8910 на совместимых с Spectrum машинах. Решения для распространённых аудио проблем в российских компьютерах. Советы по улучшению совместимости цифрового звука.
- Железо - Dr.Death
Обсуждение модификации SCORPION ZS 256 для улучшения производительности, акцент на проблемы с таймингом и режим TURBO. Объяснение улучшений и потенциальных проблем с мультиколорами. Предложения по дальнейшим улучшениям.
- Железо - Poltergeist Corp.
Анализ проблем с аппаратной частью компьютера Profi, клона ZX Spectrum, с акцентом на проблемы сигнала INT, вызывающие мерцание графики. Предлагается решение, связанное с простой модификацией аппаратуры. Автор делится своим успехом и широким распространением решения в Самаре.
- Погурмим
Микродрама, иллюстрирующая хаотичное взаимодействие между компонентами компьютера при выполнении задачи печати.
- Погурмим
Сатирическая история, изображающая альтернативную реальность, где американская культура и символы юмористически искажены советским влиянием.
- Погурмим
История с юмором описывает усилия Попова помочь папуасам прогрессировать на фоне борьбы в пустыне, политических интриг и личных трудностей.
- Погурмим
Обзор армейского жаргона, известного как 'Армейские Маразмы', собранного студентами, с акцентом на уникальный язык и инструкции, используемые в военной подготовке и общении.
- Погурмим
Сатирическая статья, описывающая военный юмор и вымышленное военное оборудование.
- Ликбез - Paul Atrides
Анализ заблуждений о хакерах и общественных настроений, исследование корней хакерской культуры и этических дилемм.
- Ликбез - Paul Atrides
Статья рассматривает роль и деятельность российских хакеров в конце 1990-х годов, выделяя заметные случаи и классифицируя различные типы хакеров. Обсуждаются операции, риски и последствия взломов на международном и местном уровнях. Текст также анализирует общественное восприятие хакеров и их изображение в СМИ.
- Конкурс - M.M.A
Конкурс с угадыванием песен по плохим переводам текстов, вдохновленный радиосегментом. Участники угадывают песню и исполнителя. Приза пока нет, но обещан бесплатный номер журнала.
- Конкурс
Поэтическое размышление о личной борьбе, непонятости общения и бремени спасения мира.
- Конкурс
Поэтическое размышление об изоляции и внутренних мечтах, контрастирующее с суровой реальностью.
- Конкурс
Статья представляет собой поэтическое посвящение сообществу, подчеркивающее темы единства, бессмертия и силы через метал-музыку.
- Реклама
Реклама в журнале Oberon предлагает бесплатное размещение и обсуждает доступное программное обеспечение, оборудование и магазины, связанные с ZX Spectrum.
- Реклама
Реклама ремонта и модернизации компьютеров с ценами на различные услуги. Варианты включают подключение дисковода, нормализацию сигналов и увеличение памяти. Специальные услуги для моделей компьютеров, таких как Pentagon и ATM.