Из журнала Deja Vu #0A, Кемерово, 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 ------------------------------------------