FORUM
В прошлом выпуске "ZX-РЕВЮ" мы объявили о создании совместно с Государственным Политехническим музеем АССОЦИАЦИИ ПОЛЬЗОВАТЕЛЕЙ ДОМАШНИХ КОМПЬЮТЕРОВ и Фонда "ФЛОП" (фонд литературы, описаний и программ) и читатели уже с интересом откликнулись на это начинание.
Нам пишут Д. Палтусов и В. Кутин из г. Екатеринбурга:
Здравствуйте, господа!
Мы хотим выразить вам глубокую признательность. Дело, начатое Вами позволит сформировать наконец-то в России рынок программ, периферии и литературы для машин класса "Spectrum". Теперь люди, использующие компьютер не только для игр, смогут рассчитывать, что "Родина их не забудет".
ИФК: Большое спасибо на добром слове. Мы передаем все письма с пометкой "ФЛОП" в Политехнический музей. Надо сказать, что это их инициатива в создании такого фонда. Мы же только оказываем посильную помощь в его становлении, пользуясь тем авторитетом, который "ZX РЕВЮ" имеет по стране.
И главное, что мы хотели бы видеть в итоге это не совсем рынок программ и периферии. Скорее нам видится будущее, как свободный рынок талантливых людей. А программы, устройства и прочее - это вроде как визитная карточка этих талантов, способных делать большие дела и получать достойную оплату за свой труд.
КОРР: Мы готовы предложить некоторые свои работы. Это годы работы и килобайты
кода:
1. Base - игровая программа (92).
2. Constructor - конструктор для создания игр (92).
3. Generator - редактор спрайтов (91).
4. Instal - дисассемблер (93).
5. Mega-gen - редактор спрайтов (93).
6. Multiedit+Utility - редактор мультфильмов (92).
7. Shareholder - игра (92).
8. Turbo-Copy - копировщик (93).
ИФК: Вашими разработками мы открываем раздел "Авторская программа" (см. соответствующий раздел).
КОРР: Вместе с тем, у нас есть несколько разработок, которые нельзя считать авторскими, поскольку мы просто адаптировали или доработали фирменные программы. Мы полагаем, что авторские права на них мы заявлять не можем. Может быть Вы что-то подскажете?
Это русифицированная и доработанная версия графического редактора "ARTSTUDIO", русифицированные аналоги игр серии DIZZY Оливера Твинса, доработанная версия АССЕМБЛЕРа "ZEUS".
ИФК: Дорогие друзья, мы не сильны в юриспруденции, но знаем, что кроме имущественного авторского права есть еще и неимущественное моральное. А это, как нам кажется, то, что всегда останется с Вами, если Вы знаете, что сделали большое и нужное дело, то почему бы об этом не знать и другим?
Никто не претендует на авторские права Шекспира, когда переводит "Ромео и Джульетту", но разве мы бы познакомились с его произведениями, если бы Маршак и Пастернак не приложили к делу свой талант и переводчика и поэта? И разве сегодня мы не чтим память и того и другого?
А знаете, сколько добавляют и отнимают режиссеры, когда ставят пьесу или снимают фильм по тому же Шекспиру? Конечно, имя Шекспира всегда стоит на афише, но выдающихся режиссеров народ тоже знает и помнит.
Нам кажется, что адаптация программ вещь безусловно нужная, полезная и стимулировать ее расширение желательно. Тем более, что большинство программистов начинают именно с этого и занимаются этим до тех пор, пока наберутся достаточного опыта для создания собственных программ.
Если создать вокруг адаптации ореол "второсортности", то можно сильно подорвать желание будущих творцов двигаться вперед, что-то изучать, создавать и творить. Интересы нашего общего дела от этого только пострадают. Поэтому мы думаем, что для авторских адаптации надо ввести свой раздел, что мы и сделаем.
Поэтому пожалуйста пришлите "объективки" на Ваши адаптации (название, автор, дата и т.п.) и мы включим их в раздел.
Нам пишет Скворцов Владимир Николаевич из города Чебоксары:
Ассоциация пользователей домашних компьютеров - это как раз то, что надо, это здорово! Ведь сколько любителей компьютеров предоставлены сами себе. И у каждого есть свои находки, свои открытия в любимых программах и компьютерах. И как часто хочется поделиться со своими единомышленниками находками и открытиями. Поэтому готов сотрудничать по любым вопросам, связанным с деятельностью Ассоциации.
Нам пишут из г. Ташкента:
Привет, ИНФОРКОМ!
Мы, Сметанин Юрий и Ильичев Андрей, проведя некоторые исследования, хотели бы внести свой небольшой вклад в досье игры ELITE. К сожалению, мы не получаем "ZX-РЕВЮ" за 1993 год, а хотелось бы, поэтому не знаем, может быть эта работа кем-то уже сделана.
ИФК: Сейчас, когда работа почты стабилизировалась, мы вновь принимаем на себя ответственность отправлять "ZX РЕВЮ" за пределы России и подписку от читателей из республик СНГ принимаем и на 93-ий год и на 94-ый, хотя, правда, для них это стоит существенно дороже. Мы надеемся, что наши читатели скооперируются, ведь "синклеристы" не водятся поодиночке, а ведут социально-активный образ жизни и выписывать "РЕВЮ" они смогут.
КОРР: ... Итак, мы выяснили значение почти всех кодов в символьном наборе программы. (Список кодов прилагается).
ИФК: Сведений о полном исследовании кодов к нам не поступало, хотя Вы вероятно знаете о том, что Д.П. Шилин проводил исследование кодировки слогов текстовых сообщений (ZX-РЕВЮ N5,6 1992г.)
КОРР: ... Значение некоторых кодов, а именно 2,3,4,127 выяснить не удалось. При попытке их распечатать программа "зависает", а некоторые коды 7,10,95... не имеют печатного символа. Возможно это какие-то управляющие коды.
Интересны коды 163,167,192. Их значения непостоянны. На место знака (#) вставляется имя планеты, на которой Вы находитесь. В коде 199 - Galactic Chart - дальше печатается номер галактики, в которой Вы находитесь.
Как видно из анализа набора кодов, абсолютно все сообщения состоят из 1-2 кодов, отсюда становится возможной русификация программы. Над этим мы сейчас и работаем.
Значение LAVE
FUEL:0.0 LIGHT YEARS CASH 7 0.0 CR
LL
MAY DAY! INVADED ON
EQUIPMENT: : CLEAN : OFFENDER : FUGITIVE HARMLESS MOSTLY HARMLESS POOR AVERAGE ABOVE AVERAGE COMPETENT DANGEROUS DEADLY
--- ELITE --PRESENT FUEL LEAK
| 32 38
| символы | псевдографики
Совпадает со стандартным набором Графика
? (вопросит. знак) _ (подчеркивание) Совпадает со стандартным алфавитом Графика
FRONT
REAR
LEFT
RIGHT
ENERGY LOW
RIGHT ON COMMANDER
EXTRA
PULSE LASER BEAM LASER FUEL MISSILE
LARGE CARGO BAG E.C.M. SYSTEM EXTRA PULSE LASERS EXTRA BEAM LASERS FUEL SCOOPS ESCAPE POD ENERGY BOMB ENERGY UNIT
115 |
DOCKING COMPUTER |
116 |
GALACTIC HYPERSPACE |
117 |
MILITARY LASER |
118 |
MINING LASER |
119 |
|
120 |
INCOMING MISSILE |
121 |
ENERGY |
122 |
GALACTIC |
123 |
DOCKING COMPUTER ON |
124 |
ALL |
125 |
CLOAKING DEVICE |
126 |
COMMANDER |
127 |
|
128 |
AL |
129 |
LE |
130 |
XE |
131 |
GE |
132 |
ZA |
133 |
CE |
134 |
BI |
135 |
SO |
136 |
US |
137 |
ES |
138 |
AR |
139 |
MA |
140 |
IN |
141 |
DI |
142 |
RE |
143 |
A |
144 |
ER |
145 |
AT |
146 |
EN |
147 |
BE |
148 |
RA |
149 |
LA |
150 |
VE |
151 |
TI |
152 |
ED |
153 |
OR |
154 |
QU |
155 |
AV |
156 |
ТЕ |
157 |
IS |
158 |
RI |
159 |
DN |
160 |
FUEL SCOOPS ON |
161 |
CHART |
162 |
GOVERNMENT |
163 |
DATA ON (#) |
164 |
INVENTORY |
165 |
SYSTEM |
166 |
PRICE |
167 |
(#) MARKET PRICES |
168 |
INDUSTRIAL |
169 |
AGRICULTURAL |
170 |
RICH |
171 |
AVERAGE |
172 |
POOR |
173 |
MAINLY |
174 |
UNIT |
175 |
VIEW |
176 |
QUANTITY |
177 |
ANARCHY |
178 |
FEUDAL |
179 |
MULTI-GOVERNMENT |
180 |
DICTATORSHIP |
218 |
FIREARMS |
181 |
COMMUNIST |
219 |
FURS |
182 |
CONFEDERACY |
220 |
MINERALS |
183 |
DEMOCRACY |
221 |
GOLD |
184 |
CORPORATE STATE |
222 |
PLATINUM |
185 |
SHIP |
223 |
|
186 |
PRODUCT |
224 |
GEM STONES |
187 |
LASER |
225 |
ALIEN ITEMS |
188 |
HUMAN COLONIAL |
226 |
Cr |
189 |
HYPERSPACE |
227 |
LARGE |
190 |
SHORT RANGE CHART |
228 |
FIERCE |
191 |
DISTANCE |
229 |
SMALL |
192 |
HYPERSPACE (#) |
230 |
GREEN |
193 |
HYPERSPACE RANGE! |
231 |
RED |
194 |
MAY DAY! CORIOLIS IN DANGER ! |
232 |
YELLOW |
195 |
LIGHT YEARS |
233 |
BLUE |
196 |
TECH. LEVEL |
234 |
BLACK |
197 |
CASH |
235 |
HARMLESS |
198 |
BILLION |
236 |
SLIMY |
199 |
GALACTIC CHART |
237 |
BUG-EYED |
200 |
TARGET LOST |
238 |
HORNED |
201 |
MISSILE JAMMED |
239 |
BONY |
202 |
RANGE |
240 |
FAT |
203 |
ST |
241 |
FURRY |
204 |
QUANTITY OF |
242 |
RODENT |
205 |
SELL |
243 |
FROG |
206 |
CARGO |
244 |
LIZARD |
207 |
EQUIPT |
245 |
LOBSTER |
208 |
FOOD |
246 |
BIRD |
209 |
TEXTILES |
247 |
HUMANOID |
210 |
RADIOACTIVES |
248 |
FELINE |
211 |
SLAVES |
249 |
INSECT |
212 |
LIQUOR/WINES |
250 |
AVERAGE RADIUS |
213 |
LUXURIES |
251 |
COM |
214 |
NARCOTICS |
252 |
COMMANDER |
215 |
COMPUTERS |
253 |
DESTROYED |
216 |
MACHINERY |
254 |
RO |
217 |
ALLOYS |
255 |
UNIT QUANTITY |
Коды, отмеченные знаком ('), вызывают "зависание" программы при попытке их вывести на печать. В символах 163,167,192 на место знака (#) вписывается имя планеты, на которой Вы находитесь.
Символы 7, 10, 11, 13, 14, 35, 119 не имеют печатного обозначения и печатаются как пробел.
До свидания! Успехов Вам!
* * *
Нам пишет Сороченко Сергей Владимирович из г. Норильска:
Здравствуйте, редакция "ZX РЕВЮ"! Я большой поклонник компьютера "SPECTRUM" и Вашего журнала. Я занимаюсь исследованием сложных имитаторов, адвентюрных и стратегических игр. В этом письме я хочу предложить мое описание игры FIGHTER BOMBER, сделанной фирмами Vector Graphics и Activision.
FIGHTER BOMBER - это имитатор самолета-штурмовика. В этой игре прекрасная графика, идентичная графике программы HARD DRIVING, сделанной фирмой DOMARK.
ИФК: Огромное спасибо Сергей Владимирович и за теплые слова и за Ваш труд. Вашу работу мы напечатали в разделе "Советы экспертов". Вы знаете, что мы очень любим программы именно этих жанров и попали в самое сердце.
В Вашей работе нам особенно понравилось то, что Вы не просто "раскрутили" порядок работы с программой, но и критически обсудили некоторые особенности ее работы. Всегда приятно иметь дело с творческим подходом.
КОРР: ... В заключение примите, пожалуйста, мои поправки к Вашему описанию игры TOMAHAWK. Я не знаю, что на карте обозначено цифрами, но это не Ваши базы, так как при выходе на них я не обнаружил на земле ничего, а при посадке по координатам никакого ремонта не было. Ремонт, заправку и перевооружение производят только на вертолетных площадках, которых в каждом квадрате четыре.
И еще. Повреждение TADS - это не повреждения хвостового оперения, а повреждение прибора, показывающего, какая цель находится в перекрестке прицела.
ИФК: Ну вот, Вы нас и прокололи. А может, мы специально такую пенку сделали? Вдруг они там в Пентагоне тоже "ZX-РЕВЮ" читают? Может, мы хотели оставить полки "Томагавков" без ремонтной базы, а теперь они обо всем догадаются. Ну да ладно, сдерем с них пару сотен миллионов ихних папуасских долларов за это "ноу-хау" и купим себе новый джойстик.
КОРР:... В следующем письме я хочу предложить описание игры ОСЕАN CONQUEROR фирмы Digital Integration.
ИФК: Огромное спасибо. От души поиграем, как раз и новый джойстик опробуем.
Военнослужащий Похилюк М.П. из г. Славгород Алтайского края задает следующий вопрос:
"В нашем небольшом городе образовалось нечто вроде клуба любителей "Спектрума" и у некоторых его членов имеются компьютеры с ПЗУ "ТУРБО-90", у большинства же, как и у меня, ПЗУ стандартное. Преимущества "ТУРБО-90" налицо, и мы хотели бы иметь такое у себя, но специалистов в этой области у нас в городе мы не знаем, а вот сможем набрать программу, которая делала бы то же самое, что ПЗУ "ТУРБО-90", но работала бы где-нибудь в свободной области ОЗУ мы смогли бы".
ИФК: Сделать то же самое, что делает встроенный монитор этой прошивки в принципе можно. Можно "вытащить" монитор из ПЗУ и расположить его в ОЗУ, изменив адресацию в машинных кодах. Но это теряет смысл, так как любая программа-монитор, расположенная в ОЗУ, может находиться как раз в той же области памяти, в которой находится исследуемая программа. Ведь заранее совершенно неизвестно, какая область памяти останется "свободной" после загрузки интересующей программы. Прелесть "ТУРБО-90" в том и состоит, что монитор не в ОЗУ, а в ПЗУ. При этом все ОЗУ свободно и при помощи монитора, находящегося в ПЗУ Вы можете "забираться" в любые уголки памяти и исследовать любые программы, загруженные в ОЗУ. Извлекать же монитор из ПЗУ для размещения его в ОЗУ нет необходимости, ведь это не самый лучший монитор. Существует достаточно много программ-мониторов, выполняющих все те же функции, что и монитор "ТУРБО-90" плюс еще много других. Например, "MONS-4" ("MONS-3") из пакета программ "DEVPAC". Это довольно старая программа, но она до сих пор является непревзойденной по своим возможностям. "MONS", кстати, устроен так, что может работать в любых адресах. То есть, если Ваша исследуемая программа расположена в верхней части памяти, Вы можете загрузить "MONS" в нижнюю часть и наоборот. К тому же, при помощи монитора "ТУРБО-90" Вы не имеете возможности дизассемблирования программы, а это очень немаловажная функция при исследовании кодов программ.
К сказанному следует добавить еще один любопытный факт. В свое время мы сообщали о мониторе, работающем в ОЗУ, который находится в игре "EQUINOX". По своим функциям и управляющим клавишам он поразительно похож на монитор "ТУРБО-90" (или монитор "ТУРБО-90" похож на монитор "EQUINOX"). Если Вас заинтересует эта информация, то подробности смотрите "ZX-РЕВЮ" N11-12, за 1991 г. на стр. 254.
И, наконец, последнее. Мы очень рады, что в Вашем городке образовалось "нечто вроде клуба любителей "Спектрума". Знаем мы, что то же самое есть и в сотнях других больших и малых городов. Мы много раз уже писали, что мы приветствуем неформальное объединение синклеристов, что это одна из наших главных целей, что мы всегда готовы абсолютно бесплатно и без очереди давать объявления о создании и работе клубов, но почему-то никто этим не пользуется. Разве наши читатели не хотят наладить связь между клубами напрямую? Разве это не нужно? Конечно, кое-какую информацию о своем компьютере Вы получаете из "ZX-РЕВЮ", но мы ведь не можем объять необъятное. Объединяйтесь, обменивайтесь информацией напрямую, мы не боимся конкуренции, а наоборот окажем любую помощь для свободной циркуляции информации между клубами.
По поводу ПЗУ "ТУРБО-90" пришло еще одно письмо от нашего читателя из Ульяновска - Силантьева М.
Он исследовал эту прошивку методом "теневого ПЗУ". Таким способом это делать очень удобно, если в Вашем компьютере предусмотрена такая возможность - теневое ПЗУ, загружаемое в ОЗУ. Для тех, кто не знаком с этим, сообщаем, что такая возможность есть у компьютеров, имеющих две "линейки" микросхем памяти - отдельно основное ОЗУ и отдельно экранная память. При этом, если после рестарта компьютера, сделать PEEK ADR, где ADR - 0... 16383, то читаться будет ПЗУ, но если подать команду POKE ADR, то будет сделана запись в область памяти ОЗУ, являющейся "теневой" для ПЗУ (в данный момент она неактивна и никак себя не проявляет). Можно даже сделать SAVE "SYS"CODE 0,16384 на компьютере, имеющем, например, монитор "ТУРБО-90". А потом загрузить его в свой компьютер, (имеющий стандартный монитор) командой LOAD "SYS"CODE 0. Для того, чтобы переключиться на эту "теневую" прошивку, наш читатель Силантьев М. пользуется тумблером. В "Новосибирском" варианте такое переключение выполняется командой OUT 15,0. При этом переключается триггер, отключающий основное ПЗУ и подключающий теневую область ОЗУ. При этом активным становится загруженный монитор, а основное ПЗУ - пассивным. Теперь можно воспользоваться дополнительными возможностями, заложенными в этой прошивке. Для того, чтобы переключиться обратно на основное ПЗУ, надо опять выполнить команду OUT 15,0. Определить, какое ПЗУ в данный момент является активным, можно, например, по начертанию символов: В "ТУРБО-90" оно несколько отличается. Можно подать команду NEW, тогда будет выведено фирменное сообщение об используемой версии.
После этого отступления мы возвращаемся к письму нашего корреспондента.
КОРР: "У меня обнаружилась одна неприятность. Первые 5 байтов теневого ПЗУ самопроизвольно изменяются после первого же обращения к ним. Если попытаться вывести значение этих ячеек командой:
FOR f=0 ТО 10: PRINT PEEK f: NEXT f
то первые 5 байтов имеют нулевые значения. А если поочередно давать команды:
PRINT PEEK 0 PRINT PEEK 1
то печатаются неизвестно откуда взявшиеся числа. При попытке изменить их они самопроизвольно восстанавливаются. Дизассемблирование этих первых 5 байтов дает какую-то абракадабру. Из за этого неправильно обрабатывается подпрограмма RESET (RANDOMIZE USR 0)
ИФК: Мы проверили то, о чем пишет наш читатель на "Новосибирском" варианте Спектрума и убедились, что этот компьютер ведет себя в точности так же. В чем же тут дело? Может, кто-нибудь из читателей сталкивался уже с подобной проблемой? Или хотя бы знает причину этого явления? Если такие есть, откликнитесь, пожалуйста.
Дорогие читатели. Вы помните заметку "МАЛЕНЬКИЕ ХИТРОСТИ" в 5-6 выпуске "РЕВЮ" за этот год, где на стр.96 было опубликовано сообщение Радзевича А. А. из г.Нальчика? Оно касалось любопытных эффектов, возникающих при исполнении оператора DRAW. Пока никто не ответил на вопрос "Как это происходит?" Но мы со своей стороны провели небольшой розыск по зарубежным журналам и оказалось, что этой проблемой занимаемся не только мы. Вот что мы нашли в июньском номере журнала "SINCLAIR USER" за 1986 г. (No. 51) на стр. 15. Там приводится несколько иной вариант программы, воспроизводящей такие эффекты.
5 LET n=1
10 PAPER 0: INK 4: BORDER 0: CLS 20 FOR a=51 TO 10000 STEP 100 25 LET n=n=0 30 PLOT 65, 30
40 DRAW INVERSE n; 120, 120, PI*a 50 NEXT a
Были и другие публикации в этом журнале, например N5,1986, но суть не меняется -все это разные модификации той же идеи. К сожалению, намеков на причины происходящих на экране эффектов там нет. Итак, проблема остается открытой, хоть и приобрела международный характер.
Нам пишет Лярский С.С. из пос. Березовский Свердловской обл:
Уважаемые коллеги!
Разрешите мне поделиться с Вами своими соображениями по поводу дешифрации портов в "Ленинграде". Если человек впервые собирает такую конструкцию как компьютер и еще если он его сумеет довести до того состояния, в котором он мало-мальски работает, -этот человек, конечно, радуется тому, что у него есть компьютер, что игрушки играются, что программы работают и т. д. Но это только первое время. Дальше наступает непреодолимое желание усовершенствовать свою машины, расширить ее возможности, а если еще у Вас такая "сырая" штуковина, как первый выпуск "Ленинграда" - бери в руки паяльник, напрягай мозги и "вперед с песней".
Усовершенствований хватит на всю оставшуюся жизнь. Это, конечно же, не упрек авторам Ленинградской версии.
Очевидно, их задачей было сделать наиболее простую, дешевую и более-менее "Спектрум"-совместимую машину. Возможно, им и удалось решить задачу простоты, но что касается дешевизны и совместимости - это большой вопрос. Вот и мне, после сборки и наладки такого "Ленинграда", пришлось столкнуться с тем, что не все игры, а конкретно "BRUCE LEE" работают от джойстика. Я стал советоваться с друзьями и те, кто раньше меня собрали и немного освоились с этим компьютером, посоветовали подать логический "0" на три старших разряда порта джойстика. Но после того, как я это проделал, некоторые игры, например, "EXOLON", зависали после загрузки и запуска Бейсик-загрузчика. Тогда я стал разбираться с Монитором, зашитым в ПЗУ и понял, что при существующей дешифрации портов в "Ленинграде" таких накладок мне не избежать. Исходя из этих соображений и еще прочитав разработку НТК "ПЛЮС" по интерфейсам "Спектрума", родилась схема, которую я Вам и предлагаю (приведена на следующей странице).
В своем "Спектруме" я исключил две микросхемы 555КП1, которые использовались для чтения клавиатуры, магнитофона и джойстика. Микросхему 555ТМ9 я оставил как выводной порт с адресом "FE", добавив две микросхемы 555АП5 для чтения клавиатуры и магнитофона и с учетом дальнейшего расширения возможностей моего компьютера добавил параллельный порт 580ВВ55, включив его по рекомендациям НТК "ПЛЮС", только с более жесткой дешифрацией портов. В этой схеме я использовал свободные инверторы "Ленинграда", а также элементы, которые выделяли сигналы IORD' и IOWR' (D14.1, D14.4).
Сигналы по схеме:
C2 - запись в порт "FE", СЗ - чтение порта "FE", сигнал C1 - вспомогательный.
Если не устраивает жесткая дешифрация, можно исключить элементы D41.1 и D42.1 и тогда вместо сигнала C1 на входы 4 - D42.2 и 12 - D42.4 подать сигнал IORQ'. Адреса внешних портов МС 580ВВ55 будут следующие:
"1F" - чтение, запись порта "А'(порт джойстика);
"3F" - чтение, запись порта "В";
"5F" - чтение, запись порта "С";
"7F" - регистр управляющего слова.
Вот, пожалуй, и все по поводу этой схемы.
ИФК: Нас, как и большинство наших читателей, очень интересует все, что касается совершенствования компьютеров в плане повышения их совместимости с фирменными моделями. Таким работам мы даем "зеленую улицу" и принимаем их с особой благодарностью.
Приносим свои извинения нашим читателям за нестандартный вид схемы (мы уже говорили о сложностях исполнения графических работ в текстовом редакторе), а для работы в графической среде у нас не хватает кадров и времени. Так, например, инвертированные сигналы вместо общепринятой черты над обозначением сигнала у нас отмечены знаком (') - апостроф.
A1
&
IORQ'
C1
D41.2
D0 3
D14.4
C1 |
D1 |
4 |
|
D2 |
6 |
|
D3 |
11 |
|
D4 |
13 |
WR' |
D5 |
14 |
C2 |
C2 |
9 |
3 C3
A8 2
D0 D1 |
RG |
Q0 |
D2 |
|
Q1 |
D3 |
|
Q2 |
D4 |
|
Q3 |
D5 |
|
Q4 Q5 |
C |
|
|
BRD0 BRD1 BRD2 ■ T.OUT SOUND
D46
D0 34
KEMPSTON
A5 9
A6 8
A0 A1
D41 - 555ЛА1 D42, D14 - 555ЛЛ1 D43,D45 - 555АП5 D44 - 555ТМ9 D46 - 580 ВВ55 D34 -555ЛН1
D45
A9 4
A10 6
A11 8
A12 11
A0 A1 |
> |
B0 |
A2 |
|
B1 |
A3 |
|
B2 |
A4 |
|
B3 |
A5 |
|
B4 |
A6 |
|
B5 |
A7 |
|
B6 |
E01' |
|
B7 |
E02' |
|
|
-o+5V
D43
19
A0 A1 |
> |
B0 |
|
A2 |
|
B1 |
|
A3 |
|
B2 |
|
A4 |
|
B3 |
|
A5 |
|
B4 |
A6 |
|
B5 |
|
A7 |
|
B6 |
E01' |
|
B7 |
E02' |
|
|
A13 13
A14 15
A15 17
18 D0 |
C3 1 |
16 D1 |
ь |
14 D2 |
12 D3 |
C1 |
9 D4 |
7 D5 |
5 D6 |
A0' |
3 D7 |
C3 |
A7 |
RESET' |
D42.3
D42.4
10
9
D34.6 31
A5
9
85
&
D34.4 A0 9 1 8
tZ-8
I5X10K
К D0 ■ К D1 К D2 К D3 К D4
* * *
Нам пишет Стас Рубцов из г. Улан-Удэ.
Здравствуйте, Инфорком!
Большое спасибо за очень нужный и интересный журнал. Подписчиком я не являюсь, но регулярно пользуюсь Вашими разработками и работаю с журналом. Беру я его у знакомого, "товарища по Спектруму", если можно так сказать. Он является Вашим подписчиком с самого первого выпуска. Так что мне, можно сказать, повезло.
ИФК: Спасибо на добром слове, Стас. Мы очень рады, что у Вас есть хороший друг. На Вашем примере еще раз посоветуем всем, кто нас читает, объединяться и еще раз объединяться. Новые повышения цен на печать в конце этого года поставят Вас перед необходимостью существенных затрат на вздорожавшее "РЕВЮ" и только единение поможет выжить и Вам и нам.
КОРР: ... Работаю я на ZX совместимой машинке "Дельта-С". У нас в городе "Дельты" разошлись по рукам за две недели - по самым предварительным сведениям - три партии по 800 штук. Были ли еще партии, я не знаю. Во всех Ваших журналах нет ни одного слова о компьютере "Дельта-С" и это может говорить либо об ограниченном его распространении либо о его полной совместимости с фирменной машиной. Ни то ни другое не соответствует действительности. "Дельта-С" распространена и в Томске, и в Иркутске и в других городах, в Москве я видел в фирменном "Московском" (на площади трех вокзалов). Работаю я с "Дельтой-С" год, и хочу сказать несколько слов об этой машинке. По моим сведениям, "Дельта-С" выпускается по меньшей мере на трех заводах. У меня вариант Курского завода (305040, Курск, ПО "Прибор"). Оформление машины не очень хорошее, в частности, "жесткая" контактная клавиатура, не очень качественно сделан вывод звука, неважный внешний вид. Однако технически машина прекрасная. Имеет встроенный ZX-интерфейс II, буферизированный выход на ZX-принтер. Несовместима "Дельта-С" с фирменным "Спектрумом" только в одном. При наличии в программе вариаций на тему "POKE 23570,16" - вывод заголовков типа "BYTES..." и др. на принтер, из-за ошибки в схеме не проходит номер с подпрограммой ПЗУ "COPY-LINE" по адресу 0F0C-0F13 (COPY-L-2), т.е. если принтер не подключен, программа "виснет".
Выход очень прост. Надо "подключить" принтер, дать ответ из принтера по линии "BUSY" - "занят", что принтер не готов к приему информации. Но так как не у всех есть фирменный ZX-принтер, советую всем столкнувшимся с этой проблемой просто подать на вход "BUSY" уровень "ЛОГ 0". Я поступаю так: соединяю на разъеме вывод А32 "ГТ" (готовность принтера), соответствующий сигналу "BUSY" с выводом А5^6) т.е. с общим проводом, через резистор 4.5 кОм, при этом не надо разбирать компьютер. После такой переделки все программы идут, как на фирменной машине.
XI
FT
A31
A6 A5
|
PD6 |
|
PD5 |
|
PD3 |
|
-- |
|
сброс |
|
A09 |
|
ПЗШ |
|
ЧТ ПЗУ |
|
0V |
|
0V |
>>
Краевой разъем платы.
Звук можно вывести на усилитель, для этого на свободном месте (на задней стенке компьютера) монтируем гнездо СГ-5, вскрываем компьютер, находим единственный проводник, ведущий к звукоизлучателю (от транзистора на плате) и в тоже самое место припаиваем минусовый вывод конденсатора К50-3 10 мкФ х 12 V, плюсовый вывод припаиваем к контактам "1" и "4" на СГ-5, а к контакту "2" на том же разъеме припаиваем "массу" компьютера (перемычку от контакта "2" разъема "+5В" либо от контакта "2" разъема RGB).
Хотелось бы, чтобы изготовители "Дельты-С" учли эти вопросы в своих разработках.
ИФК: От всей души присоединяемся к этому пожеланию и думаем, что независимо ни от чего Ваши рекомендации помогут многим любителям повысить совместимость своих машин.
КОРР: ... Я прошу извинить меня за то, что получилось так, как будто у "Дельты-С" есть существенные недостатки. Это прекрасная машина и это видно даже по печатной плате, жалко только, что к нему не прилагается принципиальная схема. Может быть его производители учтут и этот момент?
По вопросам совместимости различных версий "Спектрума" нам пишет из Йошкар-Олы Москвин Денис Егорович:
Адресую свое письмо в раздел "Форум" журнала "ZX-РЕВЮ", так как хочу поделиться своим открытием в области совместимости компьютера "Пентагон 48" с фирменным "ZX-Spectrum".
В последнее время 48-е машины вытесняются 128-ми, но мне еще раз хотелось бы остановиться на 48-м "Пентагоне".
В ваших журналах опубликовано множество статей, посвященных совместимости "Пентагона", но среди них не оказалось статьи о том, почему не работают на "Пентагоне" такие всем известные программы, как "Cobra Stalone", "Renegade-1", "Str. Hawk" и т.п. Мне бы хотелось, чтобы этот пробел был восполнен.
Эти программы и им подобные не "идут" потому, что в "Пентагоне" не коммутируется сигнал WAIT (ожидание). Этот сигнал, как оказалось, в фирменном компьютере используется для разрешения конфликтов памяти, вызванных регенерацией нижней области ОЗУ, где хранится содержимое экрана.
Скоммутировать сигнал WAIT можно с помощью триггера. В "Пентагоне" это микросхема ТН2 (DD11), расположенная в нижней части платы компьютера рядом с микросхемой ЛП5, с которой выводятся цвета (R, G, B) и яркость (Y).
Если сигнал WAIT подключить согласно приведенной ниже схеме, то можно будет смело загружать "Renegade", т.к. она будет работать!
DD 11.2
STT 4 <-
2
3
WAIT (Z80)
5
Рис. 2
Здесь на схеме:
STT - это вывод 12 м/с DD1.3 (ЛН1 - на плате она одна);
RAM' - это вывод 11 DD18.1 (ЛА3 - ее легко найти, т.к. именно к выводу 11 подключена перемычка, уходящая под процессор);
WAIT - это вывод 24 микропроцессора.
Таким образом, если подытожить все исправления "Пентагона", опубликованные в Ваших журналах, то "пентагоновская" версия 48-го станет полным аналогом фирменного SPECTRUMa.
Данная доработка опробована на 5-ти компьютерах. Опыт показал, что при подключении сигнала WAIT к процессорам КР 1858 ВМ1 (советский аналог Z80) программы Cobra и Renegade все равно не работают. Видимо, это происходит из-за неправильной системы прерываний у данного процессора.
Нам пишет Гасин Руслан Владимирович из Магадана.
Здравствуйте, уважаемая редакция!
Я являюсь недавним Вашим читателем (подписчиком). Основной целью подписаться на Ваш журнал было желание научиться работать с машинными кодами, описание программ (в основном системных), взлом (а вернее техника защиты) программ.
Ну что ж. В принципе я удовлетворен. Мне понравилась информация, представленная Михаиленко В.С. Все это хорошо. Но я думаю, что многие согласятся со мной.
Я предлагаю хоть чуть-чуть рассмотреть технику защиты программ на диске (в системе TR-DOS). Конечно, можно заявить, что с дисководом работают не так уж и много пользователей ZX-SPECTRUM. Я сам только подумываю о нем (дисководе). Но я и не требую доскональных данных о защите (на дискетах). Отталкиваясь от Ваших же принципов (дать общую методику, идею, направление, а люди сами додумают), можно дать лишь общие сведения. Например, такую. На диске есть директорий, он "говорит" о длине, расположении файлов и т.д. Так почему бы не сделать так, чтобы на диске был файл, но операционная система не могла ни вывести его название, длину в директорий, ни запустить на выполнение без разрешения пользователя. Конечно же, все это выполнимо, и что-то можно сделать? Но
не хватает сведений о TR-DOS (ее переменных и т. д.)
Естественно, это не совсем защита от взлома, а скорее от несанкционированного доступа к программе.
Очень прошу, напечатайте мое письмо. Вдруг, кто-то откликнется и расскажет, что знает. А от Вас, если это произойдет, зависит только вопрос - напечатать или нет. Но я думаю, что одну страницу не грех будет отдать.
Надеюсь, что мое письмо не оставит Вас равнодушными.
ИФК: Уважаемый Руслан Владимирович, здесь двух мнений быть не может. Голосуем "За" единогласно и безусловно дадим все, что сочтут нужным сообщить наши читатели. Но, кажется на горизонте появилось кое-что поинтереснее. Мы имеем в виду операционную систему IS-DOS. Мнение знакомых специалистов, опробовавших ее, единодушное - ЭТО БЛЕСК, который действительно превращает "Спектрум" в полупрофессиональную ЭВМ. Впрочем, пока СТОП... мы находимся в начале пути, информация пока скудна, но не исключено, что следующий год пройдет под знаком именно этой системы.
Нам пишет Алексей Жильцов из Самары:
Я хочу сообщить Вам об особенности игры "Death Wish-3". Если встать в доме под окно и нажать "W", то на экране появится план улицы и прицел, двигая которым и стреляя, можно расстреливать пробегающих бандитов. Только нужно следить, чтобы сзади никто не подошел, иначе будут проблемы.
Многие наши читатели жалуются, что мы мало внимания уделяем аппаратной части. Это так, но если Вы вспомните, мы уже писали, что у истоков "ИНФОРКОМа" и "ZX-РЕВЮ" стоял коллектив по своей квалификации скорее преподавательский, чем технический. Поэтому аппаратные вопросы мы всегда отдавали другим. Сначала нам помогал в этом НТК "ПЛЮС", а сейчас, когда эта фирма увы больше не работает, мы можем только опираться на Ваши письма, уважаемые читатели. Писем с программами или программными вопросами намного больше, чем с аппаратными. И тем ценнее для нас каждое письмо, в котором так или иначе затрагиваются аппаратные проблемы. И коль уж сегодня мы дали некоторые рекомендации по возможным доработкам "Дельты-С", то очень кстати будет и сообщение нашего читателя из г.Норильска - Галушака Александра. Вот что он пишет:
"В Норильске много владельцев ПК "Дельта-С", но многим из них не нравится, что в "Дельте" нет порта KEMPSTON-джойстика. Я подозреваю, что в СНГ существует немало типов компьютеров без KEMFSTON-джойстика.
Я подключил джойстик к "Дельта-С" своему товарищу и хочу поделиться опытом с читателями "ZX-РЕВЮ".
Собран интерфейс KEMPSTON-джойстика на двух микросхемах, установленных на небольшой печатной плате, и соединяется с Z80 тринадцатью проводами, включая питание.
Я обратил внимание, что на "Дельте-С" вместо двух микросхем 2764 используется одна микросхема 27128, а место для второй микросхемы - свободно. Поскольку на ПЗУ выводятся почти все необходимые для интерфейса джойстика сигналы (кроме IORQ и RD), то я разработал печатную плату в расчете на то, что она будет установлена на место неиспользуемой микросхемы 2764 (ПЗУ-1) и соединяться с основной платой компьютера короткими гибкими проводами. Расположенный таким образом интерфейс размещается внутри корпуса компьютера ничему не мешая. С разъемом KEMPSTON-джойстика дополнительная плата соединяется шлейфом (6 жил) необходимой длины.
л
+
5 |
15 |
7 |
14 |
2 |
9 |
9 |
12 |
11 |
7 |
14 |
8 |
DD1 К561ЛК1 DD2 К555ЛЛ1 R1-R5 10K R6 560 ОМ D1-D2 КД521(КД522)
DD2
ВЫВОДЫ Z80
34
Рис. 1
Возможны и другие решения. В частности, если в ПК используются 2 микросхемы 2764, то можно использовать эту же печатную плату, расположив ее над процессором Z80, и соединив непосредственно с выводами Z80.
Данная схема в наладке не нуждается, при использовании исправных компонентов, и доступна для повторения для любого радиолюбителя".
ИФК: Александр готов ответить на любые вопросы, возникшие при изготовлении интерфейса и дает свой адрес:
663305, г.Норильск Красноярского края, ул. Талнахская, дом 27, кв. 139, Галушак Александру.
Просьба вкладывать конверт с обратным адресом.
КОРР: "Мои предложения бескорыстны, просто я надеюсь найти людей, с кем я мог бы обмениваться информацией по "ZX-Spectrum", литературой и программами.
Еще, если есть такие вопросы, могу выслать рисунок печатной платы для ZX-LPRINT-3 (описание которого было в "РЕВЮ-91" N 7-8). Этот интерфейс принтера мною собран и благополучно работает уже год".
ИФК: Спасибо, уважаемый читатель за интересную информацию, за дружескую помощь тем, кто в ней нуждается. И нам, поверьте, было очень приятно узнать, что опубликованная у нас схема интерфейса принтера собрана и благополучно работает.
В работе с письмами наших читателей нередко один вопрос вызывает другой. Вот и сейчас так. Один наш читатель успешно решил проблему подключения джойстика, другой пытается найти подходы к подключению "мыши". Матвеев Ю.Н. из Кемеровской обл. просит откликнуться тех, кто может что-то подсказать по этой проблеме. Он также был бы рад познакомиться с целью переписки с "синклеристами", любящими заниматься доработками своих машин.
652692, Кемеровская обл. , Гурьевский р-н, с. Горскино, Матвееву Ю.Н.
В заключение передаем уважаемому корреспонденту пламенный привет от редактора раздела "К.Н." Матвеева Ю.А.
* * *
Как добро и зло, как плюс и минус не могут существовать друг без друга, так не могут существовать отдельно друг от друга вопросы защиты и взлома программ. Ситуация складывается примерно так. Появляются новые разновидности защиты, существующие какое-то время, затем они раскалываются, появляется литература на тему о защите и ее снятии. Новые варианты защиты разрабатываются уже на основе систематизированного материала по снятию защиты. Появляются новые, более изощренные способы взлома и процесс продолжается дальше, замыкая очередной виток эволюционной спирали. Кто сделает следующий ход в этой бесконечной игре?
Мы уже печатали материалы по защите программ, хорошо осознавая тот факт, что этим материалом пользуются как те, кто защищает свои программы, так и те, кто их после этого взламывает. Сегодня мы предлагаем материал, присланный Григорием Борисовичем Лупповым из города Кирова. На наш взгляд им как раз могут результативно воспользоваться разработчики защиты, в то же время для "взломщика" - здесь всего лишь общие фразы.
Вот что пишет наш корреспондент: "Я в общем-то серьезно "Спектрумом" не занимаюсь - больше спец по "Вектору 06Ц". Однако имею "Пентагон 48К" и с удовольствием читаю "ZX-РЕВЮ", когда удается выпросить его у знакомых "спектрумовщиков". В номере 12 за 1992 г. увидел статью по защите, а защита программ - дело одинаково актуальное для всех бытовых персональных ЭВМ в конфигурации с магнитофоном. Хочу предложить Вашему вниманию свой взгляд на этот вопрос.
В ходе долгих размышлений и поисков вариантов защиты программ для "Вектора", я пришел к выводу, что действительно, для магнитофонных версий ПЭВМ надежной защиты нет! Все способы защиты, которые существуют на "Спектруме", это своего рода искусные, красивые трюки авторов, крайне недолговечные. Эти трюки в целом проблемы не решают. Внешне это выглядит так: автор, петляя и изворачиваясь, как заяц-русак, старается сбить со следа волка-взломщика. Результат один - заяц погибает.
Нужно применять другой подход. Защита должна быть простая, относительно несложно ставиться, но самое главное - она должна быть трудоемкой для снятия и легко модифицируемой (на случай, если одну модификацию сняли).
Предлагаю классическую схему: основная программа в своем формате (отличном от стандартного), впереди идет закодированный загрузчик с декодировщиком в формате "Спектрума" и не обязательно с автозапуском.
Слабость схемы очевидна - декодер всегда можно просмотреть и разобраться в принципе его работы. Поэтому процесс декодирования должен включать в себя несколько основных положении.
1. Декодирование с использованием всего адресного пространства компьютера.
2. Декодирование с подвязкой по времени.
3. Перевод на декодированный загрузчик должен быть неочевидным (чтобы нельзя было вставить переход на взламывающую подпрограмму после декодировки), он должен быть включен в закодированный текст и декодироваться последним, то есть декодирование идет от старших адресов к младшим.
4. При декодировании используются псевдослучайные числа. В начале работы декодер забивает все свободное пространство ОЗУ (и видео-ОЗУ в том числе) псевдослучайными числами. Генератор таких чисел должен быть:
а) последовательным - это значит, что n-ое число можно получить только после получения всех предыдущих чисел;
б) параметрическим - это значит, что получаемая последовательность будет зависеть от параметров генератора, то есть генератор легко перенастраивается.
Числа в память должны заноситься не подряд, а либо через какое-то смещение (не равное 1) либо по случайным адресам (это лучше), например, первые два байта из генератора определяют адрес, третий байт - данные. Естественно декодер и загрузчик меняться не должны.
Затем декодер начинает непосредственно свою работу. Декодирование идет сверху -вниз. Для получения очередного байта над ним нужно проделать ряд операций с использованием данных из ОЗУ, адресуемых несколькими маркерами. Маркер - циклически бегающий по адресу декодера; маркер - циклически бегающий по всему ОЗУ и ПЗУ (кроме декодера и загрузчика); случайный маркер - обеспечивающий определенную защиту от резидентных взломщиков. Время-зависимые данные (регистр R или ячейка-таймер) обеспечивают защиту от эмулирования декодера пиратским взломщиком.
После декодирования управление передается на загрузчик. Так как содержимое памяти загрузчику известно, то он может загружать (декодировать) программу, используя содержимое памяти (однако снижается при этом технологичность и модифицируемость защиты). Загрузчик должен иметь гибкую структуру, чтобы загружаемая программа легко перехватывала управление в любое время. Лучше всего использовать блочный формат: вся программа разбивается на блоки по 32, 64 или 256 байтов; в начале каждого блока идет заголовок с адресом загрузки, в конце - байт-паритет КС.
Программа может иметь и внутреннюю защиту, включающую проверку наличия в памяти меток о работе декодера и загрузчика и т. д. Это можно сделать на авторских программах, но не на чужих.
Для большей модифицируемости можно применять плавающую константу чтения, которая либо изменяется по определенному алгоритму, либо содержится в таблице.
Технологичность защиты обеспечивается тем, что автору нужно только раз получить закодированный особым образом загрузчик и использовать его затем на разных программах. Как только защиту вскроют (ничто не вечно под Луной), можно изменить параметры генератора случайных чисел и таблицу констант чтения. "Пирату" придется повторять весь трудоемкий процесс вскрытия. Трудоемкость определяется тем, что нужно эмулировать ОЗУ так, чтобы там был и набор псевдослучайных чисел и пират-эмулятор декодера. Это можно сделать с использованием дисковода или дополнительного ОЗУ (в 128К версии), однако при этом будут изменяться время-зависимые данные и процесс декодировки нарушится. Если программа рассчитана на версию компьютера с музыкальным процессором, то последний можно использовать в качестве генератора время-зависимых данных.
Не могу ничего посоветовать относительно борьбы с "MAGIC", т.к. не знаю тонкостей работы в этом режиме. Однако многие программы после обработки кнопкой "MAGIC" не работают, значит придумать что-то можно".
Материал этот чисто теоретический, у многих может вызвать вопрос типа: "Это все складно звучит, но как же все это практически реализовать? Где конкретные примеры, демонстрирующие изложенные принципы?" Примеров действительно нет, так как любой практический пример приведет к снижению во много раз долговечности защиты, сведя на нет все усилия автора программы. Хорошая теория - это уже больше половины дела. А как это конкретно воплотить в жизнь - как говорится, думайте сами, решайте сами...
ИФК: Но Григорий Борисович, видимо предвидя подобные вопросы, все же продолжает письмо конкретным примером, предлагая защитный трюк, связанный с блоками без заголовка.
КОРР... Копиры определяют конец такого блока, если при выходе из подпрограммы LOAD_BYTES установлен флаг Z. Подпрограмма загрузки бита имеет вид:
05E3 CALL #05E7 05E6 RET NC 05E7 LD A,#16 05E9 DEC A 05EA JR NZ, #05E9 05EC AND A 05ED INC B 05EE RET Z
05F8 JR Z,#05ED
Если долго не появляется смена уровней (фронт сигнала), то подпрограмма досрочно возвращает управление. Такая ситуация возникает как раз при загрузке файлов без заголовка, если задана фиктивная (большая) длина. Трюк заключается в том, чтобы выгружать такой блок как можно более длинным. То есть сначала мы рассчитываем байт-паритет (КС), идущий в конце каждого блока, и записываем его в конец файла в виде данных, а выгружаем файл с максимальной длиной. При загрузке все будет нормально, так как мы знаем реальную длину блока и загрузим его без проблем. У тех же утилит, которые не знают реальную длину (программы-копировщики), возникнут проблемы со свободной памятью. Конечно, можно обрезать такой файл, однако нет гарантии, что обрезали только ненужные данные, или что загрузчик не проверяет целостность файла.
ИФК: Но и на этом письмо Григория Борисовича не заканчивается. Он предлагает читателям еще несколько слов насчет формата записи байта на магнитофон.
Он пишет: "В "Векторе" используется следующий формат: 1 заменяется на 01, а 0 - на 10 (так называемый каскадный код). При этом длина битов одинаковая, кроме того, не надо так точно выдерживать междубитовую и междубайтовую длину. Я уже пробовал эмулировать такой формат на "Спектруме". Результаты - положительные. Они хороши еще и тем, что на "Спектруме" можно при этом формате достичь в 2-3 раза большей скорости записи, по сравнению со стандартной, без каких-либо особых проблем (нужен только загрузчик). Это готовый турбо-формат, причем с изменяемой константой записи, то есть Вы можете регулировать ее в широких пределах. Константа чтения автоматически определяется при загрузке. Для защиты от помех используется дублирование. Каждый блок (по 256 байт) задублирован. И помехоустойчивость можно улучшить, если дублировать не отдельный блок, как сейчас (по принципу: блок 1, дубль 1, блок 2, дубль 2, ...), а всю программу (блок 1, блок 2, блок n, дубль 1, дубль 2, ... дубль n). Кроме того, возможно сделать (а на ВЕКТОРЕ уже сделано), что сбой в каком-то блоке не вызывает сброс всей программы (на "Спектруме" одна помеха вызывает сбой всего файла), так как программа разбита на мелкие блоки (как отсеки в подводной лодке). Вы можете остановить магнитофон, отмотать чуть назад и повторно загрузить сбойное место. Процесс загрузки отображается на экране в виде карты загрузки. Очень наглядно видно, где произошел сбой. Кроме того, есть возможность, пожертвовав сбойным участком в 32 байта, загрузить оставшуюся информацию.
На "Векторе" загрузчик занимает 256*2 байт, на "Спектруме" его можно сделать короче".
ИФК: Если у читателей есть интерес к тому, что говорилось об этом формате, то Григорий Борисович предлагает выслать текст загрузчика и текст подпрограммы записи в таком формате на магнитофон.
Уважаемый Григорий Борисович! Мы искренне благодарим Вас за предоставленный материал. Думаем, что это мнение разделят наши читатели.