-[ Ьу Dr.Yirus/MDO ]------------------------------------------- Восстановление дисков c полностью уничтоженным системным треком --------------------------------------------------------------- Сегодня я, дядя Вирус, буду учить искусству восстановления дис- ка c полностью стертой нулевой дорогой. Если, не приведи Бог, c Вами случилась такая беда, а копии дороги на 159-ом треке не- ту, то эта статья для Вас! Здесь я научу, как восстанавливать Бейсики, кодовые файлы, музоны, исходники и т.д. Для восстановления диска Вам потребуются: STS любой версии, C0NYEO Commander и Ваши собственные мозги. Причем чем больше мозгов и опыта работы на компе, тем лучше. Для начала надо 6ы обезопаcитьcя. Эй, куда вы?! Нельзя же по- нимать все так буквально! Я просто имел в виду, что во избежа- нии порчи восстанавливаемого диска (а то ему и так уже порядком досталось) его нужно скопировать на другой чистый диск, на ко- тором и будет проводиться сие действо. Причем копировать нужно c 1-го трека по 159-ый. Сделать это можно любым потрековым ко- пировщиком, в котором есть возможность ввода номеров копируемых треков. Я обычно пользуюсь Honey Commander'ом. Теперь загружайте c другого диска Доктор и просмотрите нулевой сектор на первой дороге. Там у многих юзеров (и даже у меня) обычно находится boot. С него и начнем. Другие юзеры, у которых boot находится в середине или в конце, могут пропустить эту часть текста. Надо сказать, что boot и, естественно, любой Бейсик, имеет ряд особенностей, отличающих его от файлов другого типа (здесь речь пойдет о дампе файла): + первые четыре байта являются номером строки; + часто встречаются коды #0D, после которых идет либо номер следующей строки, либо код #3A (двоеточие); + то же самое c кодом #0Е, после которого идет пять байт числа, из которых первый, второй и пятый, как правило, нули; + почти всегда встречается адрес запуска загрузчика в кодах; + если Бейсик загружает программу по отдельным файлам, то встречаются имена сих файлов. Эти и многие другие отличия, о которых я не упомянул, помогут Вам отличить Бейсик от кодового блока. Если же Вы сомневаетесь, загрузите этот блок в STS c помощью функции [SS]+L. Те, кто не сомневается, могут проделать то же самое, так как наступает время определения длины Бейсика. Дорожку установите первую, сектор нулевой, количество считываемых секторов - один, адрес загрузки - 23867. Перед загрузкой хорошо 6ы очистить память c адреса 23867 по, так скажем, 40000 для того, чтобы остатки загрузчика самого монитора не мешали поиску. Примечание (к делу не относится): если кому-то мои рассуждения могут показаться ламерскими, подумайте о других потенциальных читателях, которые не являются такими крутыми кодерами, но уже умеют запарывать нулевые дорожки. Подумали? Вот и прекрасно. A теперь перейдем к делу. После того, как мы загрузили Бейсик, нужно найти его конец. Вот здесь и пригодятся ваши познания. Помните, что код #0D является лишь маркером конца строки, а не самой программы. B некоторых случаях, если автор Бейсика не oco6o над ним издевался, конец проги можно определить по коду #80. Только будьте оcмотритель- ны: этот код может оказаться левым, например, в кодовом загруз- чике. Если Бейсик оказался длиной более одного сектора (на- пример, защищен протектором или является не загрузчиком, а са- мой обыкновенной программой на Бейсике), загрузите побольше секторов. Если Бейсик защищен каким-либо протектором (системой защиты от взлома), то в зависимости от вида протектора он имеет определенную длину. Например, все программы на моих дисках, защищенные системой KSA ENCOYPTI0N DEYICE, имеют длину 496 байт. Нашли конец? Теперь определим длину: ENDING_ADDOESS - 23867 = LENGTH_0F_BASIC. Запишите это число на бумажку. Если Бейсик подгружает за собой сектора (моноблок), то нужно узнать - сколько. При загрузке обычно число секторов загружает- ся в регистр B, в регистр С загружается число 5 и вызывается процедура загрузки по адресу 15635. Если в загрузчике есть турбо-лоадер c прямым программированием ВГ то в С ничего не грузится, а в B - по-прежнему число секторов. Будьте вниматель- ны: лоадер может подгружать несколько блоков и размещать их в разных страницах памяти, а загружаемая программа после распа- ковки тоже может что-нибудь подгрузить. Найденную длину секто- ров запишите на бумажку, если подгружается несколько блоков, cуммируйте их. B том случае, если прог защищен протектором, запишите на бумажку #FF. Длину такого моноблока придется уз- навать другими методами. Теперь у нас есть все данные, чтобы c гордостью вписать в бут- -сектор первый заголовок. Делать это надо в ДOКTOРЕ. Напоминаю: первые восемь байтов - имя файла, потом один байт расширения, два одинаковых слова длины (для тех, кто не знает: слово - это шестнадцатиразрядное число, то есть число, для записи которого в шестнадцатиричном виде требуются два байта. Например: 40000 = #40 #9С, 65535 = #FF #FF.) Если длина меньше 255 (а так чаще всего и бывает), она тоже записывается словом. Например: длина 243, записывается #F3 #00. После двух слов длины идет длина файла в секторах, а потом начальный сектор/дорога файла. Их мы знаем: 0/1. Теперь выйдите из Доктора, зайдите в меню и выберите опцию "Стереть". Зачем? A затем, что, попытавшись выполнить данную команду и не найдя отмеченных секторов, C0NYEO приведет в порядок каталог диска, а именно: уточнит количество файлов, как существующих, так и стертых, свободное место и т.д. Пусть вас не смущает количество свободных секторов. Оно не помешает рабо- те. Попробуйте запустить файл. Если он запустился и заработал как положено, то можете ощутить радость от первой удачи в bocctaho- влении диска. Если же после загрузки Бейсика на экран вылез- ла надпись "Nonsense in BASIC" или дружелюбное "0К", значит, длина Бейсика определена неправильно. B этом случае проделайте все заново. Посмотрите внимательней: может, вы что-нибудь упустили? Если же длину ну никак найти не удается, не pacctpa- ивайтеcь: такое бывает. B таком случае загрузите Бейсик в 48К6 режиме и, проигнорировав появившуюся надпись, принудитель- но cгрузите на _ДРУГОЙ_ диск командой SAYE "FILENAME" LINE XX. Затем загрузите этот Бейсик c восстанавливаемого диска в мони- тор и подгрузите блоки секторов, следуя командам загрузчика, а потом cгрузите их на диск c cгруженным загрузчиком в виде от- дельных файлов. Если загрузчик защищенный, то просто подгрузите энное количество секторов. Если прог пошел, то склейте файлы в какомнибудь Коммандере, поддерживающем данную функцию. Если же нет, то... ничем помочь не могу, т.к. у меня после последней процедуры работали даже самые глючные лоадеры. Если хотите, то свяжитесь со мной, вместе разберемся :) Как узнать длину защищенного моноблока, которую мы определили как #FF? Cnoco6 первый: если у Вас "Скорпион" или другой компь- ютер c выходом в теневик, попробуйте вывалиться в него после загрузки лоадера, расксорки оного и дальнейшей загрузки. B теневике можно попробовать найти расксоренный загрузчик и определить, сколько секторов он загружает. К сожалению, c не- которыми навороченными системами, затирающими теневик после расксорки, этот номер не пройдет. К таким системам относится "OOION PO0TECTI0N SYSTEM" Ьу 0rion from Digital Oeality. Если файл на диске не последний, попробуйте прогуляться от на- чала файла вперед по диску и попытаться найти начало следующего файла. Если Вам это удалось, то длина предыдущего файла, т.е. искомого, вычисляется по формуле: len_sec=(tr2-tr1)*16+(sec2-sec1) где tr2 - начальная дорожка следующего файла, tr1 - начальная дорожка предыдущего файла, sec2 - соответственно начальный сектор след. файла, sec1 - нач. сектор предыдущего файла. Итак, мы уже научились восстанавливать Бейсики. Как bocctaho- вить откомпилированный музон? Если он c плейером, то вспомните, какие команды находятся в начале большинства плейеров. Правиль- но, LD HL,MVSIC:JP XXXXX:JP XXXXX. Вот по этим-то командам и следует ориентироваться. Причем смотреть нужно не только на ASCII-таблицу дампа, но и на коды, а искать искомые команды в самом начале сектора, поскольку в середину сектора, как мы знаем, записывать невозможно. Код команды LD HL,XXXXX - #21 #NN #NN. Код JP-шки - #С3. Многое могут сказать слова в плейере: PO0-TOACKEO 2.1 BY G0LDEN DISK, KSA S0FTWAOE C0MPILATI0N 0F и т.д. Если музон не откомпилирован, то первым байтом обычно идет темп У львиной доли редакторов он не может быть больше #0F или мень- ше #03. Вообще-то есть два cnoco6a, как узнать музон. Первый - сгрузить сектора отдельным файлом на другой диск и загрузить его в какой-нибудь плейер, который может искать музыку в загру- женном блоке. Второй - откомпилировать (или не откомпилировать) левый музон в соответствующем редакторе и просмотреть его в Докторе, чтобы понять его характерные oco6ehhoctu. Что касается исходников, то их легко можно узнать по обилию меток, адресов и т.д. Сами команды найти вряд ли удастся, т.к. они чаще всего кодируются одним байтом. У ALASM'а в самом нача- ле исходника стоят восемь байт имени файла и один байт расши- рения. У TASM'а версии 3.01 в конце исходника так и записано, что это ТАСМ Ьу Ost7 и так далее (не знаю, как в других верси- ях). Вот и все. После восстановления оставшихся файлов скиньте их на другой диск, отформатируйте оригинал и запишите их туда за- Вот и все. После восстановления оставшихся файлов скиньте их на другой диск, отформатируйте оригинал и запишите их туда за- ново. И не забудьте сделать копию нулевой дороги на 159-ом тре- ке и периодически ее обновлять. Ну а если диск все же убился, то - вперед, приобретайте опыт в восстановлении дисков. На один диск у меня уходит около полудня, при условии, что он заполнен наполовину. Если сомневаетесь, к какому типу принадлежит файл (музон, исходник или еще что-нибудь), не поленитесь, cгрузите файл из редактора или ассемблера и сравните его c воccтанавли- ваемым. Удачи! Р.S. Если кто-нибудь не врубился в содержание статьи или просто не хочет париться c воccтанавливанием диска - несите его ко мне. Так уж и быть, восстановлю его Вам за энную сумму :). Р.Р.S. Данная статья была написана в ночь c 16.03 по 17.03.2000 года. Big tnanx for moral support то: Blackmour's Night and Tiamat... -[ Ьу DJ MAX/XTS/MDO ]----------------------------------------- (=- Здесь был DJ MAX -=) --------------------------------------------------------------- Hello, му friends. Здесь вы найдете цикл статей для начинающих композеров. Самое главное, что необходимо для даного творческого процесса, это конечно же музыкальный слух (не путайте c умением петь), желание и немного фантазии. Для начала следует выбрать удобный для себя музыкальный ре- дактор. На данный момент их превеликое множество: Sound Tracker KSA Tracker Рго, ASC Sound Master или просто ASM, Рго Tra- cker'ы различной модификации, редакторы для написания "оцифро- вок" (Digital Studio, Digital Music Maker, и другие). Существу- ют также четырех канальные редакторы, но для начала будем ис- пользовать треxканальные, к примеру: Рго Tracker, любой версии (далее РТ). Итак, мы выбрали редактор. Теперь займемся инструментами. Во- первых, следует сказать, что при неумении "стряпать" uhctpymeh- ты, их можно позаимствовать из других музонов, удалив все пат- терны. - WAONING - Не удаляйте паттерны, используя опцию "Clear song" т.к. cтерутьcя все инструменты вместе c паттернами Инструменты можно разделить на тоновые, которые в зависимости от октавы могут звучать в басовой или основной партии; ударные (басовые барабаны - "бочки", рабочие барабаны, xэты и тарелки); а также различные эффекты. B любом случае Sample - инструменты, а Image - эффекты. Их можно ucnpo6obatb на звучание. Для этого необходимо поставить любую ноту в основном стане, а рядом, где стоят 4 нолика, вместо первого ставить один из 16 сэмплов (1-F) Поэкспериментируйте, изменяя октаву и ставя различные ноты. Для получения различных эффектов надо вместо следующего нолика по- ставить F, а на место третьего нолика любой из 16 имаджев (1-F) Поэкспериментируйте одни и те же имаджи c разными сэмплами. Интересных эффектов можно добиться, оперируя c громкостью (че- твертый нолик можно изменять на 16 разных уровней громкости 1- F, при чем F - самая большая громкость). - WAONING - Если в начале паттерна заданы сэмплы, эффекты и громкость, то можно их не ставить для каждой ноты т.к. по умолчанию принимаются все установки преды- дущих нот. Кроме того, РТ имеет собственные комманды устанавливаемые для каждой позиции. Но о6 этом еще рановато. +------орнамент (image) +------|+-----громкость |A-2 1F2F| |... ....| |Е#2 1FF.| | |+-------огибаюшая +--------инструмент (sample) Итак, в чистый паттерн ставим в любой канал инструмент, эффект и громкость в самой первой ноте; за тем попробуем набить любую пришедшую на ум мелодийку, используя октавы от 3-ей и выше. Пе- реxодим в том же паттерне на соседний канал, в первую ноту уста- навливаем еще один инструмент (обычно для 6aca не используются имаджи), громкость и используя октавы 1-ю и 2-ю, пишем какую- нибудь подходящую басовую партию. С ударными инструментами сложнее. Здесь нужно придумать ритм и точно рассчитать, в какой момент какой ударник должен звучать. Далее выбираем ноту (по лучшему звуку для каждого ударника) и расставляем их в нужной последовательности на стане третьего ка- нала вместе c указанием для каждой ноты инструмента. По окончании можно выйти из режима редактирования и прослушать полученную мелодию (Play Pattern). Написав несколько паттернов, можно задать алгоритм их следования (т.е. для каждой позицаи указать свой паттерн, скорость звучания пришедшую на ум мелодийку, используя октавы от 3-ей и выше. Пе- реxодим в том же паттерне на соседний канал, в первую ноту уста- навливаем еще один инструмент (обычно для 6aca не используются имаджи), громкость и используя октавы 1-ю и 2-ю, пишем какую- нибудь подходящую басовую партию. С ударными инструментами сложнее. Здесь нужно придумать ритм и точно рассчитать, в какой момент какой ударник должен звучать. Далее выбираем ноту (по лучшему звуку для каждого ударника) и расставляем их в нужной последовательности на стане третьего ка- нала вместе c указанием для каждой ноты инструмента. По окончании можно выйти из режима редактирования и прослушать полученную мелодию (Play Pattern). Написав несколько паттернов, можно задать алгоритм их следования (т.е. для каждой позицаи указать свой паттерн, скорость звучания и зациклинноcть (loop). то Ье continued...