- несколько мыслей по поводу развития BOOT'остроения и некоторых современных его тенденций." />

Oberon #03
14 марта 1997

Каким быть "boot" - несколько мыслей по поводу развития BOOT'остроения и некоторых современных его тенденций.

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  файлы  переименовывались в буквенно-
цифровую  комбинацию. 3атем файлы на диске
усиленно перемешивали и простому пользова-
телю было трудно понять,какой файл являет-
ся  той  или  иной  игрой, и какие кодовые
блоки  нужны ей для работы. Вывод же ката-
лога был запрещён путем занесения непечат-
ных символов в имя диска.                 
                                          
Как  видите, boot стал не просто средством
автоматизации,   а  единственным  способом
достижения  цели в борьбе за запуск файла.
К тому же пользователь не мог использовать
подобный boot в своих целях, переписав его
на другой диск, так как все имена запуска-
емых файлов изначально хранились в boot'e.
                                          
                                          
                                          
                                          
Но время шло и стали появляться первые об-
разцы  настоящих boot-программ. Их появле-
ние сдерживалось ещё и тем, что традицион-
ными  средствами  БЕЙCИКА  было невозможно
считать в память нулевую дорожку, содержа-
щую   файловую   информацию.   Освоив  азы
TR-DOS'а, первые  программисты  родили  на
свет  первые настоящие boot'ы! Большинство
из  них по-прежнему состояло из 80-90 про-
центов  BASIC'а и нескольких машинно-кодо-
вых  процедур  для  работы  с диском. Этот
этап развития характерен появлением одного
из основополагающих принципов - выбор фай-
ла  производится  курсором, для управления
которым  нужно  всего  5  клавиш  или один
джойстик.                                 
                                          
                                          
                                          
                                          
Cледующим ключевым ша- гом стало написание полностью ассемблерных boot-программ. Один из самых известных подоб- ных boot'ов был напи- сан в 1991-ом году. Автором его был скорее всего некто M.RUSALOV, и так как этот boot очень понравился нашим хаккерам, только са-
мые ленивые из них не создали собственную его переделку. Cтоит отметить, что при на- личии в каталоге более 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! Cитуация на рынке boot'остроения испытыва- ла некоторый застой, пока не появилось во- истину эпохальное творение - ZYX BOOT. Эта программа фактически положила начало современной концепции BOOT-DEMO. 3десь бы- ло всё, о чём только мог мечтать простой пользователь! Как и любую другую подобную программу, ZYX-BOOT постигло немыслимое количество взломов, переделок и мутаций. Припоминаю даже диск, на котором было записано по- рядка 60-ти разных видов и подвидов этого boot'а с разной музыкой и спрайтами.
Долгое время программирующий народ пребы- вал в бездействии, так как практически не было новых идей по ещё большей автоматиза- ции и упрощению запуска программ. И вот явилось новое чудо, CODEBUSTERS BOOT by RST#7. Впервые (для boot'остроения) применённая в этом шедевре программирования технология смены дисков просто вдохнула новую жизнь в саму идею! Cотни программистов выдрав про- цедуру опроса дисковода, бросились на штурм вершин автоматизации и дизайна. А когда ещё один гениальный человек из Харькова - 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! C дру- гой стороны, в последнее время подобные системные boot программы появляются всё реже и реже. И это вполне объяснимо! Cей- час новый boot пишется не столько ради не- обходимости, сколько ради того визуального эффекта, которым собирается вас поразить новоявленный RST#7. А если на всём экране будет каталог диска, то где же будет тот самый гиперкрутой эффект? Вот и плодят наши программисты огромную массу игровых boot'ов, а системных и не видать! Многие мои знакомые уже дошли до того, что на системных дисках держат вместо boot'а ка- кой либо коммандер. Но это же противоес- тественно! Итак, продолжим.Поскольку стандарт на сис- темные boot'ы придумать трудно за их неи- мением, рассмотрим игровые. Выбор файла в подобной программе обычно производится курсором из окошка, в котором происходит скроллинг. Размеры окна должны быть не меньше 6-8 символов в высоту, ина- че трудно охватить взглядом содержимое диска. Cкроллинг в окне должен управляться макси- мальным числом возможных комбинаций клавиш и джойстиков. Разумно поддержать следующие варианты: ┌----------------------┬-----------------┐ │вверх попиксельно │ Q,S,9,вверх │ ├----------------------┼-----------------┤ │вниз попиксельно │ A,X,8,вниз │ ├----------------------┼-----------------┤ │вверх на один файл │ O,6,влево │ ├----------------------┼-----------------┤ │вниз на один файл │ P,7,вправо │ ├----------------------┼-----------------┤ │выбор файла │ ENTER,SPACE,0,М │ └----------------------┴-----------------┘ Если у вас под рукой есть такие устройства как KEMPSTON MOUSE или AY-MOUSE, никто не запрещает (а даже рекомендует) их тоже поддерживать. Хочу предостеречь начинающих программистов от одной часто встречающейся ошибки. Если у вас клавиша "ПРОБЕЛ" опрашивается как выбор файла, то может произойти следующая ситуация: пользователь наводит на нужный ему файл курсор, нажимает на клавишу BREAK (CAPS SHIFT + SPACE) и происходит запуск программы. Но в ближайшие миллисекунды всё останавливается и вы вываливаетесь в BASIC. Почему это происходит и как с этим бороться, понять не трудно. Важно недопус- кать таких ошибок в своих творениях. Cмена дисков - это тоже важный элемент в современном boot'е. C одной стороны, сле- дует обрабатывать этот процесс автомати- чески, но с другой стороны, не на всех дисководах этот способ работает без проб- лем. На некоторых машинах, из-за непра- вильно собранного контроллера или не- исправности самого дисковода, автоматичес- кая перезачитка диска порождает дикое тре- щание, грозящее полным выходом системы из строя. Естественно,есть и такие программы, которые даже на таких дисководах функцио- нируют вполне нормально, хотя диски пере- читываются автоматически. Всё дело в том, насколько правильно реализован ассемблер- ный алгоритм. Возможо, в ближайших номерах журнала мы приведем текст правильно рабо- тающей процедуры опроса дисковода. Ну а пока, давайте попробуем решить проблему в корне - как определять смену диска, авто- матически или вручную ? Кардинально к решению этого вопроса подо- шёл самарский программист MAXSOFT. Его аб- солютно не устраивало автоматическое зачи- тывание дисков ни в какой форме, так как на эмуляторе SPECTRUM'а на IBM этот метод приводит к страшнейшим глюкам. Вот не- большой дизассемблер программы MAXBOOT 11: LD A,(#5D6E) : Проверка CP #31 : номера CALL Z,#CEDB : MODE LD A,(#5D6E) CP #32 CALL Z,#CED4 ...................... #CEC8 LD C,#13 CALL #3D13 LD A,(#5CDD) : Проверка на CP #49 : эмулятор RET NZ : UKV-DEBUGGER #CED4 POP HL : Отключение LD HL,#C9AF : автозачитки LD (START_OF_AUTOCHECK),HL RET #CEDB LD HL,#801 : Проверка на CALL #CEC8 : эмулятор CP #1C : Z80 JR Z,#CED4 : (LUNTER) LD HL,#3DAD CALL #CEC8 LD HL,#3EB5 CALL #CEC8 LD HL,#1FFD CALL #CEC8 RET Идея заключается в следующем. В BASIC заг- рузчике находится строка текста "MODE 1" где единица - это один из трёх режимов ра- боты: 1 - тест на эмулятор SPECTRUM'а и если да, то отключение автозачитывания. 2 - автозачитывание всегда выключено. 3 - автозачитывание всегда включено. Таким образом, если вас не устраивает, что ваш дисковод гудит от автозачитки, то вам достаточно с помощью дискового доктора по- менять одно число в BASIC'е и программа будет работать так как надо. Ручное перезачитывание удобнее всего пове- сить на клавишу SPACE (естественно если она не задействована у вас как ВЫБОР),а продублировать клавишей R. При создании автозачитывающей проце- дуры, нужно обратить внимание на сам алго- ритм работы. 3ачастую, неправильно напи- санный алгоритм приводит к ошибкам при ра- боте с защищёнными от записи дисками. К тому же, само зачитывание диска нужно на- чинать только тогда, когда пользователь уже вынул старый диск и начал вставлять новый ( см. MAXBOOT#11 ). На время считывания нового диска, прихо- дится полностью останавливать работу всех визуальных эффектов и проигрывание музыки. Радикально решил эту программу хаккер UNWINDER/CODERS ACADEMY. В его boot'е при- менён квази-мультизадачный драйвер чтения с диска (как в BATTLE COMMAND и INSULT). Поэтому, при смене диска экран гасится, но музыка продолжает играть, что создает не- повторимое ощущение живости происходящего. Вообще, если бы этот boot не требовал 128K памяти, то можно было бы признать его луч- щим на сегодняшний день как по сервису, так и по дизайну. Буквально после первого же boot'а,написан- ного на свете, люди поняли ненужность вы- вода в окно выбора файлов самого файла "boot". Мотивировалось это тем, что boot всегда записывается на диск первым и будет только мешаться при выборе файлов. От- дельные "горячие головы" призывали даже к полному игнорированию не только этого фай- ла, но и любого другого, начинающегося на маленькую букву. Действительно, это предложение было акту- ально во времена, когда существовали дис- ковые версии по "методу Родионова", то есть содержащие в себе не один, а два BASIC блока. 3апускаемым являлся лишь пер- вый, а при попытке запуска второго, в луч- шем случае пользователь отделывался лёгким испугом. Cегодня подобных дисковых версий практи- чески не осталось, зато появились новые форматы игр и журналов - 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'а и задача программиста как можно более облегчить пользователю ее за- мену. Cамым распространённым является спо- соб записывания музыки в отдельный файл сразу после самого boot'a. Музыка должна быть скомпилирована соответствующим ре- дактором, без проигрывателя. Таким образом сам проигрыватель должен быть стандартным и находиться внутри тела программы. Обычно один boot играет музыку, созданную лишь в одном из редакторов (ASM,ST,PT,STP). Под- держка сразу всех известных форматов музы- ки трудна ещё и тем, что хранить в памяти 3-4 проигрывателя довольно расточительно и опять начинается нехватка памяти для ре- ализации супер-гипер-видео эффектов. В качестве выхода из этой ситуации могу предложить следующее. После загрузки в па- мять boot'а содержащего все проигрыватели, подгружается сама мелодия и тестируется на принадлежность к тому или иному редактору. 3атем все остальные проигрыватели, не нуж- ные для работы, уничтожаются и на их место декомпрессируется сам boot. Так можно эко- номить память и поддерживать все существу- ющие музыкальные форматы. Хотя в принципе достаточно включить в boot два проигрыва- теля - от PRO TRACKER'а и SOUND TRACKER PRO. Cейчас мало пишут музыки в ASM'е, а любую мелодию из обычного SOUND TRACKER'а можно легко перевести в формат STP. Cтоит также помнить о том, что пользова- тель может случайно или специально запи- сать после boot'а вместо музыки нечто дру- гое. В этом случае, достаточно провести тест мелодии на принадлежность к редакто- ру и если есть предположение что это вовсе не музыка, то просто не воспроизводить её! Кстати, вопрос однозначного определения на принадлежность компилированной мелодии к тому или иному редактору, очень непростой! Конечно, можно разломать такую программу как VIRTUAL PLAYER(by DISMASTER) и выдрать все проверки, но нам хотелось бы, чтобы сами авторы муз.редакторов (в частности KSA) дали официальные способы однозначного определения принадлежности компилированной музыки к тому или иному редактору. Наш журнал с удовольствием опубликует подобную информацию. Вот и всё, что я хотел сегодня вам расска- зать о том, какие boot'ы были, есть и бу- дут. Естественно, моё мнение может быть необъективно. Поэтому прошу всех, кому ин- тересна данная тема - пишите письма с со- ветами, комментариями и предложениями. Мы всё обязательно опубликуем. -════════════════════════════════════════- * * * * *




Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Железо - схема подключения светоин-дикатора, отображающего экран 128К машин является в данный момент активным.
Нострадамус - Гонь от Мишеля Нострадамуса (часть 9).
Бук - папахи на башнях.

В этот день...   20 октября