Пересмотрел избранные реплики
sadfsdfsdaf [
#1,
#2]. Оказывается, сам по себе оператор PAINT расположен в ПЗУ по адресу 0xE748, где код начинается так:
Code:
E748: LDA BE52
E74B: STA BEA3
Что совпадает с тем, что написано в мануале по Бэйсику:
Quote:
Оператор PAINT используется для закрашивания области экрана видеотерминала сплошным цветом.
Формат оператора:
<номер строки> PAINT (<Х - коорд>, <Y - коорд> ), <цвет> [, <граница>]
где <Х - коорд>, <Y - коорд> - выражения, значения которых равны соответственно координате Х и координате Y - точки, с которой начинается закрашивание области;
<цвет> - выражение, задающее значение номера цвета закраски (если опущено, то используется цвет переднего плана, определенный ранее);
<граница> - выражение, определяющее номер цвета границы области закраски (если опущено, то номер цвета границы совпадает с номером цвета закраски).
Параметр <граница> указывается в том случае, если цвет закрашивания не совпадает с цветом границы закрашиваемой области. Точка начала закраски области может быть любой точкой внутри области (но не на границе). Оператор PAINT проверяет наличие границ только по вертикали и горизонтали - и объект признается ограниченным, если ограничены вертикаль и горизонталь. Но малейшая прореха в границе позволяет оператору PAINT "пролезть" наружу и там закрасить область экрана (а том числе и всего).
По коду дальше видно, что 0хBEA3 действительно может принимать независимое значение.
Так что, все сходится. Переменная BRD_COLOR прописана по адресу 0хBEA3, по которому одновременно проживает и AUTOSTART. Такая вот коммуналка.
Наличие явной баги составители доки отметили, но проблему в результате решили без затей: просто удалили описание процедуры PAINT. Это по-нашенски. Зато PAINT теоретически можно было бы использовать для создания каких-либо неожиданных эффектов при работе с магнитофоном.