ZX-Ревю 1995 №3 1994 г.

Компьютеры, которые мы выбираем - о совместимости компьютера "ATM-TURBO-2".


О совместимости компьютера "ATM-TURBO-2й

(С) Сергей Рюмик,

г.Чернигов, 1995.

В ZX-PEB»-94, N4, стр.22 уже говорилось о неполной совместимости компьютера ATM-TURBO-2 фирмы MicroART.

Хочу остановиться на двух проблемах, одинаковых для всех версий компьютера от 6.00 до 7.10 ("TURBO-2+"):

- отличия в прошивке ПЗУ в области TR-DOS (не работают прикладные программы DCU 2.02 - 2.31, L-COPY и т.д.);

- слишком полная дешифрация адреса порта #7FFD (не работают игровые програнмы режима 128К -RODLAND, FAIRLIGHT-2 и т.д.).

1. Нестандартное ПЗУ TR-DOS.

Как известно, из 16К ПЗУ TR-DOS версий 5.03, 5.04t около 5К свободно, точнее, заполнено кодом #FF. В компьютере ATM-TUR-ВО-2 эти 5К информации используются для организации начального меню н дополнительных данных.

Если сравнить совпадающие места в ПЗУ TR-DOS версий 5.03, 5.04t и ATM, то оказывается, что в четырех десятках точек они отличаются между собой. Причем, версия ATM является неполным гибридом от 5.03 и 5.04t, поскольку в половине точек она выполнена оригинально.

Из-за этого на ATM-TURBO-2 не работают программы, использующие нестандартные точки в ПЗУ TR-DOS (например, копировщик L-COPY, автор А.Лаптев, LAPTEVSOFT-1992 г.) и программы, проверяющие или использующие в работе факт наличия кода #FF в свободной области ПЗУ (например, DCU 2.02 - 2.31, автор Н.Родионов, С.Петербург - 1991-1993 гг.).

Для однозначности выявления причины достаточно скопировать область TR-DOS из микросхемы ПЗУ 27512 компьютера ATM-TURBO-2 в микросхемы памяти контроллера дисковода образцового компьютера. Теперь, если с АТМ-овским TR-DOS программы на образцовом компьютере будут вести себя точно так же, то причина заключается именно в отличиях прошивок ПЗУ TR-DOS.

Можно было бы восстановить работоспособность программы L-COPY занесением кода #00 в ячейки #4800 и #4801 микросхемы 27512, однако это наталкивается на останов компьютера с вежливой разноцветной надписью: "I craced. I halted. Press RESET to continue ..." .

Выход из создавшегося положения очевиден. Перейти от ПЗУ 27512 (64К) к ПЗУ 271000 (128К), что уже предусмотрено в электрической схеме ATM-TURBO-2. Далее перенести информацию о начальном меню ATM из области TR-DOS на свободное место микросхемы 271000, а области TR-DOS вернуть первозданный облик, но это уже задача для программистов фирмы MicroART.

2. Дешифрация адреса порта #7FFD.

Системный порт #7FFD (32765) используется в режиме "Спект-рум-128" для переключения страниц ПЗУ И ОЗУ (ZX-PEB10-91, стр.26). Через обращение к этому порту многие программы определяют, с каким компьютером имеют дело: с 48К или 128К.

Игровая программа RODLAND (The Sales Curve 1991, дисковая версия Fanatic Stas) сбрасывается в самом начале загрузки на ATM-TUR

к о м и ь ю

Т Е Р Ы ,

К О T О Р Ы

Е МЫ ВЫБИРАЕМ

Листинг 1.

#5E3D

ЗЕ

13

LD

А,#13

;#13 - Контрольный код.

#5E3F

21

FF FF

LD

HL,#FFFF

;Адрес проверки.

#5Е42

D3

FD

OUT

