V.9. Р е ж и м SCREEN 4 (только для компьютера MSX-2) Этот режим идентичен режиму SCREEN 2 в том, что касается выбора цвета, графических операторов и отображения текста (см. рис.6). 0 255 0┌───────────────────┐──▶X │▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨│ │▨▨▨▨▨ SCREEN4 ▨▨▨▨▨│ │▨▨▨ 256╳192 точек▨▨│ │▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨│ 191│─ ─ ─ ─ ─ ─ ─ ─ ─ ─┘ Р и с. 6 ▼ Y В режиме SCREEN 4,однако, имеются н о в ы е операторы для работы со спрайтами. A. Оператор COLOR SPRITE$ предоставляет Вам возможность изображать м н о г о ц в е т н ы й спрайт (один цвет на линию). В режиме SCREEN 2 для получения такого же результата обычно накладыва- ются несколько спрайтов (см. раздел V.6.2). Оператор, с которым мы хотим Вас познакомить, имеет следующий формат: COLOR SPRITE$(NS)=A$ где: COLOR, SPRITE - служебные слова; NS - арифметическое выражение, целая часть значения которого опреде- ляет номер сформированного в оперативной памяти спрайта; A$ - строковое выражение, причем значение А$ должно содержать не бо- лее 16 символов (LEN(A$)≤16). Каждый символ значения строки A$ воздействует на одну линию спрайта (или как говорят, с п р а й т о в у ю линию). Поэтому следует использовать 8 символов,когда образы спрайтов кодируют- ся в 8 байтах (SCREEN 4,0 и SCREEN 4,1) и 16 символов при кодировании об- раза спрайта в 32 байтах (SCREEN 4,2 и SCREEN 4,3). Этот оператор рассматривает двоичную структуру, соответствующую коду ASCII каждого символа, и действует на каждую спрайтовую линию в соответ- ствии со значением битов, составляющих эту структуру: 1) б и т ы 0,1,2,3. Четыре младших бита позволяют закодировать но- мер палитры (0÷15), присвоенный этой линии. П р и м е р 1. Спрайт, у которого все 8 спрайтовых строк различного ───────────── цвета. NEW Ok 10 SCREEN 4,1:SPRITE$(0)=STRING$(8,255):PUT SPRITE 0,(128,96),8,0 40 COLOR SPRITE$(0)=CHR$(1)+CHR$(2)+CHR$(3)+CHR$(4)+CHR$(5)+CHR$(6)+CH R$(7)+CHR$(8) 50 GOTO 50 2) б и т 4. Этот бит не используется. 3) б и т 5. Если этот бит равен 1, то столкновение спрайтов не обна- руживается. П р и м е р 2. "Поведение" спрайтов в зависимости от значения пятого ───────────── бита. NEW Ok 10 COLOR 15,4:SCREEN 4:SPRITE$(0)=STRING$(8,255) 30 PUT SPRITE 0,(200,100),15,0 40 ON SPRITE GOSUB 100 │ Обратите внимание на этот бит! 50 SPRITE ON ▼ 55 COLOR SPRITE$(0)=STRING$(8,&B00100001) 60 FOR X=0 TO 240:PUT SPRITE 1,(X,100),15,0:NEXT 90 GOTO 60 100 SCREEN 0:RETURN 10 4) б и т 6. Если этот бит равен 1, то пересечение спрайтовой линии спрайта с номером NS с другими спрайтами не будет обнаружено. Правило при- оритета (если "накладываются" два спрайта, то спрайт с меньшим "экранным" номером перекрывает спрайт с большим "экранным" номером) более не соблюда- ется. Оказывается область пересечения спрайтов имеет цвет,определяемый ре- зультатом логической операции OR, примененной к цветам "наложенных" спрай- тов. Более того, спрайтовые линии, отмеченные в операторе COLOR SPRITE$ и не "затронутые" пересечением, исчезают! П р и м е р 3. Пример, иллюстрирующий "работу" бита 6 спрайтовой линии. ───────────── NEW Ok 10 SCREEN 4,3 'Область пересечения спрайтов окрашена цве- 20 SPRITE$(0)=STRING$(32,255)'том с номером 11, так как 9 OR 10 = 11 30 PUT SPRITE 0,(100,100),,0 'В спрайте 1 6-й бит установлен в единицу, 40 PUT SPRITE 1,(120,120),,0 'поэтому линии, не пересекающиеся со 45 A$=INKEY$:IF A$=""THEN 45 'спрайтом 2, исчезают! 50 COLOR SPRITE$(0)=STRING$(16,&b00001001) 60 COLOR SPRITE$(1)=STRING$(16,&b01001010) 70 GOTO 70 ▲ └── !!! 5) б и т 7 (крайний левый).Если этот бит равен 1,то спрайтовая линия отображается на 32 точки левее координаты Х, заданной в операторе PUT SPRITE; П р и м е р 4. Сдвиг двух верхних спрайтовых линий с изменением цвета. ───────────── NEW не используется Ok │ 10 COLOR 1,15:SCREEN 4,1 ▼ 20 SPRITE$(0)=STRING$(8,255) 1 0 0 0 0 0 1 1 30 SC$=CHR$(&B10000011)+CHR$(&B10000001) ▲ ────▲───── 40 PUT SPRITE 0,(120,85),13,0 │ │ 50 IF INKEY$="" THEN 50 'Ожидание! сдвиг номер 60 COLOR SPRITE$(0)=SC$ спрайтовой линии палитры 70 GOTO 70 Установите, что произойдет при нажатии любой клавиши!? П р и м е р 5. ───────────── NEW Ok 10 SCREEN 4,1 20 SPRITE$(0)=STRING$(8,255) не соблюдается 30 SC$=CHR$(&b01000111)+CHR$(&b01000111)+ правило наложения CHR$(&b01000111) спрайтов 40 PUT SPRITE 0,(120,85),8,0: │ не используется PUT SPRITE 1,(130,95),7,0 │ │ 50 IF INKEY$="" THEN 50 ▼ ▼ 60 COLOR SPRITE$(1)=SC$ 0 1 0 0 0 1 1 1 70 GOTO 70 ▲ ────▲───── │ │ отсутствие сдвига номер спрайтовой линии палитры Спрайт 0 изображается красным цветом (8), а спрайт 1 - темно-синим (7). При нажатии любой клавиши,все линии спрайта 1, находящиеся "под" спрайтом 0, сохраняются,остальные "исчезают"(цвет пересечения - б е л ы й, так как 7 OR 8 = 15). Oбратите внимание, что оператор COLOR SPRITE$ в строке 60 "применяет- ся" к спрайту с "экранным" номером 1. П р и м е р 6. ───────────── NEW Ok 10 COLOR 1,15:SCREEN 4,1 20 SPRITE$(0)=STRING$(8,255):SPRITE$(1)=STRING$(8,255) 30 SC$=STRING$(8,&B11100100):T=255 40 FOR I=1 TO 190:PUT SPRITE 0,(I,95),1,0 45 IF T=I THEN COLOR SPRITE$(0)=SC$:FOR A=1 TO 300:NEXTA 50 PUT SPRITE 1,(T,95),5,1:T=T-1:NEXTI 60 GOTO 60 Если исправить 30-ю строку следующим образом: 30 SC$=STRING$(4,&B11100100):T=255 то при столкновении двух спрайтов спрайт с меньшим "экранным" номером вначале уменьшится в два раза, а затем восстановит свои размеры. П р и м е р 7. Уменьшение и увеличение "высоты" спрайта при нажатии лю- ───────────── бой клавиши. NEW Ok 10 COLOR 15,0,0:SCREEN 4,1 20 DATA 255,255,255,255,255,255,255,255 30 READ A:FOR I=0 TO 7:Y$=Y$+CHR$(A):NEXT 40 SPRITE$(1)=Y$ 50 PUT SPRITE 1,(110,80),13,1 60 E$="1" 70 A$=INKEY$:IF A$="" THEN 70 80 COLOR SPRITE$(1)=E$ 90 IF LEN(E$)<=8 THEN E$=E$+"0":GOTO 70 ELSE 50 B. Оператор COLOR SPRITE очень похож на оператор COLOR SPRITE$,но дей- ствует на всех спрайтовых линиях спрайта с номером NS. Формат оператора: COLOR SPRITE(NS) = B где: COLOR, SPRITE - служебные слова; NS - арифметическое выражение, целая часть значения которого опреде- ляет номер сформированного в оперативной памяти спрайта; B - арифметическое выражение, целая часть значения которого должна лежать в пределах от 0 до 127. Отметим, что если Вам необходимо передвинуть спрайт на 32 точки влево, то используйте только оператор COLOR SPRITE$ ! Когда значение выражения B находится между 0 и 15, операторы: PUT SPRITE 0,(X,Y),B COLOR SPRITE$(0)=STRING$(8,B) COLOR SPRITE(0)=B эквивалентны! П р и м е р 8. Исчезновение спрайта с меньшим экранным номером при ───────────── COLOR SPRITE(0)=127 и изменение цвета области пересече- ния спрайтов при COLOR SPRITE(0)=63 . NEW Ok 10 SCREEN 4,1:SPRITE$(0)=STRING$(8,255):T=255 40 FOR I=1 TO 155:PUT SPRITE 0,(I,95),1,0:A=I+1 50 IF T=I THEN COLOR SPRITE(0)=127:FOR A=1 TO 300:NEXTA 60 PUT SPRITE 1,(T,95),7,0:T=T-1:NEXTI 70 GOTO 70 П р и м е р 9. ───────────── NEW Ok 10 COLOR 15,4:SCREEN 4,1:SPRITE$(0)=STRING$(8,255) 30 SC=&B01001111 'Замените на SC=&B00001111 40 PUT SPRITE 0,(120,85),13,0 ▲ 50 IF INKEY$="" THEN 50 │ 60 COLOR SPRITE(0)=SC Обратите внимание на нулевой шестой бит! 70 GOTO 70 Заметим, что когда значение B принадлежит отрезку [0,127], то операто- ры COLOR SPRITE$(0)=STRING(8,B) и COLOR SPRITE(0)=B э к в и в а л е н т - н ы, однако, если значение B находится в диапазоне от 128 до 255, или ког- да необходимо воздействовать на отдельные линии спрайта, следует восполь- зоваться первым оператором. П р и м е р 10. Столкновение спрайтов для оператора COLOR SPRITE(NS)=B ────────────── NEW Ok 10 COLOR 15,4:SCREEN 4:SPRITE$(0)=STRING$(8,255) 30 PUT SPRITE 0,(200,100),15,0 40 ON SPRITE GOSUB 100:SPRITEON' Включен режим прерываний по столкнове- 55 COLOR SPRITE(0)=&B00100001' нию спрайтов! 60 FOR X=0 TO 240:PUT SPRITE 1,(X,100),15,0:NEXT ▲ 90 GOTO 60 '──▶ │ 100 SCREEN 0:RETURN 10 Обратите внимание на единичный пятый бит! V.10. Р е ж и м SCREEN 5 (только для компьютера MSX-2) Этот режим предлагает те же возможности работы со спрайтами, что и ре- жим SCREEN 4. Он отличается от режима SCREEN 4 в двух пунктах: α) р а з р е ш е н и е и в ы б о р ц в е т а . Экран разделен на 212 строк по 256 точек (см. рис.7). 0 255 0┌───────────────────┐──▶X │▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨│ │▨▨▨▨▨ SCREEN5 ▨▨▨▨▨│ │▨▨▨ 256╳212 точек▨▨│ │▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨│ 211│─ ─ ─ ─ ─ ─ ─ ─ ─ ─┘ Р и с. 7 ▼ Y Цвет присваивается каждой точке, причем допустимых палитр - 16. β) э к р а н н ы е с т р а н и ц ы . В режиме SCREEN 5 в Вашем распоряжении имеется несколько так называе- мых э к р а н н ы х с т р а н и ц . Их количество зависит от объема ви- деопамяти, причем, если видеопамять имеет объем 64 Kбайта, то в Вашем рас- поряжении 2 страницы (с номерами 0 и 1); если же - 128 Кбайтов, то - 4 страницы (с номерами от 0 до 3). Рассмотрим оператор SET PAGE, посредством которого можно определять: 1) страницу для о т о б р а ж е н и я на экране и 2) страницу для в о з д е й с т в и я (а к т и в н у ю страницу). На активной странице можно "рисовать" с помощью графических операторов. Формат этого интересного оператора: SET PAGE [M],[N] где: SET, PAGE - служебные слова; M, N - арифметические выражения, целые части значения которых при- надлежат отрезку [0,3]. Первый аргумент SET PAGE указывает номер отобража- емой страницы, а второй - номер активной страницы. П р и м е р 1. ───────────── NEW Ok 10 SCREEN 5:OPEN "GRP:" AS #1 30 SET PAGE 0,0:CLS:PSET(100,100):PRINT #1,"ABCD" 'Страница 0 отобража ется и активизируется (ситуация - по умолчанию). На страницу 0 записыв ается небольшой текст. 50 FOR I=1 TO 1000:NEXT:SET PAGE 1,1:CLS 'Страница 1 отображается и ак тивизируется; рисуются 8 линий. 60 FOR I=0 TO 7:FOR J=0 TO 127 70 PSET(2*J,I+108),I+2:PSET STEP(1,0),I+3:NEXTJ,I: P=1 90 IF INKEY$="" THEN 90 ' Ожидание нажатия клавиши! Если клавиша нажат а,то номер (P) отображенной страницы изменяется оператором XOR 100 P=P XOR 1:SET PAGE P,P 'Листание страниц! 120 GOTO 90 '──▶ ┌───────┬────────────┐ Напомним Вам диаграмму Вейча │ X │ 0 1 0 1 │ (таблицу истинности функции XOR): │ Y │ 0 0 1 1 │ │X XOR Y│ 0 1 1 0 │ └───────┴────────────┘ П р и м е р 2. ───────────── Ok 10 SCREEN 5 20 FOR M=0 TO 3:SET PAGE M,M:CLS:NEXT 30 FOR K=0 TO 160 STEP 10:FOR Q=0 TO 5 50 SET PAGE 0,0:CIRCLE(127,106),K+Q,15 60 SET PAGE 1,1:CIRCLE(127,106),K+Q+2,15 70 SET PAGE 2,2:CIRCLE(127,106),K+Q+5,15 80 SET PAGE 3,3:CIRCLE(127,106),K+Q+7,15 90 NEXT:NEXT 100 FOR K=0 TO 3:SET PAGE K,K:NEXT:GOTO 100 П р и м е р 3. Бегущий человечек. ───────────── NEW Ok 10 SCREEN 5 20 SET PAGE 0,0:CLS 30 DRAW"bm100,100 c11 d5 r1 d2 r1 bm100,104 l2 d1 l2 d1 bm99,103 u1 l2 d1 l1 bm100,103 r2 u1 bm101,100 d1" 40 SET PAGE 0,1:CLS 50 DRAW"bm100,100 c11 r1 d1 l1 d4 l1 d1 g1 e1 u4 l1 g1 e1 r2 d1 r1 l1 d2 r1 d1 g1" 60 SET PAGE 0,2:CLS 70 DRAW"bm100,100 r1 d1 l1 d6 l1 u1 l2 r3 u1 r1 l1 u1 l1 u2 d1 l1" 90 SET PAGE 0,3:CLS 100 DRAW"bm100,100 r1 d1 l1 d4 f1 g1 h1 g1 e1 u4 l1 g1 d1 bm100,100 d3 r1" 110 FOR I=0 TO 3:SET PAGE I,I 120 FOR T=0 TO 100:NEXT:NEXT 140 GOTO 110 '──▶ Любопытную возможность для работы с экранными страницами предоставляет оператор SCREEN,,,,,N (пять запятых!). Целая часть выражения, задающего параметр N, должна принадлежать интервалу [0,3] и по умолчанию равна нулю. Этот аргумент определяет: 1) форму развертки изображения. Если N=0 или 2, то изображение стабиль- ное. Если же N=1 или 3, то экран "дрожит", как у ПЭВМ типа "Wang-2200"; 2) быстрый поочередный показ двух экранных страниц. Если N=0 или 1, то ничего нового не наблюдается. Если N=2 или 3, то происходит следующее: на экранной странице с номером 1 происходит быстрое чередование изображе- ния нулевой и первой страниц, сливающееся в одну дрожащую картинку. Однов- ременно с этим происходит аналогичный процесс на странице с номером 3 (в этом случае на страницу с номером 3 накладывается изображение 2-й страни- цы). Взгляните на следующий пример: П р и м е р 4. ───────────── NEW Ok 10 SCREEN 5,,,,,0:SET PAGE 1,0:CLS:CIRCLE(120,100),10 20 SET PAGE 1,1:CLS:CIRCLE(120,100),50 30 A$=INPUT$(1) 'Задержка до нажатия клавиши 40 SCREEN ,,,,,2 'Обратите внимание на величину последнего параметра! 50 A$=INPUT$(1) Обратим Ваше внимание на то, как можно осуществить к о п и р о в а - н и е изображения из одной области экрана в другую на компьютерах серии MSX-1. Для этого нужен двухмерный массив. Первый этап работы состоит в опреде- лении размеров копируемой области и создании массива требуемой размерно- сти. В этом массиве хранятся значения цветов каждой точки копируемого изо- бражения, которые находятся с помощью функции POINT. Затем эти данные ис- пользуются в операторе PSET для переноса отмеченных точек в другое место экрана. П р и м е р 5 [ 76 ]. Копирование участка экрана ───────────────────── 20 CLEAR:DEFINT A-Z 40 'Массив для графических данных 50 DIM A(50,50):BC=1:SC=15:COLOR 15,1,1:SCREEN 2 90 ON INTERVAL=100 GOSUB 490 100 OPEN"GRP:"AS #1 110 LINE (60,0)-STEP(150,10),15,BF:PSET(65,1):COLOR 1 130 PRINT #1,"Копирование экрана" 140 COLOR 15 150 'Изображение 160 LINE(80,80)-(130,130),15,BF:LINE(82,82)-(128,128),1,B 180 FOR I=2 TO 12 STEP 2 190 CIRCLE(105,105),20,1,,,12/I:CIRCLE(105,105),20,1,,,I/12 210 NEXT I 220 'Заполнение массива 230 INTERVAL ON 240 FOR I=1 TO 50:FOR J=1 TO 50 260 A(I,J)=POINT(80+I,80+J) 270 NEXT J:NEXT I 290 INTERVAL OFF 300 COLOR ,,1 310 'Получение копий 320 FOR I=1 TO 2 330 READ X,Y 340 FOR J=1 TO 50:FOR K=1 TO 50 360 PSET (X+J,Y+K),A(J,K) 370 NEXT K:NEXT J 390 NEXT I 400 'Перевернутое изображение 410 FOR I=1 TO 50:FOR J=1 TO 50 430 IF A(I,J)=1 THEN C=15 ELSE C=1 440 PSET(29+I,80+J),C 450 NEXT J:NEXT I 470 GOTO 470 480 'Подпрограмма интервалов 490 PLAY"T255L64SM1000O4CO5C" 500 SWAP BC,SC:COLOR ,,SC 510 RETURN 520 'Значения координат 530 DATA 30,28,80,28 Заметим, что в массиве чтение и запись данных выполняются невыносимо медленно, поэтому нужно запастись терпением! Ниже мы познакомим Вас еще с одним весьма мощным оператором MSX-BASIC - оператором COPY, который пересылает блок экрана в другое место экрана (на этой же или другой странице). Фактически, имеется ш е с т ь вариантов этого оператора. В а р и а н т 1 ┌───────────────────────────────────────────────────────────────┐ │ { [T]XOR } │ │ { [T]OR } │ │ COPY (X1,Y1)-(X2,Y2),[stri] TO (X3,Y3),[strpr],{ [T]AND } │ , │ { [T]PSET } │ │ { [T]PRESET} │ └───────────────────────────────────────────────────────────────┘ где: COPY, TO, XOR, OR, AND, PSET, PRESET - служебные слова; (X1,Y1)-(X2,Y2) - параметры, указывающие местоположение копируемого блока и "работающие" точно так же, как в операторе LINE (X1,Y1)-(X2,Y2),C,B (наличие этих параметров обязательно). Прямоугольная область экрана (б л о к), раскраска которой должна запо- минаться при выполнении оператора COPY, может располагаться в любом месте экрана. Форма, размер, местоположение прямоугольной области задаются коор- динатами двух ее противоположных вершин,т.е.точно так же, как в операторе LINE с параметром B задается подлежаший построению прямоугольник; stri - арифметическое выражение, указывающее на номер копируемой страницы (страницы - и с т о ч н и к а); значение stri должно принадле- жать [0,3]. По умолчанию используется активная страница; (X3,Y3) - координаты верхнего левого угла места, в которое будет ско- пирован блок (наличие этого параметра обязательно!); strp - арифметическое выражение, указывающее на номер страницы - п р и е м н и к а; значение strp должно принадлежать [0,3].По умолчанию используется страница-источник; T - префикс, который м о ж е т предшествовать ключевым словам. В этом случае если копируемый блок имеет цвет 0, то блок-результат копиро- вания не отображается на экране; XOR, OR, AND, PSET, PRESET - служебные слова для определения резуль- тата комбинации цвета экрана с цветом точек копируемого блока посредством логических операций, определяемых в следующей таблице: ┌────────┬─────────────────┐ │ XOR │ SC = C XOR S │ │ OR │ SC = C OR S │ │ AND │ SC = C AND S │ │ PSET │ SC = C │ │ PRESET │ SC = 16+(NOT C) │ └────────┴─────────────────┘ где S, SC, C - арифметические выражения, целые части значений которых оп- ределяют: S - цвет изображения или фона до копирования; SC - цвет изображения или фона после копирования; C - цвет копируемого рисунка. По умолчанию установлен режим PSET. Дело в том, что при выполнении оператора COPY на экране в общем случае появляются не те цвета,номера которых хранятся в заданном для этого опера- тора числовом массиве, а цвета, представляющие собой результат взаимодей- ствия заданных с текущей раскраской рассматриваемой области экрана. Итак, существуют пять способов взаимодействия изображения, воспроизво- димого оператором COPY, с текущим изображением на экране дисплея. Конкрет- ный способ выбирается путем задания в операторе COPY одного из п я т и служебных слов: PSET, PRESET, AND, OR или XOR. Параметры AND, OR и XOR определяют три различных набора правил, в соот- ветствии с которыми происходит слияние заданных в операторе COPY цветов с текущей расцветкой экрана. Например, изучите следующие таблицы: ┌────────────┬───────────────────────────────────────────────────────┐ │ Номер │ Ц в е т э к р а н а │ │ цвета │ (наличие параметра XOR) │ │ изображения│ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 │ ├────────────┼───────────────────────────────────────────────────────┤ │ 0 │ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 │ │ 1 │ 1 0 3 2 5 4 7 6 9 8 11 10 13 12 15 14 │ │ 2 │ 2 3 0 1 6 7 4 5 10 11 8 9 14 15 12 13 │ │ 3 │ 3 2 1 0 7 6 5 4 11 10 9 8 15 14 13 12 │ │ 4 │ 4 5 6 7 0 1 2 3 12 13 14 15 8 9 10 11 │ │ 5 │ 5 4 7 6 1 0 3 2 13 12 15 14 9 8 11 10 │ │ 6 │ 6 7 4 5 2 3 0 1 14 15 12 13 10 11 8 9 │ │ 7 │ 7 6 5 4 3 2 1 0 15 14 13 12 11 10 9 8 │ │ 8 │ 8 9 10 11 12 13 14 15 0 1 2 3 4 5 6 7 │ │ 9 │ 9 8 11 10 13 12 15 14 1 0 3 2 5 4 7 6 │ │ 10 │ 10 11 8 9 14 15 12 13 2 3 0 1 6 7 4 5 │ │ 11 │ 11 10 9 8 15 14 13 12 3 2 1 0 7 6 5 4 │ │ 12 │ 12 13 14 15 8 9 10 11 4 5 6 7 0 1 2 3 │ │ 13 │ 13 12 15 14 9 8 11 10 5 4 7 6 1 0 3 2 │ │ 14 │ 14 15 12 13 10 11 8 9 6 7 4 5 2 3 0 1 │ │ 15 │ 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 │ └────────────┴───────────────────────────────────────────────────────┘ ┌────────────┬───────────────────────────────────────────────────────┐ │ Номер │ Ц в е т э к р а н а │ │ цвета │ (наличие параметра OR) │ │ изображения│ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 │ ├────────────┼───────────────────────────────────────────────────────┤ │ 0 │ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 │ │ 1 │ 1 1 3 3 5 5 7 7 9 9 11 11 13 13 15 15 │ │ 2 │ 2 3 2 3 6 7 6 7 10 11 10 11 14 15 14 15 │ │ 3 │ 3 3 3 3 7 7 7 7 11 11 11 11 15 15 15 15 │ │ 4 │ 4 5 6 7 4 5 6 7 12 13 14 15 12 13 14 15 │ │ 5 │ 5 5 7 7 5 5 7 7 13 13 15 15 13 13 15 15 │ │ 6 │ 6 7 6 7 6 7 6 7 14 15 14 15 14 15 14 15 │ │ 7 │ 7 7 7 7 7 7 7 7 15 15 15 15 15 15 15 15 │ │ 8 │ 8 9 10 11 12 13 14 15 8 9 10 11 12 13 14 15 │ │ 9 │ 9 9 11 11 13 13 15 15 9 9 11 11 13 13 15 15 │ │ 10 │ 10 11 10 11 14 15 14 15 10 11 10 11 14 15 14 15 │ │ 11 │ 11 11 11 11 15 15 15 15 11 11 11 11 15 15 15 15 │ │ 12 │ 12 13 14 15 12 13 14 15 12 13 14 15 12 13 14 15 │ │ 13 │ 13 13 15 15 13 13 15 15 13 13 15 15 13 13 15 15 │ │ 14 │ 14 15 14 15 14 15 14 15 14 15 14 15 14 15 14 15 │ │ 15 │ 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 │ └────────────┴───────────────────────────────────────────────────────┘ ┌────────────┬───────────────────────────────────────────────────────┐ │ Номер │ Ц в е т э к р а н а │ │ цвета │ (наличие параметра AND) │ │ изображения│ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 │ ├────────────┼───────────────────────────────────────────────────────┤ │ 0 │ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 │ │ 1 │ 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 │ │ 2 │ 0 0 2 2 0 0 2 2 0 0 2 2 0 0 2 2 │ │ 3 │ 0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3 │ │ 4 │ 0 0 0 0 4 4 4 4 0 0 0 0 4 4 4 4 │ │ 5 │ 0 1 0 1 4 5 4 5 0 1 0 1 4 5 4 5 │ │ 6 │ 0 0 2 2 4 4 6 6 0 0 2 2 4 4 6 6 │ │ 7 │ 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 │ │ 8 │ 0 0 0 0 0 0 0 0 8 8 8 8 8 8 8 8 │ │ 9 │ 0 1 0 1 0 1 0 1 8 9 8 9 8 9 8 9 │ │ 10 │ 0 0 2 2 0 0 2 2 8 8 10 10 8 8 10 10 │ │ 11 │ 0 1 2 3 0 1 2 3 8 9 10 11 8 9 10 11 │ │ 12 │ 0 0 0 0 4 4 4 4 8 8 8 8 12 12 12 12 │ │ 13 │ 0 1 0 1 4 5 4 5 8 9 8 9 12 13 12 13 │ │ 14 │ 0 0 2 2 4 4 6 6 8 8 10 10 12 12 14 14 │ │ 15 │ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 │ └────────────┴───────────────────────────────────────────────────────┘ ┌────────────┬───────────────────────────────────────────────────────┐ │ Номер цвета│ Ц в е т э к р а н а (наличие параметра PRESET) │ │ изображения│ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 │ ├────────────┼───────────────────────────────────────────────────────┤ │ Номер цвета│ │ │ э к р а н а│ 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 │ └────────────────────────────────────────────────────────────────────┘ При выполнении оператора COPY с параметром PSET каждая точка копируемо- го прямоугольника окрашивается в тот цвет, который она имела до копирова- ния, а при выполнении оператора COPY с параметром PRESET каждая точка ко- пируемого прямоугольника окрашивается в "противоположный" цвет.