ZX-Ревю 1994 №2 1993 г.

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


Темы статьи: Будущее Спектрума  

К ВОПРОСУ о стандартизации.

ИФК: В РЕВЮ-93, № 9-10 на стр. 198 мы приводили материал Киселева Д. из Казани. От него пришло еще одно письмо на эту тему.

КОРР: С момента написания моего первого письма на тему стандартизации расширений для "Спектрума" прошло некоторое время и у меня появились еще некоторые соображения на эту тему, которые я хочу дополнить к предыдущим. Во-первых, о самом важном - о памяти. Как указывалось раньше, если использовать 2 старших бита системного порта SP128, то можно адресовать до 512К ОЗУ. Однако располагать такое количество страниц только по одним и тем же адресам несколько нелогично, так как такое распределение памяти необходимо лишь очень специфичным программам. К тому же, предложенное мною прежнее расширение оперирует максимум с 320К ОЗУ. Дальнейшим расширением я предлагаю сделать режим, использующий РУ7 и в основной, и в дополнительной линейках. Но, кроме упомянутых выше режимов, можно ввести еще один. Суть его в том, что занесением 1 в специальный порт (пусть это будет все тот же 7ЕН) можно будет переключать банки по 64К как в дополнительной, так и в основной линейке. Так мы получим 4 независимых 128К пространства. Это позволяет использовать несколько программ по-очереди, например: в одной области - настройка магнитофона, в другой - копировщик, а в третьей - сама рабочая программа. Чтобы использовать одновременную загрузку-выгрузку и обмен информацией между задачами, потребуется дополнительная процедура в ПЗУ и (или) обслуживающая программа в ОЗУ, которая размещается в четвертой области. Так как обмен между задачами возможен только через область С000Н-FFFFH, то необходимо производить переключение так, чтобы банки соответствовали той странице, которая впечатана на место нулевой в однозадачном режиме. Процедуру обслуживания и переключения задач можно запускать через NMI, предварительно изменив стек и с учетом использования NMI в TR-DOS.

Теперь об экранах. В первом письме я описал 4 реализуемых ПК "Балтик" экрана, но предложено на стандартизацию расширений только 3 из-за трудностей в обслуживании и практической бесполезности экрана высокого цветного разрешения по 0000Н. Четвертым стандартным расширением экранов я предлагаю сделать алфавитно-цифровой аппаратный экран на 64 или 80 позиций в строке, подобный экрану в ПК "Корвет" или АТМ 6.0, который будет использовать ОЗУ 2 экрана с адреса 2000Н. Необходимость в скоростном устройстве вывода остро ощущают многие системщики и это может быть одним из решений.

Также в прошлом письме я указывал на возможность переключения на ОЗУ во время записи по адресам 0000H-3FFFH. Однако, часто требуется решение обратной задачи: только чтение из ОЗУ по этим адресам. В своем ПК "Балтик" я использовал биты 7 и 6 порта 7ЕН так, чтобы при аппаратном сбросе устанавливалось "разрешение чтения ПЗУ" (D7) и "разрешение записи в ОЗУ" (D6). Доработка ПК следующая: на D33.1 выв.5 подать MREQ (инв.), на D33.2 выв.10 подать через элемент "ИЛИ-НЕ" RD (инв.) и D7 (инв.), на D33.2 выв.11 через элемент "И" RD (инв.) и D6 (инв.), D32.1 выв.2 соединить с D33.2 выв.8.

ИФК: Проблема стандартизации волнует также и других читателей. Вот, что пишет Лыхин Д.В. из г. Кемерово.

КОРР: 1. Проблема аппаратной русификации компьютера. Да, эта тема достаточно наболевшая, но Вы, наверное, не хуже других понимаете, что пока в стране нет единого стандарта, которого рекомендуется придерживаться и производителям и программистам, никакого полного внедрения " Спектрума" в школы и другие учебные заведения не осуществится. По моему мнению, эту задачу должна взять на себя Ассоциация пользователей и ИНФОРКОМ. Больше то ведь некому. Организуйте на страницах РЕВЮ дискуссию на эту тему, пусть выскажутся специалисты и простые пользователи. Выделите наилучший результат. Даже если он не будет поддержан никакими комитетами и печатями и пр., документ с надписью "Ассоциация пользователей домашних компьютеров рекомендует придерживаться следующего стандарта." наверняка сдвинет все к желаемому результату.

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

Для компьютеров с русским шрифтом на мой взгляд использование системной переменной символьного набора не дает ничего. Использование управляющих кодов (на моем "Форуме" это 30 и 31) несколько более удачно, но иногда это нарушает нормальную работу. Сэр Синклер для перехода из режима в режим использовал переменную "состояния курсора", по моему это лучше всего.

2. Второй "стратегический" вопрос касается организации клавиатуры. Фирмы, кажется, пытаются сделать клавиатуру более "шикарной". Взять хотя бы мой "Форум", функциональные клавиши задействованы на INK, PAPER и т.д. Очень удобная штука, курсорные клавиши расположены просто замечательно. Но на мой взгляд, планка клавиши SPACE очень портит дело: Вы не сможете управлять в игре стандартными клавишами Q, A, O, P, M, поскольку нельзя, нажимая "М", большим пальцем не задеть планку BREAK-SPACE. Сама клавиша SPACE оказалась левее клавиши SYMB. SHIFT. И что Вы скажете на такое, например, управление игрой, которое нельзя изменить: SS -налево, SPACE - направо, CS - прыжок.

