ZX-Ревю 1991 №11-12 1990 г.

Forum - какое сочетание цветов является более эргономичным для глаз, если работа идет с цветным дисплеем?


Темы статьи: Юмор  

FORUM

Очень интересный вопрос, имеющий некоторое историческое содержание задает наш читатель из г. С.-Петербурга Тасев А.Д.

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

Почему же К.Синклер в своем компьютере ввел белый фон с черным текстом? Что за этим стоит? Или это только рекламный трюк? Да и вообще какое сочетание является более эргономичным для глаз, если работа идет с цветным дисплеем?"

При кажущейся простоте вопрос читателя не праздный - за ним стоит идеология архитектуры всей системы.

Во-первых давайте признаем, что действительно белый текст на черном фоне гораздо более эргономичен и это важно. Одно дело - если пользователь работает с компьютером 2 часа в день и совсем другое, если 14.

Теперь давайте вспомним, что в MSX, IBM и многих других системах, о которых говорит наш читатель, четко разделены режимы работы. Есть текстовый режим и соответственно текстовый экран и графический режим и несколько графических экранов (с разным разрешением).

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

Попробуйте-ка включив IBM или "Ямаху" (MSX) и не изменяя режимы и не загружая никакие программы, нарисовать хотя бы окружность. Не тут-то было. Ничего не выйдет.

Кстати, программистам и фирмам, выпускающим программное обеспечение, не очень удобно такое разделение режимов.

Итак, каким должен быть экран у компьютера, изначально предполагавшегося для работы в текстовом режиме? - Конечно, белым по черному.

А для графики? Наверное наоборот, ведь не очень привычно рисовать на черном экране.

Весь успех Синклера на том и был основан, что он дал людям компьютер с достаточно удобным и экономичным экраном, работающий одновременно и в текстовом и в графическом режиме, да еще и с палитрой цветов. При этом на все уходит менее 7 килобайт. Если все мы сейчас и наслаждаемся этой машиной, то скорее всего именно поэтому. Где сейчас стандарт MSX, который в зарубежной прессе в 1986 году называли "бурно развивающимся", а в 1987 году - "загнивающим". Если бы не эта "хитрость" с экраном, был бы сейчас "Спектрум" там же, где и сотни его конкурентов 1982-84 годов.

Итак, совмещение алфавитно-символьного экрана и многоцветного графического экрана с очень малым расходом памяти - вот то гениальное решение, которое и привело эту машину в Ваш дом, и вот почему у нее белый экран.

Ну, а что касается наиболее эргономичного сочетания цветов? Вопрос мнений. Авторитеты пишут, что желтым по синему. Может быть еще рассмотрен вариант белым по синему. Это если дело касается "Спектрума".

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

Рассматривая проблемы совместимости отечественных модификаций "Спектрума", мы уже говорили о том, что, как установлено, определенное влияние имеет формирование сигнала INT в Вашем компьютере. Сегодня наш корреспондент из г. Йошкар-Ола Сергей Викторович Полубарьев делится некоторыми рекомендациями по обеспечению параметров этого сигнала.

Вот что он пишет:

В результате анализа работы фирменного "ZX Spectrum+128" установлено следующее:

1. Длительность сигнала /INT (вывод 16 Z80A) равна 8 мксек и не зависит от текущего состояния процессора в том числе и сигналов /M1 и /MREQ.

2. Некоторое несовпадение линии на бордюре с линиями в экранном поле может наблюдаться и на этом компьютере (обнаружено на игре "Monte Carlo Casino"). При этом бордюрные линии смещаются на 1 пиксел вниз относительно экранных.

В наиболее распространенных версиях самодельных "Синклеров" нормализацией сигнала INT занимается RC-цепочка, дифференцирующая длинный кадровый синхроимпульс. Ниже дается описание этого узла для версий "Москва" (с раздельным полем памяти), Ленинград-1 и "Пентагон 48К" (дисковый вариант).

В рассмотренной нами версии "Москва" места для RC-цепи не предусмотрено. Если на Вашей компьютере она отсутствует, придется собрать ее навесным монтажом на свободных элементах DD54 (К555ЛН1, на плате располагается между рядами ОЗУ 565РУ6 и РУ5). Схема приведена на рис.1. Фрагмент, к которому относятся доработки, выделен пунктиром.

При указанных номиналах деталей обеспечивается длительность сигнала около 9 мксек, что достаточно для нормальной работы компьютера. В других перечисленных моделях RC-цепочка уже есть и достаточно уточнить номиналы ее деталей.

