2.8. К о м а н д ы в и д е о п р о ц е с с о р а [89] Кто не способен выдумывать небылицы, у того один выход - рассказывать были. Л.Вовенарг. Размышления и максимы 2.8.1. Т и п ы к о м а н д Команды MSX-VDP можно использовать для выполнения операторов LINE и PSET MSX-BASIC, а также для переноса и копирования части изображения на экране дисплея. Приведем вначале краткие сведения о командах. XWWWWWWWWWWWRWWWWWWWWWWWWWWWWWWWWWRWWWWWWWRWWWWWWRWWWWWWWWWWWWWWWY V V О б л а с т ь V V V Четыре старшихV V TWWWWWWWWWWRWWWWWWWWWWS Едини-VМнемо-V бита V V Функция VКуда пере-VОткуда пе-Vца дан-V ника V регистра номерV V V сылаются VресылаютсяV ных V V 46 V V V данные V данные V V TWWWRWWWRWWWRWWWS V V(адресат) V(источник)V V VCM3VCM2VCM1VCM0V TWWWWWWWWWWWUWWWWWWWWWWUWWWWWWWWWWUWWWWWWWUWWWWWWUWWWUWWWUWWWUWWWS V 1 V 2 V 3 V 4 V 5 V 6 V 7 V 8 V 9 V TWWWWWWWWWWWUWWWWWWWWWWUWWWWWWWWWWUWWWWWWWUWWWWWWUWWWUWWWUWWWUWWWS V Быстрая V VRAM V CPU V байт V HMMC V 1 V 1 V 1 V 1 V V пересылка V VRAM V VRAM V байт V YMMM V 1 V 1 V 1 V 0 V V V VRAM V VRAM V байт V НMMM V 1 V 1 V 0 V 1 V V V VRAM V VDP V байт V HMМV V 1 V 1 V 0 V 0 V TWWWWWWWWWWWUWWWWWWWWWWUWWWWWWWWWWUWWWWWWWUWWWWWWUWWWUWWWUWWWUWWWS V Пересылка V VRAM V CPU VпиксельV LMMC V 1 V 0 V 1 V 1 V V с логичес-V CPU V VRAM VпиксельV LMCM V 1 V 0 V 1 V 0 V V ким преоб-V VRAM V VRAM VпиксельV LMMM V 1 V 0 V 0 V 1 V V разованиемV VRAM V VDP VпиксельV LMMV V 1 V 0 V 0 V 0 V TWWWWWWWWWWWUWWWWWWWWWWUWWWWWWWWWWUWWWWWWWUWWWWWWUWWWUWWWUWWWUWWWS V ПостроениеV VRAM V VDP VпиксельV LINЕ V 0 V 1 V 1 V 1 V V л и н и и V V V V V V V V V TWWWWWWWWWWWUWWWWWWWWWWUWWWWWWWWWWUWWWWWWWUWWWWWWUWWWUWWWUWWWUWWWS V Поиск V VRAM V VDP VпиксельV SRCH V 0 V 1 V 1 V 0 V TWWWWWWWWWWWUWWWWWWWWWWUWWWWWWWWWWUWWWWWWWUWWWWWWUWWWUWWWUWWWUWWWS V Установка V VRAM V VDP VпиксельV PSET V 0 V 1 V 0 V 1 V V т о ч к и V V V V V V V V V TWWWWWWWWWWWUWWWWWWWWWWUWWWWWWWWWWUWWWWWWWUWWWWWWUWWWUWWWUWWWUWWWS V СчитываниеV VDP V VRAM VпиксельV POINTV 0 V 1 V 0 V 0 V V точки V V V V V V V V V TWWWWWWWWWWWUWWWWWWWWWWUWWWWWWWWWWUWWWWWWWUWWWWWWUWWWUWWWUWWWUWWWS V Команда V V V V V 0 V 0 V 1 V 1 V VотсутствуетV V V V V V V V V TWWWWWWWWWWWUWWWWWWWWWWUWWWWWWWWWWUWWWWWWWUWWWWWWUWWWUWWWUWWWUWWWS V Команда V V V V V 0 V 0 V 1 V 0 V VотсутствуетV V V V V V V V V TWWWWWWWWWWWUWWWWWWWWWWUWWWWWWWWWWUWWWWWWWUWWWWWWUWWWUWWWUWWWUWWWS V Команда V V V V V 0 V 0 V 0 V 1 V VотсутствуетV V V V V V V V V TWWWWWWWWWWWUWWWWWWWWWWUWWWWWWWWWWUWWWWWWWUWWWWWWUWWWUWWWUWWWUWWWS V СТОП V V V V STOP V V V V V V(прерываниеV V V V V V V V V V выполненияV V V V V 0 V 0 V 0 V 0 V V в с е х V V V V V V V V V V команд) V V V V V V V V V ZWWWWWWWWWWWQWWWWWWWWWWQWWWWWWWWWWQWWWWWWWQWWWWWWQWWWQWWWQWWWQWWW[ Перед выполнением команды в регистрах видеопроцессора (VDP) с номерами 32,33,34,...,44,45 Вам нужно задать необходимые п а р а м е т р ы. Команды выполняются видеопроцессором после задания кода команды в реги- стре видеопроцессора с номером 46, который называется р е г и с т р о м к о м а н д (регистр команд иногда обозначается CMR ("CoMmand Register"). Это приводит к установке 1 в нулевом бите регистра с о с т о я н и я с номером 2 (имя данного бита - СЕ). Заметим, что после выполнения команды бит СЕ устанавливается в 0. Для прерывания исполняющейся команды выполните команду STOP. XWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWY V Команды выполняются только в графических режимах V V SCREEN 5, SCREEN 6, SCREEN 7, SCREEN 8! V ZWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW[ Теперь остановимся на понятии с т р а н и ц а... Значениями параметров, используемых в командах видеопроцессора (VDP), являются ц е л ы е числа, которые, чаще всего,представляют собой коорди- наты X и Y точки на экране дисплея. Другими словами, VDP работает с облас- тью видеопамяти (VRAM), задействованной в текущем режиме SCREEN. С т р а н и ц е й будем называть определенный участок видеопамяти. При отображении на экране видны 192 (или 212) линии текущей страницы (физическое начало изображения на экране устанавливается в соответствии с содержимым регистра видеопроцессора с номером 23). Выбор страницы, предна- значенной для вывода на экран, осуществляется путем изменения базового ад- реса в регистре с номером 2. Содержимое отображаемой на экране дисплея страницы не влияет на выполнение команд видеопроцессора. "Координатная сетка" и адреса расположения страниц для различных режи- мов SCREEN приведены ниже. SCREEN 5 А д р е с SCREEN 6 WWWWWWWW WWWWWWWWW WWWWWWWW XWWWWWWWWWWWWWWWWWWY 00000h XWWWWWWWWWWWWWWWWWWY V(0,0) (255,0)V V(0,0) (511,0)V V С т р а н и ц а 0V V С т р а н и ц а 0V V(0,255) (255,255)V V(0,255) (511,255)V ZWWWWWWWWWWWWWWWWWW[ 07FFFh ZWWWWWWWWWWWWWWWWWW[ XWWWWWWWWWWWWWWWWWWY 08000h XWWWWWWWWWWWWWWWWWWY V(0,256) (255,256)V V(0,256) (511,256)V V С т р а н и ц а 1V V С т р а н и ц а 1V V(0,511) (255,511)V V(0,511) (511,511)V ZWWWWWWWWWWWWWWWWWW[ 0FFFFh ZWWWWWWWWWWWWWWWWWW[ XWWWWWWWWWWWWWWWWWWY 10000h XWWWWWWWWWWWWWWWWWWY V(0,512) (255,512)V V(0,512) (511,512)V V С т р а н и ц а 2V V страница 2 V V(0,767) (255,767)V V(0,767) (511,767)V ZWWWWWWWWWWWWWWWWWW[ 17FFFh ZWWWWWWWWWWWWWWWWWW[ XWWWWWWWWWWWWWWWWWWY 18000h XWWWWWWWWWWWWWWWWWWY V(0,768) (255,768)V V(0,768) (511,768)V V С т р а н и ц а 3V V страница 3 V V(0,1023)(255,1023)V V(0,1023)(511,1023)V ZWWWWWWWWWWWWWWWWWW[ 1FFFFh ZWWWWWWWWWWWWWWWWWW[ SCREEN 7 А д р е с SCREEN 8 WWWWWWWW WWWWWWWWW WWWWWWWW XWWWWWWWWWWWWWWWWWWY 00000h XWWWWWWWWWWWWWWWWWWY V(0,0) (511,0)V V(0,0) (255,0)V V С т р а н и ц а 0V V С т р а н и ц а 0V V(0,255) (511,255)V V(0,255) (255,255)V ZWWWWWWWWWWWWWWWWWW[ 0FFFFh ZWWWWWWWWWWWWWWWWWW[ XWWWWWWWWWWWWWWWWWWY 10000h XWWWWWWWWWWWWWWWWWWY V(0,256) (511,256)V V(0,256) (255,256)V V С т р а н и ц а 1V V С т р а н и ц а 1V V(0,511) (255,511)V V(0,511) (255,511)V ZWWWWWWWWWWWWWWWWWW[ 1FFFFh ZWWWWWWWWWWWWWWWWWW[ А теперь поговорим о л о г и ч е с к и х о п е р а ц и я х ... Команды видеопроцессора XWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWY V LINE, PSET, LMMC, LMCM, LMMM, LMMV V ZWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW[ могут выполнять различные логические операции над ц в е т а м и . Выпол- нение логических операций происходит при установке 4 м л а д ш и х би- тов (с именами LO3,LO2,LO1,LO0) регистра команд номер 46. Приведем краткие данные о логических операциях. Учтите, что в таблице используются следующие обозначения: SC - код цвета и с т о ч н и к а ; DC - код цвета а д р е с а т а. XWWWWWRWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWRWWWWWWWWWWWWWWWY V Имя V О п е р а ц и я VLO3 LO2 LO1 LO0V TWWWWWUWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWWWS V IMP V DC=SC V 0 0 0 0 V V AND V DC=SCGDC V 0 0 0 1 V V OR V DC=SC+DC V 0 0 1 0 V V EOR V DC=NOT(SC)GDC+SCGNOT(DC) V 0 0 1 1 V V NOT V DC=NOT(SC) V 0 1 0 0 V V V V 0 1 0 1 V V V V 0 1 1 0 V V V V 0 1 1 1 V V TIMPV IF SC=0 THEN DC=DC ELSE DC=SC V 1 0 0 0 V V TANDV IF SC=0 THEN DC=DC ELSE DC=SCGDC V 1 0 0 1 V V TOR V IF SC=0 THEN DC=DC ELSE DC=SC+DC V 1 0 1 0 V V TEORV IF SC=0 THEN DC=DC V V V V ELSE DC=NOT(SC)GDC+SCGNOT(DC) V 1 0 1 1 V V TNOTV IF SC=0 THEN DC=DC ELSE DC=NOT(SC) V 1 1 0 1 V V V V 1 1 0 1 V V V V 1 1 1 0 V V V V 1 1 1 1 V ZWWWWWQWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWQWWWWWWWWWWWWWWW[ 2.8.2. С о с т о я н и е р е г и с т р о в п о с л е в ы п о л н е н и я к о м а н д После того, как некоторая команда VDP выполнена,состояние регистров бу- дет таким, как указано в следующей таблице. XWWWWWRWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWY V Мне-V Н о м е р а р е г и с т р о в V Vмони-TWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWRWWWWWWWWWWWRWWWWWS V ка V32,33V34,35V36,37V38,39V40,41V42,43V 44V 46 V 45 V V ко- TWWWWWUWWWWWUWWWWWUWWWWWUWWWWWUWWWWWUWWWUWWWWWRWWWWWUWWWWWS VмандыV SX V SY V DX V DY V NX V NY VCLRVСтарш.Младш. ARG V V V V V V V V V V битыV битыV V TWWWWWUWWWWWUWWWWWUWWWWWUWWWWWUWWWWWUWWWWWUWWWUWWWWWUWWWWWUWWWWWS V HMMCV W V W V W V O V W V # V W V 0 V W V W V TWWWWWUWWWWWUWWWWWUWWWWWUWWWWWUWWWWWUWWWWWUWWWUWWWWWUWWWWWUWWWWWS V YMMMV W V O V W V O V W V # V W V 0 V W V W V TWWWWWUWWWWWUWWWWWUWWWWWUWWWWWUWWWWWUWWWWWUWWWUWWWWWUWWWWWUWWWWWS V HMMMV W V O V W V O V W V # V W V 0 V W V W V TWWWWWUWWWWWUWWWWWUWWWWWUWWWWWUWWWWWUWWWWWUWWWUWWWWWUWWWWWUWWWWWS V HMMVV W V W V W V O V W V # V W V 0 V W V W V TWWWWWUWWWWWUWWWWWUWWWWWUWWWWWUWWWWWUWWWWWUWWWUWWWWWUWWWWWUWWWWWS V LMMCV W V W V W V O V W V # V W V 0 V W V W V TWWWWWUWWWWWUWWWWWUWWWWWUWWWWWUWWWWWUWWWWWUWWWUWWWWWUWWWWWUWWWWWS V LMCMV W V O V W V W V W V # V O V 0 V W V W V TWWWWWUWWWWWUWWWWWUWWWWWUWWWWWUWWWWWUWWWWWUWWWUWWWWWUWWWWWUWWWWWS V LMMMV W V O V W V O V W V # V W V 0 V W V W V TWWWWWUWWWWWUWWWWWUWWWWWUWWWWWUWWWWWUWWWWWUWWWUWWWWWUWWWWWUWWWWWS V LMMVV W V W V W V O V W V # V W V 0 V W V W V TWWWWWUWWWWWUWWWWWUWWWWWUWWWWWUWWWWWUWWWWWUWWWUWWWWWUWWWWWUWWWWWS V LINEV W V W V W V O V W V W V W V 0 V W V W V TWWWWWUWWWWWUWWWWWUWWWWWUWWWWWUWWWWWUWWWWWUWWWUWWWWWUWWWWWUWWWWWS V SRCHV W V W V W V W V W V W V W V 0 V W V W V TWWWWWUWWWWWUWWWWWUWWWWWUWWWWWUWWWWWUWWWWWUWWWUWWWWWUWWWWWUWWWWWS V PSETV W V W V W V W V W V W V W V 0 V W V W V TWWWWWUWWWWWUWWWWWUWWWWWUWWWWWUWWWWWUWWWWWUWWWUWWWWWUWWWWWUWWWWWS VPOINTV W V W V W V W V W V W V O V 0 V W V W V ZWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWQWWWWWQWWWWWQWWWWW[ В приведенной таблице: ═) символ "W" означает, что содержимое регистра не изменяется; ║) символ "O" означает, что в регистре находится координата точки в момент завершения выполнения команды или код цвета; ╖) символ "#" означает, что в регистре находится счетчик (NYB) коли- чества обнаружений границы экрана во время выполнения команды. П р и м е ч а н и е. Значениями для SY*, DY* и NYB служат точки (или байты в высокоскорост- ных пересылках данных), вычисляемые подстановкой N в соотношения,приведен- ные ниже: SYO=SY+N DYO=DY+N (DIY=0) SYO=SY-N DYO=DY-N (DIY=1) NYB=NY-N Для команд,осуществляющих высокоскоростную пересылку данных (HMMC,HMMM, HMMV,YMMM) N=2 в режимах SCREEN 5 и SCREEN 7, N=4 в режимe SCREEN 6. Для команды LINE: если MAJ=0, то N=N-1. Для других команд N=1. 2.8.3. О п и с а н и е к о м а н д Брось свои иносказанья И гипотезы пустые! На проклятые вопросы Дай ответы нам прямые. Г.Гейне 2.8.3.1. К о м а н д а НММС Команда НМMС пересылает данные от центрального процессора (CPU) в ви- деопамять (VRAM) или расширенную память в виде прямоугольного блока (раз- мером NX\NY) через регистры видеопроцессора (VDP).Так как переносимые дан- ные организованы побайтно, существует ограничение на величины NX и DX в соответствии с режимом oтображения(в режимах SCREEN 5 и SCREEN 7 эти вели- чины должны быть ч е т н ы м и, а в режиме SCREEN 6 - к р а т н ы м и 4). Взгляните на схему выполнения команды HMMC. В и д е о п а м я т ь или р а с ш и р е н н а я п а м я т ь XWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWY V (DX,DY) V MSX-VDP CPU V XWWWWWWWWWWWWWY WW▐ DIX V XWWWWWWWY XWWWWY V V NXV (X-направление)V V Видео-V V V V VNY V ░WWWWWWWWWWWWWWWWWWWWWVпроцес-V░WWV ЦП V V ZWWWWWWWWWWWWW[ V V сор V V V V V DIY V ZWWWWWWW[ ZWWWW[ V V (Y-направление) V V █ V ZWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW[ Опишем теперь установку регистров для выполнения команды НММС и поря- док ее выполнения. 1. Вначале устанавливаются необходимые параметры в регистры команд VDP, а именно: ═) DX: базовая X-координата адресата (от 0 до 511); Отметим, что в режимах SCREEN 5 и SCREEN 7 теряется один младший бит, а в режиме SCREEN 6 - 2 младших бита. 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[ адресата (старшая часть)) ║) NX: "ширина" пересылаемого блока по X-направлению в точках (от 0 до 511); Отметим, что в режимах SCREEN 5 и SCREEN 7 теряется один младший бит,а в режиме SCREEN 6 - 2 младших бита. NY: "ширина" пересылаемого блока по Y-направлению в точках (от 0 до 1023). Номера битов 7 6 5 4 3 2 1 0 XWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWY Р е г и с т р 40 V NX7 V NX6 V NX5 V NX4 V NX3 V NX2 V NX1 V NX0 V (количество точек для ZWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWW[ пересылки по X-координате (младшая часть)) XWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWY Р е г и с т р 41 V 0 V 0 V 0 V 0 V 0 V 0 V 0 V NX8 V (количество точек для ZWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWW[ пересылки по X-координате (старшая часть)) XWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWY Р е г и с т р 42 V NY7 V NY6 V NY5 V NY4 V NY3 V NY2 V NY1 V NY0 V (количество точек для ZWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWW[ пересылки по Y-координате (младшая часть)) XWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWY Р е г и с т р 43 V 0 V 0 V 0 V 0 V 0 V 0 V NY9 V NY8 V (количество точек для ZWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWW[ пересылки по Y-координате (старшая часть)) ╖) MХD: задание области памяти адресата (0: видеопамять; 1: расширенная память); DIX: направление для NX по X-координате адресата (0: направо; 1:налево); DIY: направления для NY по Y-координате адресата (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▌WWQWWWWWQWW▌WWQWW▌WWQWWWWWQWWWWW[ носительно точки с ко- V V V ординатами (DX,DY)) V V V V V V Задание области памяти адресата W[ V V (1 - расширенная память, V V 0 - видеопамять) V V Направление пересылаемых данных(Y) WWWWWWWWWWWWW[ V (1 - вверх , 0 - вниз) V Направление пересылаемых данных(X) WWWWWWWWWWWWWWWWWWW[ (1 - налево, 0 - направо) ╚) CLR: первый байт данных для переноса. Д л я р е ж и м о в SCREEN 5 и SCREEN 7 Номера битов 7 6 5 4 3 2 1 0 XWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWY Р е г и с т р 44 V CH3 V CH2 V CH1 V CH0 V CL3 V CL2 V CL1 V CL0 V (регистр цвета) ZWW▌WWQWW▌WWQWW▌WWQWW▌WWQWW▌WWQWW▌WWQWW▌WWQWW▌WW[ ZWWWWWQWWWWWQWWWWW[ ZWWWWWQWWWWWQWWWWW[ N=0,1,2,...,127 X=2GN X=2GN+1 Д л я р е ж и м а SCREEN 6 Номера битов 7 6 5 4 3 2 1 0 XWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWY Р е г и с т р 44 V CH3 V CH2 V CH1 V CH0 V CL3 V CL2 V CL1 V CL0 V (регистр цвета) ZWW▌WWQWW▌WWQWW▌WWQWW▌WWQWW▌WWQWW▌WWQWW▌WWQWW▌WW[ ZWWWWW[ ZWWWWW[ ZWWWWW[ ZWWWWW[ N=0,1,2,...,127 X=4GN X=4GN+1 X=4GN+2 X=4GN+3 Д л я р е ж и м а SCREEN 8 Номера битов 7 6 5 4 3 2 1 0 XWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWY Р е г и с т р 44 V CH3 V CH2 V CH1 V CH0 V CL3 V CL2 V CL1 V CL0 V (регистр цвета) ZWW▌WWQWW▌WWQWW▌WWQWW▌WWQWW▌WWQWW▌WWQWW▌WWQWW▌WW[ ZWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWW[ О д н а т о ч к а 2. После задания значений параметров выполнение команды происходит за- данием кода команды 11110000b в регистре команд с номером 46. Второй и все последующие байты посылаются в регистр номер 44 после про- верки TR-бита и CЕ-бита в регистре состояния с номером 2. В заключение пункта приведем схему алгоритма выполнения команды НММС: XWWWWWWWWWWWY XWWWWWWWWWWWWWWWY XWWWWWWWWWWWWWWWWWWWWWWY VНачало НММCVWW▐V Установка VWW▐V Выполнение команды V ZWWWWWWWWWWW[ V регистров VDP V ZWWWWWWWWWWRWWWWWWWWWWW[ ZWWWWWWWWWWWWWWW[ V XWWWWWWWWWWWWWWWWWWW▐V V XWWWWWWWWWWWWWWW█WWWWWWWWWWWWWWWWWWWWWWWY V V Чтение регистра состояния с номером 2 V V ZWWWWWWWWWWWWWWWRWWWWWWWWWWWWWWWWWWWWWWW[ V XWWWWW█WWWWWY V V Конец V да (CE=0) V V команды ? TWWWWWWWWWWY V ZWWWWWRWWWWW[ V V V нет (CE=1) V V XWWWWW█WWWWWY V V нет (TR=0) V Пересылка V V TWWWWWWWWWWWW░WS окончена? V V V ZWWWWWRWWWWW[ V V V да (TR=1) V V XWWWWWWWW█WWWWWWWY V V V Перенос данных V V V ZWWWWWWWWRWWWWWWW[ XWWWWW█WWWWWWY ZWWWWWWWWWWWWWWWWWWWW[ V Конец НМMС V ZWWWWWWWWWWWW[ П р и м е р. Иллюстрация работы команды HMMC WWWWWWWWWWW 10 DATA 3E,02,F7,87,31,01,32,00,E0,C9 :' Подпрограмма в машинных кодах, 20 FOR I=0 TO 9:READ A$ :' позволяющая прочесть содержи- 30 POKE &HD000+I,VAL("&h"+A$):NEXT I :' мое регистра статуса с номером 40 DEFUSR=&HD000 :' 2 видеопроцессора 50 I=&HA000 :' С этого адреса "берем" данные 60 SCREEN 8 :' Возможны SCREEN 5 ╤ SCREEN 8 61 VDP(36+1)=10:VDP(37+1)=0 :' X,Y-координаты блока 70 VDP(38+1)=10:VDP(39+1)=0 :' Длины сторон блока по осям OX 80 VDP(40+1)=30:VDP(41+1)=0 :' и OY 81 VDP(42+1)=30:VDP(43+1)=0 :' 90 VDP(44+1)=PEEK(I) :' Цвет берем из RAM 100 VDP(45+1)=0 :' Ориентируем блок 110 VDP(46+1)=&B11110000 :' Выполняем команду HMMC 120 A=USR(0):A=PEEK(&HE000) :' Читаем 2-й регистр статуса░YY 130 CE=(A AND &B00000001) :' Выделяем бит CE VV 140 IF CE=0 THEN 190 :' Если он равен 0, то WWWWWWWVVY 150 TR=(A AND &B10000000) :' иначе выделяем бит TR VVV 160 IF TR=0 THEN 120 :' Если он равен 0, то WWWWWWW[VV 170 I=I+1:VDP(44+1)=PEEK(I) :' иначе задаем новый цвет VV 180 GOTO 120 :' WWWWWWWWWWWWWWWWWWWWWWWWWWWW[V 190 A$=INPUT$(1) :' К о н е ц ░WWWWWWWWWWWWWWWWW[ 2.8.3.2. К о м а н д а YMMM Тщательно пережевывайте пищу, этим вы помогаете обществу. И.Ильф и Е.Петров Команда YMMM переносит данные из области, определяемой величинами DX, SY,NY,DIX, DIY, и правой или левой "границей" видеопамяти в Y-направле- нии, задаваемом параметром DY. XWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWY W▐ DIX V (DX,DY)XWWWWWWWWWWWWWWWWWWWWWWWWS (X-направление) V V А д р е с а т V V ZWWWWWWWWWWW▌WWWWWWWWWWWWS V V V V (DX,SY)XWWWWWWWWWWWWWWWWWWWWWWWWS V VNY И с т о ч н и к V V ZWWWWWWWWWWWWWWWWWWWWWWWWS ZWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW[ V █ DIY (Y-направление) Опишем порядок выполнения команды YMMM. 1. Вначале устанавливаются необходимые параметры в регистры команд VDP, а именно: ═) MXD: задать область памяти для адресата: (0: видеопамять; 1: расширенная память); DIX: направление по Х-координате от точки источника в сторону правого или левого края экрана (0: направо; 1: налево); DIY: направление для NY (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▌WWQWWWWWQWW▌WWQWW▌WWQWWWWWQWWWWW[ V V V Выбор области памяти WWWWWWWWWWWWWWWWW[ V V Направление пересылаемых данных (Y) WWWWWWWWWWWWWW[ V Направление пересылаемых данных (X) WWWWWWWWWWWWWWWWWWWW[ ║) DX: базовая Х-координата и с т о ч н и к а (oт 0 до 511)(отметим, что в режимах SCREEN 5 и SCREEN 7 теряется один младший бит, а в режиме SCREEN 6 - 2 младших бита); SY: базовая Y-координата и с т о ч н и к а (от 0 до 1023). Номера битов 7 6 5 4 3 2 1 0 XWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWY Р е г и с т р 34 V SY7 V SY6 V SY5 V SY4 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[ пересылаемого блока (старшая часть)) 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[ пересылаемого блока (старшая часть)) ╖) DY: базовая Y-координата а д р е с а т а (от 0 до 1023) (отметим, что в режимах SCREEN 5 и SCREEN 7 теряется один младший бит, а в режиме SCREEN 6 - 2 младших бита); NY: "ширина" пересылаемого блока по Y-направлению в точках (от 0 до 1023). Номера битов 7 6 5 4 3 2 1 0 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[ адресата (старшая часть)) XWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWY Р е г и с т р 42 V NY7 V NY6 V NY5 V NY4 V NY3 V NY2 V NY1 V NY0 V (количество точек по Y-ZWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWW[ координате (младшая часть)) XWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWY Р е г и с т р 43 V 0 V 0 V 0 V 0 V 0 V 0 V NY9 V NY8 V (количество точек по Y-ZWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWW[ координате (старшая часть)) 2. Выполнение команды происходит после помещения числа 11110000b в ре- гистр команд с номером 46. Номера битов 7 6 5 4 3 2 1 0 XWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWY Р е г и с т р 46 V 1 V 1 V 1 V 0 V 0 V 0 V 0 V 0 V (регистр команды) ZWW▌WWQWW▌WWQWW▌WWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWW[ ZWWWWWQWWWWW[ К о д к о м а н д ы YMMM 3. При выполнении команды YMMM СЕ-бит регистра состояния с номером 2 будет установлен в 1, а после выполнения - в 0. П р и м е р. Иллюстрация действия команды YMMM WWWWWWWWWWW 10 SCREEN 8 ' Возможны режимы SCREEN 5 ╤ SCREEN 8 20 FOR I=15 TO 240 STEP 15 ' Y Цепочка разноцветных окружностей, ко- 30 CIRCLE(I,15),15,I ' V торую мы будем копировать 40 NEXT ' [ 50 A$=INPUT$(1) ' Подождем до нажатия любой клавиши... 60 VDP(34+1)=0: VDP(36+1)=0 ' Y,X - координаты пересылаемого блока 70 VDP(38+1)=181 ' Так как копирование ведется только в 80 :' ' Y-направлении, то указываем Y-координа- 90 :' ' ту адресата (X-координата остается преж- 95 :' ' ней) 100 VDP(42+1)=31 ' "Высота" (длина по оси Y) пересылаемого 105 :' ' блока 110 VDP(45+1)=&B00000000 ' 111 :' ▌ ▌▌ ' Пересылаем 120 :' V VZWWWWWWWW ' н а п р а в о и 130 :' V ZWWWWWWWWW ' в н и з 140 :' ZWWWWWWWWWWW ' Пересылаем во VRAM 150 VDP(46+1)=&B11100000 ' К о д команды YMMM 170 A$=INPUT$(1) ' К о н е ц