|
KrNews
#15
02 ноября 2001 |
|
Железо - как избежать глюков со вторым режимом прерываний на машинах с разделением поля памяти.

_
IM 2
_
(c)Alex_Naz 2001
Сколько ни пиши, сколько не говори, а
люди игнорируют некоторые глобальные ве-
щи.Речь пойдет о том, как избежать глю-
ков со вторым режимом прерываний на ма-
шинах с разделением поля памяти.Многие
современные писатели(не могу назвать
программистами), любят загружать регистр
I значениями выше 63, а затем обращаться
к TR-DOS.Почему же этого нельзя де-
лать?Конкретный ответ, на данный вопрос
можно найти в 3-ех томнике по программи-
рованию "ИНФОРКОМА".Цитата:
"...При каждом цикле машинных команд
Z-80 обращается к ячейке памяти, адресу-
емой регистром "I", выводя его в старшие
восемь битов адресной шины, а линия зап-
роса памяти "MREQ" активизируется."ULA"
генерирует прерывания каждый раз, когда
необходимо изменить содержимое экра-
на.Это заставляет Z-80 запустить прог-
рамму обработки прерываний, при условии,
что прерывания подключены.
Когда программа обработки прерываний
выполнена, процессор возвращается в точ-
ку, в которой он был при прерывании.Если
это команды считывания/записи в память
между #4000 и #7FFF, что "ULA"(сейчас
используется другой аналог этого конт-
роллера дисплея) проверяет, просматривая
две старшие линии адресной шины и линию
"MREQ", то "ULA" приостанавливает мик-
ропроцессор до окончания изменения экра-
на.
Если старший бит регистра "I" сброшен,
а бит 6 активизирован, то "ULA" может
запутаться из-за регенерации динамичес-
кой памяти.Активизируется линия "MREQ",
и регистр "I" помещается в старшие во-
семь битов адресной шины.Далее "ULA" ду-
мает, что процессор производит запись
или считывание в эту область ОЗУ, и при
попытке это предотвратить, "ULA" пропус-
кает свое собственное обращение для из-
менения дисплея, что приводит к развалу
картинки.Поэтому в регистре "I" не долж-
но содержаться любое число от 64 до 127
включительно, т.е. с двумя старшими би-
тами, установленными вышеописанным обра-
зом."
Итак надеюсь, что все кто не знал об
этом, теперь знают и впредь не будут иг-
норировать этого правила.На сегодняшний
же день существует множество программ, в
которых это правило не соблюдается, а
всего-то нужно восстановить регистр I.
Из-за таких ошибок появляются различ-
ные "прибамбасы" для машин с разделенным
полем памяти.Но только подумайте, если
все будут писать программы только под
свой компьютер, а затем указывать в тех-
нических требованиях:
"Для нормальной работы необходимо от-
резать ножку X от микросхемы Y".
Тогда произойдет массовая "резня"
плат, что недопустимо.Лучше исправить
ошибку в программе, чем "коцать" плату.
Конечно эта "резня" будет, но уже не
массовой, как я написал выше, это связа-
но с тем, что количество компьютеров с
разделенным полем памяти не так уж и вы-
соко, но все таки нельзя не считаться с
этим.
В современных компьютерах в которых
нет разделения памяти, можно с регистром
"I" вытворять что угодно, чем все и за-
нимаются.
И на последок небольшой списочек прог-
рамм, в которых регистр "I" загружен
числами из "запрещенного" интервала:
Spiders
Global Commander
Ultimatum 2
Zasm 3.10demo
Last Hero of Light Force
Надеюсь эта информация окажется полез-
ной для вас и вы, уважаемые программисты
будете учитывать ее при написании своих
продуктов.
_
Другие статьи номера:
INTRO - выход ПОСЛЕДНЕГО номера KrNews. |
Железо - как избежать глюков со вторым режимом прерываний на машинах с разделением поля памяти. |
Спектрум - Думы о перспективах платформы Spectrum. |
Рассказ - Любовь зла. |
Таланты - PROJECT: Spectrum DEAD. СПЕКРУМ УМИРАЕТ!!! |
Новелла - 12 ТАЙНЫХ КНИГ (глава 3). |
Реклама - Реклама и объявления ... |
Outro - Авторы и контакты редакции. |
Похожие статьи:
В этот день... 16 ноября