ZX-Ревю 1991 №7-8 1990 г.

Forum - рассмотрим несколько писем из тех, которые представляют на наш взгляд массовый интерес.


Темы статьи: Письма  

FORUM

Как всегда принося глубочайшие извинения за то, что мы сейчас совершенно не в состоянии охватить и двадцатую часть поступавшей корреспонденции, мы рассмотрим лишь несколько писем из тех, которые представляют на наш взгляд массовый интерес.

Автостарт программ в машинных кодах.

Никольский А.Л. из города Клина спрашивает о том, как сделать программу в машинных кодах автостартующей без Бейсик-заголовка.

Задача довольно полезная. Это во-первых подход к защите, поскольку программу, записанную в машинном коде трудно прервать, а во-вторых такая задача встает например перед теми, кто занимается переделкой программ под игровые автоматы.

Ситуация, когда программа накладывается на область стека в данном случае неинтересна, поскольку читатель знает, что в этом случае в те ячейки стековой области, которые определяют куда выполняется переход при обработке ошибок, может быть записан нужный ему адрес.

В этом случае может быть реализован например такой подход, связанный с присоединением БЕЙСИК-области к машинному коду.

Предположим, что Вам надо автостартовать программу, записанную в машинном коде, начинающуюся с адреса 26500, занимающую 1500 байтов и стартующую с 29000.

Загрузите программу в компьютер и наберите следующие строки на БЕЙСИКе: 10 SAVE "myprog" CODE 23552,6448 20 RANDOMIZE USR 29000.

Эта программа делает следующее. При исполнении строки 10 системные переменные настраиваются так, что в качестве следующей исполняемой строки в них запоминается строка номер 20.

Строка 10 выгружает на ленту в виде единого блока кодов и системные переменные и область Бейсика и Ваш машинный код.

Если теперь Вы загрузите этот блок машинного кода командой LOAD "" CODE, то по системным переменным пройдет переход к строке 20, а она стартует Вашу программу. Вы даже и не заметите, что работал Бейсик.

Конечно это только идея и дальше Вы можете ее развивать как угодно, организуя в стартовавшем машинном коде старт других блоков, перемещение кода и т.п. Кстати, заметим, что при работе таким методом перекрытие кодом области стека является наоборот критическим, т.к. после загрузки не стартует нормальный Бейсик, а происходит сброс, вот и приходится делать загрузку в одно место, а потом, когда программа стартовала, перемещать ее через LDIR или LDDR в ту область, где ей на самом деле предстоит работать.

Декодер радиопередачи.

К нам обратился читатель из г.Белозерска Брестской области Давиденко А.В. с сообщением, что он принимает по УКВ трансляцию программного обеспечения из Польши. По всей видимости эта информация может быть полезна многим нашим читателям, проживающим в западных областях. Трудность состоит в том, что программы закодированы. Для их декодирования служит "Радиодекодер ПЛЮС", а взять его негде.

Ниже мы приводим программу из журнала "BAJTEK" N5, 1989г. "Decoder Transmisji RadioweJ Plus" (Сокращенно DTR+).

Мы не очень сильны в польском языке и приводим статью в кратком изложении.

1. Надо набрать Бейсик-загрузчик (строки 100 - 120) листинга номер 1.

2. Выгрузить загрузчик на ленту командой SAVE "DTR+" LINE 1

3. Набрать листинг номер 2 и, запустив его, выгрузить на ленту блок машинных кодов.

4. Выгруженные загрузчик и блок маш. кодов представляют собой готовую программу, которая стартует после загрузки автоматически. Она предложит Вам небольшое меню.

LOAD - считывание с ленты закодированной программы (она должна быть записана на магнитофон из эфира).

SAVE - выгрузка на ленту программы в раскодированном виде. RESET - выход.

Приводится адрес для справок: Rozglosnia Harcerska 00-950 Warzsawa ul. M.Konopnickiej 6 с пометкой "RADIOKOMPUTER".

Сообщается также, что передачи студии "Радиокомпьютер" ведутся на УКВ и на средних волнах по четвергам 16.00-16.20 и по вторникам 22.50 - 24.00. Трансляция программных блоков 23.25 - 24.00. (По всей видимости время варшавское).

Листинг-1.

100 CLEAR 64000: LOAD "DTR+"CODE

