Oberon #02
31 октября 1996
  Железо  

Железо - схема иисправления INT'a.


Аппаратное обеспечениеЭксплуатация и доработкиСистемные устройства компьютеровКонтроллеры ДМА и прерываний

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



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

Введение - Вот и увидел свет второй номер самарского электронного журнала.

Свиток - описание игры Peking.

Свиток - описание игры Empire 128.

Свиток - подробное описание игры ELITE 3.

Обзор - новые игры и софт: Double Xinox 128, UFO 2, Shadow Dancer, Multicolor Studio v1.2, X-RAY #1, Emulate #1.

Обзор - хиты сезона'1996: обзор работ с Enlight 1996.

Наш ответ - два письма, оба из Cамары.

Обо всём - антикомментарий или Хаккеры не только люди - 2 (ответ на письмо в Spectrofon).

Ликбез - немного поговорим о программировании, вернее о жизненных этапах любой программы.

Железо - схема иисправления INT'a.

Анонс - текстовый редактор ZX Winword, Дизайнер анализа функций, Версия Звездного Наследие под эмулятор.

Погурамим - рoман-дилoгия Cергея Павлoва "Лунная Pадуга" (глава 1-5).

Погурамим - рoман-дилoгия Cергея Павлoва "Лунная Pадуга" (глава 6-10).

Реклама - б/у технику от 286 до P6, литература и комплеткующие, запись программ на заказ!


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

Похожие статьи:
Железо - схема иисправления INT'a.
Железо - Turbo Z-80 , сигнал INT для "Пентагон 128".
DMA Sound Card - Программируемый таймер 8253 (Продолжение темы DMA SC в ECHO 6).

В этот день...   18 января