ИФК: Совершенно согласны с т. Лыхиным. Те, кто играет в ELITE, на некоторых вариантах клавиатуры наверняка тоже прочувствовали это, ведь там управление скоростью корабля регулируется как раз клавишами SS и SPACE и страшно неудобно управлять, если SPACE находится левее SS. Наш корреспондент приводит свой вариант расположения клавишей, с которым, кстати, во многом можно не согласиться, но некоторые моменты бесспорны. Это уже указанное взаиморасположение клавишей SS и SPACE. Другой момент, на который указывает Д.В. (к сожалению, он не указал свое имя) это дублирование клавишей CAPS SHIFT и SYMBOL SHIFT на обеих сторонах клавиатуры. Он пишет: "Это очень сильно упрощает работу (снижает трудоемкость), тот, кто работал с клавиатурой, на которой SS и CS есть слева и справа, поймет меня".

Насчет расположения курсорных клавиш наиболее удобным, на наш взгляд, является взаиморасположение курсорных клавиш на клавиатуре IBM-компьютеров. Кроме того, совершенно согласны с Д.В. и по собственному опыту можем утверждать, что неоценима клавиша FIRE в левой части клавиатуры (на самом деле это дублирование клавиши "0"). Очень удобно играть двумя руками: правая - на курсоре, левая - на "гашетке". Сама клавиатура при этом может располагаться в любом удобном месте: хоть на столе, хоть на коленях.

Насчет функциональных клавишей заметим, что кроме общепринятых (цифровой ряд вместе с клавишей CAPS LOCK) желательна и очень удобна была бы клавиша STOP (SS+"A"). Это расширение легко осуществимо, оно тоже основывается на двойных группах контактов. Кроме того, из знаков препинания удобно было бы введение символа ":" - разделителя Бейсик-команд. Как правило, их количество в Бейсик-программе явно превышает число точек или запятых, которые выделены в отдельные клавиши.

ИФК: Теперь поговорим о таких расширениях клавиатуры, как, например, размещение недостающих русских букв в пределах меньшего количества клавиш с латинскими буквами. Русские символы, согласно кодовой таблице ASCII, неизбежно приходится набирать, используя EXT.MODE. Если бы можно было добавить недостающие клавиши, нажимая на которые, происходил бы переход в режим EXT.MODE, да еще после этого нажимался бы SHIFT и сама нужная клавиша! Или, например, выход в TR-DOS, который выполняется вводом RANDOMIZE USR 15616 - вот здорово было бы, если бы эта последовательность могла вводиться одной кнопкой! Вы скажете: "Этого не может быть, потому что не может быть никогда" - и ошибетесь. Материал как раз на эту тему нам прислал Марьин С.Б., ст. Ардаши Кировской области.

КОРР: "Я обладатель компьютера "Profi", который смастерил сам. Недавно приобрел клавиатуру,

аналогичную "Компаньон 2" и решил ее подключить. Предлагаю вариант расширения стандартной клавиатуры.

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

сделать что-то подобное из того, что он имеет (см. схему)

ИВ1

Импульсы с шины адреса поступают на приоритетный шифратор и преобразуются в двоичный код, который идет на младшие 3 разряда ППЗУ. При нажатии клавиши расширения, импульсы с шины адреса через контакты поступают на второй шифратор и далее, на регистры ТМ9 (или аналогичный).) выхода С первого шифратора импульсы сканирования поступают на счетчик, на вход R которого тоже поступают импульсы с второго шифратора, которые обнуляют счетчик. Когда ни одна клавиша не нажата, счетчик обнуляет регистр, иначе в регистр заносится код нажатой клавиши расширения и происходит выборка ПЗУ, на выходе появляются импульсы в соответствии с нужной нам комбинацией нажатых клавиш (CS+A и т.д.).

Несколько по другому происходит обработка нажатия клавиш, использующих режим EXT.MODE. При поступлении сигнала с клавиши происходит выборка ПЗУ, на выходе 5 которого появляется уровень 0, а на выходах 0-4 то, что и положено для комбинации CS+SS. Сигнал с выхода поступает на линию задержки, далее происходит переключение ППЗУ и появляется комбинация, в соответствии с нужной нам комбинацией нажатых клавиш. Например, коды русских букв (имеется в виду кодовая таблица ASCII, символьный набор КОИ-7) соответствуют: "Ш" - "[" -> E.M. (CS+Y) "Щ" - "]" -> E.M. (CS+U) и т.д.

Таким образом, одним нажатием клавиши можно смоделировать нажатие любой комбинации клавиш,

используемых в ZX-Spectrum.

Хочу предложить еще одну схему. Это включение TR-DOS из Бейсика, выполняемое командой RANDOMIZE

USR 15616 . Это расширение выполнено на 5 микросхемах К561:

ЛА7 ИЕВ 2 шт. КТЗ

При нажатии клавиши включается RS-триггер, запуская генератор с частотой 2 Гц. Счетчик-дешифратор на ИЕ8 начинает последовательно включать ключи, которые соответственно включаются в узлы шин адреса и данных клавиатуры.

ИФК: Если читателей заинтересует этот принцип организации расширения клавиатуры, то наш корреспондент Марьин С.Б. готов дать более исчерпывающую информацию, например, прошивки ПЗУ, цоколевку клавиатуры "Компаньон 2". А мы также можем сообщить тем, кто интересуется этим вопросом, что вполне конкретный вариант расширенной клавиатуры разработан и изготавливается в Подмосковном г. Зеленограде и может встретиться Вам на радиорынке.

Эта клавиатура имеет 111 клавишей, среди них не только общепринятые расширенные клавиши, но и клавиши с недостающими русскими буквами (расположение - как в IBM-PC). Вынесены отдельно курсорные клавиши и цифровой декадник. Клавиатура позволяет программировать наиболее часто встречающиеся последовательности нажатия клавишей (макросы), всего до 18. Имеется возможность присвоения вынесенным клавишам курсора стандартных комбинаций: SINCLAIR, CURSOR, O-P-Q-A или любых других. Специальные клавиши предусмотрены для макросов TR-DOS. Прилагается плата сопряжения с компьютером. При этом сама клавиатура подключается при помощи 5-контактного разъема.

Существуют подобные разработки и в других регионах страны. В частности, в Луганске изготавливается аналогичная клавиатура, содержащая 88 клавишей. Тоже есть возможность программирования макросов (до 18, объемом до 128 шагов), в том числе "автостартующий ключ", начинающий свою работу самостоятельно после включения компьютера. Существует клавиша "ПАУЗА", при нажатии на которую происходит остановка работы компьютера и клавиатуры.

ИФК: Кунгуров А.Н. из г. Нижний Архыз пишет о теневом ОЗУ.

КОРР: В ФОРУМЕ ZX-РЕВЮ № 7-8 за 1993 г. обсуждаются проблемы использования "теневого" ОЗУ. Я давно использую доработанный компьютер типа "Балтик", который позволяет загружать в теневое ОЗУ операционную систему. При этом обходится проблема порчи первых пяти байт ОС и конфликт с TR-DOS. Привожу схему доработки (см. на следующей странице).

Отдельные биты, записываемые в регистр, при установке их в единицу обеспечивают:

D5 - блокировка TR-DOS (без нее записать ОС в теневое ОЗУ трудновато).

D6 - блокировка RAM. Осуществляется после того, как ОС записана и запрещает запись в "теневое" ОЗУ.

D7 - блокировка ROM. Отключает ПЗУ.

Нужный байт записывается командой OUT #7E на ассемблере.

J+5B R1" 1K

D1.4'

ОТ

7В34

13

D1" - К555ЛАЗ D2" - К555ТМ8 D3" - K555J1E1 D4' - K555J1H1

D1.1

9D38 (RES)

D41

В1

RG

Q1

D2

Q2

ВЗ

Q3

D4

Q4

R

С

12В18 13В18

14

Л"

П1 "БЛОКИР

?+5В

R2"

h ь

ю

14047 (DO) о 15D47 (В1) t> 13D47(D7)o 10D47(D6)o

и-

5

12

о-

13

Д|

эГ

D3.1"

5D33

_В3.2'

ROMCS ВЕТА128

D2'

D1

RG

Q1

B2

Q2

ВЗ

Q3

B4

Q4

R

С

D3-3",.n

D3.4"

ллд

121-

9D47 (В5) о-

А13 ВЕТА128

D41"

ipгу

3D47 (А13) о-21D47 (RD) о-

Переключатель "Блокир." П1' блокирует запись в регистр. При включенном П1' можно сбрасывать компьютер без выхода из "теневого" ОЗУ.

В БЕТА 128 необходимо вместо сигнала А13 подать сигнал из этой схемы. R2' обеспечивает работу при отсутствии БЕТА 128.

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

Вот пример. Допустим, ОС загружена с адреса 32768.

A, #A0 ;Блокируем ROM