Необходимо отметить также, что встречаются варианты RC-цепочки, выполненные на резисторе с большим номиналом (30...50 кОм) и с очень малой емкостью (30...300 пФ). Такая схема в принципе работоспособна, но может стать причиной частых сбоев из-за высокой чувствительности к импульсным помехам (в практике автора такое бывало). Более надежно применять низкоомный резистор (0.5...3 кОм).

D28.2 (К561ЛА7)

R - МЛТ 0.125 1.5 кОм C - KM -5a 4700 пФ

Рис.1

Если у Вас нет хорошего широкополосного осциллографа, то оценить необходимую емкость конденсатора можно прикидочным путем. Это делается так:

1) Постепенно снижая емкость конденсатора, определите порог, за которым прекращается опрос клавиатуры. Включенный компьютер выводит на экран "(С) 1982...", но не реагирует на нажатие клавиш.

2) Увеличьте полученное пороговое значение примерно в 1,5 ... 2 раза и впаяйте в схему конденсатор необходимой емкости.

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

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

1) "Пентагон 48К" (дисковый вариант) - элементы C5,R13,R15, исходный сигнал

снимается с вывода 8 микросхемы D5.2 (К555ЛИ3).

2) "Ленинград-1" - элементы СЗ, R2, далее сигнал инвертируется на D1.6 и поступает на вывод 16 Z80A. Исходный сигнал снимается с инверсного выхода триггера D8.2 (К555ТМ2).

Если обозначения элементов на Вашей схеме не совпадают с указанными, то их легко найти, проследив, откуда приходит сигнал на вход /INT процессора Z80A.

Сведениями по другим моделям автор пока не располагает.

Описанная методика проверена при наладке нескольких компьютеров каждой из версий. Компьютер версии "Москва", отлаженный, как описано выше, работает в течение полугода нормально. Без проблем запускается ARKANOID и другие игры. Единственная игра, не работающая на этой машине - "MOVIE" (причины пока не выяснены, но предполагается, что дело в отсутствии "подхвата" атрибутов экрана, т.к. резисторы 470 Ом на поле памяти 16К не установлены). - см. ZX-РЕВЮ N 3, стр.52 (FORUM).

Проблемы ELITE.

Нашему читателю из г.Челябинска Кислову Л.Н. кажется удалось в открытом космосе столкнуться с космической платформой. Причем произошло это не где-нибудь в глубинах отдаленных галактик, а у самой первой планеты - LAVE. Вот выдержки из его бортжурнала.

Однажды, решив начать свою карьеру с нуля, я, имея рейтинг DANGEROUS, перезагрузил программу и начал игру с HARMLESS. При перелете с планеты LAVE на планету REORTE я столкнулся с летающим объектом необычной формы (бесформенный многогранник). Объект появился на переднем экране и шел мне навстречу. Приняв его за астероид, я начал обстрел издалека, надеясь на небольшую премию.

Каково же было мое удивление, когда "астероид" встретил меня ответным огнем. Несмотря на то, что боевой опыт у меня есть, поразить его пульсирующим лазером не было никакой возможности. Объект имел прекрасную защиту и, несмотря на многократные, длительные и точные попадания, не уничтожался. Во-вторых, он имел огромную скорость и постоянно маневрировал.

Самое интересное, когда от объекта начали "отслаиваться" корабли по 5-6 шт. за раз. (Наш читатель приводит их рисунок - это "Сайдуиндеры". - "ИНФОРКОМ").

Не обращая на них внимание, я продолжал преследовать объект. Примерно через минуту, поняв, что прекращать преследование я не собираюсь, объект выпустил новую партию кораблей - еще около 5 штук.

Общими усилиями они довели мою энергию почти до нуля, и я решил воспользоваться ракетами (обычно я ими не пользуюсь - считаю дорогими и малоэффективными). Первая ракета пропала неизвестно куда. Остальные тоже. Вылетев, они просто исчезали, не взрываясь. Последняя же ракета и не стартовала - появилась надпись о ее повреждении Missile Crashed.

Вскоре меня добили, и я так и не знаю, что же это было.

Версия программы характерна тем, что в стартовой экране выдается сообщение

PHESS SPACE COMMANDER, а не LOAD NEW COMMANDER (Y/N).

* * *

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

наличия космических платформ, как это, к нам еще не поступало.

* * *

Интересный эффект в этой программе обнаружил другой наш читатель, тоже из города Челябинска - Прыкин А. В (стаж полетов более года).

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

Вот как это делается.

Перед стартом со станции выберите любую планету в данной галактике. Теперь стартуйте. Выйдя в космос, развернитесь на 180 градусов и вновь идите на стыковку со станцией. Когда сближение произойдет, перед самым входом на станцию, нажмите "Н". Если выбранная Вами планета находилась в пределах круга, то Вы окажетесь на ней. Если же Вы выбирали планету вне пределов круга, ограничивающего гиперпереход, то нажимать надо "GH" - результат - тот же.

