О прямом программировании
КР1818ВГ93
---------------------------------
(C) Дмитрий Жарков,
Мордовия, 1995.
Сесть за это письмо меня побу-
дила статья Андрея Кулакова
(ZX-РЕВЮ-94, N5, стр.19). Меня
очень интересует защита дисков
методом прямого программирования
ВГ93, а также ее снятие. Возьмем,
к примеру, "Скорпион ZS-256". В
этой машине есть порт #1FFD. Ну-
левой разряд его отвечает за ра-
боту ПЗУ, то есть в режиме 128К
там всегда "0". А если там "1",
то ПЗУ отключается. Этот режим, я
так думаю, должен был бы исполь-
зоваться для работы в среде СР/М.
До сих пор я не видел эту систему
на "Скорпионе". А идея заключает-
ся в следующем. Если отключить
ПЗУ, у нас будет 16К памяти, в
которых можно расположить все,
что угодно. Хотя "Скорпион" имеет
256К памяти, но это не главное.
При обращении по адресу #3D13 у
нас "включится" контроллер диска,
но так как ПЗУ заблокировано, у
нас появляется прямой доступ к
портам ВГ93 (что, в принципе, не-
обходимо в СР/М). В этом случае,
засылая в теневое ОЗУ программу,
можно делать все, что хочешь.
Есть, конечно, много проблем.
Во-первых, нужно запретить преры-
вания или обслуживать их самому.
Во-вторых, в "Скорпионе" мы можем
иметь доступ ко всем 128К памяти,
но через "окно" 16К. После "сбро-
са" мы имеем в окне "RAM7", хотя
в режиме 48К, если использовать 5
бит порта #7FFD, "RAM0". Идея та-
кая. Включаем "RAM0" в окно. За-
полняем 16К тем, что нужно. Впе-
чатываем в окно другую страницу.
Отключаем ПЗУ и получаем програм-
му в нулевой области, так как
"RAM0" физически располагается в
#0000-#3FFF.
Можно по-другому. Просто отк-
лючить ПЗУ и перебросить подго-
товленную заранее программу свер-
ху вниз. В том и другом случае
нужно проконтролировать, чтобы
"RAM0" не впечатывалась в окно.
Далее - о программе. Можно вы-
тащить из ПЗУ TR-DOS и, изменив
некоторые компоненты, "закинуть"
ее в теневое ОЗУ. Можно написать
свои процедуры и пользоваться
исключительно ими. В том и другом
случае у нас имеется прямой дос-
туп к портам ВГ93. Далее я приво-
жу раскладку адресного пространс-
тва "Скорпиона".
RAM8 и RAM9 используют теневой
сервис-монитор.
ROM0 - BASIC 48K
ROM1 - BASIC 128K
ROM2 - MONITOR
ROM3 - TR-DOS
У меня был старый добрый "Пен-
тагон-128", в нем я и реализовал
эту идею. Если посмотреть его
схему, то можно увидеть, что 20
вывод ПЗУ (27512) всегда на зем-
ле. Отрезал (там предусмотрена
перемычка). Если подать туда "1",
то ПЗУ отключается. Дальше - са-
мая большая проблема. Нужно ввес-
ти порт, который бы этим занимал-
ся. Использовать #7FFD (два ос-
тавшихся разряда) нельзя, так как
в режиме 48К этот порт блокирует-
ся. Я предлагаю использовать порт
от "Скорпиона" (#1FFD). Будет
хоть частичная совместимость. Пя-
тый разряд (D5) служит для управ-
ления памятью 256К. Третий разряд
(D3) - RS232. Хотя можно исполь-
зовать любой порт. Например, от
"PROFI" #0DFF. Вот, к примеру, ПК
"ATAC" использует 256К ОЗУ, при-
чем, режим 128К это порт #7FFD, а
выше 128К - нулевой разряд порта
(ВВ55) #5F. Вот такие дела. Каж-
дый делает то, что хочет.
Еще было бы неплохо читать
состояние этих портов. Хотя есть
системные переменные.
RS232 можно использовать с мо-
демом (внешним) или для MIDI-рас-
ширений. Хотя в "Пентагон-128"
есть уже RS232.
И последнее. В ПК "Пента-
гон-48" в контроллере есть не-
большая ошибка, хотя и ошибкой ее
назвать нельзя. Дело в том, что
33 вывод ВГ93 в некоторых конт-
роллерах используется, в некото-
рых - нет. При чтении использует-
ся как выход "разрешение данных".
Так на шести платах пришлось от-
резать его от остальной схемы
так, чтобы "1" осталась на ТМ2, а
этот вход остался никуда не подк-
люченным. Это происходит из-за
разброса элементов схемы. Нес-
колько плат работаеют без дора-
ботки, а "Скорпион" вообще не ис-
пользует этот вход.
Еще я отрезаю RES ВГ93 от пор-
та #FF и вешаю на общий сброс.
Тем самым удалось открыть нес-
колько программ.