Optron #14
03 июля 1998
  Железо  

Железо - Макси-извращенные "прибамбасы" PowerZX.

<b>Железо</b> - Макси-извращенные
              ──══════════──


             ╔════────
             ║
             │    Железо    │
                            ║
                    ────════╝

(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'ом,
в режиме ТУРБО, пропадают навсегда.
                                        >>



Другие статьи номера:

Kempston Mouse-2 - Определение наличия мышки. Обработка кнопок и координат.

Железо - Графические видеорежимы.

Железо - Макси-извращенные "прибамбасы" PowerZX.

Конкурс - Ваши хитрости и советы, которые могут быть полезны не только в области Спектрума, но и в домашнем хозяйстве.

Лит. страничка - Начало конца. Стихи: Дебит и кредит.

Реклама - Реклама и объявления...

Четыре килобайта - Новое название группы - Steel Falcons.


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

Похожие статьи:
Пробы пера - прикольный текстик про вирусы и вооще...
Intro - всeм прoгрeссивным Xaй! Вступление.
ZX in the world - Информация от комитета о сборе средств на EMS.
Аперативчик - Точность - вежливость королей; о новом выпуске журнала.
Презентация - О игре жанра Adventure - Robin of Sherlock.

В этот день...   21 ноября