У "ИНФОРКОМа" сразу возникает вопрос: "А нельзя ли аналогичным способом

перелетать и между галактиками?" Чем не предмет для исследования?

* * *

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

Вот что пишет пилот Иванищенко (г. Орск).

Этот блок имеет всегда длину, равную 102 байтам. Методом проб удалось узнать назначение некоторых байтов в этом блоке. Прочие - пока не установлены, исследование продолжается.

В таблице приведены:

I - номер байта,

II - первоначальная установка,

III - назначение.

I

II

III

1

-

Имя командира

-

(10 символов в

10

-

кодах ASCII)

11

0

?

0

?

20

0

?

21

232

Сумма денег

22

3

в

23

0

кредах

Далее следует информация о количестве загруженных товаров

24

0

Food

25

0

Textiles

26

0

Radioactives

27

0

Slaves

28

0

Liquour/wines

29

0

Luxurious

30

0

Narcotics

31

0

Computers

32

0

Machinery

33

0

Alloys

34

0

Firearms

35

0

Furs

36

0

Minerals

37

0

Gold

38

0

Platinum

39

0

Gem-stones

40

0

Alien Items

41 - 46 - не установлены

Далее следует информация о снаряжении и бортовом вооружении

47

70

Топливо

48

3

Ракеты

49

0

Система E.C.M.

50

0

Extra Pulse Laser

51

0

Beam Laser

52

0

Fuel Scoops

53

0

Escape Pod

54

0

Energy Bomb

55

0

Energy Unit

56

0

Docking Comp.

57

0

Galactic Hyperdrive

58

0

Military Laser

59

0

Mining Laser

60 - 102 не установлены

Дополнительную информацию дает А.И. Ивлев из Симферополя. Он исследовал байты 42,13,44,45. Там находится информации о вооружении четырех боевых надстроек корабля (носовая, кормовая и две бортовых). При этом:

0 - отсутствие оружия;

1 - Pulse Laser;

2 - Beam Laser;

3 - Military Laser;

4 - Mining Laser.

Если заслать туда число, большее 4-х, можно получить интереснейшие эффекты. Например такую чепуху, как "Front Energy Bomb", причем со свойствами и боевого и технологического лазера одновременно. Очень удобно - стреляет как боевой, а обломки от

астероидов летят, как от технологического.

* * *

И, наконец, вопрос к читателям, который задает наш давний партнер из г.Батуми -Гогуа А.В.: "Нет ли у кого версии программы ELITE, работающей в дисковой операционной системе". (Очевидно "самоделки", сделанные с помощью Magic-Button здесь не имеются в виду - "ИНФОРКОМ").

Советы и секреты

Просматривая код хорошо всем известной программы фирмы MIKROGEN "Three Weeks in Paradise" наш читатель Сукач К.М. (г.Херсон) нашел послание, предназначенное любителям взламывать чужие программы. Содержание его интересно, поэтому любопытным предлагается небольшая программа для его прочтения.

Так как основной игровой блок не имеет "хэдера", то сначала надо его сделать командой

SAVE "PARADISE!" CODE 26490, 38582

Затем надо считать этот заголовок и после него загрузить игровой блок.

После загрузки надо набрать небольшую программу-просмотрщик. 5 CLS

10 FOR n=63923 TO 65072 20 PRINT CHR$ (PEEK N); 30 NEXT n: PAUSE 0: GO TO 5

И запустить ее <RUN>.

На экране появится текст послания.

Фильков Андрей Петрович (Москва) и другие сообщают о том, как в программе EQUINOX, экспертную проработку которой мы недавно давали, обессмертить своего робота. Суть такова:

На первом уровне нужно найти карту PETE, вернуться с ней к месту старта и находясь в левом верхнем углу, нажать одновременно клавиши R,N,^

А в программе EXOLON можно получить бессмертие, если в режиме переопределения

управляющих клавиш (DEFINE KEYS) ввести буквы Z,O,R,B,A.

* * *

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

Чтобы его вызвать, надо убрать автостарт программы и после загрузки дать команду RUN. МОНИТОР отображает на экране содержимое всех регистров процессора и ячеек памяти, позволяет записывать в них данные как в 16-ричном виде, так и в десятиричном и в символьной виде. Вот его команды:

1 - переключение DEC и HEX систем счисления;

2 - переключатель "символьное"/"числовое" представление;

3 - запись числа в регистр (через ENTER);

4 - запись числа по адресу (первому на странице);

5 - листание вниз на 64 адреса;