(#FD),А

Переключение на ОЗУ-З.

#5Е44

77

LD

(HL),А

;В #FFFF ОЗУ-З код #13.

#5Е45

ЗС

INC

А

;#14 - Контрольный код.

#5Е46

D3

FD

OUT

(#FD),A

Переключение на ОЗУ-4.

#5Е48

77

LD

(HL),А

;В #FFFF ОЗУ-4 код #14.

#5Е49

3D

DEC

А

;#13 - Контрольный код.

#5Е4А

D3

FD

OUT

(#FD),А

Переключение на ОЗУ-З.

#5Е4С

BE

CP

(HL)

Проверка на код #13.

#5E4D

С8

RET

Z

;Если #13, то выход.

#5Е4Е

С7

RST

0

Иначе - сброс.

BO- 2 , однако нормально работает на других типах компьютеров. После дизассемблирования был обнаружен следующий фрагмент (см. листинг 1.).

Налицо проверка объема памяти компьютера. Если это "Спект-рум-48", то происходит сброс через команду RST 0, а, если иСпектрум-128и, то продолжение норнальной работы через RET Z.

Внимательно приглядевшись, можно заметить, что в листинге 1 вместо обращения к порту #7FFD происходит обращение к порту #13FD в строке #5Е42 и к порту #14FD в строке #5Е4б.

С другой стороны, из анализа электрической схемы ATM-TURBO-2 видно, что в дешифрации порта #7FFD принимают участие три адресных линии А1, А9, А15. Причем, предполагается, что линия А9 должна быть равна "Iм. Для адреса #13FD в листинге 1 это условие выполняется, а для адреса #14FD -нет, так как А9 равно "0".

Следовательно, программа при обращении к порту #7FFD как к порту #14FD делает заключение, что такого порта в ATM-TURBO-2 не существует и, как следствие, ROD-LAND сбрасывается при загрузке.

Выход из создавшегося положения следует искать в программных и аппаратных изменениях.

2.1. Программные изменения.

Первое, что напрашивается, это изменить программу листинга 1 так, чтобы ATM-TURBO-2 не чувс-#5E3D ЗЕ 13 LD А,#13

01 FD 7F LD BC,#7FFD

21 FF FF LD HL,#FFFF

ED 79 OUT (С),A

КОМПЬЮТЕРЫ , КОТОРЫЕ МЫ ВЫБИРАЕМ

Листинг 2.

;#13 - Контрольный код. ;Полный адрес порта #7FFD. ;В HL - адрес проверки. Переключение на ОЗУ-З.

твовал "Iй в разряде A9.

Действительно, если в кодовом блоке заменить команду LD А,#13 на LD А,#16 (ячейка #5ЕЗЕ - было #13, должно быть #16), то все станет на свои места. Порт #13FD заменится портом #16FD, а порт #14FD - портом #17FD. Программа заработает нормально, так как адреса #16FD и #17FD содержат в разряде А9 "единицу'1.

Аналогичным образом можно вылечить игру THE EXTERMINATOR (Audiogenic - 1991, дисковая версия Fanatic Stas), для чего в ячейку #5ЕЗВ (24123) вместо кода #13 надо занести код #16.

Второй путь - это замена команд ассемблера OUT (#FD),A на аналогичные, но с использованием косвенной адресации через регистровую пару ВС. Например, листинг 2 выполняет ту же функцию, что и первые три команды листинга 1.

Полный адрес порта состоит из содержимого регистра С (младший байт) и регистра В (старший байт). Преимущество использования подобной конструкции - в возможности задания полного адреса #7FFD в паре ВС, что убережет от накладок при работе с любым компьютером.

На этом можно было , бы поставить точку, сказав, что загрузчики в играх RODLAND и THE EXTERMINATOR написаны хаккером не вполне корректно и, в принципе, не оптимально (процедуру листинга 1 можно было бы сократить по крайней мере на три байта).

Однако нашлись еще программы, страдающие из-за того, что в ATM-TURBO-2 сделана слишком "правильная" дешифрация порта #7FFD.

Причем данные программы сбоят из-за разряда А9 не только при загрузке, но и в ходе самой игры. Это программы: THE VINDICATOR! (Imagine - 1988, 128К, дисковая версия П.Никитин 1993) - невозможность выбора строк в меню клавиатуры на титульном экране; FA-IRLIGHT-2 (The Edge - 1987, 128К, дисковая версия M.Макаревич, Е.Копров 1992) - зависает в игре при переходе с экрана на экран; SHOCK MEGADEMO (Ethanot Soft Inc. - E.S.I. - 1992, Польша) - сбрасывается при смене демонстрационных картинок.

Особое внимание привлекает программа SHOCK MEGADEMO, в титрах которой С.Петербургская фирма Black Square сообщает, что кроме всего прочего, настоящая программа является тестовой и будет полностью работать только на компьютерах ZX-Spectrum-128, собранных в Англии.

Налицо проблема несовместимости с фирменным компьютером.

Чтобы правильно оценить ситуацию, обратимся к истории.

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

Однако за все надо платить. Архитектура "Спектрума" предусматривает максимально упрощенную систему адресации внешних устройств, когда выбор порта осуществляется сбросом в "ноль" одного или двух разрядов адреса. Например, порт клавиатуры #FE выбирается при А0»0, порт принтера #FB - при А2»0, порт музыкального сопроцессора #BFFD - при А1«0, А14=0 и т.д.

Аналогично и с портом #7FFD, к нему можно обратиться при наличии "нулей" всего в двух разрядах: А1 и А15.

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

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

Решение проблемы совместимости в данном случае следует искать в аппаратной части.

2.2. Аппаратные Изменения.

Проанализировав схемы различных компьютеров с режимом 128К, а также схемы приставок 128К, ножно убедиться, что сигнал А9 при дешифрации порта #7FFD совсем не является обязательным.

Разработчики компьютера ATM-TURBO-2 ввели разряд А9 по необходимости, чтобы бесконфликтно развязать сигналы других портов, отсутствующих в фирменном "Спект-руме". Напринер, в ATM-TURBO-2 инеется порт #7DFD - чтение аналого-цифрового преобразователя (АЦП), а также порт чтения #7FFD - доступ к телефонной линии/сети.

Схема развязки портов выполнена на одном и том же дешифраторе, микросхеме DD17 К555ИД7 ("Радиолюбитель", N1, 3-6/1993).

На рисунке 1 представлен вариант доработки схемы компьютера ATM •-TURBO-2, при которой начинают работать программы THE EXTERMINATOR, SHOCK MEGADEMO и т.д.

В схему добавлен еще один дешифратор DD17*, который запарал-лелен по входам с микросхемой DDI7 за исключением вывода 1.

На вывод 1 новой микросхемы подан сигнал А9 для обеспечения правильной дешифрации сигналов ADRD (для АЦП) и TLRD (для сети). На вывод 1 старой микросхемы DDI7 подан уровень логической "единицы", тен самым разряд А9 не будет принимать участие в формировании сигналов S128 для системного порта #7FFD и MSO, MS1 для музыкального сопроцессора.

КОМПЬЮТЕРЫ ,

КОТОРЫЕ

м ы

В Ы Б 1

i РАЕМ

Значит, для системного порта #7FFD будут анализироваться только линии А1 и А15, а для портов АЦП и сети - линии А1, А9, А15 как и прежде.

Доработать компьютер ATM-TURBO -2 по схеме рис.1, несложно.

Новую микросхему DDI7* К555ИД7 удобно поставить навесом над микросхемой DDI7, запаяв параллельно выводы 2, 3, 4, 5, 6, 8, 16.

Для тех, кто к любым изменениям в принципиальной схеме относится настороженно, можно порекомендовать сделать доработки по рис.1, но к выводу 1 микросхемы DDI7 подсоединить переключатель, коммутирующий или +5В или сигнал А9 (как было раньше). После проверки коллекции программ на сов-местимость при разных положениях переключателя, пользователь смог жет сам сделать правильный выбор.

2.3. Проверочная програнма.

Если в компьютере ATM-TURBO-2 имеется проблема с дешифрацией адреса порта #7FFD, то почему бы не проверить, а как обстоит дело с другими типами компьютеров? Тем более, что уже делаются попытки механического копирования схемотехнических решений из ATM-TURBO-2 в части разряда А9 (ZX-PEBI0-94, N5, стр.47-49).

0017 - кзззид7 0017* - к999ид7 dd36 - к999лн1 0037 - к999ли1 0073 - к999лаз

м*от« рмрыяо» печатной плат*

РИС.1.

IP

(яз

10 CLEAR 40999: FOR С=41000 ТО 41028: READ В

20 РОКЕ С,В: NEXT С: RANDOMIZE USR 41000 30 LET A=PEEK 49279+256*РЕЕК 4 9280

40 IF А-32768 THEN PRINT "YOU HAVE 48K"

50 IF A-0 THEN PRINT "YOU HAVE STANDART 128K" 60 FOR K=0 TO 14

70 IF INT (A/2+0.5)> INT (A/2) THEN PRINT "DETECTED A";K;" LIN E"

80 LET A-INT (A/2): NEXT К 90 DATA 243,1,255,255,33,128, 192,3,120,189

100 DATA 40,12,62,17,119,237, 121,61,119,237

110 DATA 121,190,40,239,112,43, 113,251,201

КОМПЬЮТЕРЫ , КОТОРЫЕ МЫ ВЫБИРАЕМ

Листинг 3.

Листинг 4.

#А028

F3

DI

#А029

01

FF

FF

LD

BC,#FFFF

#А02С

21

80

СО

LD

HL,#C028

#A02F

03

INC

BC

#А030

78

LD

А,В

#А031

BD

CP

L

#А032

28

ОС

OR

Z,#A040

#А034

ЗЕ

11

LD

A,#11

#А036

77

LD

(HL),A

#А037

ED

79

OUT

(C),A

#А039

3D

DEC

A

#А03А

77

LD

(HL),A

#А03В

ED

79

OUT

(C),A

#A03D

BE

CP

(HL)

#А03Е

28

EF

OR

Z,#A02F

#А040

70

LD

(HL),В

#А041

DEC

HL

#А042

71

LD

(HL),С

#А043

FB

EI

#А044

С9

RET

;Запрет прерываний. ;В паре ВС - адрес порта. ;Адрес ячейки 49280. ;Изменение адреса порта. ;Проверка на перебор всех ; возможных значений. ;Выход для режима 48К. ;Занесение проверочного ; кода #11 в ОЗУ-О. Переключение на ОЗУ-1. ;Занесение проверочного ; кода #10 в ОЗУ-1. Переключение на ОЗУ-О. ;Сравнение с кодом #11. ;Цикл.

;Результат в ячейке 49280. ;Адрес ячейки 49279. ;Результат в ячейке 49279. ;Разрешение прерываний. ;Выход из подпрограммы.

Предлагаемая проверочная Бейсик-программа (листинг 3) с дизассемблером кодового блока (листинг 4) позволит протестировать любой компьютер 128K и определить, какие разряды участвуют в дешифрации адреса порта #7FFD.

Строки 10, 20 Бейсик-программы подготавливают к вводу и запускают с адреса #А028 (41000) кодовую проверочную программу. Результат работы блока кодов помещается в ячейки #C07F (49279) и #С080 (49280).

В строке 30 результат переводится в пятизначное десятичное число, крайние значения которого анализируются в строках 40, 50.

В строках 60-80 организована проверка на наличие "единиц" в

двоичных разрядах исследуемого числа с выдачей информации.

Результат работы Бейсик-программы выводится сообщениями:

1. YOU HAVE 48K - в компьютере вообще не реализован порт #7FFD.

2. YOU HAVE STANDART 128K -порт #7FFD реализован стандартно с дешифрацией только разряда А1 и А15.

3. DETECTED А9 LINE, DETECTED All LINE - дешифрация порта происходит с дополнительными проверками , в приведенном примере по разрядам А9 и All, из-за чего возникнут проблемы при запуске программ типа SHOCK MEGADEMO. В таком случае нужно проанализнро- Ц вать электрическую схему конкрет- 1 ного компьютера в части дешифра- Я

ции порта #7FFD, найти точки введения разрядов и устранить конфликт схемотехнически.

Необходимость выявления других проверяемых разрядов, а не только А9, объясняется результатами практических экспериментов.

Например, оказалось, что игра FAIRLIGHT-2 чувствительна не только к дешифрации разряда А9, но и А8, А10, All, А13, а в игре THE VINDICATOR! нельзя дешифрировать разряды А4, А5, Аб, А7, так как обращение к порту #7FFD происходит через OUT (#0D),A.

3. Выводы.

1. Программы, использующие приемы, основанные на факте неполной дешифрации порта #7FFD фирменного "Спектрума", имеют право на существование. Однако применять подобные приемы целесообразно только в логически обоснованных случаях, а ииенно, тестовые программы, проверка архитектуры конкретного компьютера, нехватка объема памяти программы.

Стоит прислушаться к мнению опытных программистов, которые настоятельно рекомендуют во-избе-жание различных накладок всегда указывать точный адрес порта (А.Ларченко, Н.Родионов в книге ZX-Spectrum и TR-DOS для пользователей и программистови, С.Петербург, 1994).

2. Необходимо с большой осторожностью подходить к механическому копированию схемотехнических решений в сложных "Супер-Спектру-мах" типа PROFI, ATM-TURBO-2, SCORPION-ZS-256, а в программных изменениях по-возможности не занимать свободные места прошивок ПЗУ "Спектрум-48", "Спектрум-128", "TR-DOS", даже если очень хочется.

Альтернативный вариант - применение замещающих "теневых" ПЗУ.

3. Компьютер ATM-TURBO-2, доработанный по схеме рис.1, повысит свою совместимость, но не станет 100% совместимым с фирменным "Спектрумом", так как останутся еще проблемы синхронизации, различие в прошивке ПЗУ дисковой системы TR-DOS, а также специфической работы компьютера в режиме с IВМ-клавиатурой.

Для последнего случая можно облегчить жизнь для версий ATM старше 7.00 (фирменное название компьютеров "TURBO-2+"), если на время звучания AY-музыки блокировать переключателем работу IBM-клавиатуры, как показано на рисунке 2.

jjfljuu.

0d80— к999лн1

R5-

-rs к »ы»оду 9 ddi00 1816ве31

Рис.2.

Примечание. Доработки по схе-мам рис.1 и рис.2 опробованы на практике с конпьютерами "ATM-TURBO-2" версий 7.00 и 7.10.




СОДЕРЖАНИЕ:


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

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



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

Похожие статьи:
Очумелые_ручки - схема 512 точек на экране.
Мир звуков Спектрума - глава 5.1: Создание эффектов оператором PLAY.
Бук - Похождения Штиpлица и дpугие пpиключения Боpмана.
Юмор - That is true.
Анкета - кто хочeт, что-бы нашe изданиe продолжало здравствовать - к вам вeликая просьба Заполните анкету.

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