(С) 1999 Макс/Compu-Sudio Ltd
-----------------------------------------
Добрый день! Сегодня я вам расскажу о
самой классной доработке Спектрума в пла-
не программирования и взлома программ за
всё время существования нашего компьюте-
ра. Предидущим достижением такого плана
было изобретение теневика на Скорпионе.
Теперь все не-Скорпионщики могут сделать
себе данное приспособление и при наличии
соответствующего программного обеспечения
стать в один ряд с продвинутыми кодерами
и хакерами.
Это устройство не ново - ещё в старом-
добром Spectrofon`е 17 знаменитый В.М.Г.
предлагал. Но тогда данное устройство не
вызвало ажиотажного спроса. Теперь же, по
мере написания программ "под кеш", нали-
чие этого устройства становится всё более
необходимым. И даже престижным.
Данный текст уже морально устарел, но
учитывая то, что многие по-прежнему отре-
заны от сетей, а значит - и от "цивилизо-
ванного рынка информации", да ещё в при-
дачу ко всему схема от В.М.Г. имеет глюки
в работе, то я счёл необходимым затронуть
эту тему в своём издании.
Для начала перечислю все те плюсы, ко-
торыми изобилует этот аппаратный апгрейд:
1) 16К сверхбыстрой памяти в адресном
пространстве ПЗУ;
2) теневой принцип нахождения в схеме
компьютера;
3) программно доступны все адреса, ко-
торые вызываются командами RST. Можно са-
мому использовать в своих целях, например
тот же RST 8 или даже RST 0;
4) самый, что ни есть, полный доступ к
портам ВГ93, что открывает потрясающие с
точки зрения программиста возможности ра-
боты с диском! Чего только стоит свобод-
ное чтение регистра #1F ВГ-шки на предмет
качества выполнения операции;
5) по адресу 102 или #66 (кто как при-
вык) можно разместить свой обработчик на-
жатия на magic, что несомненно упростит
взлом любой программы, не использующей в
своих целях кеш и не убивающих его;
6) любители писать свои новые ОС и на-
хрен никому не нужные виндовсы теперь мо-
гут убраться нахрен из основного ОЗУ ком-
па в кеш, а точки входа в свои маздайные
оболочки сделать по-человечески - через
RST`шки! Как в is-dos, например, но при
этом использовать их все, а не только на-
бивший оскомину RST 16;
7) много всяких-всяких возможностей...
Минусы наличия кеша: некоторые маздай-
ные программы (в основном старьё) любили
делать LPRINT txt, что приводит к медита-
ции всей системы. Выход из этого - сделай
перед работой инсталляцию Lprint`овой ПЗУ
методом считывания с диска прошивки и пе-
реброски её в кеш. Не забудь при этом от-
крыть/закрыть кеш ;)
Итак, привожу ИСПРАВЛЕННУЮ схему кеша,
которую любезно предоставил Master. После
переделки схемы всё стало корректно рабо-
тать и не напрягать схему компьютера.
На схеме есть тумблер, который перево-
дит нажатие magic`а в кеш или обычный дос
и которым удобно пользоваться в различных
жизненных ситуациях. У меня, правда, одна
ситуация - кешем ломаю или отлаживаю про-
ги, которые ковыряю или пишу.
Теперь немного информации о методе ра-
боты с кеш и пример его применения. Блин,
всё гениальное просто:
DI
IN A,(#FB) ;кеш открыт!
CALL nn ;программа user`а
IN A,(#7В) ;кеш закрыт!
EI ;ну, если это нуж-
RET ;но...
И всё! Нет никаких дурацких LD ВС,#nnn
и OUT (С),n и прочей ерунды, которая при-
водилась в DEJA VU 7 и других изданиях,
приводивших примеры "расширения ОЗУ" на
16/32К. Тоже, конечно, хорошо, но зачем
делать то, под что проблематично писать
софт? Хотя это чисто моё мнение, не пре-
тендующее ни на что. А вот кэш - это кру-
то! И самое интересное - все возможности
"в одном флаконе"!
Возможности программиста. Они ограни-
чиваются только объёмом кеша: 2, 4, 8 или
16 килобайт реализовано в одной странице,
или сколько? Проверить это можно по-раз-
ному. Самый примитивный способ мой, кото-
рый позволяет грубо подсчитать количество
кило в кеше или определить его отсутствие
вообще.
DI ;без прерываний!
IN A,(#FB) ;open кеш
LD HL,#0000
LD DE,#0001
LD ВС,#ЗFFF
LD (HL),L
PUSH HL ;очистка кеша
LDIR
РОР HL
LD A,#01 ;байт контроля любой,
LD (HL),A ;кроме #F3!
СР (HL) ;есть ОЗУ, или нет?
JR NZ,NO_CACHE;нет, а жаль...
LD ВС,#ЗFFF;1бКб размер страницы
INC HL ;с адреса #0001 ищем
CPIR ;возможные повторения
LD HL,EXIT ;выход из теста
PUSH HL ;так короче ;)
LD A,Н ;адрес, где есть сов-
LD Е,#08 ;падения с контролем
СР Е
RET Z ;кеш на 2К
LD Е,#10
СР Е
RET Z ;на 4К
LD Е,#20
СР Е
RET Z ;на 8К
РОР HL
LD Е,#40 ;нет совпадений, зна-
EXIT IN A,(#7В) ;чит кеш 16К. Rulez!
LD A,Е ;результат теста для
EI ;дальнейшего примене-
RET ;ния.
NO_CACHE
LD Е,0 ;нет кеша вовсе!
JR EXIT
Как видите - ничего сложного здесь нет
и быть не может. Память кеша организова-
на таким образом, что можно ставить любую
рушку без риска "улететь". И использовать
можно всё адресное пространство вне зави-
симости от объёма ОЗУ кеша. Допустим, что
вам надо сделать обращение к диску, но у
вас, как на зло, всего 2К кеш. Ничего нет
страшного в этом! Главное, чтобы драйвер
дисковых операций небыл безмерно раздут.
Так как порты доса доступны при обращении
к окну #3D00-#ЗDFF, то и драйвер дисковых
операций можно положить туда же. Откройте
кеш, ldir`ните под адрес #3D00 свой драй-
вер и можете свободно его использовать в
своих целях. Имейте ввиду, что порты доса
будут доступны только, если РС бегает по
кешу в любом месте (естественно, если вы
вошли в кеш через окно), а для доступа к
портам "ZX" надо сделать выход в основное
ОЗУ. Не забывайте это при написании своих
программ, которые предполагается частично
или полностью размещать в кеше!
В приложении к журналу есть программа,
которая поможет вам определиться с нали-
чием или отсутствием кеша, а также с его
объёмом. Это "MAGIC INSTALLER". Она, ко-
нечно, не идеал, но при наличии у вас до-
полнительного ОЗУ по любому из известных
стандартов памяти, позволит почувствовать
себя крутым хакером.
Для установки кеша можно использовать
как советские микросхемы РУ10 или РУ17, а
также и буржуйскими аналогами. Крайне ре-
комендую микросхему HY62256ALP-10 на 32Кб
объёмом. У меня стоит именно она. Но мар-
кировка может быть и другой. Главное - её
объём!
Здесь, правда, появляется "проблема":
а куда девать остальные 16К, неиспользо-
ванных в предидущей схеме? Ведь руки так
и чешутся приспособить лишний RAM. Давай-
те обратим свои взоры к FIDO и поищем там
ответы на интересующие нас вопросы. Слово
предоставляется первому попавшемуся чело-
веку, рассуждения которого, по-моему, за-
служивают всеобщего внимания. Итак,
(С) 1999 Roman Milukov (2:4616/14.29)
-----------------------------------------
Здравствуй, All!
Возникли у некоторых вопросы по поводу
кеша-32К. Дескать, не работает. Закидываю
подправленую схему. Если это не зарабо-
тает, значит ошибка в монтаже.
Порт #CFF7.
Не знаю как у кого, но после появления
аналогичной схемы от ARC, я теперь обяза-
тельно сделаю блокировку этого порта в
своём компе! И включена она будет пос-
тоянно.
И ещё раз: Не заводить на этот порт
RESET - идея не из лучших. При этом хоть
и отпадает необходимость записывать в не-
го при каждом перезапуске нужное значе-
ние, но появляются другие проблемы:
1. что делать, если какой-то нехороший
программер полез к нему без разрешения и
вписал туда чего ему захотелось?
2. что делать, если произошёл сбой в ре-
зультате мощной импульсной помехи? - а в
ОЗУ была важная информация!
САСНЕ = 62256
=============
В Пентагоне очень легко поставить
CACHE-ОЗУ на 537РУ10. Схема от ВМГ опуб-
ликована в Спектрофоне-17. И не только
для Пентагона. Но с 2К мало от него поль-
зы. Вот 16К - другое дело! Там же расска-
зано, как сделать и 16К - на двух 537РУ17
- их надо напаивать "бутербродом" друг на
друга. Но гораздо удобнее взять одну бур-
жуйскую микросхему статического ОЗУ -
62256 (разные фирмы называют их по разно-
му, у меня стоит НМб2256LP).
Вот тут появляется "серьезная" проб-
лема - 62256 имеет объем 32К. Ну 16К за-
действуем как положено. А куда б приме-
нить остальные 16К? Сразу приходит мысль
адресовать их битом 4 #7FFD. Но весь су-
ществующий софт под кеш писался с учетом
того, что при любом значении этого бита
имеем один и тот же кеш! Иногда такое
необходимо! Поэтому _нельзя_ просто 1-ую
ногу цеплять на бит 4 #7FFD!
Я решил сделать в своем компе вот что:
(рис.1)
Привязка дана к микросхемам Пентаго-
на! Сигналы: /DOSEN - 11н. D83 (1н. ПЗУ
27512); ROM - 12н. D62.
Не забудьте на 26-ую ногу 62256 за-
вести А13 (шина А0-А15) с Z80, на 2-ую -
А12, на 23-ю - А11. (На 22-ой должен быть
/RD. А остальные ноги подключаются как и
у ПЗУ.)
28-ая нога - питание, если подавать
его как указано, то информация в стат.ОЗУ
при выключеном питании будет сохраняться
пока не сядет батарейка. А потребляет
статическое ОЗУ в режиме хранения ОЧЕНь
мало. (Именно поэтому применена 1SSЛЛ2!).
Для не-Пентагона есть одна тонкость. Вот
схема В.М.Г.:
Здесь последний элемент ЛЛ1 надо заме-
нить на элемент 1SSЛЛ2 и резистор на 1К
(у ЛЛ2 выход - открытый коллектор), и
соединить его выход с одноименным выходом
схемы, показаной на рис.1. Или можно тут
применить элемент ЛП8, как в Пентагоне. а
13-ую и 10-ую ноги КП11 (рис.1) надо по-
давать сигнал с 6-ой ноги ТМ2, на 1-ую
ногу ЛЛ2 (рис.1) - подавать с 3-ей ноги
ЛЛ1.
Вместо серии 1533 можно поставить 555.
Можно, конечно, поставить тумблера на 1-
ую и 15-ую ноги КП11 и работать руками,
но лучше сделать так:
bit1 и /bitЧ - это биты порта #CFF7,
получены вот таким образом:
У кого собраны GLUK-часы по доработа-
ной схеме, дешифратор уже есть. (И пита-
ние на 62256 можно взять оттуда.)
Теперь, если порт сброшен, имеем прос-
той CACHE 16К (1-ая страница 62256). Нор-
мальный! Если установить бит 4 в порту
#CFF7, то имеем CACHE-32К, где старший
адрес - бит 4 #7FFD.
Если в нормальный CACHE-16К загрузить,
к примеру, TR-DOS 5.04Т (в ПЗУ у меня си-
дит TR-DOS 5.12F by REANIMATOR), то уста-
новив биты 4 и 1 #CFF7, можно юзать проги
критичные к версии ТР-ДОСа. При этом у
Вас будет и кеш - подключится 0-ая стра-
ница!
Бит 0 порта #CFF7, будучи установлен,
запретит прогам доступ к этому порту до
нажатия на RESET (если надо).
Есть еще одна интересная возможность -
подключить ноги 2 и 11 КП11 (рис.1) вот
таким образом:
Тогда можно загрузить в страницы CACHE-
32К, к примеру, NeOS и свой вариант бей-
сика-48, установить бит 2 #CFF7, и они
станут на места бейсика-128 и стандартно-
го бейсика-48. Запись при этом в них ста-
нет невозможна.
-------
Макс: до сих пор нет единого стандарта по
кеш-32К, поэтому каждый более-менее шаря-
щий в электронике изобретает свой велоси-
пед.
-------
Вариация на тему
CMOS=часы по Глюку.
Пришлось набить схемку, по которой я
сделал себе часы. Смотрите - может кому и
пригодится. Прошу обратить внимание на
то, что это НЕ ЯВЛЯЕТСЯ ещё одним стан-
дартом! Адресация по стандарту Глюка,
только чуть жёстче, что, на мой взгляд,
полезно.
CMOS-часы. Рекомендую к применению.
Сигналы с ног 2 и 3 ТМ8 можно подавать
на схему дополнительного графического ре-
жима 512*192 pix. Тогда от той схемы ос-
таётся только КП11 и ИР23.
Вообще-то схемка подключения ног 18,
20, 22 немного некорректна, но оно и так
работает. Так было у Глюка, и себе я сде-
лал так - лень было сделать как надо.
(Правда, у Глюка часы питаются ТОЛьКО от
батарей 4.5V)
А по хорошему надо так:
Всего хорошего.
С уважением Roman Milukov.
Other articles: