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 - Авторы и контакты редакции. |
Похожие статьи:
В этот день... 21 ноября