с помощью утилиты DEBUG, то
(с разрешения фирмы Motorola)
Если попытаться изменять регистры с помощью утилиты DEBUG, то это
может не сработать. Регистры R14 и R15 управляют позицией курсора,
и если утилита DEBUG переместит курсор между вашими обращениями к
индексному регистру и к регистру данных, изменения не произойдет.
Так получилось потому, что утилита DEBUG изменила содержимое
индексного регистра микросхемы 6845, и он уже больше не указывает
на тот внутренний регистр, который вы хотели изменить.
Другая интересная регистровая пара микросхемы 6845 - пара
регистров начального адреса R12 и R13. Адаптер цветного
графического дисплея имеет 16K байт памяти, а монохромная плата 4K
байта. Дополнительная память в цветной плате используется для
графических режимов, но она целиком в вашем распоряжении и в
текстовых режимах. Для текстового режима 80*25 требуется 4K байта
памяти, так что в буфере есть место для четырех разных страниц
памяти. Сдвигать данные на экране можно переносом данных с одного
места на другое, как это делалось на Фиг. 8.8. В случае же
вертикального сдвига нужно лишь изменить начальный адрес в
микросхеме 6845. Обычно начальный адрес равен 0. Если вы измените
его на 80 (число символов в строке), отображение будет начинаться
со второй строки. Это даст немедленный эффект сдвига всех данных
экрана вверх на одну строку.
На самом деле вы не изменяли данные, а сдвинули начало
сканирования памяти дисплея. Можно рассматривать дисплей как окно
80*25, через которое мы смотрим в 8192-символьный буфер дисплея.
При использовании начального адреса для сдвига данных возникают
сложности, когда вы приближаетесь к границе 16K байт. В этой точке
отображение "заворачивается". Верхние строки извлекаются из конца
буфера, а нижние строки - из его начала. Вы, конечно, сможете
решить эту проблему, но для этого потребуются некоторые размышления
Содержание Назад Вперед