2.8.3.10. К о м а н д а SRCH То, что вы ищете, вы найдете в самом последнем месте. Надо было посмотреть там с самого начала. Закон Мэрфи Команда SCRH проводит поиск цвета границы в видеопамяти или расширен- ной памяти "вправо" или "влево" от базовой точки. В и д е о п а м я т ь или р а с ш и р е н н а я п а м я т ь XWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWY V (SX,SY) V V X-направление поиска V V G WWWWWWWWWWWWWWWWWWW▐G DIX V V Базовая точка Точка цвета границы V ZWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW[ А теперь мы расскажем Вам об установке регистров и порядке выполнения команды SRCH. 1. Вначале устанавливаются необходимые параметры в регистры команд VDP, а именно: ═) MXD: выбор области памяти для поиска (0: видеопамять (VRAM); 1: расширенная память); DIX: направление для поиска точки истoчника: (0: направо; 1: налево); ЕQ: при 0 выполнение команды заканчивается,когда н а й д е н гра- ничный цвет; при 1 выполнение заканчивается, когда цвет отлича- ется от граничного. Номера битов 7 6 5 4 3 2 1 0 XWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWY Р е г и с т р 45 V 0 V MXC V MXD V MXS V DIY V DIX V EQ V MAJ V (регистр аргумента) ZWWWWWQWWWWWQWW▌WWQWWWWWQWWWWWQWW▌WWQWW▌WWQWWWWW[ V V V Выбор области памяти для поиска WWWWWW[ V V Направление поиска (X) WWWWWWWWWWWWWWWWWWWWWWWW[ V Условие окончания команды WWWWWWWWWWWWWWWWWWWWWWWWWWWWWW[ ║) SX: базовые X-координаты для поиска (от 0 до 511); SY: базовые Y-координаты для поиска (от 0 до 1023). Номера битов 7 6 5 4 3 2 1 0 XWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWY Р е г и с т р 32 V SX7 V SX6 V SX5 V SX4 V SX3 V SX2 V SX1 V SX0 V (базовая координата X ZWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWW[ для поиска (младшая часть)) XWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWY Р е г и с т р 33 V 0 V 0 V 0 V 0 V 0 V 0 V 0 V SX8 V (базовая координата X ZWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWW[ для поиска (старшая часть)) XWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWY Р е г и с т р 34 V SY3 V SY2 V SY1 V SY0 V SY3 V SY2 V SY1 V SY0 V (базовая координата Y ZWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWW[ для поиска (младшая часть)) XWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWY Р е г и с т р 35 V 0 V 0 V 0 V 0 V 0 V 0 V SY9 V SY8 V (базовая координата Y ZWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWW[ для поиска (старшая часть)) ╖) CLR: данные о к о д е ц в е т а г р а н и ц ы для поиска. Р е ж и м ы SCREEN 5 и SCREEN 7 Номера битов 7 6 5 4 3 2 1 0 XWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWY Р е г и с т р 44 V 0 V 0 V 0 V 0 V C3 V C2 V C1 V C0 V (регистр цвета) ZWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWW[ Р е ж и м SCREEN 6 Номера битов 7 6 5 4 3 2 1 0 XWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWY Р е г и с т р 44 V 0 V 0 V 0 V 0 V 0 V 0 V C1 V C0 V (регистр цвета) ZWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWW[ Р е ж и м SCREEN 8 Номера битов 7 6 5 4 3 2 1 0 XWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWY Р е г и с т р 44 V C7 V C6 V C5 V C4 V C3 V C2 V C1 V C0 V (регистр цвета) ZWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWW[ 2. Выполнение команды осуществляется помещением кода 01100000b в регистр команд с номером 46. Номера битов 7 6 5 4 3 2 1 0 XWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWY Р е г и с т р 46 V 0 V 1 V 1 V 0 V 0 V 0 V 0 V 0 V (регистр команды) ZWW▌WWQWW▌WWQWW▌WWQWW▌WWQWWWWWQWWWWWQWWWWWQWWWWW[ ZWWWWWQWWWWWQWWWWW[ Код команды SRCH 3. При выполнении команды СЕ-бит регистра состояния с номером 2 будет установлен в 1, а после выполнения - в 0. Кроме того, местоположение най- денного цвета границы (X-координата) окажется в регистрах статуса 8 и 9. Номера битов 7 6 5 4 3 2 1 0 XWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWY Регистр с т а т у с а 2 V V V V BD V V V V CE V ZWWWWWQWWWWWQWWWWWQWW▌WWQWWWWWQWWWWWQWWWWWQWW▌WW[ Устанавливается в 1, WWWWWWWWW[ V если н а й д е н цвет границы V Устанавливается в 0 по окончании команды SRCH WWWWWWWWWWWWWWWWW[ Номера битов 7 6 5 4 3 2 1 0 XWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWY Регистр с т а т у с а 8 V BX7 V BX6 V BX5 V BX4 V BX3 V BX2 V BX1 V BX0 V (местоположение найден- ZWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWW[ ного цвета границы (младшая часть X-координаты)) Номера битов 7 6 5 4 3 2 1 0 XWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWY Регистр с т а т у с а 9 V 1 V 1 V 1 V 1 V 1 V 1 V BX9 V BX8 V (местоположение найден- ZWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWW[ ного цвета границы (старшая часть X-координаты)) Приведем схему алгоритма выполнения команды SRCH. XWWWWWWWWWWWWWY XWWWWWWWWWWWWWWWY XWWWWWWWWWWWWWWWWWWWWY V Начало SRCH VWW▐V Настройка VDP VWW▐V Выполнение команды V ZWWWWWWWWWWWWW[ ZWWWWWWWWWWWWWWW[ ZWWWWWWWWWWRWWWWWWWWW[ XWWWWWWWWWWWWW[ XWWWWWWWWWWWWWWWWW█WWWWWWWWWWWWWWWWWWWWWY XWWWWWWWWWWWWWWW▐ Чтение регистра состояния с номером 2 V V ZWWWWWWWWWWWWWWWWWRWWWWWWWWWWWWWWWWWWWWW[ V нет (CE=1)XWWWWWWW█WWWWWWWWY ZWWWWWWWWWWWWWWWWWWWWWWWWWS Конец команды? V ZWWWWWWWRWWWWWWWW[ V да (СЕ=0) нет (BD=0)XWWWWWWWWW█WWWWWWWWWWWY XWWWWWWWWWWWWWWWWWWWWWWWS Цвет границы найден?V V ZWWWWWWWWWRWWWWWWWWWWW[ V V да (BD=1) V XWWWWWWWWWWWWWWWWW█WWWWWWWWWWWWWWWWWWWWWY V V Чтение регистра состояния с номером 8 V V ZWWWWWWWWWWWWWWWWWRWWWWWWWWWWWWWWWWWWWWW[ V XWWWWWWWWWWWWWWWWW█WWWWWWWWWWWWWWWWWWWWWY V V Чтение регистра состояния с номером 9 V V ZWWWWWWWWWWWWWWWWWRWWWWWWWWWWWWWWWWWWWWW[ V XWWWWWW█WWWWWY ZWWWWWWWWWWWWWWWWWWWWWWWWWW▐ Конец SCRH V ZWWWWWWWWWWWW[ П р и м е р. Изображение на экране б е л о й линии. Далее, видео- WWWWWWWWWWW процессор ищет Х-координату этой линии 5 'Программу составил Беленький Г. (IX класс) 10 SCREEN 7 :' Возможны SCREEN 5╤SCREEN 8 20 LINE (254,0)-(254,121),15 :' Граница для поиска 30 VDP(32+1)=0: VDP(33+1)=0 :' X-координата начальн. точки 40 VDP(34+1)=0: VDP(34+1)=0 :' Y-координата начальн. точки 50 VDP(44+1)=15 :' Ищем б е л у ю точку 60 VDP(45+1)=&B00000000 :' 70 ' V VZWWWWWWWWWWWWWWWWWWW:' Выполнение закончится,когда 71 ' V V :' будет найдена белая точка 80 ' V ZWWWWWWWWWWWWWWWWWWWW:' Ищем направо от нач. точки 90 ' ZWWWWWWWWWWWWWWWWWWWWWW:' Ищем во VRAM 100 VDP(46+1)=&B01100000 :' Выполнение команды SRCH 110 VDP(15+1)=2:A=INP(&H99):VDP(15+1)=0 :' Читаем регистр ст.2; ░WY 120 CE=(A AND &B00000001) :' Выделяем бит CE V 130 IF CE=1 THEN 110 :' Если он равен 1, то WWW[ 140 BD=(A AND &B00010000) :' выделяем бит BD 150 IF BD=0 THEN 190 :' Если он равен 0, то WWWWY 160 VDP(15+1)=8:A=INP(&H99):VDP(15+1)=0 :' читаем регистр ст.8 и V 170 OPEN "GRP:" AS #1 :' печатаем X-координату,V 180 PRESET(0,0):PRINT #1,A :' на которой найдена V 181 ' :' белая точка V 190 A$=INPUT$(1) :' К о н е ц ░WWWWWWWWWWWWW[ 2.8.3.11. К о м а н д а PSET Слово только оболочка, Пленка, звук пустой, но в нем Бьется розовая точка Странным светится огнем. Арс.Тарковский Команда PSET устанавливает точку определенного цвета в видеопамяти или расширенной памяти. При этом над уже находящейся в указанных координатах точкой производится логическая операция. В и д е о п а м я т ь или р а с ш и р е н н а я п а м я т ь XWWWWWWWWWWWWWWWWWWWWWWWWWY V (DX,DY) V V G V ZWWWWWWWWWWWWWWWWWWWWWWWWW[ А теперь мы расскажем Вам об установке регистров и порядке выполнения команды PSET. 1. Сначала устанавливаются необходимые параметры в регистры команд VDP, а именно: ═) MXD: выбор области памяти (0: видеопамять (VRAM); 1: расширенная память). Номера битов 7 6 5 4 3 2 1 0 XWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWY Р е г и с т р 45 V V V MXD V V V V V V (регистр аргумента) ZWWWWWQWWWWWQWW▌WWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWW[ ZWWWWWWWWW Выбор области памяти ║) DX: X-координата точки (от 0 до 511); DY: Y-координата точки (от 0 до 1023). Номера битов 7 6 5 4 3 2 1 0 XWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWY Р е г и с т р 36 V DX7 V DX6 V DX5 V DX4 V DX3 V DX2 V DX1 V DX0 V (базовая координата X ZWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWW[ точки (младшая часть)) XWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWY Р е г и с т р 37 V 0 V 0 V 0 V 0 V 0 V 0 V 0 V DX8 V (базовая координата X ZWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWW[ точки (старшая часть)) XWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWY Р е г и с т р 38 V DY7 V DY6 V DY5 V DY4 V DY3 V DY2 V DY1 V DY0 V (базовая координата Y ZWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWW[ точки (младшая часть)) XWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWY Р е г и с т р 39 V 0 V 0 V 0 V 0 V 0 V 0 V DY9 V DY8 V (базовая координата Y ZWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWW[ точки (старшая часть)) ╖) CLR: данные о к о д е ц в е т а т о ч к и. Р е ж и м ы SCREEN 5 и SCREEN 7 Номера битов 7 6 5 4 3 2 1 0 XWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWY Р е г и с т р 44 V 0 V 0 V 0 V 0 V C3 V C2 V C1 V C0 V (регистр цвета) ZWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWW[ Р е ж и м SCREEN 6 Номера битов 7 6 5 4 3 2 1 0 XWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWY Р е г и с т р 44 V 0 V 0 V 0 V 0 V 0 V 0 V C1 V C0 V (регистр цвета) ZWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWW[ Р е ж и м SCREEN 8 Номера битов 7 6 5 4 3 2 1 0 XWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWY Р е г и с т р 44 V C7 V C6 V C5 V C4 V C3 V C2 V C1 V C0 V (регистр цвета) ZWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWW[ 2. Выполнение команды осуществляется заданием числа 0101b в четырех с т а р ш и х битах и кода логической операции в четырех м л а д ш и х битах регистра команд с номером 46. Номера битов 7 6 5 4 3 2 1 0 XWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWY Р е г и с т р 46 V 0 V 1 V 0 V 1 V LO3 V LO2 V LO1 V LO0 V (регистр команды) ZWW▌WWQWW▌WWQWW▌WWQWW▌WWQWW▌WWQWW▌WWQWW▌WWQWW▌WW[ ZWWWWWQWWWWWQWWWWW[ ZWWWWWQWWWWWQWWWWW[ Код команды PSET Код логической операции 3. При выполнении команды PSET СЕ-бит регистра состояния с номером 2 устанавливается в 1, а после выполнения - в 0. П р и м е р 1(а). Программа установки б е л о й точки при помощи ко- WWWWWWWWWWWWWWWW манды видеопроцессора PSET. 5' Программу составил Беленький Г. (IX класс) 10 COLOR 15,1,1:SCREEN 7 ' Возможны режимы SCREEN 5 ╤ SCREEN 8 20 VDP(36+1)=254 ' X-координата 30 VDP(38+1)=110 ' Y-координата 40 VDP(44+1)=15 ' Цвет 50 VDP(45+1)=0 ' Если Вы хотите увидеть результат своего 70 : ' труда, то 0 обязателен! 90 VDP(46+1)=&B01010000 ' Код команды PSET 110 A$=INPUT$(1) ' К о н е ц П р и м е р 1(б). Эта же программа, написанная на макроассемблере име- WWWWWWWWWWWWWWWW ет следующий вид: VDP MACRO @A,@B ;Макрос, который помещает число @B в LD B,@B ;в регистр видеопроцессора с номером @A LD C,#99 ; OUT (C),B ; LD A,@A ; OR #80 ; OUT (C),A ; ENDM ; LD A,7 ;Установка режима DEFB #F7,#87,#D1,0 ;SCREEN 7 VDP 36,255 ;X-координата точки VDP 38,128 ;Y-координата точки VDP 44,8 ;Цвет VDP 45,0 ; VDP 46,%01010000 ;Код команды видеопроцессора PSET DEFB #F7,0,#9F,0 ;Задержка DEFB #F7,#87,#D5,0 ;Установка режима SCREEN 0 RET ;Возврат в MSX-DOS 2.8.3.12. К о м а н д а POINT Черное - цвет? Цвет. Белое - цвет? Цвет. Кто сказал, что у меня нет цветного те- левизора? Философия владельца черно-белого те- левизора Команда POINT считывает цвет указанной точки из видеопамяти или расши- ренной памяти. В и д е о п а м я т ь или р а с ш и р е н н а я п а м я т ь XWWWWWWWWWWWWWWWWWWWWWWWWY V (SX,SY) V V G V ZWWWWWWWWWWWWWWWWWWWWWWWW[ А теперь мы расскажем Вам об установке регистров и порядке выполнения команды POINT. 1. Вначале устанавливаются необходимые параметры в регистр команд VDP, а именно: ═) MXD: выбор области памяти (0: видеопамять (VRAM); 1: расширенная память). Номера битов 7 6 5 4 3 2 1 0 XWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWY Р е г и с т р 45 V V V MXS V V V V V V (регистр аргумента) ZWWWWWQWWWWWQWW▌WWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWW[ ZWWWWWWWWW Выбор области памяти ║) SX: X-координата точки (от 0 до 511); SY: Y-координата точки (от 0 до 1023). Номера битов 7 6 5 4 3 2 1 0 XWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWY Р е г и с т р 32 V SX7 V SX6 V SX5 V SX4 V SX3 V SX2 V SX1 V SX0 V (базовая координата X ZWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWW[ точки (младшая часть)) XWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWY Р е г и с т р 33 V 0 V 0 V 0 V 0 V 0 V 0 V 0 V SX8 V (базовая координата X ZWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWW[ точки (старшая часть)) XWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWY Р е г и с т р 34 V SY3 V SY2 V SY1 V SY0 V SY3 V SY2 V SY1 V SY0 V (базовая координата Y ZWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWW[ точки (младшая часть)) XWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWY Р е г и с т р 35 V 0 V 0 V 0 V 0 V 0 V 0 V SY9 V SY8 V (базовая координата Y ZWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWW[ точки (старшая часть)) 2. Выполнение команды осуществляется заданием кода 01000000b в регистре с номером 46. Номера битов 7 6 5 4 3 2 1 0 XWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWY Р е г и с т р 46 V 0 V 1 V 0 V 0 V 0 V 0 V 0 V 0 V (регистр команды) ZWW▌WWQWW▌WWQWW▌WWQWW▌WWQWWWWWQWWWWWQWWWWWQWWWWW[ ZWWWWWQWWWWWQWWWWW[ Код команды PSET 3. При выполнении видеопроцессором команды POINT СЕ-бит регистра состо- яния с номером 2 устанавливается в 1, а после выполнения - в 0. Кроме того, найденный цветовой код помещается в регистр статуса 7. Номера битов 7 6 5 4 3 2 1 0 XWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWY Регистр с т а т у с а 2 V V V V V V V V CE V ZWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWW▌WW[ Устанавливается в 0 по окончанию команды SRCH WWWWWW[ Р е ж и м ы SCREEN 5 и SCREEN 7 Номера битов 7 6 5 4 3 2 1 0 XWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWY Регистр с т а т у с а 7 V 0 V 0 V 0 V 0 V C3 V C2 V C1 V C0 V (цветовой код) ZWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWW[ Р е ж и м SCREEN 6 Номера битов 7 6 5 4 3 2 1 0 XWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWY Регистр с т а т у с а 7 V 0 V 0 V 0 V 0 V 0 V 0 V C1 V C0 V (цветовой код) ZWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWW[ Р е ж и м SCREEN 8 Номера битов 7 6 5 4 3 2 1 0 XWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWY Регистр с т а т у с а 7 V C7 V C6 V C5 V C4 V C3 V C2 V C1 V C0 V (цветовой код) ZWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWW[ П р и м е р. Определение цвета заданной точки WWWWWWWWWWW 5' Пример составил Беленький Г. (IX класс). 10 COLOR 15,1,1:SCREEN 7 ' Возможны режимы SCREEN 5 ╤ SCREEN 8 20 VDP(36+1)=254 ' X-координата 30 VDP(38+1)=110 ' Y-координата 40 VDP(44+1)=15 ' Цвет 50 VDP(45+1)=0 ' Если Вы хотите увидеть результат 60 ' ' своих трудов, то ставьте 0 V 70 VDP(46+1)=&B01010000 ' Код команды PSET V 80 VDP(32+1)=254 ' X'-координата V 90 VDP(34+1)=110 ' Y'-координата V 100 VDP(45+1)=&B00000000 ' ░WWWWWWWWWWWWWWWWWWWWWWWWWWWW[ 110 VDP(46+1)=&B01000000 ' Код команды POINT 120 DATA 3E,07,F7,87,31,01,32,00,E0,C9 ' Считываем регистр статуса 7 130 ' ▌▌ V 140 ' ZQWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW[ 150 FOR I=0 TO 9: READ A$ ' 160 POKE &HD000+I,VAL("&h"+A$): NEXT I ' 170 DEFUSR=&HD000:A=USR(0) ' 180 OPEN "GRP:" AS #1: PRESET(0,0),0 ' Печатаем 190 PRINT #1, PEEK(&HE000) ' код цвета 200 A$=INPUT$(1) Характеристики купленного прибора соответствуют спецификации довольно долго,все время, пока про- давец демонстрирует его Вам. Закон Мэрфи П р и м е р. Демонстрация действия в с е х команд видеопроцесора WWWWWWWWWWW 5 ' Программу составил Беленький Г. (IX класс) 10 DATA 01,00,00,11,00,00,3E,00,32,B3,FC :' Эта подпрограмма в машин- 20 DATA 32,B5,FC,32,F2,F3,F7,87,85,00,C9 :' ных кодах моделирует опе- 30 FOR I=0 TO 21:READ A$ :' ратор LINE (0,0)-(0,0),0 , 40 POKE &HD000+I,VAL("&h"+A$) :' который обнуляет неисполь- 50 NEXT I :' зуемые регистры видеопро- 60 DEFUSR=&HD000 :' цессора. 70 COLOR 15,0,0: SCREEN 8 80 FOR I=0 TO 63 90 DL=128-I*2+1 100 Z=USR(0) :'WY 110 VDP(36+1)=I:VDP(38+1)=I :' TW LMMV (закрашивает прямоугольную 120 VDP(40+1)=DL:VDP(42+1)=DL :' V область с логическим преобразова- 130 VDP(44+1)=I:VDP(45+1)=0 :' V нием цвета) 140 VDP(46+1)=&B10000100 :'W[ V 150 NEXT I ' ▌ :' V 160 :' ZWWWWWWWWWWWWWWWWWWWWWWWWWW[ 170 VDP(36+1)=0:VDP(38+1)=0 :'WY 180 VDP(44+1)=255 :' TW PSET (установка точки) 190 VDP(45+1)=0:VDP(46+1)=&B01010000 :'W[ 200 A$=INPUT$(1) 210 VDP(32+1)=0:VDP(34+1)=0 :'WY 220 VDP(36+1)=129:VDP(38+1)=0 :' V 230 VDP(40+1)=129:VDP(42+1)=129 :' TW HMMM (быстрая пересылка) 240 VDP(45+1)=0 :' V 250 VDP(46+1)=&B11010000 :'W[ 260 A$=INPUT$(1) 270 VDP(32+1)=130:VDP(34+1)=0 :'WY 280 VDP(36+1)=0:VDP(38+1)=0 :' V 290 VDP(40+1)=129:VDP(42+1)=129 :' TW LMMM(пересылка с логичес- 300 VDP(45+1)=0 :' V ким преобразованием) 310 VDP(46+1)=&B10010100 :'W[ V 320 A$=INPUT$(1):' ZWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW[ 330 FOR I=0 TO 255 340 VDP(36+1)=I:VDP(38+1)=0 :'WY 350 VDP(40+1)=128:VDP(42+1)=0 :' V 360 VDP(44+1)=I :' TW LINE (линия) 370 VDP(45+1)=&B00000001 :' V 380 VDP(46+1)=&B01110100 :'W[ 390 NEXT I 400 A$=INPUT$(1) 410 VDP(34+1)=0:VDP(36+1)=0 :'WY 420 VDP(38+1)=129:VDP(42+1)=83 :' TW YMMM(быстрая пересылка толь- 430 VDP(45+1)=0 :' V ко в Y-направлении) 440 VDP(46+1)=&B11100000 :'W[ 450 A$=INPUT$(1) 460 Z=USR(0) 470 VDP(36+1)=0:VDP(38+1)=0 :'WY 480 VDP(40+1)=255:VDP(42+1)=64 :' TW HMMV (закраска прямоуголь- 490 VDP(44+1)=0:VDP(45+1)=0 :' V ной области без ло- 500 VDP(46+1)=&B11000000 :'W[ гических операций) 510 OPEN "GRP:" AS #1: PRESET(0,0) 520 PRINT #1," А теперь найдем, на какой X- координате находится ли ния с цветом 128." 530 DATA 3E,00,F7,87,31,01,32,00,F0,C9 :'WY 540 FOR I=0 TO 9:READ A$ :' V 550 POKE &HE000+I,VAL("&h"+A$):NEXT I :' V 560 DEFUSR1=&HE000 :' V 570 VDP(32+1)=0:VDP(34+1)=128 :' V 580 VDP(44+1)=128:VDP(45+1)=0 :' V 590 VDP(46+1)=&B01100000 :' TW SRCH (поиск точки 600 POKE &HE001,2:A=USR1(0):A=PEEK(&HF000) :' V заданного цвета) 610 CE=(A AND &B00000001) :' V 620 IF CE=1 THEN 600 :' V 630 BD=(A AND &B00010000) :' V 640 IF BD=0 THEN 670 :' V 650 POKE &HE001,8:A=USR1(0):A=PEEK(&HF000) :'W[ 660 PRESET (100,30):PRINT #1, A;" 255-128=127 (!)" 670 A$=INPUT$(1) 680 CLS 690 PRESET (0,0): PRINT #1," Поставим точку "; 700 VDP(36+1)=128:VDP(38+1)=106 :'WY 710 VDP(44+1)=128:VDP(45+1)=0 :' TW PSET (ставит точку) 720 VDP(46+1)=&B01010000 :'W[ 730 PRINT #1,"и определим ее цвет." 740 VDP(32+1)=128:VDP(34+1)=106 :'WY 750 VDP(45+1)=0:VDP(46+1)=&B01000000 :' TW POINT(определяет цвет 760 POKE &HE001,7:Z=USR1(0):A=PEEK(&HF000) :'W[ заданной точки) 770 PRINT #1," Цвет точки :",A 780 A$=INPUT$(1) 790 CLS 800 PSET (0,0): PRINT #1,"Нарисуем ";CHR$(34);"картинку";CHR$(34);"." 810 Z=USR(0) 820 VDP(36+1)=110:VDP(38+1)=90 830 VDP(40+1)=30:VDP(42+1)=30 840 VDP(44+1)=255:VDP(45+1)=0 850 VDP(46+1)=&B10000000 860 Z=USR(0) 870 VDP(36+1)=115:VDP(38+1)=95 880 VDP(40+1)=20:VDP(42+1)=20 890 VDP(44+1)=7:VDP(45+1)=0 900 VDP(46+1)=&B10000000 910 PRINT #1,"И запомним ее в RAM начиная с адреса &hA800." 920 PRINT #1,"Подождите ! Процесс длится около д в у х минут." 930 I=&HA800 940 VDP(32+1)=110:VDP(34+1)=90 950 VDP(40+1)=30:VDP(42+1)=30 960 VDP(45+1)=0:VDP(46+1)=&B10100000 970 POKE &HE001,2:A=USR1(0):A=PEEK(&HF000) 980 TR=(A AND &B10000000) 990 IF TR=0 THEN 1020 1000 POKE &HE001,7:B=USR1(0):B=PEEK(&HF000) 1010 POKE I,B:I=I+1 1020 CE=(A AND &B00000001) 1030 IF CE=1 THEN 970 1040 PRINT #1,"Запомнили ..." 1050 A$=INPUT$(1) 1060 CLS 1070 PRESET (0,0):PRINT #1,"Очистили экран." 1080 PRINT#1,"Теперь восстановим рисунок из памяти в нормальном виде." 1090 I=&HA801 1100 VDP(36+1)=110:VDP(38+1)=90 1110 VDP(40+1)=30:VDP(42+1)=30 1120 VDP(44+1)=256+NOT(PEEK(&HA800)) 1130 VDP(45+1)=0:VDP(46+1)=&B11110000 1140 POKE &HE001,2:A=USR1(0):A=PEEK(&HF000) 1150 CE=(A AND &B00000001) 1160 IF CE=0 THEN 1210 1170 TR=(A AND &B10000000) 1180 IF TR=0 THEN 1140 1190 I=I+1:VDP(44+1)=PEEK(I) 1200 GOTO 1140 1210 A$=INPUT$(1) 1220 PRINT #1,"А теперь в инвертированном ..." 1230 I=&HA801 1240 VDP(36+1)=110:VDP(38+1)=90 1250 VDP(40+1)=30:VDP(42+1)=30 1260 VDP(44+1)=256+NOT(PEEK(&HA800)) 'Маленькая хитрость! 1270 VDP(45+1)=0:VDP(46+1)=&B10110100 1280 POKE &HE001,2:A=USR1(0):A=PEEK(&HF000) 1290 CE=(A AND &B00000001) 1300 IF CE=0 THEN 1350 1310 TR=(A AND &B10000000) 1320 IF TR=0 THEN 1280 1330 I=I+1:VDP(44+1)=PEEK(I) 1340 GOTO 1280 1350 A$=INPUT$(1) В заключение поговорим вкратце о возможностях ускорения выполнения ко- манд видеопроцессора. Выполнение команд видеопроцессора можно ускорить д в у м я следующи- ми способами. 1. Запрещение отображения спрайтов ("гашение" спрайтов) Если бит 1 регистра с номером 8(SPD) установлен в 1, то время, расходу- емое на обработку спрайтов может быть использовано для выполнения команд. 2. Запрещение отображения экрана ("гашение" экрана). Если бит 6 регистра видеопроцессора с номером 1(BL) установлен в 0, то время, затрачиваемое на отображение содержимого экрана, может быть ис- пользовано для выполнения команд. Даже самые светлые в мире умы Не смогли разогнать окружающей тьмы. Рассказали нам несколько сказочек на ночь- И отправились мудрые спать, как и мы. О.Хайям. Рубайят