<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://emuverse.ru/w/index.php?action=history&amp;feed=atom&amp;title=%D0%98%D1%81%D0%BA%D1%80%D0%B0-226%2F%D0%93%D1%80%D0%B0%D1%84%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B9_%D0%B1%D1%83%D1%84%D0%B5%D1%80_BASIC_02</id>
	<title>Искра-226/Графический буфер BASIC 02 - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://emuverse.ru/w/index.php?action=history&amp;feed=atom&amp;title=%D0%98%D1%81%D0%BA%D1%80%D0%B0-226%2F%D0%93%D1%80%D0%B0%D1%84%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B9_%D0%B1%D1%83%D1%84%D0%B5%D1%80_BASIC_02"/>
	<link rel="alternate" type="text/html" href="https://emuverse.ru/w/index.php?title=%D0%98%D1%81%D0%BA%D1%80%D0%B0-226/%D0%93%D1%80%D0%B0%D1%84%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B9_%D0%B1%D1%83%D1%84%D0%B5%D1%80_BASIC_02&amp;action=history"/>
	<updated>2026-08-26T19:09:13Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.40.0</generator>
	<entry>
		<id>https://emuverse.ru/w/index.php?title=%D0%98%D1%81%D0%BA%D1%80%D0%B0-226/%D0%93%D1%80%D0%B0%D1%84%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B9_%D0%B1%D1%83%D1%84%D0%B5%D1%80_BASIC_02&amp;diff=4294&amp;oldid=prev</id>
		<title>Panther: Новая страница: «{{emuverse}}  &#039;&#039;&#039;Графический буфер BASIC 02&#039;&#039;&#039; — формат хранения рисунка в памяти Искра-226. Буфер представляет собой &#039;&#039;&#039;обычный символьный массив Бейсика&#039;&#039;&#039;: оператор &lt;code&gt;¤OPEN&lt;/code&gt; объявляет массив буфером, графические операторы дописывают в него записи, оператор &lt;code...»</title>
		<link rel="alternate" type="text/html" href="https://emuverse.ru/w/index.php?title=%D0%98%D1%81%D0%BA%D1%80%D0%B0-226/%D0%93%D1%80%D0%B0%D1%84%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B9_%D0%B1%D1%83%D1%84%D0%B5%D1%80_BASIC_02&amp;diff=4294&amp;oldid=prev"/>
		<updated>2026-08-26T15:37:23Z</updated>

		<summary type="html">&lt;p&gt;Новая страница: «{{emuverse}}  &amp;#039;&amp;#039;&amp;#039;Графический буфер BASIC 02&amp;#039;&amp;#039;&amp;#039; — формат хранения рисунка в памяти &lt;a href=&quot;/w/index.php?title=%D0%98%D1%81%D0%BA%D1%80%D0%B0-226&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Искра-226 (страница не существует)&quot;&gt;Искра-226&lt;/a&gt;. Буфер представляет собой &amp;#039;&amp;#039;&amp;#039;обычный символьный массив Бейсика&amp;#039;&amp;#039;&amp;#039;: оператор &amp;lt;code&amp;gt;¤OPEN&amp;lt;/code&amp;gt; объявляет массив буфером, графические операторы дописывают в него записи, оператор &amp;lt;code...»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{emuverse}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Графический буфер BASIC 02&amp;#039;&amp;#039;&amp;#039; — формат хранения рисунка в памяти [[Искра-226]]. Буфер представляет собой &amp;#039;&amp;#039;&amp;#039;обычный символьный массив Бейсика&amp;#039;&amp;#039;&amp;#039;: оператор &amp;lt;code&amp;gt;¤OPEN&amp;lt;/code&amp;gt; объявляет массив буфером, графические операторы дописывают в него записи, оператор &amp;lt;code&amp;gt;¤COPY /&amp;amp;lt;адрес&amp;amp;gt;&amp;lt;/code&amp;gt; выкладывает всё разом на устройство. Собственной памяти под графику у машины нет.&lt;br /&gt;