(#7E) ,A ; и TR-DOS . HL,#8000 ;Перебрасываем ; ОС в ;теневое ; ОЗУ.

;Блокируем ROM и за-;пись в теневое ОЗУ. ;Запуск ОС.

По окончании записи включить П1 "Блокир.".

ИФК: Наши читатели в своих письмах сообщают также о том, что проблема порчи первых пяти ячеек теневого ОЗУ неоднократно освещалась в журнале "РЛ". Приводим еще один вариант доработки - для компьютера "Робик":

LD OUT LD LD LD LDIR

LD A,#C0 OUT (#7E),A JP #0000

DE,#0000 BC,#4000

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

ИФК: Нам пишет В. Корчагин из г. Нижний Тагил. В его письме неоднократно упоминается "Хаккер-93". Об этом смотрите в разделе "Авторская разработка" в этом номере РЕВЮ.

КОРР: В процессе разработки встроенного монитора "Хаккер-93" я изучал работу стандартной подпрограммы 028ЕН (KEY-SCAN) и обнаружил причину "сбоев", которые портят кровь владельцам расширенной клавиатуры при работе в режиме редактирования Бейсика, когда при нажатии курсорной клавиши вместо перемещения в строку впечатывается цифра. Дело в том, что подпрограмма 028ЕН сканирует поочередно каждую из 40 клавиш, причем клавиша "CAPS SHIFT" проверяется пятой по счету, после чего изменение ее состояния не влияет на результаты сканирования. Для стандартной клавиатуры это не имеет значения, поскольку клавиша "CAPS SHIFT" нажимается задолго до нажатия основной клавиши, но в расширенной клавиатуре сигнал от дополнительных клавиш посылается на ключи-имитаторы одновременно, причем за счет диода в цепи ключ "CAPS SHIFT" срабатывает даже позже ключа основной клавиши. Таким образом, перед сканированием основной клавиши образуется "мертвая зона" по времени, которая складывается между сканированием "CAPS SHIFT" и основной клавиши плюс задержка диода плюс минус разброс параметров ключей. Если в момент нажатия клавиши из дополнительного набора подпрограмма KEY-SCAN окажется в "мертвой зоне", то нажатие "CAPS SHIFT" не зафиксируется со всеми вытекающими последствиями.

Ну и, раз уж речь зашла об аппаратной части, то хотел бы заметить, что в "Ленинграде-1" D-триггер, вырабатывающий сигнал WAIT, существует вовсе не для согласования работы процессора с памятью. Это заготовка, позволяющая легко реализовать аппаратный шаговый режим путем блокирования приходящего на триггер сигнала WRBUF (он сбрасывает сигнал WAIT). В простейшем случае "аппарат" состоит из тумблера, прерывающего подачу сигнала WRBUF на триггер, и вольтметра для замера состояния шин адреса и данных. После выключения тумблера первый запрос кода операции остановит процессор, при этом на шине адреса будет удерживаться адрес команды, а на шине данных - код операции. После включения тумблера первый сигнал WRBUF запустит процессор согласованно с другими сигналами.

Однако письмо я затеял вовсе не ради вышесказанного, а ради нижеизложенного. Имею монитор "Турбо-90" (без описания). Он мне не нравится - весьма неудобен в работе. Я, начинающий любитель, пишу первую свою программу "Хаккер-93", которая по многим параметрам превосходит "Турбо-90" и имеет средства обхода защит. Мне это лестно. Но как понять восхищение в адрес "Турбо-90", прорывающееся на страницах ZX-РЕВЮ"? Или похвалы программе GENS-MONS? У меня есть GENS3-MONS3 с чудовищным описанием, и я попытался применить ее для окончательной сборки и трансляции "Хаккера-93". Три дня убил понапрасну, но кое-какие выводы сделал. Это, может, и лучшая, но весьма неуклюжая и далеко не профессиональная программа. Профессиональная программа не потребует POKESов для своей работы, она не будет задавать множество вопросов, не заставит задавать маленький буфер в море ОЗУ и определять размер своей внутренней (!) таблицы. Короче, это позавчерашний день в программировании. Такую программу надо не хвалить, а выбрасывать, как морально устаревшую.

Я к чему клоню? Необходимо разработать критерии соответствия программ современным требованиям и присваивать программам цифровой код, где, к примеру, первая цифра отражала бы уровень сервиса, вторая - графики, третья - уровень защит и т.д. Я думаю, что это такая работа ИНФОРКОМУ по силам. Тогда никто не посмеет расхваливать программу с индексом 230/93, а если и посмеет, то никого этим не обманет.

Теперь о защите программ. Очень вовремя пришел мне 7-8 номер "ZX-РЕВЮ". Начитавшись "общих фраз" т. Луппова, я немедленно ввел в "Хаккер-93" полную компенсацию регистра R, что было непросто, поскольку монитор имеет три основные точки входа для четырех ситуаций. Что касаемо остальных фраз, то мне хотелось бы спросить у Григория Борисовича, красиво ли забивать видео-ОЗУ случайными числами. Мне кажется, что "помойка" на экране пахнет неуважением к пользователю. Кроме того, я не могу понять: зачем "колоть" кодированный загрузчик, если он и без меня раскодируется? Зачем "колоть" любой загрузчик? Зачем вообще иметь дело с загрузчиком? Вот я закончу свой "Хаккер", загоню его в ПЗУ, введу программу с любым загрузчиком, а затем в любой удобный момент нажму кнопку "NMI" и выгружу программу на магнитофон хоть целиком, хоть в нарезанном виде. Дальше она будет существовать с моим загрузчиком. Кроме того, я смогу просмотреть и изменить программу, а затем продолжить исполнение с точки останова, причем обнаружить останов можно только по изменению до 80 байт где-то в ОЗУ, да по изменению фазы импульсов прерывания, т.е. существует малая вероятность изменения таймера (и SEED) на 1 при останове по NMI, и на 1-2" при останове по точке прерывания. Вряд ли это можно использовать для защиты.

Опять же проверка таймера или SEED - грубый прием, его легко обнаружить и "выключить". Гораздо эффективнее использовать значения указанных ячеек в качестве смещения для команды перехода, т.е. SEED + HL, а затем JP (HL).

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

Да он не любит таких приемов, предлагая хакеру вместо напряжения всех творческих способностей, долго и нудно копать землю лопатой, при этом он тратит во время защиты массу машинного времени и много памяти. Результат один "заяц погибнет", т.е. хакер найдет прием, позволяющий не "копать землю". Проблема надежной защиты в принципе не решаема, поскольку относится к проблеме соревнования "брони и снаряда", однако соревнование все время повышает уровень противостояния, тем самым являясь движущей силой развития. Теперь уже не обойдешься простой проверкой таймера - пора "ловить" фазу импульсов прерывания. Как это сделать? Ну, хотя бы так. Дать команду HALT, установить таймер, затем снова HALT. Или DI, установка таймера, EI, HALT. После выхода из HALT через 70100 тактов (в моей модели компьютера) придет следующий запрос прерывания, который увеличит значение таймера на единицу. Если я проверю таймер перед приходом запроса и сразу после него, то по значению таймера и наличию (или отсутствию) его инкремента между проверками определю, останавливалась ли программа между запросами. Однако эта задача - явно не для средних умов, поэтому ну ее к профессионалам. Лучше обратимся к "искусным трюкам". Подавляющее большинство программистов, встретив в моей программе команду RET, скажут, что это RETURN - возврат из подпрограммы. Как бы не так! Для меня это команда JP (SP) безусловный (а возможно и условный) переход по значению вершины стека. Так что использовать эту команду я могу как угодно, хоть для вызова подпрограммы - надо только предварительно "зарядить" стек нужными значениями. Причем "зарядить" стек можно еще при вводе блока с магнитофона, или путем переустановки указателя стека, или еще как-то. Зная этот секрет, хакер будет вынужден "копать землю", проверяя все команды возврата и жестко контролируя стек и флаги.

ИФК: Несколько слов к сказанному. По поводу удобства в работе монитора "Турбо-90" мы не согласны с автором этого письма. Может быть, причина в том, что корреспондент не имеет описания на этот монитор? А вот что касается удобства в работе пакета MONS-GENS (обратите внимание - удобства в работе, а не потенциальных возможностей), то здесь мы полностью согласны с автором. Но что делать, если не создано пока ничего такого, что могло бы более или менее успешно конкурировать с MONS-GENS по своим возможностям. Системное программирование всегда было и остается самым пиком, пределом возможностей программиста. Создать игровую программу - дело не столько хитрое, сколько хлопотное, но то и дело тут и там слышится: "несовместимость.". А создать системную программу, которая предусмотрительно выходила бы из таких ситуаций, о которых мы, может быть, и не догадываемся, вот конек программиста! "Турбо-90" в этом плане - неплохой результат. Принципиальная несовместимость ощущается, пожалуй, только в загрузке с магнитофона специфичными загрузчиками. Но если учесть, что магнитофон, как устройство ввода-вывода, уже сейчас "позавчерашний день", то проблемы эти для "Турбо-90" снимаются с повестки дня сами собой.

По поводу немаскируемого прерывания - здесь пока столько еще подводных камней. Пример тому всем известная кнопка "MAGIC" БЕТА-диск интерфейса. Идея-то все та же, аппаратное "раскалывание" любой программы и запись ее на диск. Но те, кто пытался пользоваться ей, знает, в какие проблемы на практике это выливается, каких трудов стоит получение работоспособной версии. По утверждению автора письма его "Хаккер-93" решает все эти проблемы. Рады, если это действительно так. Но какое-то чутье подсказывает, что так просто проблема не решится. Нам представляется его разработка не как завершение, а как начало пути, конечная цель которого пока скрывается за горизонтом. Поэтому будем очень рады, если автор найдет в себе силы пройти этот путь до конца.

Но даже если это так, все же не можем согласиться с мнением В. Корчагина относительно того, что не надо "колоть загрузчики". Сами то Вы, уважаемый В., сколько загрузчиков раскололи, прежде чем почувствовали в себе силы сделать "Хаккер-93"? Вы ведь не будете спорить относительно того, что лучшее обучение - в бою. Кроме того, что это прекрасная школа программирования, всегда были и есть люди, которые просто хотят знать, как это делается. Наверное, это естественная человеческая потребность. Даже если Вы не любите, скажем, кроссворды или головоломки, это не значит, что они неинтересны всем. Другие не хотят ради коротенькой программки хранить на диске всю копию памяти. Вы возразите, что с помощью Вашего "Хаккера-93" Вы можете выгрузить не всю память, а выборочно. Но для этого выбора Вам все равно придется разбираться с программой, все равно придется искать, как она стартует, какие области памяти задействует и т.д. и т.п.

Должны мы сказать и несколько слов по поводу упоминаемой здесь статьи Г.Б.Луппова. По-видимому, здесь есть некоторое недопонимание. Дело в том, что никто ведь и не спорит по тому поводу, что аппаратным прерыванием можно взломать любую защиту. Против лома трудно найти прием. А основная цель статьи Григория Борисовича -обсуждение КОНЦЕПЦИИ защиты от копирования. Такая постановка вопроса (на уровне КОНЦЕПЦИИ) относится к той сфере, которая называется МОЗГОВЫМ ШТУРМОМ. А по законам организации МОЗГОВОГО ШТУРМА идеи не критикуются, а либо развиваются, либо выдвигаются новые. Иначе МОЗГОВОЙ ШТУРМ не получается и прогресс тормозится.

Мы должны сказать, что в этом смысле работа Григория Борисовича очень ценна, ведь она всколыхнула массы, вызвала поток писем, двинула исследования в новых направлениях и даже помогла Вам в создании "Хаккера-93". Так что, нужна защита загрузчиков или нет, можно (но не нужно) спорить, а вот исследования, конечно же, надо продолжать. Мы получили огромное количество писем от читателей, просящих Г.Б. Луппова продолжить свое исследование, обратились к нему с этой просьбой и получили продолжение, которое и опубликовано в этом номере РЕВЮ в разделе "Возвращаясь к напечатанному".

Насчет критериев оценки программ. Здесь ситуация примерно такая же, как скажем, насчет кинофильмов. Хороший тот или иной фильм или нет? Или на сколько он баллов? Одному нравится, другому - нет. Можно высказать свою точку зрения, только когда сам посмотришь фильм или программу. Конечно, есть фильмы и программы, которые нравятся большему количеству людей, а есть такие, которые меньшему. Нам кажется, что такую оценку могут дать только зрители, когда посмотрят фильм или пользователи, работающие с программами. Взять хотя бы все ту же прошивку "Турбо-90". Восторженные отклики о ней на страницах РЕВЮ - это отклики наших читателей. А автору "Хаккера-93" она не нравится. Это первый попавшийся пример, и он показывает всю противоречивость взглядов. Мы уважаем мнение Корчагина В. относительно того же "Турбо-90" или MONS-GENS, равно как и мнение других пользователей "Спектрума". Брать же на себя субъективную оценку той или иной программы, да еще выдавать количественный результат - нам кажется неправильным. Пусть нам напишут те, кто приобрел и поработал сообщает Игорь Л. Комаров из г. Иркутска.

КОРР: Не знаю, у кого как, а у меня загрузчик, модернизированный третьим способом (там, где используется регистр R), не ограничивается выводом на бордюр тонких коротких цветных штрихов. Во время загрузки на динамик выводится так называемый "белый шум". Когда загружается коротенький блок, это может даже придать некоторую оригинальность программе, но если блок кодов порядка 30-40 Кб, ...

Желающие избавиться от шипения динамика должны всего-навсего "погасить" четвертый бит аккумулятора, который и ответственен за это безобразие. Таким образом третий тип модернизации (см. указанный номер РЕВЮ стр. 244 средняя колонка внизу) можно переписать следующим образом: LD A, R

RES 4,A ;это и есть изменение

OUT (#FE),A

AND #00

OR #08

OUT (#FE),A

SCF

RET

ИФК: Тестируя в прошлом году присланные Комисаровым Павлом загрузчики, мы в некоторых случаях тоже получали эффект "звукового сопровождения" загрузки. Но именно в третьей модификации все было в порядке. По-видимому, мы получили несколько иные, чем у Павла, результаты из-за частичной несовместимости его и нашего компьютеров. Но уверены, что совет, приведенный Игорем Комаровым, поможет многим читателям.

КОРР: Далее. Там, где речь идет о загрузчике экрана по четвертинкам (см. все тот же номер РЕВЮ, стр. 245). Набрав приведенный загрузчик, Вы, безусловно, попытаетесь его ассемблировать. После нескольких безуспешных попыток Вы убедитесь в бесполезности этого занятия. А дело все в том, что команды типа INC I, LD X,A и пр. являются НЕДОКУМЕНТИРОВАННЫМИ. Их не понимает ассемблер, их не может правильно интерпретировать монитор-дизассемблер (кстати, это один из типов защиты.).

Несколько слов об использовании недокументированных команд. Довольно полное их описание можно найти в книге Ларченко и Родионова "ZX-Spectrum" для пользователей и программистов".

Так вот. Если Вы имеете 3-томник по программированию в кодах, то откройте его и сравните коды операций с регистрами IX и IY с кодами операций с регистром HL. Если Вы обладаете недюжинными детективными способностями, философским складом ума и хотя бы тремя классами обучения в школе (т.е. умеете читать), то Вы быстро установите, что все отличия сводятся к тому, что команды работы с регистрами IX и IY префиксируются байтами 221 (DDH) и 253 (FDH) соответственно. Теперь понятно, в каком направлении двигаться? Поясню на примере с "четвертичным" загрузчиком. Возьмем первую "строптивую" строку: EAEA DD2 4 INC I

Кстати, здесь, в этом загрузчике, под I понимается не вектор прерываний, а старший байт регистра IX. Чтобы обмануть ассемблер, мы сначала даем префикс, а затем эту же операцию, но уже с регистром Н DEFB #DD

INC H

Вот и все. Запомните, если речь идет о I, то после выдачи префикса меняем команду на команду с Н. Если о Х - то на команду с L. И хотя дизассемблер, встретив такую команду, начинает "стегать", понять, "где собака зарыта", совсем не трудно.

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

Нам приходят письма, в которых читатели просят рассказать о таких загрузчиках картинок, где загрузка ведется по знакоместам в определенном порядке. Например, в игре ROAD RUNNER (U.S.GOLD), SAMANTA FOX (BY JANSOFT), BOMB JACK (BY ROLEXSOFT), AMAUROTE (BY BILL GILBERT) и др. Игорь Комаров сообщает, что в журнале "Радиолюбитель" N4 за 1993 г. в статье "Рисунок - блоковый файл" рассказывается как раз о таком загрузчике. Он пишет: ".правда листинг загрузчика дан в крайне невразумительном виде и Вам придется даже провести некоторую работу, чтобы установить правильные смещения при переходах (даю подсказку: по адресу 64093 стоит переход на адрес 64222). Но, в общем и целом - все работает".

Пушкарев Александр из г. Петропавловска-Камчатского справедливо негодует в своем письме:

"Почему в "РЕВЮ" не видно рубрики 128К. Я не совру, если скажу, что пользователей 128К с каждым годом становится все больше и больше, и тот "десяток лишних игрушек" (по вашим словам) становится все больше и больше, причем эти десятки игр превосходят сотни игр для Spectrum 48K по качеству и оформлению. Одни названия игр говорят сами за себя: TERMINATOR 2, TOTAL RECALL, BACK TO THE FUTURE 3, CHASE HQ 2, TAU CETI 3 и можно дальше продолжать этот список безусловно лучших игр для Spectrum. Эти игры захватывают Ваше воображение на несколько часов и приносят большое удовольствие даже после того, как их проходишь заново по второму, третьему разу. Музыка в программах это почти настоящая музыка, различные звуковые эффекты делают программу полной, т.е. вокруг компьютера возникает такой маленький "мирок", в котором все движется и подчиняется только тебе. В некоторых программах звучит настоящий, т.е. человеческий голос (KLAX, DIZZY 3, RASPUTIN, SLIGHTLY MAGIK). Можно разобрать интонации звучания в этом голосе, это очень дополняет программу. Конечно, я не скрою, в Spectrum 48K тоже есть "говорящие программы" (FAST FOOD, ADV. PINBALL), но шипение, с которым все это звучит, мешает понять смысл происходящего. Поэтому я не могу понять Вашего молчания по данному вопросу. И обращаюсь ко всем пользователям Spectrum 128K, давайте перестанем молчать, и расскажем всем об этих замечательных, завораживающих играх. И для начала предлагаю провести "массовый штурм" таких игр, как TANK COMMANDO, TAU CETI 3. И, в заключение, хочу обратиться ко всем, кто знает, как начать такие игры, как KAYLETH и EMERALD ISLE."

ИФК: Каемся! Слова про "десяток игрушек" - наши, это точно, отрицать не будем, хотя невредно вспомнить, в каком далеком году они были сказаны. Ну, а если серьезно, то "РЕВЮ" в основе своей составляется по Вашим письмам, уважаемые читатели. Мы даем информацию или ориентируемся на них при подготовке материала для печати. Наше молчание - это Ваше молчание. Пока факт остается фактом: число писем, приходящих именно по 128К очень незначительно (то есть почти ноль). Это говорит о том, что парк компьютеров 128К еще маловат у нас в стране. Надеемся, вы не думаете, что мы искусственно "зажимаем" материалы по 128К. То же, кстати, можно сказать и про TR-DOS. Александр, судя по письму, человек увлеченный. Мы уверены, что если за дело возьмутся такие люди, то и по 128К будет достаточно материала. Поэтому пишите. А мы, конечно же, найдем место для 128К на страницах "РЕВЮ".

По поводу "KAYLETH" и "EMERALD ISLE" задачу поняли, Ваша просьба - для нас все равно как приказ, постараемся что-то сделать, так что смотрите раздел "Adventure Games".

ИФК: Читатель Хромых Анатолий из г. Орел тоже интересуется играми для 128К. Он спрашивает, не знает ли кто-нибудь версии программы "ELITE" специально для 128К? Еще он пишет: "У меня "Пентагон 128" и у него есть ряд недостатков, которые достаточно неприятны. В частности, у него нет интерфейса джойстика, а также не идут некоторые программы, а именно "COBRA", "SHORT CIRQUIT" и др."

Анатолий обращается к тем, кто знает, как сделать, чтобы эти игры заработали на "Пентагоне 128".

ИФК: Что касается "ELITE", то можем сообщить, что версия специально для 128К существует. Вообще по поводу разных версий ELITE надо внести некоторую ясность. Вот сведения, которыми мы располагаем на сегодняшний день. На стр. 2 этого номера РЕВЮ Вы прочитали строки о версии ELITE-2, автор которой - Кладов В. Л. из Новосибирска, как и ее продолжения ELITE-3. Так уж получилось, что в то же самое время в Москве совсем другие программисты модифицировали другую версию ELITE, тоже назвав ее ELITE-3. Эта версия является модификацией фирменной версии ELITE для 128К, её выполнила Московская группа "THD", в которую входят Филиппов Денис и

с □ n l v 1эвн . find □ n l v for tr-0d5) Зта программа является

У С □ В Е Р 111 Е Н С T В □ В а Н Н □ Й ВЕРСИЕЙ

ш и р □ к □ известной игры-Elite.

Зта версия атличавтся пт ПРЕДЫДУЩИХ МУЗЫКОЙ дня музыкальнпгп сппрпцЕсспра,

УЛУЧШЕННЫМ ОФОРМЛЕНИЕМ К а Б И Н Ы , БОЕВЫМИ ВОЗМОЖНОСТЯМИ КОРаБЛЕЙ, а т а к:+: е другими ВЕщами.

Б игре ввЕДЕна новая клавиша'5', нажав которую,вы попадЕТЕ

В Д□П□ПНИТЕПЬН□Е МЕНЮ.

Сохранять игру в этой версии мпкнп и на RRM-DI5H. Для этпгп на запрос

ENTER FILENRME введите с л □ в □ ' R R М

Белоусов Александр.

Нашему читателю из Москвы Камразе Т.М. удалось достать Московскую версию "Elite III". Вот, что он о ней

пишет:

КОРР: Клавиши CAPS+L и CAPS+C (см. РЕВЮ-93, № 11-12, стр. 254) не действуют. Существует клавиша 5 (действует только на станции), при нажатии которой Вам предложат: I. Контрабанда.

1. Убить всех рабов и продать их органы: 37.6 Cr/т.

2. Rework narcotics.

II. Супер-оборудование.

1. Planet hyperspace: 175 Cr.

2. Supplementary cargo bay: 1000 Cr.

3. Energy laser: 20000 Cr.

4. Galactic hyperspace generator : 300000 Cr.

5. Energy super generator: 1000000 Cr.

6. Megagalactic hyperspace: 2000000 Cr.

III. Отпустить всех рабов и дать им по 10 Cr.

Автоматы таргоны, если Вы в них стреляете, выпускают одну торпеду и при поражении всех основных кораблей очень быстро разлетаются (удирают?).

Корабли "Питон" (только пират) при 3-4 попаданиях выпускает до 3 кораблей "Крейт" и "Сайдуиндер".

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

Но самое главное, программа работает только с диском и при каждой отгрузке спрашивает не только имя командира, но и имя отгрузочного файла. Напрашивается вывод: перед нами уже не третья, а четвертая версия игры "ELITE"!

ИФК: Нам на глаза попалась еще одна программа, связанная с "ELITE", о которой мы хотели бы сообщить. Взгляните на рисунки.

Программа "Elite Servise" тоже разработана Московской группой "THD". Она предназначена для адаптации различных видов "отгрузок" игры "ELITE" друг к другу (магнитофонной, дисковой и их вариантов). Она также позволяет установить по Вашему желанию любое оборудование корабля и любой груз, может расширить вместимость грузового отсека до 255 тонн.

И ещё. В последнее время Вы можете встретить "обессмерченную" версию "ELITE" (см. рис. на следующей странице).

1HFIH1TE UERSIOH ВУ

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

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

Вопрос по программе "ACADEMY" задает Данилов Олег Петрович из г. Шимановска Амурской обл.

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

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

КОРР: На планету можно садиться. При подлете к планете экран покрывается рябью, после чего корабль медленно начинает опускаться в горы. Находим на экране маленькую точку - это аэродром. Посадка как в игре "F-19", но съезжать с полосы нельзя - смертельно.

Компьютер информирует Вас о том, что надо сделать. Нажмите "Е" - откроется грузовой люк, и на экране появится абориген. Говорить с ним очень сложно (невозможно?).

Приборная панель (левый верхний угол):

1. Координаты по "X"

2. Координаты по "Y"

3. Координаты по "Z"

4. Скорость поворота вверх/вниз.

5. Скорость поворота вправо/влево.

6. ?

7. Нижняя часть экрана: Колонки рычагов (сверху вниз): защита, двигатели, грузовой отсек (левый - для космоса, правый - для планеты).

8. Два прямоугольника - радар (левый - "X/Y", правый - "Y/Z").

9. (Слева направо) таймер, спидометр, датчик ускорения, альтиметр-дальномер (высота над планетой или расстояние до объекта), датчик запаса топлива.

ИФК: Наш корреспондент задает следующие вопросы по этой игре:

1. Как заправить корабль?

2. Как совершить перелет?

3. Зачем все это нужно?

ИФК: Несколько слов об играх прислал Сороченко Сергей Владимирович из г. Норильска.

КОРР: По поводу игры "LEGIONS OF DEATH". Это, мягко говоря, странная игра. Не советую приобретать версию игры, взломанную Rajsoft. В этой версии компьютер "сокращает" потопленные корабли. Поэтому Вам вряд ли удастся доказать, что Вы потопили 16 кораблей, а не 4.

В игре есть "жучок", который, видимо, является следствием неполной "проигровки" программы авторами. Этот "жучок" заключается в том, что курс корабля можно изменить в любом направлении, независимо от предыдущего. Например: корабль шел на запад. Курс его допустимо изменять на северо-запад или на юго-запад. Если кораблю дать приказ двигаться, например, на северо-запад, затем выйти из этого меню и, не делая хода, опять войти в меню курса, то теперь корабль можно двигать куда угодно: на запад или северо-запад, на север (!) и т.д. Таким образом можно развернуть корабль за один ход на 180 градусов, причем на полной скорости и на одном месте.

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

Прошу совета по игре Ring World. Где можно пополнить защитную энергию? Ни на одном из спутников ее не дают, а лишь ремонтируют и заправляют корабль, да еще на четвертом спутнике Юпитера дают атомную бомбу. Правда, у меня есть POKES (POKE 39417,0 - топливо, POKE 39543,0 - защита), но я редко играю в "обессмерченные" игры - неинтересно. И еще вопрос: что такое Mother Ship, силу которого можно узнать на экране вооружения?

По игре QUAZATRON. В прошлом письме я сообщал, что обнаружил два города - Bebatron и Commodo. Недавно обнаружил четвертый город - Amstrados. Commodo - Коммодор, Amstrados- Амстрад. А может, следующий -Spectrums?

ИФК: "Mother Ship" - это, повидимому базовый корабль (корабль-"матка"). А идея насчет городов, имеющих названия, бизкие к названию компьютеров по-видимому справедлива. От себя добавим, что и Bebatron - тоже имеет "компьютерный аналог" - это "BBC micro" (кстати, основной конкурент "Спектрума" на английском рынке в период 1982-84 годов).

ИФК: Судаков Михаил Станиславович из г. Воркута пополняет список адвентюрных игр - он приводит 6 новых названий:

1. RETURN TO EDEN (Level 9).

2. SEXMACHINE (The SSC-Team).

3. QUEST ROBE (Adventure International, Scott Adams).

4. ADVENTURELAND (тоже Scott Adams, по-видимому, Adventure International).

5. SEAS OF BLOOD (фирма не указана, но по стилю похоже на Adventure International).

6. ROBIN OF SHERWOOD (Adventure International).

КОРР: "И последнее. Я думаю, что название SILICON DREAMS в списке Садошенко (РЕВЮ-93, № 5-6, стр. 106) неверно, так как SILICON DREAMS - это не отдельная адвентюра, а название трилогии SNOWBALL - RETURN TO EDEN - THE WORM IN PARADISE".

ИФК: В заключение благодарим всех корреспондентов, приславших материалы из серии POKES. Их у нас такое количество, что нет никакой возможности вместить их в номер. Но этот колоссальный коллективный труд не

пропадет даром. Мы опубликуем ВСЕ присланные POKES в нашем специальном издании "ZX-ФОРУМ", о чем подробнее смотрите в конце этого номера.

* * *




СОДЕРЖАНИЕ:


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

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



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

Похожие статьи:
Вступление - Трошку о грустном.
Развлечения - шутки из Fidonet'a.
За бугром - Богатые тоже плачут?
Презентация - Авторские программы: Что может FORTH?
Перо - "Что необходимо для чтения Stumр`а?"

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