ZX-Ревю 1995 №2 1994 г.

Читатель-читателю - О совместимости и не только...


  О совместимости и не только...
 ---------------------------------
  Сергей Евтушенко,
                г.Бердск, 1995.
-----------------------------------
    Написать эту статью меня побу-  
 дил 4 номер РЕВЮ за 1994 г., точ-  
 нее - вопросы совместимости, свя-  
 занные  с  портом #FF,  в который  
 раз поднятые читателями.           
    Не нравится мне такая ситуация  
 - одни пытаются решить проблему в  
 корне,  хотя  и  применительно  к  
 конкретному варианту схемы, кста-  
 ти   уже  не  первому  (например,  
 Алексей  Иванов  из  Москвы,  N4,  
 стр.25,  хотя  я не во всем с ним  
 согласен, впрочем, я не знаком со  
 схемотехникой ПЕНТАГОНА).  Другие  
 предлагают себе и другим головную  
 боль (см.  стр.  48,49 - материал  
 А.Неведомского и А.Казаченко). Не  
 проще   ли  один  раз  доработать  
 компьютер и закрыть эту тему  раз  
 и  навсегда.  Ведь  эти же версии  
 программ, доработанные на предмет  
 отсутствия порта #FF,  попадают и  
 к простым смертным  USERам,  воз-  
 можно,  и  не подозревающим о су-  
 ществовании ассемблера, но с кор-  
 ректно  выполненным  компьютером.  
 Кто поможет им привести программы  
 в изначальное состояние?  Вероят-  
 но, "Трехтомник" ИНФОРКОМА...      
    Мне уже  попадалась  программа  
 TOP GUN, изувеченная подобным об-  
 разом,  не  работала  бы она и на  
 фирменном Спектруме.  Похоже, она  
 была  покалечена под Ленинград-1,  
 которому,  как известно,  до лам-  
 почки, KEMPSTON это или #FF.       
                                    
    Между тем,  в 4-5 выпуске РЕВЮ  
 за 1991 г. (стр.95) в статье "БУ-  
 ФЕРИЗАЦИЯ", подробно было описано  
 то обстоятельство,  благодаря ко-  
 торому при чтении из "порта"  #FF  
 (или любого другого,  физически в  
 компьютере не  существующего)  на  
 шину данных попадает байт атрибу-  
 тов,  который и дожидаются  прог-  
 раммы,  использующие  этот  метод  
 синхронизации, причем, это обычно  
 любой   байт,  отличный  от  #FF.  
 Фрагмент программы  может  выгля-  
 деть следующим образом:            
 WAIT IN  A,(#FF);Читаем байт с    
                 ;шины данных.     
      INC A      ;Быстрее и коро-  
                 ;че, чем CP #FF.  
      JR Z,WAIT  ;Если 0, то про-  
                 ;читали #FF, ждем 
                 ;дальше.          
      .......... ;Если не 0, то    
                 ;поймали атрибут, 
                 ;можно обновить   
                 ;экран...         
                                   
    Вероятно, этот  прием мог при- 
 меняться (и применялся) при  зап- 
 рещенных  прерываниях,  иначе это 
 бесполезная трата  памяти,  можно 
 обойтись старым добрым HALT.      
    Ну это полемика,  а надо  дело 
 делать. Набор задач следующий.    
    1. Взять атрибут.              
    2. Сохранить атрибут.          
    3. Выдать атрибут на шину дан- 
 ных  синхронно  с гашением кадра, 
 то есть 50 раз в секунду, возмож- 
 но, по запросу процессора.        
    В любом   варианте   Спектрума 
 есть сигнал WR_ATTR (запись атри- 
 бутов)  в  контроллере   дисплея, 
 сигнал BORDER, разрешающий пооче- 
 редно вывод цвета из регистра ат- 
 рибутов  или  из  порта #FE (цвет 
 BORDER), а также сигнал INT, пос- 
 тупающий  на  16 вывод Z80.  Идея 
 заключается в следующем (см. схе- 
 му ниже): входы регистра К555ИР23 
 подключаются к выходам  видео-ОЗУ 
 для  машин  с раздельными банками 
 памяти или к выходам  ОЗУ  компь- 
 ютеров  с  одним  банком.  Выходы 
 ре-гистра подключаются через  ре- 
 зисторы к шине данных,  то есть к 
 процессору.   Номинал  резисторов 
 выбран,  исходя из следующих фак- 
 торов:   нагрузочной  способности 
 портов на ввод (клавиатура, KEMP- 
 STON и т.д.) и установленными ре- 
 зисторами с шины данных  на  +5В. 
 Рекомендуемое отношение номиналов 
 1:10, то есть на регистр - 1 кОм, 
 на +5В - 10 кОм. Запись в регистр 
 осуществляется  сигналом  WR_ATTR 
 по  разрешению сигнала BORDER,  а 
 чтение - совпадением  INT,  RD  и 
 IORQ,   снимаемых  с  процессора, 
 причем дешифрации адреса не  тре- 
 буется, так как в фирменной маши- 
 не эта аномалия адреса не  имеет, 
 и  при совпадении INT и чтения из 
 какого-либо порта, например, кла-  
 виатуры, любая ТТЛ или ТТЛШ серия  
 без лишних хлопот на  нагрузке  1  
 кОм  выдаст  соответствующие дан-  
 ные.                               
    Особое внимание следует  обра-  
 тить  на полярность сигналов BOR-  
 DER и WR_ATTR,  так как в различ-  
 ных моделях компьютеров они могут  
 быть различными и потребуется ус-  
 тановка  дополнительных  инверто-  
 ров.  Также необходима корректная  
 дешифрация портов.                 
    Проверка доработки производит-  
 ся запуском Бейсик-строки,  имев-  
 шей место на страницах ZX-РЕВЮ:    
                                    
    10 PRINT IN 255: GO TO 10       
                                    
    или, чтобы   реже   продолжать  
 скроллинг:                         
                                    
    10 PRINT IN 255;" ";: GO TO 10  
                                    
    В результате  работы программы  
 при правильном монтаже на  экране  
 будет  последовательность  байтов  
 255,  изредка чередующихся байтом  
 атрибутов экрана.                  
    В принципе, WR_ATTR можно и не  
 ограничивать сигналом BORDER,  но  
 тогда  нет никакой гарантии,  что  
 попадется атрибут,  хотя, в абсо-  
 лютном  большинстве  случаев  это  
 будет не #FF.                      
    Предлагаемая схема  проверена,  
 установлена в моем компьютере бо-  
 лее года,  дурного влияния на ре-  
 жим IM 2 замечено не было.         
    Итак, для  100%-ной  совмести-  
 мости компьютера  необходимо  вы-  
 полнение следующих условий:        
    1. Фирменное ПЗУ.               
    2. Верная    дли-               
 тельность  INT  (8-9               
 мкс).                1             
    3.     Правильное               
 расположение  INT  в               
 кадровом   синхроим-               
 пульсе.                            
    4. Наличие вышеу-               
 помянутого     псев-               
 до-порта #FF.                      
    5. Корректная де-               
 шифрация портов.                   
    6. Наличие резис-               
 торов  с шины данных               
 на +5В.                            
    7. Присутствие порта  KEMPSTON 
 (#1F)  для  некоторых некорректно 
 написанных в отношении к  пользо- 
 вателю программ нашими доморощен- 
 ными программистами.              
    8. Для  128К наличие защелки в 
 режиме 48К (некоторые  48К  прог- 
 раммы виснут при ее отсутствии).  
    9. При  подключенном сопроцес- 
 соре должен быть обеспечен  режим 
 чтения  из него,  а не только за- 
 пись, так что для некоторых прог- 
 рамм,  в  особенности отечествен- 
 ных,  наличие сопроцессора  может 
 оказаться  обязательным  условием 
 их работоспособности.             
    Но это  еще  не  все подводные 
 камни, встречающиеся на Вашем пу- 
 ти.  Вполне  возможно такое явле- 
 ние,  что Ваш компьютер  отвечает 
 всем вышеперечисленным требовани- 
 ям,  а некоторые программы так  и 
 не работают, хотя прекрасно функ- 
 ционируют  у  соседа,  причем  на 
 точно такой же машине.  В чем тут 
 собака зарыта?  Скорее  всего,  в 
 ОЗУ.  Да,  именно в нем,  хотя Вы 
 его сто раз проверяли и  перепро- 
 веряли.  Тест может работать сут- 
 ками и без ошибок.  А  кровь  Вам 
 может  портить единственный бит в 
 единственной РУшке. Вычислить его 
 можно, постепенно снижая напряже- 
 ние питания при последующем  тес- 
 тировании.  В  конце  концов тест 
 никуда не денется и ошибку  пока- 
 жет.  А  дальше  - дело техники - 
 берите паяльник и  ставьте  более 
 быстродействующую микросхему. Чем 
 ниже напряжение питания,  при ко- 
 тором  сохраняется  работоспособ- 
 ность, тем стабильнее будет рабо- 
 тать Ваш Спектрум.                
    Вышеописанный  способ  отладки  
 больше подходит к машинам с одним  
 банком памяти, так как у них наи-  
 более жесткий режим работы с опе-  
 ративной памятью. После такой эк-  
 зекуции  мой Спектрум стал запус-  
 каться при 4,25В, а устойчиво ра-  
 ботать при 4,4В.                   
    Еще один способ улучшить рабо- 
 ту  схемы  -  установить резистор 
 680 Ом ... 1 кОм  между 6 выводом 
 процессора и +5В,  так что,  если 
 его нет - рекомендую поставить.   



СОДЕРЖАНИЕ:


  Оставте Ваш отзыв:

  НИК/ИМЯ
  ПОЧТА (шифруется)
  КОД



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

Похожие статьи:
От авторов - "Читайте наше издание и ваша Spectrum'овская душа будет кристально чистой."
От авторов - Небольшой юбилей газеты.
Ликбез - о правилах хорошего тона в программировании.
Обмен опытом - О создании демонстрационной программы "YES DEMO".
Respect news - несколько новостей проходящей по просторам Speccy акции Respect.

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