ALK'96
КАК ИСПРАВИТь INT ?
══════════════════════════════════════════
Сегодня в рубрике "ЖЕЛЕЗО" мы затронем
одну болезненную тему, касающуюся (опять-
таки !) несовершенства наших отечествен-
ных схем SPECTRUMa.
Коротко опишу суть проблемы:всякий поль-
зователь "Ленинградов","Пентагонов", "Анг-
стремов", и т.д., будучи в полном здравии
и ясном уме, неоднократно замечал некото-
рые "глюки" в таких программах, как VENOM
STRIKES BACK, MONTE CARLO CASINO, SHOCK
MEGADEMO ( MULTICOLOR, GREETINGS ), CHASE
H.Q.128... - этот список можно продолжить
кучей trainer-ов к различным играм.
В одних программах можно наблюдать перио-
дическое исчезание или "дрожание" движущи-
хся спрайтов, в других оказываются смещен-
ными вверх различные полоски на BORDERe,
хотя
по логике вещей им необходимо находиться
чуть пониже.
...Все
это,
как
гово-
рится,
внеш-
ний
эффект
Сейчас я попытаюсь объяснить, почему
"это" происходит. Все "глючные" эффекты
"у них" (т.е. за рубежом) пишут, как пра-
вило,на фирменных SPECTRUMax.
Такие эффекты выполняются синхронно с
кадровой разверткой телевизионного сигнала
- этот прием необходим для осуществления
"плавности" и "равномерности" движений
спрайтов, бегущих строк и т.д. Cинхрониза-
ция программ перерисовки объектов с кадро-
вой разверткой в SPECTRUMax достигается
путем помещения этих программ в обработчик
маскируемых прерываний, или же путем их
выполнения в цикле после команды микропро-
цессора HALT (что, собственно не меняет
сути). Маскируемые прерывания возникают
синхронно с кадровой разверткой с частотой
50 герц - на вход INT микропроцессора пос-
тупают короткие имульсы с этой частотой.
Известно следующее: маскируемое прерыва-
ние в PENTAGONe возникает одновременно
с кадровым импульсом, т.е. обработка пре-
рывания начинается одновременно с построе-
нием нового кадра. В фирменном SPECCY
сигнал прерывания "запаздывает" относи-
тельно кадрового импульса на время,пример-
но равное построению шестнадцати растровых
строк.
Программы, разработанные на фирменных
"компах", "настроены" на "сдвинутый" отно-
сительно кадров INT, поэтому, будучи запу-
щены на нестандартных SPECTRUMax, будут
"показывать" наблюдателю картинку в те мо-
менты времени, в которые происходит пере-
рисовка спрайта (имеется в виду програм-
мная перерисовка, не совпадающая с аппа-
ратной перерисовкой TV-кадра). А это ото-
бражается в виде частично "исчезающего"
или "свернутого" на одну строку изображе-
ния.
Если же в программе предусмотрены всякие
BORDER-эффекты типа MONTE-CARLO, то на
"плохих" компьютерах это еще можно терпеть
- подумаешь, полоски вверху,зато работает,
а вот если MULTICOLORы ?
--------------------------
Лирическое отступление...
Для тех, кто не знает,
что такое MULTICOLOR ,
поясню:это техника получе-
ния нескольких цветов -
более двух одновременно в
одном знакоместе. Этот эф-
фект достигается путем
ПОЛНОЙ синхронизации ком-
пьютера со строчной раз-
верткой телесигнала, а это
достигается в свою очередь
синхронизацией с кадровой
по сигналам INT-прерываний
- другого способа в SPEC-
TRUMe просто нет.
Естественно, если у вашего компьютера
нестандарная фаза INT-сигнала, то вы уви-
дите вместо потрясающего великолепия какие
схемы формирования строк растра в компью-
тере - к этой проблеме я вернусь чуть
позднее...
------------------------------------------
Когда я впервые встретился с BORDER-эф-
фектом в программе VENOM STRIKES BACK,
который, как вы догадались,работал не пра-
вильно, я смирился с этим, но когда увидел
(вернее нормально не увидел !) SHOCK MEGA-
DEMO, а именно MULTICOLOR в том виде, ка-
ким его воспринимают художники-абстракцио-
нисты, и GREETINGS, которых я вообще не
смог разглядеть на экране - то мое терпе-
ние лопнуло...
Месяц поисков оптимального решения вылил-
ся в небольшую схемку, приведенную чуть
ниже.
Суть работы данного устройства заключает-
ся в задержке запросов маскируемых преры-
ваний, поступающих от схемы компьютера на
вход INT микропроцессора на строго задан-
ную величину. Величина временно'й задержки
может быть отрегулирована. Схема включает-
ся в разрыв между входом INT микропроцес-
сора и остальной частью схемы компьютера.
Микросхемы :
DD1 - К5SSTM2,
DD2 - К5SSЛН1 или К5SSЛН2,
DDЗ - К555ЛАЗ,
DDЧ,DDS - К5SSUE7,
DDб - К5SSЛА2, можно использовать и 155-,и
1533-серии микросхем.
Диоды :
VD1,VD2 - КДS22Б.
Конденсаторы :
C1 - 10н,(может изменяться в процессе нас-
тройки),
C2 - 1н,
C3 - 10н.
Резисторы :
R1,R2 - 180 Ом,
R3,R4 - 1 Ком.
Разводка питающего напряжения:
+5 вольт к 14 выводу DD1,DD2,DDЗ,DDб,к 16
выводу DDЧ,DDS,
"корпус" к 7 выводу DD1,DD2,DDЗ,DDб,к 8
выводу DDЧ,DDS.
------------------------------------------
Наладка схемы.
Схему можно умудриться состряпать на
пластине одностороннего текстолита разме-
ром 25х75 мм. Совсем не обязательно раз-
водить печатный монтаж - все соединения
можно провести многожильным проводом МГТФ.
Для удобства настройки соедините выходы
счетчиков DDЧ,DDS с м/с DDб длинными про-
водками, к неиспользуемым (по схеме) выхо-
дам счетчиков тоже необходимо подпаять
провода - они могут вам понадобиться. Сво-
бодные (да и используемые тоже) входы м/с
DDб необходимо соединить с +5V через ре-
зисторы 1Ком. Ко всем входам DDб тоже под-
паивают провода. Все эти приготовления
не касаются соединения 3-го вывода DDЧ с
1-м DDб - это соединение можно сделать
сразу без удлиннительных проводов - в про-
цессе настройки его не придется разрывать.
Конденсатор C1 желательно установить на
некотором удалении от корпусов микросхем,
чтобы уменьшить влияние изменений темпера-
туры воздуха, в тоже время нет необходимо-
сти удалять его на слишком большое рассто-
яние - вам придется искать разумный ком-
промисс. После настройки схемы всю плату
необходимо заэкранировать каким-либо мета-
ллическим корпусом, корпус подсоединить к
минусовому(корпусному) выводу блока пита-
ния. Впрочем, экранировку платы можно не
проводить - но это повлияет на стабиль-
ность времени задержки.
Собрав схему, ее подключают (соблюдая
полярность !) к питающим шинам компьютера.
Контактную площадку, ведущую к 16 выводу
Z-80 (INT) перерезают и в образовавшийся
разрыв включают схему.Можно поступить про-
ще - если в вашем компьютере Z-80 установ-
лен на панельке, то осторожно вынув его
оттуда, отгибают все тот-же 16-й вывод, и
ставят процессор на место,подключение схе-
мы в этом случае заключается в подпаивании
входа схемы к контактной площадке, а выхо-
да к свободной 16-й ножке процессора. Если
вы (счастливый ?) обладатель PENTAGONa
или "Ленинграда" с музыкальным сопроцессо-
ром, который "нарастили" поверх основной
платы, то считайте, что вам крупно повезло
- вам вообще не нужно "измываться" над
процессором и платой компьютера, просто
выньте плату сопроцессора и отогните 16-ю
ножку разъема расширения, к ней подпаяйте
выход схемы, вход соединяют, как и в пре-
дыдущем случае, затем устанавливают плату
сопроцессора на место.
------------------------------------------
Настройка схемы.
После того, как "внедрение" схемы в ком-
пьютер завершено, убедитесь, что все сое-
динения выполнены в соответствии со схе-
мой, что переключатель SA1 находится в
верхнем (по схеме) положении. Для первого
пуска желательно соединить выходы счетчи-
ков DDЧ,DDS со входами DDб так, как пока-
зано на схеме.
Перед пуском компьютера запаситесь дис-
кетами с "подозрительными" программами, в
которых, по вашему мнению наблюдаются
"глюки". Наберите, как минимум,пять таких
программ и смело включайте ваш "комп".
Если после включения компьютер реагирует
на ваши нажатия по кнопкам, то можно с
уверенностью сказать, что схема функциони-
рует нормально. Если же наоборот,клавиату-
ра не слушается, то попробуйте щелкнуть
тумблером SA1, если после этого клавиатура
"оживет", то вам придется искать ошибки в
соединениях собранной схемки, иначе - вы
"спалили" что-то внутри компьютера -
примите в этом случае мои соболезнования.
Итак,вы загружаете какую-нибудь програм-
му, желательно, чтобы в ней использовался
какой-нибудь BORDERный эффект. Пощелкайте
тумблером и наблюдайте за BORDERom, если
после включения тумблера в "верхнее" поло-
жение полоски смещаются вниз, то можно с
еще большей уверенностью сказать, что схе-
ма не просто функционирует нормально, но и
справляется со своими прямыми обязанностя-
ми.
Регулировка времени задержки сводится к
выставлению оптимального количества пере-
мычек между выходами счетчиков DDЧ,DDS (3,
2,6,7) со входами элемента 8И-НЕ(DDб - 2,
3,4,5,6,11,12). Каждая установленная пере-
мычка имеет свой "весовой коэффициент"
задержки по времени, так для каждой ниже-
стоящей перемычки (по схеме) вес задержки
увеличивается примерно в два раза по срав-
нению с вышестоящей.
"Поигравшись" с перемычками, вы замети-
те, что добавление каждой новой перемычки
увеличивает задержку (смещает BORDER-эф-
фект вниз) и наоборот, причем "нижние" пе-
ремычки имеют большее влияние на время за-
держки.
Если в результате опытов с перемычками
вам никак не удается выставить точно вели-
чину задержки, то имеет смысл "поиграть"
конденсатором C1, меняя его емкость в пре-
делах от 8 до 20 нанофарад - в этом случае
можно очень точно выставить задержку.
...
Вот тут мы подходим к самому главному.
Настроив схему на первую программу, и заг-
рузив другую, вы с удивлением замечаете,
что BORDER-эффект в новой программе сдви-
нут. Особенно хорошо это наблюдается, если
вы настраивали схему по программе Academy
(Tau Ceti II), а потом загрузили VENOM
STRIKES BACK (кто не видел этих программ
(???) - в них BORDER-эффекты находятся в
противоположных местах на BORDERE - сверху
и снизу). Очень "хорошо" просматривается
это на PENTAGONe, у которого, как говорит-
ся, "вообще нет тормозов". Вот мы и воз-
вращаемся к проблеме строчной развертки...
__________________________________________
Проблема строчной развертки...
Оказывается, наши доморощенные SPECTRUMы
обладают еще одним неявным "глюком".
Так, за время построения одной строки рас-
тра аппаратной схемой видеоконтроллера (в
оригинале ULA) количество тактов микропро-
цессора для "совковых" и "фирменных" SPEC-
TRUMob различно. Так, PENTAGONы успевают
проделать больше операций, чем SPECCY, а
SCORPIONы, к примеру, наоборот.
На это влияют такие факторы, как реаль-
ная тактовая частота микропроцессора, так
и аппаратное схемотехническое решение ви-
деоконтроллера. Реальная тактовая частота
зависит от степени "WAIT"-ованности ком-
пьютера, т.е. от аппаратных задержек рабо-
ты процессора. Такие задержки, вообще-то
нежелательны, но как ни парадоксально, в
настоящем SPECTRUMe эти задержки процес-
сора существуют. Они возникают в том слу-
чае, когда процессор и ULA пытаются однов-
раменно обратиться к видеопамяти - процес-
сор в соответствии с программой действий,
ULA с целью прочитать байт видепамяти для
вывода на экран. Предпочтение в такой си-
туации отдается ULA, процессор "приторма-
живается". То же происходит, если програ-
мма находится в экранной области - ее быс-
тродействие уменьшается в среднем на 25%
по сравнению с "обычной" программой. Пов-
торюсь, это относится к стандартному SPEC-
TRUMy и к некоторым моделям отечественных
("Ленинград","SCORPION")... Радуйтесь,сча-
стливые (!) обладатели PENTAGONob !!! Все
эти строки, сказанные выше, к вам не отно-
сятся. "Пентагон" лишен этих "тормозов".
Программы на "Пентагоне" одинаково работа-
ют во всей памяти, и WAIT-ножка процес-
сора вообще не задействована. Однако, за
все приходится расплачиваться... хотя-бы
тем, что "фирменные" MULTICOLORы даже с
опубликованной здесь схемой будут работать
только в одной части экрана (порядка 12-ти
знакомест). У "Ленинградцев", соответст-
венно, картинка будет выглядеть лучше за
счет WAIT-остановов процессора, но тоже не
будет идеальной.
------------------------------------------
Продолжение настройки.
Если вы поняли, что я пытался объяснить
в последней "вставке", то вы, наверное по-
няли, что никакими средствами нельзя зас-
тавить "Пентагон" работать так, как насто-
ящий SPECTRUM. Можно лишь приблизить фазу
INT-сигнала так, чтобы наблюдались хотя-бы
частичные "импортные" MULTICOLORы и BORDER
-SCROLLERы. Поэтому лучше настраивать схе-
му по середине экрана (MONTE CARLO) или по
первой линии экрана,т.е. по первой линии в
экранной области (SHOCK MEGADEMO, MULTICO-
LOR). Есть еще другой "критерий" настройки
INT-фазы - по отсуствию "дрожания" спрай-
тов в CHASE H.Q.128 (главное меню), или по
"присутствию" бегущей строки в SHOCK MEGA-
DEMO, часть GREETINGS.
Итак, настроив по своему вкусу схему,мо-
жно припаять короткие перемычки вместо
отладочных,неиспользуемые провода отпаять.
Входы на м/с DDб, которые будут подклю-
чены только к +5V через резисторы, можно
объединить между собой и подключить к тем
же +5V через один резистор.
------------------------------------------
Улучшения схемы.
Работу схемы задержки можно стабилизиро-
вать, если поставить вместо конденсатора
C1 кварцевый резонатор на частоту 100-200
килогерц. Но в этом случае "набирать" за-
держку можно, только "играя" перемычками.
Точность и диапазон дозировки задержки
можно повысить, если кроме перемычек испо-
льзовать дополнительные инверторы(ЛН1,ЛН2)
включая их между выходами счетчиков и вхо-
дами 8И-НЕ DDб.
------------------------------------------
...
------------------------------------------
Синдром отечественного MEGADEMOстроения.
Все сказанное ниже никак не оскорбляет
"наших" coderob, примите все как констата-
цию факта...
Ни для кого в нашей стране не секрет,
что количество фирменных, настоящих
SPECTRUMob у отечественных пользователей
буквально тонет в океане мутантов, собран-
ных в глубоком подполье, отштампованных в
серийном исполнении на различных производ-
ственных обьединениях. Пальму первенства
в количестве различных "перверсий" занима-
ет (до сих пор !) "Пентагон". Существует
масса отечественных MEGADEM, которые ПРИН-
ЦИПИАЛbНО могут правильно работать только
на PENTAGONe. Отбросим тему "мифического"
#FD-порта - это отдельная глобальная про-
блема. Примеров тому - тьма: ZY-ZY,INSULT,
SATISFACTION,PSG-WINS,MENTAL MASTURBATION,
ECSTASY,...
Что поделаешь,PENTAGON стал своеобразным
стандартом на "привязку" MULTICOLORob.
Кому-то покажется странным, чего это тут
автор начал заговариваться о наших MEGADE-
Мах, когда статья совсем не из той оперы.
А я все веду к тому, что неспроста в схе-
ме INT-задержки стоит ма-а-ленький тумблер
SA1,который отключает схему от процессора.
Это сделано как раз для того, чтобы
можно было нормально смотреть MULTICOLOR,
скажем и в SATISFACTION, и в SHOCKe.
Вот, собственно, мы и подошли к концу.
══════════════════════════════════════════
* * *
__________________________________________
Вместо постскриптума:
Кому не надоело читать этот бред, могу
детально объяснить, как работает описанная
схема. Вам стоит запастись копией этой
схемы на листке бумаги и перелистнуть
страницу...
------------------------------------------
Как "это" работает...
Всю схему можно условно разбить на четы-
ре больших блока:
1. Триггерный блок (DD2.1,DD1.1, DD2.4,
DD2.5,DD2.6,C2,R3,VD1):
2. Тактовый генератор (DDЗ.1-DDЗ.3,C1,R1,
R2):
3. Схема счета (DDЧ,DDS,DDб):
4. Формирователь выходного INT-сигнала
(DD2.2,DD2.3,C3,R4,VD2).
C приходом "ненормального" запроса пре-
рывания на вход DD2.1 состояние триггера
DD1.1 устанавливается в лог.единицу. Это
повлечет за собой запуск тактового генера-
тора (5н.DDЗ.2=1) и разблокирование соста-
вного счетчика с начальным нулевым состоя-
нием (14н.DDЧ,DDS=0). Генератор подключен
ко входу накопления (+1) счетчика DDЧ.
Итак, процесс счета начинается - на выхо-
дах счетчиков DDЧ,DDS "перебираются" кодо-
вые комбинации в двоичном восьмиразрядном
коде. Этот процесс будет продолжаться до
тех пор, пока схема совпадения, собранная
на м/с DDб и поставленных вами перемычках,
не "поймает" последнюю крайнюю комбинацию
единиц. Если кроме перемычек вы использо-
вали и дополнительные инверторы (что более
корректно) то краевая кодовая комбинация
(а следовательно и величина задержки) бу-
дет определяться не только первыми "встре-
ченными" единичными, но и нулевыми битами.
Если совпадения еще не было, то на выходе
DDб будет лог.1 - "совпадения нет". При
совпадении требуемой и текущей комбинации
на выходе сформируется лог.0. Факт перехо-
да выхода DDб из 1 в 0 регистрируется фор-
мирователем короткого импульса на элемен-
тах DD2.2,DD2.3,C3,R4,VD2 - на выходе
DD2.3 формируется "задержанный" INT-за-
прос, который и поступает на вход INT про-
цессора.
Тут надо отметить, что данный формиро-
ватель полностью повторяет схему в
PENTAGONe, поэтому нет причин беспокоиться
о длине короткого импульса - он будут та-
ким же (надо полагать нормальным), как и
прежде.
После формирования выходного сигнала
тактовый генератор продолжает исправно ра-
ботать и с его очередным тактом на выходах
счетчиков появляется другая кодовая комби-
нация, на единицу большая, чем необходи-
мая. При этом схема совпадения (8н.DDб)
снова выдает лог.1 - "совпадения нет".
Факт перехода схемы совпадения из 0 в 1
"улавливается" другим формирователем ко-
ротких импульсов (DD2.4-DD2.6,C2,R3,VD1),
на выходе которого формируется импульс
лог.0. Этот импульс приводит триггер DD1.1
в исходное состояние - на выходе Q(5н.)
устанавливается лог.0, что останавливает
тактовый генератор, на выходе не-Q(6н.)
устанавливается лог.1, которая сбрасывает
счетчики DDЧ,DDS в нулевое состояние. Пос-
ле этого схема готова к приему нового за-
проса... Вот и все.
Следует отметить, что в данной схеме
есть один недостаток - величина задержки
будет "плавать" на отрезок времени, равный
одному периоду тактового генератора.Поэто-
му желательно установить максимально воз-
можную частоту генератора, а задержки под-
бирать более "старшими" перемычками. Если
вместо конденсатора C1 установлен кварце-
вый резонатор, то с "плаванием" проблем не
будет.
------------------------------------------
Еще раз до свидания !
══════════════════════════════════════════
* * *
Other articles: