──══════════──
╔════────
║
│ Железо │
║
────════╝
(C) Andy Nelson, 1998
Следуя примеру Twinsoft и принимая при-
зывы Рашпиля, я, Andy Nelson (по паспорту
Смольский Андрей), решил также описать
свой PowerZX, его макси-извращенные "при-
бамбасы" и то, как я докатился до этого.
Сначала приведу параметры:
Motherboard......."Львовский вариант"
(служит в качестве
каркаса, поскольку
проводов больше чем
дорожек на плате, а
некоторые микросхемы
лежат в три этажа :) )
CPU...............Z80H 3.5/7 МГц
71680/114688
тактов за кадр.
Поле памяти.......общее и незатеняемое
(как в Pentagon'e)
RAM...............512 kB
ROM...............64 kB (прошивка изме-
нена: после последнего
"шитья" там: BASIC-48,
TR-DOS 5.05, STS
5.11A, RDS 3.1, Jemmi-
ni Commander 4.1)
Virtual ROM.......64 kB (используется
часть ОЗУ)
Количество строк
по вертикали......320
Тактов за строку..224 (при 3.5МГц)
INT..............."Пентагоновский" с ав-
томатическим ограниче-
нием его длинны
Режимы графики....STANDART - 256*192, 16
цветов, атрибуты 8*8
MULTICOLOR - 256*192,
16 цветов, атрибуты
8*1
HIRES - 512*192, 2
цвета
Количество видео
страниц...........3
Источники звука...BEEPER, AY-3-8912, CO-
VOX (9 bit)
Дисководы.........2x5.25" Teac FD-55 (о-
дин из них был на
1.2MB)
Джойстик..........Kempston (используется
стандартный Dendy-jo-
ystick)
Мышка.............Kempston Mouse
Порт принтера.....ZX-Lprint
Рассказ о том, что это такое, зачем это
нужно и как я сделал это, хотелось бы на-
чать с небольшой истории первичной пере-
делки моего компьютера. Поскольку учиться
лучше всего на чужих ошибках, то, надеюсь,
нижеизложенная информация Вам когда-нибудь
пригодится.
В качестве Motherboard я использовал
плату от "Львовского варианта", о чем в
последствии пожалел, так как эта версия
Спектрума, несмотря на большое сходство с
фирменным, имеет много аппаратных недос-
татков. Но, поскольку другого было не да-
но, то все мои эксперименты проводились на
этой плате. Чесно говоря, я "испоганил"
две платы. Первая после страшных экспери-
ментов все-таки "пошла" на запчасти, вто-
рая "выжила" и на этом компьютере я наби-
раю данный текст.
Сначала сделать из 48K 128K+AY было не-
сложно (шесть микросхем логики, панелька
под AY, собственно AY, небольшая платка и
около 2 метров провода). Тяга к модерниза-
ции появилась после того, как все больше
демок "тормозило" или "не шло" совсем
(особенно Еnlight'96). Также хотелось по-
больше памяти (копирование дисков с одним
дисководом было весьма "веселым" заняти-
ем).
Сначала проводились эксперименты по
подключению 565РУ7. Компьютер, в принципе,
заработал, но на экране творился "бред".
Тот факт, что эти РУ'шки нормально работа-
ли в "Скорпионе" подтолкнул меня на мысль
о том, что им "не нравится" метод считыва-
ния информации видеоконтроллером. Я убрал
"торможение" памяти, в результате чего
изображение появилось, но возникла пробле-
ма регенерации в незатеняемой части ОЗУ,
которую, по неизвестным причинам, не уда-
валось решить. Кроме того, в видеопамяти,
почему-то, появлялись "точки", причем сра-
зу по четыре штуки в любом месте, с фикси-
рованным расстоянием между ними. Интенсив-
ность их появления зависила от напряжения
питания. Причину этого не удавалось разга-
дать на протяжении полугода.
Через пять месяцев я достал импортные
аналоги РУ7 (i21256). Они заработали в
"затеняемом" режиме на другой плате, но
тяга сделать "нетормозящий" компьютер взя-
ла верх. И вот после такой переделки проб-
лема с "точками" повторилась. Схема, кото-
рая, по идее, должна была бы нормально ра-
ботать, упорно выдавала "точки" в памяти.
Но самым интересным было то, что РУ5-тые
работали нормально.
После долгих анализов схем "АТМ-turbo",
"Pentagon128" и "Scorpion" был сделан вы-
вод, что переделанный "Львовский" вариант
отличался одним: в качестве адресных счет-
чиков применялись микросхемы 561 серии.
Тогда, после стробирования всех адресов
РУ-шек сигналом -CAS (при помощи ИР23),
данная проблема исчезла навсегда. Причиной
же появления "точек" было то, что верти-
кальные счетчики инкрементировались по
сигналу, полученному из строчного синхро-
импульса. Из-за недостаточного быстро-
действия 561-й серии, в конце концов, это
приводило к тому, что во время цикла чте-
ния из ОЗУ изменялось значение на адресной
шине. РУ5-тые это "терпели", а вот РУ7-мым
это "не понравилось".
Еще была проблема регенерации в "незате-
няемой" области ОЗУ. На первый взгляд,
все, вроде бы, есть, а память все равно
сбоит. Избавиться от этого удалось, решив
проблему "в корне". Была переделана адре-
сация РУ-шек: все 16 микросхем теперь име-
ют общую адресную шину и общие сигналы
-RAS и -CAS, поскольку попытка соединить
попарно выходы данных, то есть "заставить"
работать два банка ОЗУ на один регистр,
при раздельных сигналах -CAS, как это сде-
лано в "Pentagon'е", ни к чему хорошему не
привела. Микросхемы "не уживались" между
собой, даже если подавать только сигнал
-RAS. Пришлось поставить еще одну ИР23 на
выходы второго банка. В общем, такой вари-
ант адресации имеет некоторые преиму-
щества: ОЗУ нормально регенерируется, сиг-
нал -CAS подключен к ОЗУ непосредственно,
что повышает помехоустойчивость компьюте-
ра, и даже, в случае, если "сгорит" па-
мять, компьютер может работать с одним
банком ОЗУ (256K).
Дальнейшее описание сделано на основе
следующих источников информации: схем
"Львовского варианта", "Pentagon",
"ATMturbo" или "Turbo-2+", журналов
"Spectrofon 20" и "ZX-Format 5". Кроме то-
го, вам следует запастись терпением, вни-
манием, пивом... :) А теперь обо всем по
порядку.
──══ Устранение торможения памяти ══──
Схему переделки привести в "Оптроне"
проблематично по двум причинам: во-первых,
ее сложно нарисовать в текстовом редакто-
ре, а во-вторых, единого и окончательного
варианта схемы у меня нет, поскольку в
процесе наладки вносились коррективы, ко-
торые иногда "забывались" записываться.
Но, несмотря на это, основные "подводные
камни" я постараюсь описать.
Из трех вариантов "незатеняемых" компью-
теров (Pentagon, ATM и Scorpion) я выбрал
Pentаgon, так как он относительно прост в
реализации и при последующей установке
турбо-режима дает самый лучший результат.
Реализуется практически полностью по "о-
ригинальной" схеме. Кроме этого, нужно за-
менить "половинку" счетчика 561ИЕ10
(D22.1) на такой же счетчик 555'той серии
и обеспечить его нулевое значение в момент
прихода сигнала сброс (к.7 D22.1) (подхо-
дит 555ИЕ7). Также необходимо пропустить
все остальные адресные сигналы через
555ИР23 которую следует тактировать сигна-
лом -CAS. Этим исключается возможность по-
падания даных из видео ОЗУ через КП11
(D32, D33) на шину данных процессора.
Распределение страниц по адресному
пространству процессора я сделал на двух
555КП12. На адресные входы мультиплексоров
подаются А14 и А15 и задается конфигурация
страниц, на выходах получаем адресную ши-
ну. Данный метод обеспечивает возможность
реализации такой штуковины, как Virtual
ROM. В двух словах, механизм обслуживания
памяти легко реализуется на 555ИД4, так
как это сделано в АТМturbo. При наладке
часто помогает "обвешивание" конденсатора-
ми 50-200 пФ сигналов -RAS и -CAS. Необхо-
димо также "навесить" блокировочные кон-
денсаторы по питанию ОЗУ (желательно, не
менее 0.15мкФ на каждую микросхему).
──══ Турбо-режим ══──
Несколько начальных рекомендаций.
Лучше всего установить процессор на па-
нельку (только на хорошую, чтоб у вас в
дальнейшем с ней не было проблем). Следует
учесть также то, что в турбо-режиме рабо-
тают не все процессоры. Отдельные эк-
земпляры вроде бы и работают, но "загиба-
ются" при подключении переферии, так как
шина данных и адреса на "Львовском вариан-
те" не буферизирована. Наилучший вариант -
Z80H, moжно попробывать Z80B. Z80А и оте-
чественные аналоги работают не все. Иногда
не работают в турбо-режиме ПЗУ-шки старого
выпуска (до 1984 г.).
Схема турбирования такая же, как и для
Pentagon'а (3 микросхемы), кроме одного:
не нужно устанавливать элемент ТМ2
(D107.2), который исключает возможность
двойного обращения процессора к ОЗУ во
время считывания видеоконтроллером одного
знакоместа (4 цикла чтения). Кроме того,
следует подать на переключатель "Turbo" с
контроллера дисковода сигнал не -VG93.CS,
а -DOSEN. При работе TR-DOS турбо-режим
будет отключаться, но это не играет роли,
так как в турбо-режиме загрузка быстрее
все равно не пойдет.
Некорректно работает в турбо-режиме
AUTOchecking диска во многих boot'ах (к
сожалению, устраняется это только прог-
раммно).
──══ Virtual ROM ══──
Оно же псевдо-ПЗУ. Смысл сего "прибамба-
са" в следующем: битом специального порта
отключается основное ПЗУ, а вместо него
включается одна из последних страниц ОЗУ
(#C5 - TR-DOS, #C6 - BASIC128, #C7 - BA-
SIC48). Запись в псевдо-ПЗУ по адресам
0-#3FFF не производится. Занести какие-ли-
бо данные в псевдо-ПЗУ можно, включив нуж-
ную страницу по адресам #C000-#FFFF. Порт,
который включает псевдо-ПЗУ имеет прог-
раммную "защелку" (как порт #7FFD), надоб-
ность сброса которой по сигналу -RES зада-
ется переключателем. В результате получа-
ется одна интересная вещь: можно загрузить
любую прошивку BASIC48, BASIC128 и TR-DOS,
защелкнуть порт конфигурации, перевести
компьютер в режим 128K и отключить сброс
защелки порта конфигурации по сигналу
-RES. Mы получим полноценный Speccy-128 с
загруженной прошивкой, изменить которую
уже программно невозможно. Реализуется эта
"штуковина", при наличии двух КП12, кото-
рые задают номер страницы для каждой ад-
ресной "четверти", относительно просто. На
конфигурационные входы КП12 для нулевой
четверти адресного пространства подаем
сигналы ROM.A14 и DOSEN. На остальных вхо-
дах выбираем номера последних страниц ОЗУ,
реализуем порт #EFF7, обеспечиваем отклю-
чение и постоянное включение основного ПЗУ
по некоему сигналу, реализуем ОЗУ и систе-
му блокировки записи в ОЗУ по адресам
0-#3FFF. Назначение отдельных битов порта
#EFF7 будет приведено ниже.
──══ Увеличение "длины кадра" ══──
Так уже исторически сложилось, что все
Спекрум-подобные машины содержат в растре
312 строк, а Pentagon - 320 строк. Из-за
этих восьми строк некоторые демки, напи-
санные на Пентагоне, тормозят на компах,
которые имеют только 312 строк (в частнос-
ти и "Львовский вариант"). Решается проб-
лема просто: нужно "тормознуть" верти-
кальный счетчик на восемь строк. Устанав-
ливаем дополнительный счетчик на 8 и
конструируем систему блокировки верти-
кального счетчика. Рекомендую "растяги-
вать" нижний бордюр, если не хотите иметь
проблем с временем прихода INT'а.
──══ Проблема сигнала INT ══──
Точнее сказать, их две: время прихода и
его длина. О том, как сделать "фирменный"
или "пентагоновский" INT говорилось и пи-
салось очень много (даже демка специальная
была) и я не буду на этом отдельно оста-
навливаться. Если Вам интересно узнать,
как сделать правильный INT на "Львовском
варианте", то советую почитать help к Ram
Doctor-у Тятина Сергея. Проблема длины
INT'а решается методом подбора нужного ре-
зисторa или конденсатора. Но это справед-
ливо только в том случае, если у Вас нет
турбо-режима. Если же он установлен, то
возникает интересная проблема: подобрали
длину для 3.5МГц, переключили на 7 - INT
стал "длинноват", подобрали для 7МГц - при
3.5МГц клавиатура срабатывает через раз.
Первым "подкинул" идею, как с этим бо-
роться, Валентин (Twinsoft). Он предложил
использовать тот факт, что Z80 во время
обработки INT'а одновременно устанавливает
в "0" сигналы -IORQ и -M1. Таким образом,
ставим триггер на блокировку сигнала INT и
делаем так, чтобы он устанавливался сигна-
лами -IORQ и -M1, а сбрасывался каким-либо
другим сигналом, приходящим в то время,
когда INT неактивен (например, сигнал BOR-
DER). В общем, схема следущая:
INT──┬──────X───────┬──к 16н. Z80
│ D1.1 │
│ ┌──┐ │
└────┤1 │ │
┌────┤ ├──────┘
│ └──┘
└───────────────────┐
┌─┬───┬─┐ │
+5V───oR│ │ │ │
├─┤ │Q├───┘
GND───┤D│ │ │
-BORDER─────────/C│ │ │
D1.2 ├─┤ │ │
┌──┐ ┌──oS│ │ │
-IORQ───┤1 ├─┘ └─┴───┴─┘
-M1─────┤ │ D2.1 D1 - 555ЛЛ1
└──┘ D2 - 555ТМ2
После такой переделки проблемы с INT'ом,
в режиме ТУРБО, пропадают навсегда.
>>