2.8.3.3. К о м а н д а HMMM Стокгольм - город контрастов. Рядом с красивыми новыми домами стоят еще более новые и красивые. Н.Богословский Команда НМММ пересылает данные в виде специального прямоугольного бло- ка из в и д е о п а м я т и или р а с ш и р е н н о й памяти в в и д е о п а м я т ь или р а с ш и р е н н у ю память. Так как данные для пересылки организованы побайтно, существует ограниче- ние на значение параметра X в соответствии с режимом отображения. В и д е о п а м я т ь или р а с ш и р е н н а я п а м я т ь XWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWY V (SX,SY) V V XWWWWWWWWWWWWWY WW▐ DIX V V V NXV (X-направление)V V VNY V V V ZWWWWWWWWWWWWW[ (DX,DY) V V V XWWWWWWWY V V V DIY V V V V V (Y-направление) ZWWWWWWW[ V V █ V ZWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW[ Опишем порядок выполнения команды HMMM. 1. Вначале устанавливаются необходимые параметры в регистры команд VDP, а именно: ═) MXS: Выбрать область памяти для и с т о ч н и к а; MXD: Выбрать область памяти для а д р е с а т а (0: видеопамять; 1: расширенная память); DIX: Направления для NX от точки источника (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▌WWQWW▌WWQWW▌WWQWW▌WWQWWWWWQWWWWW[ V V V V Выбор области памяти для адресата WW[ V V V Выбор области памяти для источника WWWWWWWW[ V V Направление пересылаемых данных (Y) WWWWWWWWWWWWWW[ V Направление пересылаемых данных (X) WWWWWWWWWWWWWWWWWWWW[ ║) SX: Х-координата и с т о ч н и к а (от 0 до 511) (отметим, что в режимах SCREEN 5 и SCREEN 7 теряется один младший бит,а в режиме SCREEN 6- - 2 младших бита SX, DX и NX); 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 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[ источника (старшая часть)) ╖) DX: базовая Х-координата а д р е с а т а (от 0 до 511) (отметим, что в режимах SCREEN 5 и SCREEN 7 теряется один младший бит, а в режиме SCREEN 6 - 2 младших бита SX, DX и NX); DY: базовая Y-координата а д р е с а т а (от 0 до 1023). NX: "ширина" пересылаемого блока по X-направлению в точках (от 0 до 511) (отметим, что в режимах SCREEN 5 и SCREEN 7 теряется один младший бит, а в режиме SCREEN 6 - 2 младших бита SX, DX и NX); NY: "ширина" пересылаемого блока по 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[ адресата (старшая часть)) 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-направлении (старшая часть)) 2. Выполнение команды происходит заданием кода команды 11010000b в ре- гистре команд с номером 46. Номера битов 7 6 5 4 3 2 1 0 XWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWY Р е г и с т р 46 V 1 V 1 V 0 V 1 V 0 V 0 V 0 V 0 V (регистр команды) ZWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWW[ 3. При выполнении команды HMMM СЕ-бит регистра состояния с номером 2 будет установлен в 1, а после выполнения - в 0. П р и м е р. Пример использования команды HMMM WWWWWWWWWWW 20 SCREEN 5:CIRCLE(40,40),40,8:PAINT STEP(0,0),8 30 FOR T=32 TO 46:VDP(T+1)=0:NEXT :'Очистка 40 VDP(32+1)=0:VDP(33+1)=0 :'Источник (координата X) 50 VDP(34+1)=0:VDP(35+1)=0 :'Источник (координата Y) 60 VDP(36+1)=80:VDP(37+1)=0 :'Приемник (координата X) 70 VDP(38+1)=80:VDP(39+1)=0 :'Приемник (координата Y) 80 VDP(40+1)=80:VDP(41+1)=0 :'Длина по координате X 90 VDP(42+1)=80:VDP(43+1)=0 :'Длина по координате Y 100 VDP(45+1)=&B00000000 :'Байт аргументов: 110 ' VVVZWWWWWWWWWWW :' пересылать направо; 120 ' VVZWWWWWWWWWWWW :' пересылать вниз; 130 ' VZWWWWWWWWWWWWW :' пересылать из VRAM; 140 ' ZWWWWWWWWWWWWWW :' принимать во VRAM; 150 VDP(46+1)=&B11010000 :'Выполнение команды HMMM 160 ' Z▌W[ :' 180 ' ZWWWWWWWWWWWWWWW :'Код команды HMMM 190 A$=INPUT$(1) :'К о н е ц 2.8.3.4. К о м а н д а HMMV Каждая копировальная машина приводит в негодность оригинал. Закон Мэрфи Команда HMMV используется для з а к р а с к и указанной прямоугольной области видеопамяти или расширенной памяти. Так как пересылаемые данные организованы побайтно, то существует ограничение на величину X в соответ- ствии с режимом отображения. В и д е о п а м я т ь и л и р а с ш и р е н н а я п а м я т ь XWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWY V (DX,DY) V V XWWWWWWWWWWWWWY WW▐ DIX V VDP V V NXV (X-направление)V XWWWWWWWWWWWWWWWWY V VNY V ░WWWWWWWWWWWWWWWWWWWV Видеопроцессор V V ZWWWWWWWWWWWWW[ V ZWWWWWWWWWWWWWWWW[ V V V V █ DIY (Y-направление) V ZWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW[ Опишем последовательность выполнения команды НММV. 1. Вначале устанавливаются необходимые параметры в регистры команд VDP, а именно: ═) MХD: задать область памяти а д р е с а т а (0: видеопамять; 1: расширенная память); DIX: направление для NX от точки и с т о ч н и к а (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 Выбор области памяти для адресата WW[ V V Направление пересылаемых данных (Y) WWWWWWWWWWWWWW[ V Направление пересылаемых данных (X) WWWWWWWWWWWWWWWWWWWW[ ║) DX: базовая X-координата а д р е с а т а (от 0 до 511) (отметим, что в режимах SCREEN 5 и SCREEN 7 теряется один младший бит, а в режиме SCREEN 6 - 2 младших бита DX и NX); DY: базовая Y-координата а д р е с а т а (от 0 до 1023). NX: "ширина" пересылаемого блока по X-направлению в точках (от 0 до 511) (отметим,что в режимах SCREEN 5 и SCREEN 7 теряется один младший бит, а в режиме SCREEN 6 - 2 младших бита DX и NX); NY: "ширина" пересылаемого блока по 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[ адресата (старшая часть)) 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-направлении (старшая часть)) ╖) 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. Выполнение команды происходит после помещения числа 11000000b в ре- гистр команд с номером 46. Номера битов 7 6 5 4 3 2 1 0 XWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWY Р е г и с т р 46 V 1 V 1 V 0 V 0 V 0 V 0 V 0 V 0 V (регистр команд) ZWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWW[ 3. При выполнении команды HMMV СЕ-бит регистра состояния номер 2 будет установлен в 1, а после выполнения - в 0. П р и м е р. Иллюстрация работы команды HMMV WWWWWWWWWWWW 10 SCREEN 5 ' Возможны режимы SCREEN 5 ╤ SCREEN 8 30 VDP(36+1)=0: VDP(37+1)=0 ' X-координата прямоугольника 40 VDP(38+1)=0: VDP(39+1)=0 ' Y-координата прямоугольника 50 VDP(40+1)=25:VDP(41+1)=0 ' Длина по оси X 60 VDP(42+1)=19:VDP(43+1)=0 ' Длина по оси Y 70 VDP(44+1)=&B11011111 ' Чтобы прямоугольник был ровно окрашен, а не 71 ' Z▌W[ZW▌[ ' был "полосатым",значение младшего полубайта 80 ' V V ' регистра цвета должно быть равно значению 85 ' V ZWW ' старшего полубайта 90 ' ZWWWWWWW ' (в SCREEN 8 это правило может не выполнять- 100 ' ' ся, так как в этом режиме 256 цветов) 120 VDP(45+1)=&b00000000 ' Ориентация прямоугольника и выбор области 121 ' ' видеопамяти 130 VDP(46+1)=&B11000000 ' Код команды HMMV 140 A$=INPUT$(1) ' К о н е ц 2.8.3.5. К о м а н д а LMMC Историю цивилизации можно выразить в шести словах:чем больше знаешь, тем больше можешь. Э.Абу Команда LMMC передает данные из центрального процессора (CPU) в видео- память или расширенную память в указанную прямоугольную область через ви- деопроцессор. Так как данные для переноса организованы поточечно, то над точками адресата могут быть выполнены логические операции. В и д е о п а м я т ь или р а с ш и р е н н а я п а м я т ь XWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWY V (DX,DY) V V XWWWWWWWWWWWWY WW▐ DIX V VDP CPU V V NXV (X-направление)V XWWWWWWWWWWWWWWWWY XWWWWY V VNY V ░WWWWWWWWWWWWWWWWWWWV Видеопроцессор V░WWWV ЦП V V ZWWWWWWWWWWWW[ V ZWWWWWWWWWWWWWWWW[ ZWWWW[ V V DIY (Y-направление) V V █ V ZWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW[ Опишем последовательность выполнения команды LММС. 1. Вначале устанавливаются необходимые параметры в регистры команд VDP, а именно: ═) 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 Выбор области памяти для адресата WW[ V V Направление пересылаемых данных (Y) WWWWWWWWWWWWWW[ V Направление пересылаемых данных (X) WWWWWWWWWWWWWWWWWWWW[ ║) DX: Базовая X-координата а д р е с а т а (от 0 до 511); DY: Базовая Y-координата а д р е с а т а (от 0 до 1023); NX: "ширина" пересылаемого блока по X-направлению (от 0 до 511); NY: "ширина" пересылаемого блока по 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[ адресата (старшая часть)) 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-направлении (старшая часть)) ╖) CLR: первый байт данных для пересылки. Р е ж и м ы SCREEN 5 и SCREEN 7 Номера битов 7 6 5 4 3 2 1 0 XWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWY Р е г и с т р 44 V 0 V 0 V 0 V 0 V CR3 V CR2 V CR1 V CR0 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 CR1 V CR0 V (регистр цвета) ZWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWW[ Р е ж и м SCREEN 8 Номера битов 7 6 5 4 3 2 1 0 XWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWY Р е г и с т р 44 V CR7 V CR6 V CR5 V CR4 V CR3 V CR2 V CR1 V CR0 V (регистр цвета) ZWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWW[ 2. Выполнение команды LMMC происходит после помещения числа 1011b в 4 с т а р ш и х битах регистра команд с номером 46 и помещения кода ло- гической операции в 4 м л а д ш и х битах регистра с номером 46. Номера битов 7 6 5 4 3 2 1 0 XWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWY Р е г и с т р 46 V 1 V 0 V 1 V 1 V LO3 V LO2 V LO1 V LO0 V (регистр команды) ZWW▌WWQWW▌WWQWW▌WWQWW▌WWQWW▌WWQWW▌WWQWW▌WWQWW▌WW[ ZWWWWWQWWWWWQWWWWW[ ZWWWWWQWWWWWQWWWWW[ Код команды LMMC Код логической операции 3. Передавать второй байт и все последующие байты в 44-й регистр следу- ет с постоянной проверкой значений битов TR и СЕ в регистре состояния с номером 2. Приведем схему алгоритма выполнения команды LMMC. XWWWWWWWWWWWWWWWWWWWWWWWWY XWWWWWWWWWWWWWWWY XWWWWWWWWWWWWWWWWWWWWY V Начало выполнения LMMC VWW▐V Установка VDP VWW▐V Выполнение команды V ZWWWWWWWWWWWWWWWWWWWWWWWW[ ZWWWWWWWWWWWWWWW[ ZWWWWWWWWWWRWWWWWWWWW[ XWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW[ XWWWWWWWWWWWWWWWWWWWWWWWWW▐V V XWWWWWWWWWWWWWWWWWWW█WWWWWWWWWWWWWWWWWWWY V V Чтение регистра состояния с номером 2 V V ZWWWWWWWWWWWWWWWWWWWRWWWWWWWWWWWWWWWWWWW[ V XWWWWW█WWWWWWY V V Конец V да (СЕ=0) V V команды ? TWWWWWWWWWY V ZWWWWWRWWWWWW[ V V V нет (СE=1) V V XWWWWW█WWWWWWY V V нет (TR=0) V Пересылка V XWWWW█WWWWWWWY TWWWW░WWWWWWWWWWWWWWWS окончена? V V Конец LMMC V V ZWWWWWRWWWWWW[ ZWWWWWWWWWWWW[ V V да (TR=1) V XWWWWWWWW█WWWWWWWWWY V V Пересылка данных V V ZWWWWWWWWRWWWWWWWWW[ ZWWWW░WWWWWWWWWWWWWWWWWWWWW[ П р и м е р. Иллюстрация использования команды LMMC WWWWWWWWWWW 10:'Команда LMMC отличается от команды HMMC только тем, что в команде 20:'LMMC можно использовать л о г и ч е с к и е о п е р а ц и и. 30 DATA 3E,02,F7,87,31,01,32,00,E0,C9 :' Подпрограмма в машинных кодах, 40 FOR I=0 TO 9:READ A$ :' позволяющая "прочесть" содер- 50 POKE &HD000+I,VAL("&h"+A$):NEXT I :' жимое регистра статуса видео- 60 DEFUSR=&HD000: I=0 :' процессора с номером 2 70 SCREEN 8 :' Возможны SCREEN 5 ╤ SCREEN 8 80 VDP(36+1)=10:VDP(37+1)=0 :' X-координата блока 90 VDP(38+1)=10:VDP(39+1)=0 :' Y-координата блока 100 VDP(40+1)=30:VDP(41+1)=0 :' Длины сторон блока по осям OX 101 VDP(42+1)=30:VDP(43+1)=0 :' и OY 110 VDP(44+1)=PEEK(0) :' Цвет берем из RAM 120 VDP(45+1)=0 :' Ориентируем блок 130 VDP(46+1)=&B10110100 :' Подаем команду LMMC 140 A=USR(0):A=PEEK(&HE000) :' Читаем регистр стат. 2 ░WY 150 CE=(A AND &B00000001) :' Выделяем бит CE V 160 IF CE=0 THEN 210 :' Если он равен 0, то WWWWWVY 170 TR=(A AND &B10000000) :' иначе выделяем бит TR VV 180 IF TR=0 THEN 140 :' Если он равен 0, то WWWWWSV 190 I=I+1:VDP(44+1)=PEEK(I) :' иначе задаем новый цвет VV 200 GOTO 140 :' WWWWWWWWWWWWWWWWWWWWWWWWW[V 210 A$=INPUT$(1) :' К о н е ц ░WWWWWWWWWWWWWWW[ 2.8.3.6. К о м а н д а LMCM Когда я молод был, все тайны бытия, Казалось, я раскрыл. Ах, ошибался я! О.Хайям. Рубайят Команда LMCM пересылает данные из видеопамяти или расширенной памяти в центральный процессор в виде заданной прямоугольной области (в X-Y коорди- натах) через видеопроцессор. Данные пересылаются п о т о ч е ч н о . В и д е о п а м я т ь или р а с ш и р е н н а я п а м я т ь XWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWY V (SX,SY) V V XWWWWWWWWWWWWWY WWW▐ DIX V VDP CPU V V NXV (X-направление)V XWWWWWWWWWWWWWWWY XWWWWY V VNY V WWWWWWWWWWWWWWWWWWWW▐V ВидеопроцессорVWW▐V ЦП V V ZWWWWWWWWWWWWW[ V ZWWWWWWWWWWWWWWW[ ZWWWW[ V V V V █ DIY (Y-направление) V ZWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW[ Сейчас мы расскажем вам о порядке выполнения команды LMCM. 1. Вначале устанавливаются необходимые параметры в регистры команд VDP, а именно: ═) MXS: выбор области памяти для и с т о ч н и к а (0: видеопамять (VRAM); 1: расширенная память); DIX: направление для NX от Х-координаты точки источника (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 (регистр аргумента) ZWWWWWQWWWWWQWWWWWQWW▌WWQWW▌WWQWW▌WWQWWWWWQWWWWW[ V V V Выбор области памяти для источника WWWWWWWW[ V V Направление пересылаемых данных (Y) WWWWWWWWWWWWWW[ V Направление пересылаемых данных (X) WWWWWWWWWWWWWWWWWWWW[ ║) SX: базовая X-координата точек и с т о ч н и к а (oт 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 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[ источника (старшая часть)) ╖) NX: "ширина" пересылаемого блока по Х-направлению в точках (от 0 до 511); 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-направлении (старшая часть)) 2. Выполнение команды LMCM происходит после помещения числа 1010b в 4 с т а р ш и х битах регистра команд с номером 46 и помещения кода ло- гической операции в 4 м л а д ш и х битах регистра с номером 46. Номера битов 7 6 5 4 3 2 1 0 XWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWY Р е г и с т р 46 V 1 V 0 V 1 V 0 V 0 V 0 V 0 V 0 V (регистр команды) ZWW▌WWQWW▌WWQWW▌WWQWW▌WWQWW▌WWQWW▌WWQWW▌WWQWW▌WW[ ZWWWWWQWWWWWQWWWWW[ ZWWWWWQWWWWWQWWWWW[ Код команды LMCM Код логической операции 3. Данные следует считывать из регистра состояния с номером 7, постоян- но проверяя биты TR и СЕ в регистре состояния с номером 2. Р е ж и м ы SCREEN 5 и SCREEN 7 Номера битов 7 6 5 4 3 2 1 0 XWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWY Р е г и с т р статуса 7V 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 Р е г и с т р статуса 7V 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 Р е г и с т р статуса 7V C7 V C6 V C5 V C4 V C3 V C2 V C1 V C0 V ZWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWW[ Приведем схему алгоритма выполнения команды LMCM. XWWWWWWWWWWWWWY XWWWWWWWWWWWWWWWY XWWWWWWWWWWWWWWWWWWWWY V Начало LMCM VWW▐V Установка VDP VWW▐V Выполнение команды V ZWWWWWWWWWWWWW[ ZWWWWWWWWWWWWWWW[ ZWWWWWWWWWWWRWWWWWWWW[ XWWWWWWWWWWWWWWWWWWWWWW[ XWWWWWWWWWWWWWW█WWWWWWWWWWWWWWWWWWWWWWWWY XWWWWWWWWWWW▐ Чтение регистра состояния с номером 2 V V ZWWWWWWWWWWWWWWRWWWWWWWWWWWWWWWWWWWWWWWW[ V XWWWWWWWW█WWWWWWWWWWY нет (TR=0) V VПересылка окончена?TWWWWWWWWWWWWWWWWWWWWY V ZWWWWWWWWRWWWWWWWWWW[ V V V да (TR=1) V V XWWWWWWWWWWWWWWWWWWWW█WWWWWWWWWWWWWWWWWWWWWWWWWWWWY V V V Чтение данных из регистра состояния с номером 7 V V V ZWWWWWWWWWWWWWWWWWWWWRWWWWWWWWWWWWWWWWWWWWWWWWWWWW[ V V V░WWWWWWWWWWWWWWWWWWWWWWWWWWWWWW[ V нет (СЕ=1)XWWWWWWWW█WWWWWWWWWY да (CE=0) XWWWWWWWWWWWWY ZWWWWWWWWWWWWWWWWWS Конец команды ? TWWWWWWWWWWWWW▐ Конец LMCM V ZWWWWWWWWWWWWWWWWWW[ ZWWWWWWWWWWWW[ З а м е ч а н и е 1. TR-бит должен быть "сброшен" перед выполнением команды. Чтение регист- ра состояния с номером 7 происходит после настройки видеопроцессора. З а м е ч а н и е 2. Даже если данные установлены в регистре состояния с номером 7 и бит TR установлен в 1, то видеопроцессор выполнит команду и бит СЕ будет установ- лен в 0. П р и м е р. Иллюстрация работы команды LMCM WWWWWWWWWWW 10 DATA 3E,00,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 :'ходится в ячейке &hD001 50 I=&HA000 :'Начальный адрес области памяти, 51 SCREEN 8 :'где будем запоминать "картинку" 60 LINE (11,11)-(38,38),30,BF :' "К а р т и н к а" 61 VDP(32+1)=10:VDP(33+1)=0 :'X-координата запоминаемого блока 70 VDP(34+1)=10:VDP(35+1)=0 :'Y-координата запоминаемого блока 80 VDP(40+1)=30:VDP(41+1)=0 :'Длины сторон по осям OX и OY 90 VDP(42+1)=30:VDP(43+1)=0 100 VDP(45+1)=0 :'Выбираем направление запоминания 110 VDP(46+1)=&B10100000 :'Код команды LMCM 120 POKE &HD001,2:A=USR(0) :'Читаем регистр статуса 2 и ░WWY 121 A=PEEK(&HE000) :' V 130 TR=(A AND &B10000000) :'выделяем бит TR. V 140 IF TR=0 THEN 170 :'Если он не равен 0, то WWWWWWYV 150 POKE &HD001,7:B=USR(0) :'иначе читаем регистр стат.7 иVV 160 POKE I,PEEK(&HE000):I=I+1 :'переносим данные VV 170 CE=(A AND &B00000001) :'Выделяем бит CE рег. стат. 2░[V 180 IF CE=1 THEN 120 :'Если он равен 1, то WWWWWWWWWW[ 190 END :'К о н е ц