- несколько мыслей по поводу развития 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'ы были, есть и бу- дут. Естественно, моё мнение может быть необъективно. Поэтому прошу всех, кому ин- тересна данная тема - пишите письма с со- ветами, комментариями и предложениями. Мы всё обязательно опубликуем. -════════════════════════════════════════- * * * * *



Другие статьи номера:

От авторов - Не станем рассказывать о тех трудностях, с которыми столкнулась редакция при создании третьего номера Оберона.

Как написать в Oberon - Написать статью в "ОБЕРОН" очень просто!

Свиток - описание 3D игры Eidolon в которой гармонично сочетаются жанры ACTION и ADVENTURE.

Свиток - описание космической стрелялки Dark Star.

Свиток - описание игры Qazatron/Magnetron получившей знак Sibclair User CLASSICS означающий, что данная программа является лучшей в своём жанре!

Обо всём - письма от читателей: Peace User, Илымов Владимир, Phantom Lord.

Обо всём - кто же такой M.M.A, и почему он называет себя Предводителем Всех Cамарских Хаккеров.

Amiga rulez? - если вы никогда не видели "живой" AMIGA, представьте себе компьютер размером не более обычной БК-шки, который подключается к любому телевизору и имеет возможности IBM!

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

Письмо от Queen Software - хочy рассказать о своих впeчатлeниях послe просмотра АМИЖНЫХ дeм... Зацeнив скрины с eнлайта, я блeвал! Tам что, на мeстe за пять минyт до начала рисовали?

Обзор - обзор игрушек: Space Gun, World Championchip Soccer, Night Breed, Satan 2, Obliterator, Stun Runner, Side Arms, Salamnder, Dark Fusion, Moontorc, Blood Valley, Magicians Land, Magic Fields, Mountain Bike Simulator, Starfox, Heavy Metall Mover.

Обзор ассемблеров - Edas 3.3, Assembler for Scorpion, XAS, ZX-ASM, Alasm 2.8, Master Assembler v.1.1, TASM 4.1.

Наш ответ - вся правда о жрунале Faultless и его создателях.

Наш ответ - Scropion VS Profi: какой спектрум круче?

Наш ответ - Хаккер - не хакер. Кто такие Хакеры?

Железо - О подключении AY-3-8910(8912) для проигрывания цифровой музыки.

Железо - Еще раз о "TURBO" в SCORPION ZS 256.

Железо - доработка INT'a Profi до Pentagon'воского.

Погурмим - микродрама в системной магистрали.

Погурмим - Тихо спит Америка.

Погурмим - плоды прогресса.

Погурмим - армейские маразмы (часть 1).

Погурмим - армейские маразмы (часть 2).

Ликбез - ликбез о Хакерах по материалам еженедельника "КомпьюТерра".

Ликбез - пираты на букву "Х". Какие бывают Хакеры.

Конкурс - Ваша задача, угадать название песни, а также исполнителя/группу.

Конкурс - фрагмент #1.

Конкурс - фрагмент #2.

Конкурс - фрагмент #3.

Реклама - просто двигатель тарговли.

Реклама - ремонт и модернизация Спектрум совместимых компьютеров.


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

Похожие статьи:
Философия - Предлоложение о самом главном: Крысиный рай.
Открытые письма Nemo №5.4
Предисловие - Газета вышла с опозданием...

В этот день...   18 июня