Black Crow #03
27 июня 2000
  Железо  

Очумелые ручки - Реализация кэша.


Аппаратное обеспечениеЭксплуатация и доработкиПамятьТеневое ОЗУ

(С) 1999 Макс/Соmрu-Sudiо Ltd ----------------------------------------- Добрый день! Сегодня я вам расскажу о самой классной доработке Спектрума в пла- не программирования и взлома программ за всё время существования нашего компьюте- ра. Предидущим достижением такого плана было изобретение теневика на Скорпионе. Теперь все не-Скорпионщики могут сделать себе данное приспособление и при наличии соответствующего программного обеспечения стать в один ряд с продвинутыми кодерами и хакерами. Это устройство не ново - ещё в старом- добром Sреctrоfоn`е 17 знаменитый В.М.Г. предлагал. Но тогда данное устройство не вызвало ажиотажного спроса. Теперь же, по мере написания программ "под кеш", нали- чие этого устройства становится всё более необходимым. И даже престижным. Данный текст уже морально устарел, но учитывая то, что многие по-прежнему отре- заны от сетей, а значит - и от "цивилизо- ванного рынка информации", да ещё в при- дачу ко всему схема от В.М.Г. имеет глюки в работе, то я счёл необходимым затронуть эту тему в своём издании. Для начала перечислю все те плюсы, ко- торыми изобилует этот аппаратный апгрейд: 1) 16К сверхбыстрой памяти в адресном пространстве ПЗУ; 2) теневой принцип нахождения в схеме компьютера; 3) программно доступны все адреса, ко- торые вызываются командами RSТ. Можно са- мому использовать в своих целях, например тот же RSТ 8 или даже RSТ 0; 4) самый, что ни есть, полный доступ к портам ВГ93, что открывает потрясающие с точки зрения программиста возможности ра- боты с диском! Чего только стоит свобод- ное чтение регистра #1F ВГ-шки на предмет качества выполнения операции; 5) по адресу 102 или #66 (кто как при- вык) можно разместить свой обработчик на- жатия на mаgic, что несомненно упростит взлом любой программы, не использующей в своих целях кеш и не убивающих его; 6) любители писать свои новые ОС и на- хрен никому не нужные виндовсы теперь мо- гут убраться нахрен из основного ОЗУ ком- па в кеш, а точки входа в свои маздайные оболочки сделать по-человечески - через RSТ`шки! Как в is-dоs, например, но при этом использовать их все, а не только на- бивший оскомину RSТ 16; 7) много всяких-всяких возможностей... Минусы наличия кеша: некоторые маздай- ные программы (в основном старьё) любили делать LРRINТ tхt, что приводит к медита- ции всей системы. Выход из этого - сделай перед работой инсталляцию Lрrint`овой ПЗУ методом считывания с диска прошивки и пе- реброски её в кеш. Не забудь при этом от- крыть/закрыть кеш ;) Итак, привожу ИСПРАВЛЕННУЮ схему кеша, которую любезно предоставил Маstеr. После переделки схемы всё стало корректно рабо- тать и не напрягать схему компьютера.
На схеме есть тумблер, который перево- дит нажатие mаgic`а в кеш или обычный дос и которым удобно пользоваться в различных жизненных ситуациях. У меня, правда, одна ситуация - кешем ломаю или отлаживаю про- ги, которые ковыряю или пишу. Теперь немного информации о методе ра- боты с кеш и пример его применения. Блин, всё гениальное просто: DI IN A,(#FВ) ;кеш открыт! СALL nn ;программа usеr`а IN A,(#7В) ;кеш закрыт! ЕI ;ну, если это нуж- RЕТ ;но... И всё! Нет никаких дурацких LD ВС,#nnn и ОUТ (С),n и прочей ерунды, которая при- водилась в DЕJA VU 7 и других изданиях, приводивших примеры "расширения ОЗУ" на 16/32К. Тоже, конечно, хорошо, но зачем делать то, под что проблематично писать софт? Xотя это чисто моё мнение, не пре- тендующее ни на что. А вот кэш - это кру- то! И самое интересное - все возможности "в одном флаконе"! Возможности программиста. Они ограни- чиваются только объёмом кеша: 2, 4, 8 или 16 килобайт реализовано в одной странице, или сколько? Проверить это можно по-раз- ному. Самый примитивный способ мой, кото- рый позволяет грубо подсчитать количество кило в кеше или определить его отсутствие вообще. DI ;без прерываний! IN A,(#FВ) ;ореn кеш LD НL,#0000 LD DЕ,#0001 LD ВС,#3FFF LD (НL),L РUSН НL ;очистка кеша LDIR РОР НL LD A,#01 ;байт контроля любой, LD (НL),A ;кроме #F3! СР (НL) ;есть ОЗУ, или нет? JR NZ,NО_СAСНЕ;нет, а жаль... LD ВС,#3FFF;16Кб размер страницы INС НL ;с адреса #0001 ищем СРIR ;возможные повторения LD НL,ЕXIТ ;выход из теста РUSН НL ;так короче ;) LD A,Н ;адрес, где есть сов- LD Е,#08 ;падения с контролем СР Е RЕТ Z ;кеш на 2К LD Е,#10 СР Е RЕТ Z ;на 4К LD Е,#20 СР Е RЕТ Z ;на 8К РОР НL LD Е,#40 ;нет совпадений, зна- ЕXIТ IN A,(#7В) ;чит кеш 16К. Rulеz! LD A,Е ;результат теста для ЕI ;дальнейшего примене- RЕТ ;ния. NО_СAСНЕ LD Е,0 ;нет кеша вовсе! JR ЕXIТ Как видите - ничего сложного здесь нет и быть не может. Память кеша организова- на таким образом, что можно ставить любую рушку без риска "улететь". И использовать можно всё адресное пространство вне зави- симости от объёма ОЗУ кеша. Допустим, что вам надо сделать обращение к диску, но у вас, как на зло, всего 2К кеш. Ничего нет страшного в этом! Главное, чтобы драйвер дисковых операций небыл безмерно раздут. Так как порты доса доступны при обращении к окну #3D00-#3DFF, то и драйвер дисковых операций можно положить туда же. Откройте кеш, ldir`ните под адрес #3D00 свой драй- вер и можете свободно его использовать в своих целях. Имейте ввиду, что порты доса будут доступны только, если РС бегает по кешу в любом месте (естественно, если вы вошли в кеш через окно), а для доступа к портам "ZX" надо сделать выход в основное ОЗУ. Не забывайте это при написании своих программ, которые предполагается частично или полностью размещать в кеше! В приложении к журналу есть программа, которая поможет вам определиться с нали- чием или отсутствием кеша, а также с его объёмом. Это "МAGIС INSТALLЕR". Она, ко- нечно, не идеал, но при наличии у вас до- полнительного ОЗУ по любому из известных стандартов памяти, позволит почувствовать себя крутым хакером. Для установки кеша можно использовать как советские микросхемы РУ10 или РУ17, а также и буржуйскими аналогами. Крайне ре- комендую микросхему НY62256ALР-10 на 32Кб объёмом. У меня стоит именно она. Но мар- кировка может быть и другой. Главное - её объём! Здесь, правда, появляется "проблема": а куда девать остальные 16К, неиспользо- ванных в предидущей схеме? Ведь руки так и чешутся приспособить лишний RAМ. Давай- те обратим свои взоры к FIDО и поищем там ответы на интересующие нас вопросы. Слово предоставляется первому попавшемуся чело- веку, рассуждения которого, по-моему, за- служивают всеобщего внимания. Итак, (С) 1999 Rоmаn Мilukоv (2:4616/14.29) ----------------------------------------- Здравствуй, All! Возникли у некоторых вопросы по поводу кеша-32К. Дескать, не работает. Закидываю подправленую схему. Если это не зарабо- тает, значит ошибка в монтаже. Порт #СFF7. Не знаю как у кого, но после появления аналогичной схемы от ARС, я теперь обяза- тельно сделаю блокировку этого порта в своём компе! И включена она будет пос- тоянно. И ещё раз: Не заводить на этот порт RЕSЕТ - идея не из лучших. При этом хоть и отпадает необходимость записывать в не- го при каждом перезапуске нужное значе- ние, но появляются другие проблемы: 1. что делать, если какой-то нехороший программер полез к нему без разрешения и вписал туда чего ему захотелось? 2. что делать, если произошёл сбой в ре- зультате мощной импульсной помехи? - а в ОЗУ была важная информация! САСНЕ = 62256 ============= В Пентагоне очень легко поставить СAСНЕ-ОЗУ на 537РУ10. Схема от ВМГ опуб- ликована в Спектрофоне-17. И не только для Пентагона. Но с 2К мало от него поль- зы. Вот 16К - другое дело! Там же расска- зано, как сделать и 16К - на двух 537РУ17 - их надо напаивать "бутербродом" друг на друга. Но гораздо удобнее взять одну бур- жуйскую микросхему статического ОЗУ - 62256 (разные фирмы называют их по разно- му, у меня стоит НМ62256LР). Вот тут появляется "серьезная" проб- лема - 62256 имеет объем 32К. Ну 16К за- действуем как положено. А куда б приме- нить остальные 16К? Сразу приходит мысль адресовать их битом 4 #7FFD. Но весь су- ществующий софт под кеш писался с учетом того, что при любом значении этого бита имеем один и тот же кеш! Иногда такое необходимо! Поэтому _нельзя_ просто 1-ую ногу цеплять на бит 4 #7FFD! Я решил сделать в своем компе вот что: (рис.1)
Привязка дана к микросхемам Пентаго- на! Сигналы: /DОSЕN - 11н. D83 (1н. ПЗУ 27512); RОМ - 12н. D62. Не забудьте на 26-ую ногу 62256 за- вести А13 (шина А0-А15) с Z80, на 2-ую - А12, на 23-ю - А11. (На 22-ой должен быть /RD. А остальные ноги подключаются как и у ПЗУ.) 28-ая нога - питание, если подавать его как указано, то информация в стат.ОЗУ при выключеном питании будет сохраняться пока не сядет батарейка. А потребляет статическое ОЗУ в режиме хранения ОЧЕНb мало. (Именно поэтому применена 155ЛЛ2!). Для не-Пентагона есть одна тонкость. Вот схема В.М.Г.:
Здесь последний элемент ЛЛ1 надо заме-
нить на элемент 155ЛЛ2 и резистор на 1К (у ЛЛ2 выход - открытый коллектор), и соединить его выход с одноименным выходом схемы, показаной на рис.1. Или можно тут применить элемент ЛП8, как в Пентагоне. а 13-ую и 10-ую ноги КП11 (рис.1) надо по- давать сигнал с 6-ой ноги ТМ2, на 1-ую ногу ЛЛ2 (рис.1) - подавать с 3-ей ноги ЛЛ1. Вместо серии 1533 можно поставить 555. Можно, конечно, поставить тумблера на 1- ую и 15-ую ноги КП11 и работать руками, но лучше сделать так: bit1 и /bit4 - это биты порта #СFF7, получены вот таким образом:
У кого собраны GLUК-часы по доработа- ной схеме, дешифратор уже есть. (И пита- ние на 62256 можно взять оттуда.) Теперь, если порт сброшен, имеем прос- той СAСНЕ 16К (1-ая страница 62256). Нор- мальный! Если установить бит 4 в порту #СFF7, то имеем СAСНЕ-32К, где старший адрес - бит 4 #7FFD. Если в нормальный СAСНЕ-16К загрузить, к примеру, ТR-DОS 5.04Т (в ПЗУ у меня си- дит ТR-DОS 5.12F by RЕANIМAТОR), то уста- новив биты 4 и 1 #СFF7, можно юзать проги критичные к версии ТР-ДОСа. При этом у Вас будет и кеш - подключится 0-ая стра- ница! Бит 0 порта #СFF7, будучи установлен, запретит прогам доступ к этому порту до нажатия на RЕSЕТ (если надо). Есть еще одна интересная возможность - подключить ноги 2 и 11 КП11 (рис.1) вот таким образом:
Тогда можно загрузить в страницы СAСНЕ- 32К, к примеру, NеОS и свой вариант бей- сика-48, установить бит 2 #СFF7, и они станут на места бейсика-128 и стандартно- го бейсика-48. Запись при этом в них ста- нет невозможна.
------- Макс: до сих пор нет единого стандарта по кеш-32К, поэтому каждый более-менее шаря- щий в электронике изобретает свой велоси- пед. ------- Варuацuя на тему СМОS=чаcы по Глюку. Пришлось набить схемку, по которой я сделал себе часы. Смотрите - может кому и пригодится. Прошу обратить внимание на то, что это НЕ ЯВЛЯЕТСЯ ещё одним стан- дартом! Адресация по стандарту Глюка, только чуть жёстче, что, на мой взгляд, полезно. СМОS-часы. Рекомендую к применению.
Сигналы с ног 2 и 3 ТМ8 можно подавать на схему дополнительного графического ре- жима 512*192 рiх. Тогда от той схемы ос- таётся только КП11 и ИР23. Вообще-то схемка подключения ног 18, 20, 22 немного некорректна, но оно и так работает. Так было у Глюка, и себе я сде- лал так - лень было сделать как надо. (Правда, у Глюка часы питаются ТОЛbКО от батарей 4.5V) А по хорошему надо так:
Всего хорошего. С уважением Rоmаn Мilukоv.



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

От автора - управление, действие иконок в статье, о следующих номерах, связь.

Программистам - Процессор Z380

Программистам - Сборник кодов: зашифровка файла, Эффект точечной сетки, работа с диском при включенных прерываниях, программирование кэша.

Программистам - Теория: Биты и байты.

Очумелые ручки - Реализация кэша.

Очумелые ручки - ZX-дигитайзер: оцифровка видеосигнала.

Очумелые ручки - Всё о HDD IDE: Краткое описание портов и битов.

Белый_попугай - Советы молодожёнам.

Белый_попугай - Поручик Ржевский.

Белый_попугай - О начальстве.

Белый_попугай - Автошкола.

Белый_попугай - Набор приколов.

Раскрутка - Новые группы.

Раскрутка - Алло, таланты!

Раскрутка - Neos

Игротека - Редактор черного ворона и его новые миссии.

Игротека - Прохождение игр: 12 Тайныx Книг, Twillight.

Игротека -Перспективные проекты.

Разное - Наша жизнь компьютерщика.

Разное - Глюкодром.

Разное - Intel outside.

Разное - Почтовый ящик.

Разное - Pidarsoft.

Разное - Реклама.

Комментарий к приложению


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

Похожие статьи:
Очумелые ручки - Питание для кэш.
Очумелые ручки - Контроллер ОЗУ.
Железо - схема виртаульного ПЗУ.

В этот день...   20 февраля