Deja Vu #0A
30 сентября 2000

__________________________________________

(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:


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

Similar articles:
IzhNews - about a group of Brutal Creators: for the good of the group are only two people - NoViS and RTD.
Stsenohronizm - O stsenovyh facts, announcements: a new strategy game, Jackals, a new literary magazine hodozhesvenny "Fantadrom," continued the game about Homer Sipson, the completion of the Crime Santa Claus: Deja Vu, new toy from Slip'a - Super Bomberman 2, Thimble.
Gambling - Description of the game Operation, RR

В этот день...   1 May