110 CLS: PRINT ,," DECODER TRANSMISJI RADIOWEJ",," L-LOAD",,,"S-SAVE",," BREAK-STOP",,"

R-RESET" 120 RANDOMIZE USR 64940

Листинг-2.

150 CLEAR 64000: LET S=0: FOR a=64940 TO 65534: READ b: POKE a,b: LET s=s+b: NEXT a 160 IF s=69549 THEN SAVE "DTR+" CODE 64940,595: STOP 170 PRINT "Ошибка ввода данных": STOP

200 DATA 1,16,13,205,10,32,17,196,253,205,55,254,62,16,50,71,80,62,8,50,39,87,24,48,62 210 DATA 83,90,79,75,60,13,13,32,32,32,32,32,32,32,83,119,105,101,98,111,100,122,105,110,32 220 DATA 32,49,57,56,56,114,174,194,9,204,9,219,9,237,9,0,0,0,0,0,0,0,253,54,56 230 DATA 0,253,203,48,222,49,229,253,62,56,50,130,88,50,98,88,205,91,254,245,205,65,254, 241,254

240 DATA 82,202,0,0,254,76,40,76,254,83,204,156,255,24,221,1,21,0,205,10,32,24,13,203,39 250 DATA 60,33,228,253,35,61,32,252,94,35,86,62,32,215,26,19,203,127,40,249,203,191,215, 201,1

260 DATA 21,0,17,32,0,24,6,1,8,0,17,159,1,205,10,32,62,32,215,27,122,179,32,248,201 270 DATA 33,8,92,54,0,126,254,0,40,251,201,205,73,254,253,54,56,0,62,248,?50,98,88,243,17 280 DATA 5,0,33,239,253,14,101,205,231,254,33,69,95,237,91,241,253,25,218,144,255,33,248, 92,14

290 DATA 86,205,231,254,1,8,0,205,10,32,253,54,57,13,33,248,92,34,237,253,229,237,91,239,253 300 DATA 167,237,82,40,49,253,53,57,202,144,255,225,229,126,254,4,210,144,255,205,39,254, 225,6,10

310 DATA 35,126,254,32,56,4,254,128,56,2,62,32,215,16,241,62,13,215,35,94,35,66,1,5,0 320 DATA 9,25,24,194,253,53,56,251,62,7,211,254,195,252,253,217,49,227,253,22,11,46,50,62,25 330 DATA 38,1,205,76,253,48,243,45,32,244,62,22,22,13,205,93,255,217,185,317,32,228,22,14,62 340 DATA 19,24,2,62,17,205,93,255,217,119,169,79,35,27,122,179,217,32,240,217,175,185,32, 110,201

350 DATA 71,16,254,203,18,63,203,26,63,8,203,122,32,1,122,211,254,62,127,219,254,31,48,94,1 360 DATA 64,37,219,254,161,167,32,4,16,246,34,67,95,201,36,3,205,35,255,62,28,37,32,248,96 370 DATA 205,35,255,120,132,254,44,201,205,74,255,48,41,62,25,205,84,255,56,249,63,25,205, 84,255

380 DATA 111,62,26,205,84,255,189,38,3,48,1,37,62,24,46,128,205,76,255,203,29,62,25,38,3 390 DATA 48,245,125,201,203,66,194,232,254,205,73,254,17,37,21,205,31,254,195,223,254,253, 203,56,126

400 DATA 203,252,253,237,115,61,92,62,248,50,130,88,17,162,9,205,31,254,205,91,254,205,65, 254,33

410 DATA 248,92,34,237,253,237,91,239,253,167,237,82,202,252,253,221,42,237,253,205,246,255, 17,17,0

420 DATA 62,0,205,194,4,231,42,237,253,205,246,255,221,94,11,221,86,12,213,1,17,0,231,9,221 430 DATA 229,62,255,205,194,4,225,209,25,24,197,17,255,255,122,179,200,27,24,250

К вопросу о совместимости.

Обсуждая в наших выпусках вопросы совместимости различных моделей отечественных аналогов "Спектрума", мы несколько раз касались и компьютера "Дубна".

Мы получили исчерпывающую информацию от главного инженера завода "ТЕНЗОР", выпускающего этот широко известный компьютер.