&lt;br /&gt;
Буфер можно записать на диск и прочитать обратно как обычное символьное значение: см. [[Искра-226/Файловая система|Файловая система]] и [[Искра-226/Файлы данных BASIC 02|Файлы данных BASIC 02]]. Токены графических операторов описаны в статье [[Искра-226/Кодирование BASIC-файлов|Кодирование BASIC-файлов]].&lt;br /&gt;
&lt;br /&gt;
Документация&amp;lt;ref name=&amp;quot;balasanyan&amp;quot; /&amp;gt; графических операторов не описывает.&lt;br /&gt;
&lt;br /&gt;
== Растр ==&lt;br /&gt;
&lt;br /&gt;
Графическое поле — &amp;#039;&amp;#039;&amp;#039;560 × 256&amp;#039;&amp;#039;&amp;#039; дискрет, начало координат в левом нижнем углу, точка квадратная.&lt;br /&gt;
&lt;br /&gt;
Устройства вывода (адреса по таблице ФАУ&amp;lt;ref name=&amp;quot;balasanyan&amp;quot; /&amp;gt;):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Адрес !! Устройство&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;10&amp;lt;/code&amp;gt; || блок отображения графической информации (экран)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;14&amp;lt;/code&amp;gt; || графопостроитель&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;34&amp;lt;/code&amp;gt; || телекоммуникационный интерфейс&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Группа &amp;lt;code&amp;gt;PLOT&amp;lt;/code&amp;gt; таблицы устройств по умолчанию указывает на адрес &amp;lt;code&amp;gt;10&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Символьное и графическое поля — два разных устройства на одной трубке. Знаки рисует аппаратный знакогенератор, знакоместо 7 × 10 точек; 80 × 24 знакоместа занимают 560 × 240 и оставляют поля по 8 точек сверху и снизу.&lt;br /&gt;
&lt;br /&gt;
== Заголовок ==&lt;br /&gt;
&lt;br /&gt;
Первые 43 байта буфера. Нумерация байт с единицы, как в операторе &amp;lt;code&amp;gt;STR(&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Байт !! Значение&lt;br /&gt;
|-&lt;br /&gt;
| 1–2 || длина занятого, считая сам заголовок&lt;br /&gt;
|-&lt;br /&gt;
| 3–4 || текущая точка, X&lt;br /&gt;
|-&lt;br /&gt;
| 5–6 || текущая точка, Y&lt;br /&gt;
|-&lt;br /&gt;
| 7–39 || не установлены&lt;br /&gt;
|-&lt;br /&gt;
| 40–43 || не установлены; прикладные программы используют как своё место&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Числа заголовка лежат &amp;#039;&amp;#039;&amp;#039;младшим байтом вперёд&amp;#039;&amp;#039;&amp;#039; — в обратном порядке относительно координат в самих записях.&lt;br /&gt;
&lt;br /&gt;
Пустой буфер: &amp;lt;code&amp;gt;2B 00 00 00 00 00&amp;lt;/code&amp;gt; и дальше нули, то есть длина 43, текущая точка &amp;lt;code&amp;gt;0,0&amp;lt;/code&amp;gt;. Первая запись потока ложится в байт 44.&lt;br /&gt;
&lt;br /&gt;
== Записи потока ==&lt;br /&gt;
&lt;br /&gt;
Записи идут подряд начиная с байта 44, разделителей нет: длину каждой задаёт её код.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Код !! Оператор !! Запись&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;80&amp;lt;/code&amp;gt; || NPLOT || 5 байт: код и точка&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;81&amp;lt;/code&amp;gt; || NDRAW || то же&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;82&amp;lt;/code&amp;gt; || NLAB. || как &amp;lt;code&amp;gt;86&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;83&amp;lt;/code&amp;gt; || &amp;#039;&amp;#039;не установлен&amp;#039;&amp;#039; ||&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;84&amp;lt;/code&amp;gt; || DOT || 5 байт: код и точка&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;85&amp;lt;/code&amp;gt; || DRAW || то же&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;86&amp;lt;/code&amp;gt; || LABEL || код, длина, приращение, признаки, текст&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Координаты — &amp;#039;&amp;#039;&amp;#039;двухбайтовые двоичные, старший байт первым&amp;#039;&amp;#039;&amp;#039;. Знака не имеют: отрицательных координат у растра нет.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Бит &amp;lt;code&amp;gt;04&amp;lt;/code&amp;gt; кода записи — признак «рисовать».&amp;#039;&amp;#039;&amp;#039; Коды &amp;lt;code&amp;gt;80&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;81&amp;lt;/code&amp;gt; и &amp;lt;code&amp;gt;82&amp;lt;/code&amp;gt; — это стёртые &amp;lt;code&amp;gt;84&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;85&amp;lt;/code&amp;gt; и &amp;lt;code&amp;gt;86&amp;lt;/code&amp;gt;: запись остаётся в потоке и двигает текущую точку, но следа не оставляет. Стирание элемента выполняется как &amp;lt;code&amp;gt;AND(&amp;amp;lt;код&amp;amp;gt;,FB)&amp;lt;/code&amp;gt;, восстановление — как &amp;lt;code&amp;gt;XOR(&amp;amp;lt;код&amp;amp;gt;,04)&amp;lt;/code&amp;gt;. Буква &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; в именах означает «не рисуя».&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Видимая !! Стёртая !! Действие стёртой&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;84&amp;lt;/code&amp;gt; DOT || &amp;lt;code&amp;gt;80&amp;lt;/code&amp;gt; NPLOT || перевести точку, не рисуя&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;85&amp;lt;/code&amp;gt; DRAW || &amp;lt;code&amp;gt;81&amp;lt;/code&amp;gt; NDRAW || то же&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;86&amp;lt;/code&amp;gt; LABEL || &amp;lt;code&amp;gt;82&amp;lt;/code&amp;gt; NLAB. || сдвинуть точку на приращение&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Оператор &amp;lt;code&amp;gt;¤COPY&amp;lt;/code&amp;gt; чистит растр перед выводом: иначе стёртый элемент остался бы на экране.&lt;br /&gt;
&lt;br /&gt;
=== Точка и приращение ===&lt;br /&gt;
&lt;br /&gt;
Четвёрка байт после кода читается по-разному:&lt;br /&gt;
&lt;br /&gt;
* у рисующих записей (&amp;lt;code&amp;gt;80&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;81&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;84&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;85&amp;lt;/code&amp;gt;) это &amp;#039;&amp;#039;&amp;#039;новая текущая точка&amp;#039;&amp;#039;&amp;#039;, абсолютная;&lt;br /&gt;
* у надписей (&amp;lt;code&amp;gt;82&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;86&amp;lt;/code&amp;gt;) это &amp;#039;&amp;#039;&amp;#039;приращение&amp;#039;&amp;#039;&amp;#039; к текущей точке, число &amp;#039;&amp;#039;&amp;#039;со знаком&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
=== Запись надписи ===&lt;br /&gt;
&lt;br /&gt;
 86 &amp;lt;длина&amp;gt; &amp;lt;приращение X: 2 байта&amp;gt; &amp;lt;приращение Y: 2 байта&amp;gt; &amp;lt;3 байта признаков&amp;gt; &amp;lt;текст в КОИ-8&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Байт длины считает сам себя. Приращение равно &amp;#039;&amp;#039;&amp;#039;семи дискретам на знак&amp;#039;&amp;#039;&amp;#039; — ширине знакоместа.&lt;br /&gt;
&lt;br /&gt;
 86 09 | 00 07 00 00 | 01 02 00 | 59            &amp;quot;Y&amp;quot;&lt;br /&gt;
 86 0A | 00 0E 00 00 | 01 02 00 | 2D 31         &amp;quot;-1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Первый байт признаков — множитель размера знака; в тексте он пишется вплотную к имени буфера (&amp;lt;code&amp;gt;LABEL B¤()3,,,&amp;quot;Q&amp;quot;&amp;lt;/code&amp;gt;) и по умолчанию равен единице. Смысл двух остальных не установлен; на дисковых образах они всегда &amp;lt;code&amp;gt;02 00&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Операторы ==&lt;br /&gt;
&lt;br /&gt;
Все графические операторы — двухбайтовые, с префиксом &amp;lt;code&amp;gt;06&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Подкод !! Оператор !! Действие&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;00&amp;lt;/code&amp;gt; || PLOT || вывод прямо на устройство, минуя буфер&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;0F&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;¤OPEN&amp;lt;/code&amp;gt; || объявить символьный массив буфером&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;13&amp;lt;/code&amp;gt; || DOT || поставить точку по координате&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;14&amp;lt;/code&amp;gt; || DDRAW || отрезок по приращению от текущей точки&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;15&amp;lt;/code&amp;gt; || DRAW || отрезок до координаты&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;19&amp;lt;/code&amp;gt; || NPLOT || перевести текущую точку по координате, не рисуя&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;1A&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;¤MOVE&amp;lt;/code&amp;gt; || сдвинуть картинку&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;1B&amp;lt;/code&amp;gt; || TURN || повернуть картинку вокруг точки&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;1C&amp;lt;/code&amp;gt; || STRETCH || растянуть картинку относительно точки&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;1D&amp;lt;/code&amp;gt; || FRAME || задать окно буфера в пользовательских единицах&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;1E&amp;lt;/code&amp;gt; || LABEL || надпись&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;1F&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;¤COPY&amp;lt;/code&amp;gt; || вывести буфер на устройство&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;22&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;¤LET&amp;lt;/code&amp;gt; || присваивание буфера&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;23&amp;lt;/code&amp;gt; || WINDOW || задать окно устройства в дискретах&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Три способа задать точку: &amp;lt;code&amp;gt;NPLOT&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;DRAW&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;DOT&amp;lt;/code&amp;gt; и &amp;lt;code&amp;gt;LABEL&amp;lt;/code&amp;gt; берут координату; &amp;lt;code&amp;gt;DDRAW&amp;lt;/code&amp;gt; — приращение от текущей точки; &amp;lt;code&amp;gt;PLOT&amp;lt;/code&amp;gt; — тоже приращение, но кладёт результат не в буфер, а на устройство.&lt;br /&gt;
&lt;br /&gt;
Имена &amp;lt;code&amp;gt;ORIGIN&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;DNPLOT&amp;lt;/code&amp;gt; и &amp;lt;code&amp;gt;NDRAW&amp;lt;/code&amp;gt; встречаются в текстовых листингах, но подкодов не имеют: все подкоды, встречающиеся в оттранслированных файлах, уже опознаны. &amp;lt;code&amp;gt;DNPLOT&amp;lt;/code&amp;gt; по смыслу — приращение без следа.&lt;br /&gt;
&lt;br /&gt;
=== Преобразования ===&lt;br /&gt;
&lt;br /&gt;
Операторы &amp;lt;code&amp;gt;¤MOVE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;TURN&amp;lt;/code&amp;gt; и &amp;lt;code&amp;gt;STRETCH&amp;lt;/code&amp;gt; &amp;#039;&amp;#039;&amp;#039;переписывают уже лежащие в буфере записи&amp;#039;&amp;#039;&amp;#039;, новых не добавляя.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Оператор !! Операнды&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;¤MOVE&amp;lt;/code&amp;gt; || буфер, сдвиг по X, сдвиг по Y&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;TURN&amp;lt;/code&amp;gt; || буфер, X и Y точки, угол поворота&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;STRETCH&amp;lt;/code&amp;gt; || буфер, X и Y точки, масштаб по X, масштаб по Y&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Названная точка у &amp;lt;code&amp;gt;TURN&amp;lt;/code&amp;gt; и &amp;lt;code&amp;gt;STRETCH&amp;lt;/code&amp;gt; неподвижна. Единица измерения угла — общая с тригонометрическими функциями, задаётся операторами &amp;lt;code&amp;gt;SELECT D&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;SELECT R&amp;lt;/code&amp;gt; и &amp;lt;code&amp;gt;SELECT G&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Три оператора обратимы: последовательность из растяжения, поворота и обратного растяжения возвращает картинку на место.&lt;br /&gt;
&lt;br /&gt;
Выход за пределы растра — ошибка машины, перехватываемая оператором &amp;lt;code&amp;gt;ON ERROR&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Присваивание буфера ===&lt;br /&gt;
&lt;br /&gt;
 ¤LET &amp;lt;буфер&amp;gt; = &amp;lt;буфер&amp;gt;        копирование картинки&lt;br /&gt;
 ¤LET &amp;lt;буфер&amp;gt; = 0              опустошение буфера&lt;br /&gt;
&lt;br /&gt;
В известных программах первая форма встречается только присваиванием буфера самому себе, что записей не меняет; побочное действие такого оператора не установлено.&lt;br /&gt;
&lt;br /&gt;
== Система координат ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Оператор !! Операнды !! Что задаёт&lt;br /&gt;
|-&lt;br /&gt;
| WINDOW || &amp;lt;code&amp;gt;&amp;amp;lt;x0&amp;amp;gt;,&amp;amp;lt;x1&amp;amp;gt;,&amp;amp;lt;y0&amp;amp;gt;,&amp;amp;lt;y1&amp;amp;gt;&amp;lt;/code&amp;gt; || область на устройстве, в дискретах; имени буфера в операндах нет — область общая&lt;br /&gt;
|-&lt;br /&gt;
| FRAME || &amp;lt;code&amp;gt;&amp;amp;lt;буфер&amp;amp;gt;,&amp;amp;lt;x0&amp;amp;gt;,&amp;amp;lt;x1&amp;amp;gt;,&amp;amp;lt;y0&amp;amp;gt;,&amp;amp;lt;y1&amp;amp;gt;&amp;lt;/code&amp;gt; || ту же область в пользовательских единицах, своя у каждого буфера&lt;br /&gt;
|-&lt;br /&gt;
| ORIGIN || &amp;lt;code&amp;gt;&amp;amp;lt;буфер&amp;amp;gt;,&amp;amp;lt;dx&amp;amp;gt;,&amp;amp;lt;dy&amp;amp;gt;&amp;lt;/code&amp;gt; || смещение начала координат&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Границы &amp;lt;code&amp;gt;WINDOW&amp;lt;/code&amp;gt; — целые дискреты, границы &amp;lt;code&amp;gt;FRAME&amp;lt;/code&amp;gt; бывают дробными и отрицательными: это диапазон самих данных.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;В записях буфера лежат дискреты устройства, а не пользовательские единицы.&amp;#039;&amp;#039;&amp;#039; Перевод выполняется при добавлении записи, а &amp;lt;code&amp;gt;FRAME&amp;lt;/code&amp;gt; с &amp;lt;code&amp;gt;ORIGIN&amp;lt;/code&amp;gt; его и задают. Ни &amp;lt;code&amp;gt;FRAME&amp;lt;/code&amp;gt;, ни &amp;lt;code&amp;gt;ORIGIN&amp;lt;/code&amp;gt; ничего не рисуют.&lt;br /&gt;
&lt;br /&gt;
По умолчанию отображение тождественное: программы, работающие прямо в дискретах экрана, &amp;lt;code&amp;gt;WINDOW&amp;lt;/code&amp;gt; и &amp;lt;code&amp;gt;FRAME&amp;lt;/code&amp;gt; не вызывают вовсе.&lt;br /&gt;
&lt;br /&gt;
Где машина хранит это отображение, не установлено. В заголовке буфера на него остаются непрочитанные байты 7–39.&lt;br /&gt;
&lt;br /&gt;
== Оператор PLOT ==&lt;br /&gt;
&lt;br /&gt;
Единственный графический оператор, который рисует прямо на устройстве группы &amp;lt;code&amp;gt;PLOT&amp;lt;/code&amp;gt;, минуя буфер. Буфера в операндах нет.&lt;br /&gt;
&lt;br /&gt;
 PLOT &amp;lt;x,y,перо&amp;gt;,&amp;lt;x,y,перо&amp;gt;,…&lt;br /&gt;
&lt;br /&gt;
Группа ограничена токенами &amp;lt;code&amp;gt;D7&amp;lt;/code&amp;gt; и &amp;lt;code&amp;gt;D4&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;&amp;amp;lt;&amp;lt;/code&amp;gt; и &amp;lt;code&amp;gt;&amp;amp;gt;&amp;lt;/code&amp;gt;), группы и элементы внутри группы разделяются &amp;lt;code&amp;gt;DE&amp;lt;/code&amp;gt;. Элементов ровно три, любой может быть пуст.&lt;br /&gt;
&lt;br /&gt;
Координаты — &amp;#039;&amp;#039;&amp;#039;приращения&amp;#039;&amp;#039;&amp;#039;, а не точки. Первая группа серии отсчитывается от начала координат.&lt;br /&gt;
&lt;br /&gt;
Третий элемент — перо, отдельные однобайтовые метки:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Байт !! Буква !! Смысл&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;E5&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;U&amp;lt;/code&amp;gt; || перо поднято: сдвиг без следа&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;E6&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;D&amp;lt;/code&amp;gt; || перо опущено: отрезок&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;E7&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;R&amp;lt;/code&amp;gt; || сброс: перо в начало координат, размеры по умолчанию&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;E8&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;S&amp;lt;/code&amp;gt; || шаг знака по X и Y&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;E9&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;C&amp;lt;/code&amp;gt; || размер знака&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Те же байты в позиции операнда означают константы и унарный минус; метка узнаётся &amp;#039;&amp;#039;&amp;#039;по месту&amp;#039;&amp;#039;&amp;#039; — третий элемент группы, за которым сразу стоит &amp;lt;code&amp;gt;DE&amp;lt;/code&amp;gt; или &amp;lt;code&amp;gt;D4&amp;lt;/code&amp;gt;. Третьим элементом бывают также выражение, строковый литерал и вырезка &amp;lt;code&amp;gt;STR(…)&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Буквы &amp;lt;code&amp;gt;S&amp;lt;/code&amp;gt; и &amp;lt;code&amp;gt;C&amp;lt;/code&amp;gt; — законные имена переменных, и различает их тоже только место в группе.&lt;br /&gt;
&lt;br /&gt;
== Управляющие коды устройства 10 ==&lt;br /&gt;
&lt;br /&gt;
Графическое устройство принимает короткие управляющие последовательности оператором &amp;lt;code&amp;gt;PRINT /10,HEX(…)&amp;lt;/code&amp;gt;. Коды соответствуют документации на Wang 2282 Graphic CRT&amp;lt;ref name=&amp;quot;wang2282&amp;quot; /&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Код !! Действие&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;03&amp;lt;/code&amp;gt; || гасит поле, точка встаёт в начало координат, перо поднимается&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;04&amp;lt;/code&amp;gt; || выбрать принтер&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;06&amp;lt;/code&amp;gt; || выбрать графическую трубку&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;0A&amp;lt;/code&amp;gt; || шаг между знаками, из предшествующего вектора&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;0D&amp;lt;/code&amp;gt; || размер знака 1…15, из ΔX предшествующего вектора&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;0E&amp;lt;/code&amp;gt; || перо поднято&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;0F&amp;lt;/code&amp;gt; || перо опущено&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;E0&amp;lt;/code&amp;gt; || длинный двоичный вектор: ΔX и ΔY по два байта, дополнительный код&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;E1&amp;lt;/code&amp;gt;–&amp;lt;code&amp;gt;E3&amp;lt;/code&amp;gt; || перо 1…3; перо 2 гасит точки&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;E4&amp;lt;/code&amp;gt; || задать начало координат&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;E5&amp;lt;/code&amp;gt; || сброс: начало координат в левый нижний угол&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;E6&amp;lt;/code&amp;gt; || короткий двоичный вектор: ΔX и ΔY по байту&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;E7&amp;lt;/code&amp;gt; || скопировать поле на принтер&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;FA&amp;lt;/code&amp;gt; || вернуть точку в начало координат&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Рисуют из них только векторы &amp;lt;code&amp;gt;E0&amp;lt;/code&amp;gt; и &amp;lt;code&amp;gt;E6&amp;lt;/code&amp;gt;; остальное задаёт состояние.&lt;br /&gt;
&lt;br /&gt;
Три кода, встречающиеся в программах Искры, в таблицу 2282 не попадают: &amp;lt;code&amp;gt;01&amp;lt;/code&amp;gt;, пара &amp;lt;code&amp;gt;01 02&amp;lt;/code&amp;gt; и последовательность &amp;lt;code&amp;gt;08 0B 09 06&amp;lt;/code&amp;gt;. Значит блок отображения Искры повторяет Wang не полностью.&lt;br /&gt;
&lt;br /&gt;
Перевод строки, который оператор &amp;lt;code&amp;gt;PRINT&amp;lt;/code&amp;gt; дописывает сам, на графическое устройство не уходит: у графического поля строк нет.&lt;br /&gt;
&lt;br /&gt;
== Не установлено ==&lt;br /&gt;
&lt;br /&gt;
# Байты заголовка 7–39 — где хранится отображение &amp;lt;code&amp;gt;WINDOW&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;FRAME&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;ORIGIN&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Байты заголовка 40–43. Прикладные программы держат там пару чисел, к которым прибавляется сдвиг &amp;lt;code&amp;gt;¤MOVE&amp;lt;/code&amp;gt;, и требуют неотрицательного итога; читаются они старшим байтом вперёд, в отличие от остального заголовка.&lt;br /&gt;
# Код записи &amp;lt;code&amp;gt;83&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Смысл второго и третьего байта признаков надписи.&lt;br /&gt;
# Подкоды операторов &amp;lt;code&amp;gt;ORIGIN&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;DNPLOT&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;NDRAW&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Побочное действие оператора &amp;lt;code&amp;gt;¤LET&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Управляющие коды устройства &amp;lt;code&amp;gt;10&amp;lt;/code&amp;gt;: &amp;lt;code&amp;gt;01&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;01 02&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;08 0B 09 06&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Код ошибки, который получает &amp;lt;code&amp;gt;ON ERROR&amp;lt;/code&amp;gt; при выходе преобразования за пределы растра.&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;balasanyan&amp;quot;&amp;gt;Баласанян В. Э., Богдюкевич С. В., Шахвердов В. А. Программирование на микроЭВМ «Искра 226». — М.: Финансы и статистика, 1987. — 264 с.: ил.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;wang2282&amp;quot;&amp;gt;2282 Graphic CRT Plotter User Manual. — Wang Laboratories, 700-4627A, 10-81. — разд. 3.2 «Control Codes».&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;/references&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Источники ==&lt;br /&gt;
&lt;br /&gt;
* Баласанян В. Э., Богдюкевич С. В., Шахвердов В. А. Программирование на микроЭВМ «Искра 226». — М.: Финансы и статистика, 1987.&lt;br /&gt;
* [http://www.wang2200.org/docs.html 2282 Graphic CRT Plotter User Manual] — управляющие коды графического устройства.&lt;br /&gt;
* Реконструкция по программам &amp;lt;code&amp;gt;SLIDE&amp;lt;/code&amp;gt; (редактор графических объектов), &amp;lt;code&amp;gt;SIG&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;EDITOR&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;VICT&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;STAT01&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;FAN01&amp;lt;/code&amp;gt; и по готовой картинке с дискового образа — 196 записей потока.&lt;br /&gt;
&lt;br /&gt;
[[Категория:Искра-226]]&lt;/div&gt;</summary>
		<author><name>Panther</name></author>
	</entry>
</feed>