Deja Vu #0A
30 сентября 2000
  Железо  

__________________________________________

(C) Cardinal/PGC/BDA
__________________________________________

       Чтение порта #7FFD

   Привет, братки и сестрички! Данная ста-
тья  не  будет  длинной и нудной, я просто
хочу выразить свою мысль, или даже доступ-
но  объяснить  другую (мысль). Те, у  кого
есть SCORPION ZS 256/1024 TURBO+, наверня-
ка читали Зоновскую листовку о  том, какой
хороший этот компер, по сравнению с други-
ми и даже с этим же, но ранней версии. Мо-
жет это и так, но мнения у всех разные,и я
не хочу навязывать свое. Ну, это не важно.
Так вот, там упоминается о том, что, цити-
рую: При разработе платы TURBO+ была зало-
жена возможность чтения отдельных разрядов
системных портов #7FFD и #1FFD через  порт
музыкального процессора,что необходимо для
более корректной работы  теневого  сервис-
-монитора при определении текущей конфигу-
рации компьютера в момент  нажатия  кнопки
Magic. Конец цитаты. А  как определять это
состояние я так  нигде и не нашел, а может
и не хотел искать. Ну, да Бог с ним. Прош-
ло несколько лет, и  я наткнулся  на  одну
схемку "Эмулятор ПЗУ" или  другими словами
Кэш-память вместо ПЗУ. Ну, вы об этом тоже
наверняка, слышали, сейчас это модно, и на
страницах Deja Vu об этом упоминалось.Здо-
рово было бы загрузить вместо теневика STS
и по кнопке Magic в него вываливаться,тог-
да никакая очистка 8-ого банка не поможет.
Тогда и начала появляться проблема  о том,
как без особых проблем считать текущее со-
стояние #7FFD и #1FFD. Многие  люди делают
чтение системных портов по-разному. Напри-
мер, Diamond/AREASoft на своем супер-наво-
роченном  PROFI  читает (нечитабельные:-))
порты при помощи ИР-ки. На Скорпе это было
бы, примерно, так:

к выходам DD46       ИР22
   и DD47         ┌──┬──┬──┐
════════════════╦─┤D0│RG│Q0├─D0
                ╠─┤D1│  │Q1├─D1
                ╠─┤D2│  │Q2├─D2
                ╠─┤D3│  │Q3├─D3
                ╠─┤D4│  │Q4├─D4
                ╠─┤D5│  │Q5├─D5
                ╠─┤D6│  │Q6├─D6
         ┌──┐   ╚─┤D7│  │Q7├─D7
   /CSFD─┤1 │     ├──┤  │  │
         │  ├─────┤EO│  │  │
     /RD─┤  │  ┌──┤C │  │  │
         └──┘  │  └──┴──┴──┘
     +5v───────┘


   Названия микросхем  даны  для TURBO+, у
старой платы это DD48  и  DD49. Схема  до-
вольно примитивна и показывает только саму
суть, но  позволяет "увидеть" любые 8 раз-
рядов портов #7FFD и #1FFD, какие подведе-
те на  входы  ИР22. Программная  поддержка
сего девайса будет, примерно, такой:

        IN A,(#FD)

   Все  просто. Но! Разработчики  навесили
на чтение портов #1FFD и #7FFD включение и
выключение турбо-режима. Т.е. команды:

        LD A,#1F
        IN A,(#FD)

включают турбо-режим, а команды:

        LD A,#7F
        IN A,(#FD)

выключают  турбо-режим. Поэтому  не  нужно
выставлять перед IN A,(#FD) в аккумуляторе
#7F или #1F, если вы не хотите  самопроиз-
вольной смены скорости  компьютера. Кстати
говоря,и на других значениях старшего раз-
ряда #FD меняется скорость компьютера  из-
-за грубой дешифрации.
   Но я завел весь этот разговор вот из-за
какой штуки. В плате TURBO+ всем этим,т.е.
чтением портов #1FFD и #7FFD занимается AY
8910/12. В AY8912 имеется независимый  ка-
нал, а в AY8910 даже  два, ввода-вывода. В
AY8912 это ноги с 14 по 7(биты от 0 по 7).
В AY8910 другие (см. по схеме). В подавля-
ющем большинстве случаев эти  ноги  AY8912
висят в свободном состоянии. Но в TURBO+ к
ним подведены следующие биты  портов #1FFD
и #7FFD:

нога 14 - бит 0 #7FFD
нога 13 - бит 1 #7FFD
нога 12 - бит 2 #7FFD
нога 11 - бит 3 #7FFD (SCREEN)
нога 10 - бит 4 #1FFD (верхняя память)
нога 9  - бит 4 #7FFD (ROM)
нога 8  - не используется
нога 7  - не используется

   Благодаря этому прочитать текущее  сос-
тояние компьютера можно таким образом:

       LD A,#0E
       LD BC,#FFFD
       OUT (C),A
       IN A,(C)

   В аккумуляторе будет информация о  сис-
темных портах #7FFD и #1FFD в виде, приве-
денном выше. У AY8912 регистр #0F не  дос-
тупен, а у AY8910  он  есть. Поэтому, есть
возможность в сумме  определять  16  битов
состояния различных портов! Теперь  я хочу
подвести итог ко всему вышесказанному. Для
того, чтобы  определить  текущее состояние
системных портов (не важно каких), которые
не доступны для чтения,можно обойтись все-
го несколькими проводками, а не припаивать
лишнюю логику. Впрочем, это лишь мое субъ-
ективное мнение. Некоторые  люди на AY-шку
навешивают  мыша, что, конечно, не  совсем
стандартно, но тоже хорошо работает, в ZX-
-POWER об этом не раз писалось. В SCORPION
+GMX так, вообще, состояние системных пор-
тов читается  через  порты: #78FD, #7AFD и
#7EFD, короче, каждый делает, что хочет.
   На этом все. Не смотрите,что статья по-
лучилась несколько корявой - как смог, так
и выразился. C U L8R!

P.S. Я нашел применение двум  незадейство-
ванным битам, я на них  повесил  два  бита
расширения  памяти  SCORPION'a до 1024К по
схеме от ERASERа/AREASoft из ZX-LIGHT #0C.

                Cardinal/PGC/BDA
------------------------------------------
           КП11А              │
               ┌──┬──┬──┐           │
         Gnd──2┤A1│MS│Y1├4──2:DD11  │
     2:DD11'──3┤B1│  │  │           │
               ├──┤  │  │           │
     13:DD33──5┤A2│  │Y2├7──────────┘
         Gnd──6┤B2│  │  │
               ├──┤  │  │   R1 светодиод
         +5v─11┤A3│  │Y3├9──▒▒▒──┤<───Gnd
         Gnd─10┤B3│  │  │
               ├──┤  │  │
            ─14┤A4│  │Y4├12─
            ─13┤B4│  │  │
Gnd──         ├──┤  │  │
+5v── ───────1┤S │  │  │
тумблер  Gnd─15┤E0│  │  │
 on/off        └──┴──┴──┘


   Пояснения к этой длинной схеме:

   Т.к. многие ноги с одинаковыми номерами
соединяются вместе, то лучше напаять  мик-
росхемы КП12 в три этажа, можете четвертым
этажом напаять и КП11А - будет круто! Жаль
что это мало кто увидит:-(
   Светодиод показывает какой режим  вклю-
чен в данный момент,если вам это не нужно,
то резистор и светодиод можете не  припаи-
вать, а ноги 11 и 10 КП11А никуда не пода-
вать.
   К 3-ей ноге КП11А подходит сигнал с до-
рожки, к  которой  была припаяна 2-ая нога
DD11,поэтому DD11 показана со штрихом. Со-
ответственно,4-ую ногу КП11А нужно цеплять
непосредственно ко 2-ой ноге DD11.
   Сигналы MD0-MD5 идут с 14-ых ног микро-
схем РУ7 (DD21-28), они же  и  подходили к
соответствующим ногам DD33  и  DD34  перед
тем, как вы их злостно ампутировали.
   К 5-ой ноге КП11А (по схеме) подводится
13-ая нога DD33, на схеме  Скорпа  отмечен
как сигнал INV. Другими словами,это тот же
MD7, т.е. 7-ой бит FLASH,пропущенный через
мультиплексор.
   Сигнал 14MHZ удобнее  всего подвести от
3-ей ноги DD2,но можете и от любой другой,
где он есть (см. по схеме Скорпа).
   Вместо  тумблера  можно подвести к 1-ой
ноге КП11А управляющий  бит  от какого-ни-
будь самопального порта,чтобы щелкать гра-
фическими режимами  программно, а  не  при
помощи трясущейся руки после вчерашней гу-
лянки. Но я не решился придумывать  какой-
-то новый порт, их и так в последнее время
расплодилось, как ежиков в лесу.
   Не  забудьте  про питание микросхем: ко
всем  8-ым ногам  подвести  Gnd, a ко всем
16-ым +5v.
   Да, и  вот  еще. Оставшуюся четвертинку
мультиплексора КП11А (ноги 12,13,14) можно
заюзать следующим образом, не пропадать же
ей зря. Ноги 13 и 14 собрать в кучу и  по-
дать на 15 ногу DD46,а на 12-ою ногу КП11А
навесить светодиод через резистор (как  по
схеме чуть выше),и тогда у вас будет инди-
катор текущего экрана (5-ый или 7-ой). Ес-
ли светодиод горит, значит в данный момент
показывает 7-ой экран.
   Ну, и на последок хочется  вас  обрадо-
вать, что никаких программ и  картинок под
этот девайс нет, поэтому где применить сие
чудо я не знаю:-( Хотя нет! Одна  картинка
есть:-) Она в MIRACLE 3. Будущее  у данной
доработки очень туманно, если  не  сказать
большего, и расчитана она на тех,кто очень
любит навешивать на свой комп,которого уже
и так не видно из-за кучи проводов, всякую
шнягу вроде этой:-)

                Cardinal/PGC/BDA
------------------------------------------



Other articles:


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

Similar articles:
Feedback - contact the publisher.
Programming - how to adapt to the disc program with loadable levels.

В этот день...   21 November