__________________________________________
(C) Колесников Сергей aka SKL-KEEPER
__________________________________________
Доработка GLOBAL COMMANDERа.
Прежде всего я хочу попросить прощения
у очень уважаемых мной авторов этого зна-
менитого командира.Они создали ве-
ликолепный коммандер с сумасшедшей
скоростью копирования и многими
другими наворотами, выгодно отли-
чающими его от других подобных
программ. В частности, они приме-
нили просто идеальную процедуру
автоопределения наличия диска в дисководе,
сравнимую разве что с BEST VIEW. В общем,
GLOBAL COMMANDER 1.31i работает, как часы!
И ни за что и никогда я не полез бы внутрь
этой программы, если бы не одно "но"...
На экране моего "Шилялиса" очень плохо
читается второе правое окно сверху, где
написано "marked files". Это и неудиви-
тельно, т.к. оно напечатано с атрибутами
#02, т.е. красным по черному без повышен-
ной яркости (хотя все остальные надписи в
окнах сделаны с bright #01). Второе: в са-
мом нижнем правом окне при входе в режим
копирования, уплотнения, форматирования и
т.д. очень неудачно подобрано соотношение
ink/paper - приходится даже уменьшать яр-
кость свечения экрана, чтобы прочесть, что
там написано:-( Представляю, как мучаются
те, у кого черно-белый монитор или цвет-
ной, но с "севшим" кинескопом!
А такие вещи, между прочим, сильно пор-
тят общее впечатление от программы, как бы
хороша она не была... Я, например, больше
предпочитал REAL COMMANDER, у которого
есть, конечно, свои достоинства, но и не-
достатки тоже есть, и немалые (на Скорпио-
нах в турбо-режиме плохо определяется на-
личие диска в трехдюймовом дисководе).
И вот решил я это дело исправить. У ме-
ня Скорпион с профПЗУ, поэтому было проще.
Не вдаваясь в подробности, для тех, у кого
компьютер с "теневиком" сообщаю, что ячей-
ки памяти, в которых хранятся данные по
атрибутам печати в окнах, следующие :
#70FD - атрибуты рамки;
#70FE - в фирменной версии там стоит
#45 (голубым по черному с bright #01)- это
атрибуты самого верхнего правого окна;
#70FF - там стоит #02 (красным по чер-
ному bright #01) - это атрибуты второго
окна сверху;
#7100 - там #43 (синий по черному
bright #01) - третье окно сверху;
#710B - стоит #27 (белым по зеленому с
обычной яркостью) - это атрибуты самого
нижнего окна, которое выводится при запро-
сах "delete file?" и т.п.
Попробуйте выйти в "теневик" и изменить
эти значения. Интерфейс коммандера можно
менять, как угодно! А интересно-то как!-)
Ну, это-то все хорошо, но ведь не бу-
дешь каждый раз лезть в теневик и менять
эти значения! А если нет теневика, тогда
что? Вывод напрашивается сам - надо менять
эти данные в самой программе! Как это сде-
лать? А вот это я и хочу Вам рассказать...
Возьмите чистый диск и запишите туда
GLOBAL COMMANDER 1.31i. Переименуйте его в
"boot" (так удобнее будет работать с ним
дальше, меньше лишних телодвижений). Те-
перь запустите его. GLOBAL загрузится и Вы
с его помощью разрезаете файл "boot" (кла-
вишей "U") на две части с одним названием:
"boot.B". Второй получившийся файл переи-
менуйте с помощью то же GC в "boot.C".
У нас получилось два файла с длиной в 1
сектор и в 55 секторов. Бейсиковая часть -
это загрузчик, нас он не интересует, а вот
второй файл, кодовый, представляет из себя
наполовину запакованный кодовый блок, а
наполовину - незапакованные оверлеи. Нам
нужна именно запакованная половинка. Упа-
кована она с помощью codepacker'а HRUST
1.0, в память грузится с адреса 42278, а
распаковывается в адрес 24192 и занимает
после этого объем 9330 байт.
В любом ассемблере наберите программу:
ORG 24950 ;Здесь мы ее расположим.
LD HL, 45000 ;Здесь будет файл, кото-
;рый надо распаковать.
LD DE, 25000 ;Это - адрес, куда будем
;распаковывать.
JP 23296 ;Здесь будет находиться
;распаковщик.
Отассемблируйте ее и получившийся кодо-
вый блок длиной 9 байт запишите на Ваш
диск под именем, например, "depack.C".
Найдите в своей коллекции HRUST 1.0,
загрузите его и запишите на диск депакер с
именем "DEHRUST.C" и адресом 23296.
Наберите программу на бейсике:
10 CLEAR 24949: RANDOMIZE USR 15619:REM
:LOAD "depack" CODE
20 RANDOMIZE USR 15619: REM: LOAD
"DEHRUST" CODE
30 RANDOMIZE USR 15619: REM: LOAD
"boot" CODE 45000
40 RANDOMIZE USR 24950
50 RANDOMIZE USR 15619: REM: SAVE
"prog" CODE 25000,9330
Запустите эту программу (если кто не
знает как, напоминаю: нажмите клавишу "R",
потом ENTER;-) ). После ее выполнения Вы
будете иметь распакованный кодовый блок с
адреса 25000 длиной 9330 байт, который бу-
дет записан на дискету под именем "prog".
Именно в таком виде он и находится в прог-
рамме.
...(Уже после написания этой статьи у
меня появился BEST VIEW 2.9 - удивительно
полезная и нужная программа! Спасибо Ивану
Рощину за бесценный подарок! С ее помощью
можно записать на диск распакованный файл
без всех вышеописанных выкрутасов, простым
нажатием двух клавиш - "SS + ENTER". Не
забудьте только перед этой операцией на-
вести курсор на запакованный файл;-) ...
Наступила пора внести свои изменения.
Загрузите CONVER COMMANDER версии 4.50 и
выше. Войдите в дисковый доктор, затем не-
посредственно на файл "prog". Почему имен-
но этот командир? Да у него самый лучший
дисковый доктор из всех коммандеров, и,
главное, есть функция нахождения последо-
вательности кодов на дискете.
Нажмите "EXTEND MODE", он запросит ко-
манду. Нажмите "F" (FIND) и введите после-
довательность, которую Вам надо найти. Она
написана в начале статьи, а именно :
#45 #02 #43 #45 #01
Я в своем варианте сделал верхнее пра-
вое окно с атрибутом #44, т.е. зеленое по
черному bright #01, второе окно сверху с
атрибутом #42 (красное по черному bright
#01), и атрибут служебного окна с запроса-
ми на копирование и т.п. - #42 (на 9 байт
дальше последней исправленной цифры).
Внеся эти изменения, запишите дорожку,
или просто выйдите из доктора, а программа
сама спросит, записать ли изменения. От-
ветьте утвердительно, и на дискете Вы бу-
дете иметь именно то, что Вам нужно!
Теперь опять загрузите HRUST 1.0 и с
его помощью запакуйте файл "prog" БЕЗ ДЕ-
ПАКЕРА. Имя роли не играет, ну, например,
"pack".
Перенесите бейсик-файл "boot" в конец
диска. Напоминаю, что его длина 1 сектор.
Наберите программу на BASIC'е :
10 CLEAR 24999 : RANDOMIZE USR 15619 :
REM : LOAD "boot" CODE 25000
20 RANDOMIZE USR 15619 : REM : LOAD
"prog" CODE 25000
30 RANDOMIZE USR 15619 : REM : SAVE
"GLOBAL" CODE 25000, 14080
Как Вы поняли, мы просто записали изме-
ненную часть на свое прежнее место.
После выполнения этой программы у нас
получились два файла друг за другом - "bo-
ot.B" и "GLOBAL.C". Первый длиной 1 сек-
тор, второй - 55 секторов. Попробуйте за-
пустить файл "boot" и Вы убедитесь, что
коммандер работает уже с нужными Вам
атрибутами.
Последняя операция - склеивание двух
этих файлов для получения исходного вида.
В том же коммандере отметьте два вышеупо-
мянутых файла и нажмите "Z". Вот теперь
вся работа завершена! Согласитесь, что те-
перь с этим командиром гораздо приятнее
работать:-)
И последнее, что я хотел Вам сообщить.
Это будет интересно владельцам Скорпионов
с профПЗУ.
Общеизвестно, что Вы можете прямо из
теневого монитора записать или загрузить
любой кодовый блок из памяти без ущерба
для ее содержимого. Вот теперь я с Вами не
соглашусь! Во время копания в GLOBAL COM-
MANDER'е я совершенно случайно обнаружил,
что все-таки что-то там портится...-( Вот
попробуйте загрузить GLOBAL и записать ко-
довый блок с адреса 24192 длиной 9330
(тот, что мы с Вами распаковывали и потом
запаковывали). Теперь сразу же загрузите
его обратно. Вернитесь в программу и поп-
робуйте поработать. Пошли глюки? А я Вам
что говорил? Может, найдется сведущий че-
ловек и напишет на адрес редакции, почему
так происходит?
В заключение несколько слов "без прото-
кола";-)
Ребята! Раз вы читаете эти строки, зна-
чит вы такие же фанатики Спектрума, как и
я. Не будьте пассивными! Пусть эта фраза
уже избита, но это правда: судьба нашего
SPECCY в наших же руках. Поддерживайте
платформу Спектрума хоть чем-нибудь! Не
может быть, чтобы у вас нечем было поде-
литься с друзьями по увлечению! Напишите
хоть несколько строк в журнал! А если уж
вы так пассивны, то хотя бы материально
поддерживайте производителей ПО, не поль-
зуйтесь услугами "пиратов", которым судьба
Спектрума "до лампочки"!
Добра вам всем и удачи во всех ваших
делах!
------------------------------------------
Other articles: