Deja Vu
#0A
30 сентября 2000 |
|
Капля припоя - схема Чтение порта #7FFD на ZS Scorpion.
__________________________________________ (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 ------------------------------------------
Другие статьи номера:
Похожие статьи:
В этот день... 21 ноября