6 - листание вниз на 1 адрес;

7 - листание вверх на 1 адрес;

8 - листание вверх на 64 адреса;

9 - выбор регистра процессора (вперед);

0 - выбор регистра процессора (назад);

SPACE - занесение начального адреса страницы.

Непробиваемая защита

"Очень многие сейчас занимаются "хэккерством", упражняясь во взломе и изменении программ" - пишет наш читатель из г.Таганрога Василенко В.И. - И дело это не столь сложное, как могло бы показаться. Имея "библию" Яна Логана и Ф. О'Хары "The Complete Spectrum ROM Disassembly" это сделать можно за полчаса, но увы не со всякой программой. Как подойти к защитам, в которых циклически изменяется информация, например как показано ниже?"

"ИНФОРКОМ" напоминает о том, что Вы можете заказать у нас качественно сделанную копию Мельбурнского издания книги Логана и О'Хары. Должны также добавить, что книга конечно хороша, но для неподготовленного читателя может быть сложноватой и наш комментарий к ней, который мы ведем уже год в виде сериала "Секреты ПЗУ" будет более чем полезен.

Пример такой защиты с циклической перекодировкой блока: LD HL,nn (адрес начала блока)

LD BC,nn (длина блока)

LD A,n (ввод ключа-декодера)

XOR (HL) (декодирование)

LD (HL),A (замена закодированного значения на раскодированное)

INC HL (переход к очередному байту)

DEC BC (уменьшение счетчика)

LD A,C (проверка счетчика на ноль)

OR C

JR NZ,n (повтор декодирования)

DEFB ...............

DEFB ...............

закодированный блок

DEFB ...............

В данном примере байт за байтом декодируется блок, размещенный сразу за декодирующей процедурой. Декодирующей функцией служит XOR. После окончания процесса декодирования исполнение переходит к первому байту из декодируемого блока. Вроде бы все просто, но вдруг! О ужас! Оказывается, что раскодированный блок содержит в самом начале примерно такую же процедуру, а дальше за ней опять "абракадабра". Раскрыв и запустив декодирующую процедуру, мы декодируем и ее, но дальше опять все то же и так до 100 - 200 раз. Что же делать, нельзя ли как-то это преодолеть?

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

Несколько лет назад на Западе было объявлено о создании интегрального нераскалываемого загрузчика ALKATRAZ LOADER. Он работал именно по этому принципу. Была объявлена громадная премия тому, кто сумеет его "расколоть" и, насколько нам известно, эту премию никто не востребовал. Конечно "расколка" аппаратными средствами не признавалась.

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

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

Вопрос поднятая нашим читателем достаточно интересен. Мы бы с радостью опубликовали исследования наших авторов, работающих в этом направлении. Наш собственный опыт увы исчерпывается одной-двумя безуспешными попытками. Так, например, раскрывая программу Pinball Wizard, мы прошли тяжелым трудом 20-25 этапов защиты, но наткнулись на то, что сравнительно простые декодирующие функции типа XOR (HL) или DEC A сменились гораздо более крутыми: LD B, (IY+n) LD A, ЦХ+n) XOR B

Если Вы с самого начала не отслеживали содержимое регистров IX и IY, то после труднейшего дня кропотливой работы очень приятно столкнуться с такой функцией.

По всей видимости для снятия защит такого типа необходимо специальное программно-инструментальное средство, возможно что-то типа резидентного монитора.

Для тех читателей, кто готов осудить нас за подстрекательство к "хаккерству" скажем, что мы со всем уважением относимся к авторским правам, (сами ведь тоже пишем программы для IBM-совместимых машин) но считаем допустимым и даже полезным для самообразования "влезть" в код чужой программы, если при этом:

- программу не "портят" в угоду личным амбициям;

- не меняют данных об авторстве программы;

- внесенные изменения оставляют для себя и не отравляют жизнь будущим пользователям, распространяя их.

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

По всей видимости в условиях отсутствия нормального авторского законодательства и нормального легального распространения программного обеспечения основным критерием, которым стоит руководствоваться, должно быть УВАЖИТЕЛЬНОЕ И КОРРЕКТНОЕ ОТНОШЕНИЕ К АВТОРУ ПРОГРАММЫ.




СОДЕРЖАНИЕ:


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

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



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

Похожие статьи:
Вступление - мы решили разместить юмористический рассказ.
Музыка - Беседа с MmcM/Sage group, известным AY-музыкантом, о его знаменитой технике.
Открытые письма Nemo №5.1
Я сама - 128 цветов на Spectrum: схема доработки до 128 цветов от донецкой группы Spark.
Программирование - Эффект "Летающий спрайт".

В этот день...   16 апреля