╔═══════╦═─────────────═╦══════╗
│───═══ │ C И C Т Е М А │═══───│
╚═══════╩═─────────────═╩══════╝
Пpедлагаемый ниже матеpиал поднимает,
на наш взгляд, очень интеpесную тему. Пе-
pедаем слово нашим коppеспондентам из
Хаpькова.
Jemmini: В двух словах о проблеме. Нас
весьма поразило то количество программ из
России, которое ориентировано только на
"ПЕНТАГОН" и не на что другое. Эта продук-
ция в подавляющем большинстве случаев выг-
лядит крайне плохо на фирменных машинах и
машинах с раздельным полем памяти. Склады-
вается впечатление, что это уже и не для
SPECCY писано, а неизвестно для чего и на
чем! Может быть эталоном стал уже вовсе не
SPECCY, а его доморощенный аналог? Одним
словом, я вас очень прошу, поднимите этот
наболевший вопрос в своем журнале, ибо
только ваш журнал может здесь чем-то по-
мочь!
(C) Jemmini & Metallica
"МЕДЛЕHHАЯ" ПАМЯТЬ SPECCY
═══════════════════════════════════
...Многие из них безвозвратно ушли в
прошлое, некоторые трансформирова-
лись, из некоторых родились "мон-
стры"...
(из предисловия к книге Н.Родионова)
ATTENTION!
Посредством жуpнала "SPECTROFON" мы хо-
тим обратиться ко всем программистам и ха-
керам, которые, возможно не по своей вине,
забыли или не знали одно очень важное
свойство SPECCY, о котором мы попробуем
рассказать.
Jemmini:
Прежде, чем я начну излагать суть проб-
лемы, хочу отметить одно различие в море
совдеповских схем. Существует две их реа-
лизации: с общим полем памяти и с раз-
дельным. К первой относятся "ПЕНТАГОН",
"ЛЕНИНГРАД-1,2", "БАЛТИК" и т.п. Предста-
вителями второй реализации являются
"КРАСНОДАР", "ХАРЬКОВ", "МОСКВА-48" и...
фирменный SPECCY!
В фирменном SPECCY, при чтении видео-
контроллером данных, происходит "запира-
ние" тактовых импульсов, идущих к цен-
тральному процессору. Таким образом реали-
зован останов процессора на время вывода
информации из ОЗУ на экран. Как известно,
видеопамять SPECCY находится в страницах
ОЗУ с номерами 5 и 7. Поэтому видеокон-
троллер производит выбор данных именно из
этого участка памяти. Но SPECCY устроен
так, что упомянутые страницы составляют со
страницами 4 и 6 один блок. Только для
удобства изложения я назову его блоком ви-
деопамяти (далее по тексту БВП). Работа
БВП из-за обращений к нему видеоконтролле-
ра несколько замедлена, а именно на 25%
(дело в том, что эти обращения "перекры-
вают" два тактовых импульса из каждых
восьми). Это замедление в определенных
случаях может влиять на работу компьютера
в целом, причем на быстродействии послед-
него сказывается зависимость от частоты
обращений центрального процессора к БВП.
Замечу, что наибольшего своего значения
эта частота достигает при выборке кодов
команд из упомянутой памяти. Поэтому для
сведения к минимуму обращений к БВП, ра-
ционально помещать в него данные. Именно
для данных и применяется эта память.
Одним из тяжелых случаев является тот,
когда в БВП помещена программа. При таком
размещении, быстродействие на этом отрез-
ке программы падает на четверть.
Но даже не это заставило меня написать
настоящее послание, а нечто менее очевид-
ное, но не менее серьезное и неприятное! И
эти неприятности связаны с привычкой мно-
гих доморощенных...-soft'ов устанавливать
в регистр вектора прерываний I число, ука-
зывающее на этот злополучный БВП. Эта нак-
ладка приводит к еще более трагичным ре-
зультатам.
Как я уже написал, фрагмент программы,
попавший в БВП, теряет 25% скорости, но
если туда попадает таблица прерываний, то
ВСЯ МАШИНА СТАНОВИТСЯ МЕДЛЕННЕЕ НА 25%! Не
углубляясь в причины, скажу к чему это
приводит. Нет, машина не взрывается и да-
же не виснет, а всего-лишь ВСЕ перестает
"укладываться в прерывание", как принято
говорить у программистов. Но это еще не
все и не самое худшее, когда казалось бы и
так достаточно. Беда начинается вместе с
загрузкой с диска - ДОС не может читать
диск!
Ведь скорость его вращения осталась
прежней, а скорость ДОС упала на 25%, в
результате чего все задержки по времени
стали неверными! Возникает ошибка чтения,
а мне ли вам рассказывать как многие prog
реагируют на это...
Стоит заметить, что вышеизложенное
"свойство" не зависит от режима прерыва-
ний!
Как решение этой проблемы мы рекомен-
дуем всем программистам устанавливать в
регистре I значения в диапазонах от #00 до
#3F и от #80 до #BF. При такой установке
накладок не происходит. Возможна также ус-
тановка в диапазоне от #C0 до #FF при ус-
ловии, что текущими в подавляющем большин-
стве случаев являются страницы не принад-
лежащие БВП. В случае значений от #40 до
#7F, вектор прерываний всегда будет указы-
вать в БВП, что неизбежно приведет к поте-
ре быстродействия.
Уважаемые коллеги из России! Разве вы
располагаете только "ПЕНТАГОНАМИ"? Неуже-
ли вы не видите как делали все фирмы, как
делали поляки (у них были фирменные маши-
ны!), и наконец, как сделано во всем из-
вестных SATISFACTION и INSULT? Может быть
вы просто не обращали внимания, а ведь там
все с учетом вышесказанного: блок видеопа-
мяти - под данные, остальная память - под
программу. И что вы у фирм точно не найде-
те, так это регистр I со значениями от #40
до #7F.
Что же касательно положения в Украине,
то могу вас заверить, что машин с раз-
дельным полем памяти здесь предостаточно.
Да и судя по публикациям в жуpнале
"SPECTROFON" в России аналогичные машины
тоже выпускаются.
Jemmini & Metallica:
Все, кто прочел эти строки! Примите во
внимание вышеизложенное и не ленитесь на
время работы с ДОС в регистр I заносить
#3F, а в ОЗУ устанавливать таблицу преры-
ваний так, чтобы она не попала в блок ви-
деопамяти! А нам остается только на-
деяться, что тот, кто допускал такие ошиб-
ки, больше их не сделает, что наш рассказ
будет полезен всем вам, дорогие синклерис-
ты. Пока!
Матвийчук М.В. (Jemminisoft)
310066, г.Харьков, пер. Прогрессивный,
д.28, кв.1 тел.:(0572) 98-81-35
Гребенник В.А. (Metallica)
310091, г.Харьков, ул.Танкопия, д.5, кв.44
тел.:(0572) 90-45-24
* * *
"S": Надо отметить, что эта проблема под-
робно разбиралась в трехтомнике "Програм-
мирование в машинных кодах и на языке АС-
СЕМБЛЕРА" изданном "Инфоркомом" в 1993г.
Но, поскольку это издание сейчас перешло в
разряд библиографических редкостей, инфор-
мация харьковских программистов несомненно
вызовет определенный интерес. Еще раз об-
ращаем ваше внимание на тот факт, что при
попадании регистра I в диапазон от #40 до
#7F замедление компьютера НЕ ЗАВИСИТ ОТ
РЕЖИМА ПРЕРЫВАНИЯ! В каждом цикле машинных
команд Z-80 обращается к ячейке памяти,
адресуемой регистром I, выводя его в стар-
шие восемь битов адресной шины и активизи-
руя линию запроса памяти MREQ. Это ин-
терпретируется ULA как обращение к БВП,
приводя к конфликту с контроллером
дисплея вне зависимости от режима прерыва-
ния. Однако мы также не рекомендуем ис-
пользовать значения регистра I от #00 до
#3F для второго режима прерывания, т.к.
при этом таблица прерываний попадает в об-
ласть ПЗУ, что на компьютерах с неста-
бильной шиной данных приводит к непредска-
зуемым результатам. Видимо, оптимальным
будет использовать значения регистра I из
диапазона от #80 до #BF.
─═══─