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-сигнала, то вы уви- дите вместо потрясающего великолепия какие -то широкие цветовые поло- ски,мерцающие чуть-ли не слу- чайным образом. По большому счету, нормальная работа MULTICOLOR-эффектов зависит не только от правильной фа- зировки 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 установлен кварце- вый резонатор, то с "плаванием" проблем не будет. ------------------------------------------ Еще раз до свидания ! ══════════════════════════════════════════ * * *