Некоторая несовместимость вызвана тем, что компьютер был разработан в 1987-88 г.г., а в то время микросхемы ОЗУ с достаточным быстродействием представляли значительный дефицит. В связи с этим разработчики были вынуждены применить микропроцессор с тактовой частотой ниже, чем у фирменного прототипа и, как следствие, им пришлось "перетрясти" процедуры ПЗУ, обслуживающие ввод/вывод с магнитофона, чтобы обеспечить совместимость программного обеспечения при загрузке с ленты.

В результате не загружаются программы, имеющие нестандартные загрузчики. По этой же причине не работают некоторые копировщики, такие как TF-COPY и COPY-86M.

Завод рекомендует использовать могучую копирующую программу COPY-COPY, а для тех, кто умеет читать машинный код сосредоточить усилия на замену спецзагрузчиков в программах на стандартный.

Понимая в то же время, что эта особенность компьютера создает определенные неудобства, завод подготовил к выпуску новую модель "Дубна-М". В нем будет стандартная частота, а также встроенные интерфейсы - дисковода и принтера (последовательный и параллельный). Разработчики надеются, что эта модель удовлетворит самые взыскательные вкусы.

"ИНФОРКОМ" не может не согласиться с рекомендацией шире использовать копировщик COPY-COPY (второе название - PIRATE 02). Дело в том, что эта программа предоставляет пользователю такой спектр дополнительных возможностей, которые нельзя не использовать. В своей разработке "Большие возможности Вашего Спектрума" мы два года назад дали инструкцию по работе с этой программой. Учитывая, что эта наша разработка многократно копировалась и переиздавалась разными организациями, она должна быть широко распространена, но на тот случай, что кто-то из наших читателей ее не имеет, мы приведем эту инструкцию чуть ниже.

Мы также должны сказать, что судя по письмам наших читателей программ, не загружающихся в "Дубну" не так много - около двух десятков. Правда надо признать, что есть психологический эффект, согласно которому неискушенный пользователь всегда уверен, что самые лучшие программы - это именно те, которые у него не идут и поэтому мы просим тех, кто снял спецзагрузчики и адаптировал программы под "Дубну" дать рекомендации о том как конкретно это сделать. Остальным же будет очень полезно покопаться в этих загрузчиках, освоив на этой интересной задаче программирование в машинных кодах, благо исходной информацией мы обеспечиваем (см. раздел "Секреты ПЗУ" в ZX-РЕВЮ и наш трехтомник для начинающих осваивать программирование в машинных кодах).

Дополнительно сообщим, что в 92-ом году в ZX-РЕВЮ мы напечатаем несколько книг, имеющих большую ценность для тех, кто собирается осваивать машинный код или уже освоил, но хочет эффективно применять.

COPY-COPY

Все команды являются ключевыми словами "Спектрума" и потому не набираются по буквам. Они требуют завершения нажатием клавиши ENTER.

LOAD - выполнить загрузку очередной записи (очередного блока).

LOAD n то m - выполнить загрузку записей, начиная с номера n до номера m. При этом ранее существовавшие записи с номером n и выше будут уничтожены, т.е. эту команду применяют и для очистки памяти от ненужных записей. Так, LOAD 1 уничтожит все ранее существовавшие записи и подготовит компьютер к загрузке новых.

Возможные вариации этой команды:

LOAD n TO

LOAD TO m

SAVE - выполнение выгрузки записи (записей) на ленту. Может иметь форму:

SAVE n то m

SAVE n TO

SAVE TO m

SAVE n TO m STEP к

Параметр k после оператора STEP задает величину паузы между блоками при

выгрузке (в секундах).

VERIFY - проверка выгруженных записей. Имеет все те же формы, что и LOAD.

Программа позволяет загружать блоки в заданные адреса. Это часто применяется для последующего просмотра машинного кода и внесения в него изменений. На этом нередко основывается внесение изменений в игровые программы.

LOAD AT addr - загрузка блока, начиная с заданного адреса addr. Так, например, LOAD AT 16364 -загрузка в экранную память.

LIST addr - выдача на экран содержимого памяти, начиная с заданного адреса (просмотр машинного кода).

POKE addr, n - поместить в заданный адрес байт n.

И, наконец, самая мощная команда - COPY.

COPY 16384 позволяет копировать блоки длиной до 49K. Есть программы, имеющие цельный блок длиной порядка 49к и не поддающиеся компрессии. Таковы, например FIRELORD или, скажем URIDIUM фирмы Hewson Consultants. в режиме COPY 16384 программа удаляет саму себя из памяти и оставляет лишь несколько байтов, служащих для выгрузки загруженного блока. Выгрузка выполняется нажатием CAPS SHIFT. Возможна только однократная выгрузка и после нее копировщик следует перезагрузить.

В нашей почте сегодня есть несколько рекомендаций для повышения совместимости компьютеров "Ленинград-1".

Сизой В.М. и Лавринов В.В. из г. Днепродзержинска сообщают нам, что на этой модели компьютера при работе с рядом программ может мигать бордюр, при этом раздается треск в динамике. Это, например, программа "IKARI WARRIORS" и другие. Это обусловлено тем, что все выходные порты от 0 до 255 воспринимаются микросхемой DD39 как порт 254 и в тех программах, где есть обращение к другим портам, возникают помехи.

В свою очередь входные порты воспринимаются:

нечетные - как порт 31 (джойстик)

четные - как порт 254 (магнитофон, клавиатура).

Предлагаемая ими схемная доработка (рис. 1) позволяет сделать так, что все четные выходные порты, начиная со 128-го, воспринимаются как порт 254, а входные порты, имеющие в обоих адресах A0 и A5 единицы, воспринимаются как несуществующие. Для работы программы "ARKANOID" в схему введен синхросигнал с 8DD8. Благодаря этому программа работает и с клавиатурой и с джойстиком._

1DD40

2DD41

Рис.1

(О проблемах программы ARKANOID мы уже писали в ZX-РЕВЮ - "ИНФОРКОМ").

Полезными советами делится с владельцами компьютера "Ленинград-1" и другой наш читатель из Львовской области Кондачков С.Н.

1. Он пишет, что подключить этот компьютер к цветным телевизорам с модулем МЦ-2, МЦ-3 весьма трудно. Это связано с тем, что гасящие строчные импульсы данного компьютера очень коротки по длительности. Парировать этот недостаток можно добавив следующий узел (Рис. 2):

D43 К155ЛАЗ

D11 к. 12

Рис.2

2. При подключении джойстика с нормально разомкнутыми контактами не загружаются некоторые программы (ANDROID, HOT SHOT и другие). Причина опять же в очень упрощенной дешифрации входного порта джойстика. Кроме того, в некоторых программах джойстик не работает (WEST BANK, SPLAT).

Компьютер можно доработать согласно следующей схеме (Рис. 3):_

D 43.4

Рис.3

Недостатки устраняются полностью.

3. В некоторых играх при нажатии на кнопку "Огонь" в такт с выстрелом очень неприятно мерцает бордюр. И это связано с грубой дешифрацией порта. Предлагаемая доработка заключается в подключении двух диодов и одного резистора (Рис. 4):

Рис.4

"ИНФОРКОМ" благодарит от своего имени и от имени многочисленных читателей всех друзей, приславших свои материалы в раздел "форум" и мы очень надеемся, что они будут полезны людям, разбросанным по просторам нашей страны и сражающимся со своим компьютером один на один.

Организация клубов.

Мы искренне были бы рады сделать все от нас зависящее, чтобы упростить сложный путь в компьютеризацию, сплотить любителей этого замечательного компьютера, и давно ждали писем от каких читателей об организации клубов любителей "Спектрума".

Наконец-то такие письма пришли.

1. Организуется клуб в городе Львове. Имеется договоренность с одним из Домов культуры. В группе организаторов есть конструкторы, разрабатывавшие "Львовский" вариант. Заинтересованных жителей Львова и области, а также Тернопольской и Иваново-Франковской областей просят обращаться по адресу:

290066, г. Львов-66, а/я 8175 Барышневу Александру Борисовичу

2. Действует детский клуб любителей компьютера ZX-Spectrum в г.Одессе и его участники хотели бы переписываться с другими клубами нашей страны и, по возможности, с зарубежными.

Контактный адрес:

270114, Одесса а/я 292, клуб. Руководитель Макаров А.В.




СОДЕРЖАНИЕ:


  Оставте Ваш отзыв:

  НИК/ИМЯ
  ПОЧТА (шифруется)
  КОД



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

Похожие статьи:
Новости - внеочередной выпуск Next'a.
Письмо №279
Игрушки - По полочкам: Carrier Command.
Дом 16а - продолжение рассказа.
Реклама - каталог програмного обеспечения и обяьвления.

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