2.8.3.7. К о м а н д а LMМM Даже если ваше объяснение настолько ясно, что исключает всякое ложное толкование, все равно найдется человек, который пой- мет вас неправильно. Следствие из Третьего закона Чизхолма Команда LMМM пересылает данные (заданную прямоугольную область) из в и д е о п а м я т и или р а с ш и р е н н о й памяти в в и д е о п а м я т ь или р а с ш и р е н н у ю память. Так как данные для пересылки организованы п о т о ч е ч н о , то над дан- ными адресата могут быть выполнены логические операции. В и д е о п а м я т ь или р а с ш и р е н н а я п а м я т ь ┌───────────────────────────────────────┐ │ (SX,SY) │ │ ┌─────────────┐ ────▶ DIX │ │ │ NX│ (X-направление)│ │ │NY │ │ │ └─────────────┘\ (DX,DY) │ │ │ \ ┌────────────┐ │ │ ▼ \│ │ │ │ DIY(Y-направление) │ │ │ │ └────────────┘ │ └───────────────────────────────────────┘ Теперь опишем начальную установку регистров и порядок выполнения коман- ды LMМM. 1. Вначале устанавливаются необходимые параметры в регистры команд VDP, а именно: α) MXS: выбор области памяти для и с т о ч н и к а (0: видеопамять (VRAM); 1: расширенная память); MXD: выбор области памяти для а д р е с а т а (0: видеопамять (VRAM); 1: расширенная память); DIX: направление для NX от X-координаты точки источника (0: направо; 1: налево); DIY: направление для NY от Y-координаты точки источника (0: вниз; 1: вверх). Номера битов 7 6 5 4 3 2 1 0 ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐ Р е г и с т р 45 │ 0 │ MXC │ MXD │ MXS │ DIY │ DIX │ EQ │ MAJ │ (регистр аргумента) └─────┴─────┴──▲──┴──▲──┴──▲──┴──▲──┴─────┴─────┘ │ │ │ │ Выбор области памяти для адресата ───┘ │ │ │ Выбор области памяти для источника ─────────┘ │ │ Направление пересылаемых данных (Y) ──────────────┘ │ Направление пересылаемых данных (X) ────────────────────┘ β) SX: X-координата точки и с т о ч н и к а (от 0 до 511); SY: Y-координата точки и с т о ч н и к а (от 0 до 1023); DX: X-координата точки а д р е с а т а (от 0 до 511); DY: Y-координата точки а д р е с а т а (от 0 до 1023). Номера битов 7 6 5 4 3 2 1 0 ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐ Р е г и с т р 32 │ X7 │ X6 │ X5 │ X4 │ X3 │ X2 │ X1 │ X0 │ (базовая координата X └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ источника (младшая часть)) ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐ Р е г и с т р 33 │ 0 │ 0 │ 0 │ 0 │ 0 │ 0 │ 0 │ SX8 │ (базовая координата X └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ источника (старшая часть)) ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐ Р е г и с т р 34 │ SY7 │ SY6 │ SY5 │ SY4 │ SY3 │ SY2 │ SY1 │ SY0 │ (базовая координата Y └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ источника (младшая часть)) ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐ Р е г и с т р 35 │ 0 │ 0 │ 0 │ 0 │ 0 │ 0 │ SY9 │ SY8 │ (базовая координата Y └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ источника (старшая часть)) ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐ Р е г и с т р 36 │ DX7 │ DX6 │ DX5 │ DX4 │ DX3 │ DX2 │ DX1 │ DX0 │ (базовая координата X └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ адресата (младшая часть)) ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐ Р е г и с т р 37 │ 0 │ 0 │ 0 │ 0 │ 0 │ 0 │ 0 │ DX8 │ (базовая координата X └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ адресата (старшая часть)) ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐ Р е г и с т р 38 │ DY7 │ DY6 │ DY5 │ DY4 │ DY3 │ DY2 │ DY1 │ DY0 │ (базовая координата Y └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ адресата (младшая часть)) ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐ Р е г и с т р 39 │ 0 │ 0 │ 0 │ 0 │ 0 │ 0 │ DY9 │ DY8 │ (базовая координата Y └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ адресата (старшая часть)) γ) NX: "ш и р и н а" пересылаемого блока по X-направлению в точках (от 0 до 511); NY: "ш и р и н а" пересылаемого блока по Y-направлению в точках (от 0 до 1023). Номера битов 7 6 5 4 3 2 1 0 ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐ Р е г и с т р 40 │ NX7 │ NX6 │ NX5 │ NX4 │ NX3 │ NX2 │ NX1 │ NX0 │ (количество точек по X └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ координате (младшая часть)) ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐ Р е г и с т р 41 │ 0 │ 0 │ 0 │ 0 │ 0 │ 0 │ 0 │ NX8 │ (количество точек по X └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ координате (старшая часть)) ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐ Р е г и с т р 42 │ NY7 │ NY6 │ NY5 │ NY4 │ NY3 │ NY2 │ NY1 │ NY0 │ (количество точек по Y └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ координате (младшая часть)) ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐ Р е г и с т р 43 │ 0 │ 0 │ 0 │ 0 │ 0 │ 0 │ NY9 │ NY8 │ (количество точек по Y └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ координате (старшая часть)) 2. Выполнение команды начинается после помещения числа 1001b в четырех с т а р ш и х битах и кода логической операции - в четырех м л а д ш и х битах регистра с номером 46. Номера битов 7 6 5 4 3 2 1 0 ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐ Р е г и с т р 46 │ 1 │ 0 │ 0 │ 1 │ LO3 │ LO2 │ LO1 │ LO0 │ (регистр команды) └──▲──┴──▲──┴──▲──┴──▲──┴──▲──┴──▲──┴──▲──┴──▲──┘ └─────┴─────┴─────┘ └─────┴─────┴─────┘ Код команды LMMM Код логической операции 3. При выполнении команды LMMM СЕ-бит регистра состояния с номером 2 будет установлен в 1, а после выполнения - в 0. П р и м е р. Иллюстрация работы команды LMMM ─────────── 10 SCREEN 8 ' Возможны режимы SCREEN 5 ÷ SCREEN 8 20 LINE(10,10)-(50,50),255 ' Копируемый объект 30 VDP(32+1)=10 ' X-координата и с т о ч н и к а 40 VDP(34+1)=10 ' Y-координата и с т о ч н и к а 50 VDP(36+1)=55 ' X'-координата а д р е с а т а 60 VDP(38+1)=55 ' Y'-координата а д р е с а т а 70 VDP(40+1)=40 ' Длина копируемого блока по оси X 80 VDP(42+1)=40 ' Длина копируемого блока по оси Y 90 VDP(45+1)=&B00000000 ' 0 желательно ставить... 91 : ' В этом регистре может находиться любое 92 : ' число, но при этом может быть нарушена 93 : ' ориентация адресата относительно точки 94 : ' (X',Y') или копирования не произойдет 100 A$=INPUT$(1) ' П о д о ж д е м ... 110 VDP(46+1)=&B10010000 ' Выполнение команды LMMM 120 A$=INPUT$(1) ' П о д о ж д е м ... 2.8.3.8. К о м а н д а LMМV Король прусский неоднократно приказывал со- ставлять заведомо негодные топографические планы разных местностей. На них указывалось, например, что такое-то болото непроходимо,и неприятель, полагаясь на карту, верил тому, чего на самом деле не было. С.Шамфор. Характеры и анекдоты Команда LMМV закрашивает заданную прямоугольную область видеопамяти или расширенной памяти цветом с указанным кодом. Так как данные для пере- носа организованы п о т о ч е ч н о , то над данными адресата могут быть выполнены логические операции. В и д е о п а м я т ь или р а с ш и р е н н а я п а м я т ь ┌───────────────────────────────────────┐ │ (DX,DY) │ │ ┌─────────────┐ ───▶ DIX │ VDP │ │ NX│ (X-направление)│ ┌────────────────┐ │ │NY │ ◀───────────────────────│ Видеопроцессор │ │ └─────────────┘ │ └────────────────┘ │ │ │ │ ▼ DIY (Y-направление) │ └───────────────────────────────────────┘ Теперь опишем начальную установку регистров и порядок выполнения коман- ды LMМV. 1. Вначале устанавливаются необходимые параметры в регистры команд VDP, а именно: α) MХD: выбор области памяти для а д р е с а т а (0: видеопамять (VRAM); 1: расширенная память); DIX: направление для NX от X-координаты точки источника: (0: направо; 1: налево); DIY: направление для NY от Y-координаты точки источника: (0: вниз; 1: вверх). Номера битов 7 6 5 4 3 2 1 0 ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐ Р е г и с т р 45 │ 0 │ MXC │ MXD │ MXS │ DIY │ DIX │ EQ │ MAJ │ (регистр аргумента) └─────┴─────┴──▲──┴─────┴──▲──┴──▲──┴─────┴─────┘ │ │ │ Выбор области памяти для адресата ────┘ │ │ Направление пересылаемых данных (Y) ──────────────┘ │ Направление пересылаемых данных (X) ────────────────────┘ β) DX: базовая X-координата а д р е с а т а (от 0 до 511); DY: базовая Y-координата а д р е с а т а (от 0 до 1023). Номера битов 7 6 5 4 3 2 1 0 ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐ Р е г и с т р 36 │ DX7 │ DX6 │ DX5 │ DX4 │ DX3 │ DX2 │ DX1 │ DX0 │ (базовая координата X └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ адресата (младшая часть)) ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐ Р е г и с т р 37 │ 0 │ 0 │ 0 │ 0 │ 0 │ 0 │ 0 │ DX8 │ (базовая координата X └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ адресата (старшая часть)) ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐ Р е г и с т р 38 │ DY7 │ DY6 │ DY5 │ DY4 │ DY3 │ DY2 │ DY1 │ DY0 │ (базовая координата Y └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ адресата (младшая часть)) ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐ Р е г и с т р 39 │ 0 │ 0 │ 0 │ 0 │ 0 │ 0 │ DY9 │ DY8 │ (базовая координата Y └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ адресата (старшая часть)) γ) NX: "ш и р и н а" пересылаемого блока по X-направлению в точках (от 0 до 511); NY: "ш и р и н а" пересылаемого блока по Y-направлению в точках (от 0 до 1023). Номера битов 7 6 5 4 3 2 1 0 ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐ Р е г и с т р 40 │ NX7 │ NX6 │ NX5 │ NX4 │ NX3 │ NX2 │ NX1 │ NX0 │ (количество точек по X └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ координате (младшая часть)) ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐ Р е г и с т р 41 │ 0 │ 0 │ 0 │ 0 │ 0 │ 0 │ 0 │ NX8 │ (количество точек по X └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ координате (старшая часть)) ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐ Р е г и с т р 42 │ NY7 │ NY6 │ NY5 │ NY4 │ NY3 │ NY2 │ NY1 │ NY0 │ (количество точек по Y └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ координате (младшая часть)) ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐ Р е г и с т р 43 │ 0 │ 0 │ 0 │ 0 │ 0 │ 0 │ NY9 │ NY8 │ (количество точек по Y └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ координате (старшая часть)) δ) CLR: данные о ц в е т о в о м к о д е. Р е ж и м ы SCREEN 5 и SCREEN 7 Номера битов 7 6 5 4 3 2 1 0 ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐ Р е г и с т р 44 │ 0 │ 0 │ 0 │ 0 │ C3 │ C2 │ C1 │ C0 │ (регистр цвета) └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ Р е ж и м SCREEN 6 Номера битов 7 6 5 4 3 2 1 0 ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐ Р е г и с т р 44 │ 0 │ 0 │ 0 │ 0 │ 0 │ 0 │ C1 │ C0 │ (регистр цвета) └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ Р е ж и м SCREEN 8 Номера битов 7 6 5 4 3 2 1 0 ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐ Р е г и с т р 44 │ C7 │ C6 │ C5 │ C4 │ C3 │ C2 │ C1 │ C0 │ (регистр цвета) └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ 2. Команда выполняется после помещения числа 1000b в четыре с т а р - ш и х бита и кода логической операции в четыре м л а д ш и х бита ре- гистра команд с номером 46. Номера битов 7 6 5 4 3 2 1 0 ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐ Р е г и с т р 46 │ 1 │ 0 │ 0 │ 0 │ LO3 │ LO2 │ LO1 │ LO0 │ (регистр команды) └──▲──┴──▲──┴──▲──┴──▲──┴──▲──┴──▲──┴──▲──┴──▲──┘ └─────┴─────┴─────┘ └─────┴─────┴─────┘ Код команды LMMV Код логической операции 3. При выполнении команды LMMV СЕ-бит регистра состояния с номером 2 будет установлен в 1, а после выполнения - в 0. П р и м е р. Иллюстрация работы команды LMMV. Рисунок, состоящий из ─────────── вложенных квадратов. 60 COLOR 15,0,0 70 SCREEN 8 :'Возможны SCREEN 5÷SCREEN 8 80 FOR I=0 TO 63 100 DL=128-I*2+1 :'Вычисление длины стороны 110 VDP(36+1)=I: VDP(37+1)=0 :'Координаты прямоугольника 115 VDP(38+1)=I: VDP(39+1)=0 :' 120 VDP(40+1)=DL:VDP(41+1)=0 :'Длины сторон по осям X и Y 125 VDP(42+1)=DL:VDP(43+1)=0 130 VDP(44+1)=I :'Цвет прямоугольника 140 VDP(45+1)=&B00000000 :'Ориентировка прямоугольника 141 :' ▲ ▲▲ :'относительно точки (X,Y): 142 :' │ │└───────────────────:' н а п р а в о (1:налево) 143 :' │ └────────────────────:' в н и з (1:вверх) 144 :' └──────────────────────:'Выбираем VRAM (1:ERAM) 150 VDP(46+1)=&B10000000 :' 151 :' └▲─┘└─▲┘ :' 152 :' │ └─────────────────:'Код логической операции 153 :' └──────────────────────:'Код команды LMMV 154 A$=INPUT$(1) :'Очень важная задержка! 160 NEXT I 170 A$=INPUT$(1) :'К о н е ц Если координата или длина стороны блока занимает один регистр (байт), то второй регистр, отвечающий за ту же координату (длину стороны) блока, нужно обнулить, иначе координата или длина стороны блока может оказаться настолько большой, что Ваш блок может не поместиться на экране ! Если длины сторон прямоугольника равны 0, то он "растекается" в задан- ном направлении до конца экрана! Более того, если Ваш прямоугольник выхо- дит за границы экрана и по X-, и по Y-координате, то видеопроцессор запол- няет данными для прямоугольника участки Таблиц SGT, SCT и SAT и на экра- не появляются спрайты различных цветов и конфигураций. 2.8.3.9. К о м а н д а LINE Прямая - наидлиннейшее расстояние между двумя точками. Закон Мэрфи С помощью команды LINE можно начертить на экране отрезок прямой линии, используя данные, находящиеся в видеопамяти или расширенной памяти. Начер- ченный отрезок образуется как гипотенуза прямоугольного треугольника с за- данными катетами (длинным и коротким). Величины катетов задаются расстоя- ниями от одной и той же точки. В и д е о п а м я т ь или р а с ш и р е н н а я п а м я т ь ┌────────────────────────────────────┐ │ ▲ DIY │ │ │ Y-направление │ │ │ │ │ │ │ │ │ Min │ │ │ │ │ (DX,DY) · ──────┘ ─────▶ DIX │ │ Maj X-направление │ │ │ └────────────────────────────────────┘ Теперь опишем начальную установку регистров и порядок выполнения коман- ды LINE. 1. Вначале устанавливаются необходимые параметры в регистры команд VDP, а именно: α) MXS: выбор области памяти для а д р е с а т а (0: видеопамять (VRAM); 1: расширенная память); DIX: направление от исходной точки до конечной точки (0: направо; 1: налево); DIY: направление от исходной точки до конечной точки (0: вниз; 1: вверх); MAJ: направление для д л и н н о г о катета (0: по оси X; 1: по оси Y). Номера битов 7 6 5 4 3 2 1 0 ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐ Р е г и с т р 45 │ 0 │ MXC │ MXD │ MXS │ DIY │ DIX │ EQ │ MAJ │ (регистр аргумента) └─────┴─────┴──▲──┴─────┴──▲──┴──▲──┴─────┴──▲──┘ │ │ │ │ Выбор области памяти для адресата ────┘ │ │ │ Направление к конечной точке (Y) ────────────────┘ │ │ Направление к конечной точке (X) ──────────────────────┘ │ Выбор направления для длинного катета ──────────────────────────────┘ β) Maj: количество точек в д л и н н о м катете (от 0 до 1023); Мin: количество точек в к о р о т к о м катете (от 0 до 511). Номера битов 7 6 5 4 3 2 1 0 ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐ Р е г и с т р 40 │ MJ7 │ MJ6 │ MJ5 │ MJ4 │ MJ3 │ MJ2 │ MJ1 │ Maj │ (длина длинного катета └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ вдоль оси X (младшая часть)) ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐ Р е г и с т р 41 │ 0 │ 0 │ 0 │ 0 │ 0 │ 0 │ MJ9 │ MJ8 │ (длина длинного катета └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ вдоль оси X (старшая часть)) ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐ Р е г и с т р 42 │ MI7 │ MI6 │ MI5 │ MI4 │ MI3 │ MI2 │ MI1 │ MI0 │ (длина короткого катета└─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ вдоль оси Y (младшая часть)) ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐ Р е г и с т р 43 │ 0 │ 0 │ 0 │ 0 │ 0 │ 0 │ 0 │ MI8 │ (длина короткого катета└─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ вдоль оси Y (старшая часть)) δ) DX: базовая X-координата (от 0 до 511); DY: базовая Y-координата (от 0 до 1023). Номера битов 7 6 5 4 3 2 1 0 ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐ Р е г и с т р 36 │ DX7 │ DX6 │ DX5 │ DX4 │ DX3 │ DX2 │ DX1 │ DX0 │ (базовая координата X └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ адресата (младшая часть)) ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐ Р е г и с т р 37 │ 0 │ 0 │ 0 │ 0 │ 0 │ 0 │ 0 │ DX8 │ (базовая координата X └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ адресата (старшая часть)) ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐ Р е г и с т р 38 │ DY7 │ DY6 │ DY5 │ DY4 │ DY3 │ DY2 │ DY1 │ DY0 │ (базовая координата Y └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ адресата (младшая часть)) ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐ Р е г и с т р 39 │ 0 │ 0 │ 0 │ 0 │ 0 │ 0 │ DY9 │ DY8 │ (базовая координата Y └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ адресата (старшая часть)) ω) CLR: данные о ц в е т о в о м к о д е. Р е ж и м ы SCREEN 5 и SCREEN 7 Номера битов 7 6 5 4 3 2 1 0 ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐ Р е г и с т р 44 │ 0 │ 0 │ 0 │ 0 │ C3 │ C2 │ C1 │ C0 │ (регистр цвета) └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ Р е ж и м SCREEN 6 Номера битов 7 6 5 4 3 2 1 0 ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐ Р е г и с т р 44 │ 0 │ 0 │ 0 │ 0 │ 0 │ 0 │ C1 │ C0 │ (регистр цвета) └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ Р е ж и м SCREEN 8 Номера битов 7 6 5 4 3 2 1 0 ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐ Р е г и с т р 44 │ C7 │ C6 │ C5 │ C4 │ C3 │ C2 │ C1 │ C0 │ (регистр цвета) └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ 2. Выполнение команды LINE начинается после помещения числа 0111b в четыре с т а р ш и х бита и кода логической операции в четыре м л а д - ш и х бита регистра команд с номером 46. Номера битов 7 6 5 4 3 2 1 0 ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐ Р е г и с т р 46 │ 0 │ 1 │ 1 │ 1 │ LO3 │ LO2 │ LO1 │ LO0 │ (регистр команды) └──▲──┴──▲──┴──▲──┴──▲──┴──▲──┴──▲──┴──▲──┴──▲──┘ └─────┴─────┴─────┘ └─────┴─────┴─────┘ Код команды LINE Код логической операции 3. После выполнения команды LINE СЕ-бит регистра состояния с номером 2 будет установлен в 1, а после выполнения - в 0. П р и м е р. Иллюстрация выполнения команды LINE ─────────── 20 SCREEN 5 30 FOR T=32 TO 46:VDP(T+1)=0:NEXT :'Очистка регистров команд 60 VDP(36+1)=128:VDP(37+1)=0 :'Координата базовой точки X 70 VDP(38+1)=106:VDP(39+1)=0 :'Координата базовой точки Y 75 'Длинный катет обязан быть д л и н н е е короткого! 80 VDP(40+1)=50 :VDP(41+1)=0 :'Длинный катет 90 VDP(42+1)=10 :VDP(43+1)=0 :'Короткий катет 95 VDP(44+1)=8 :'Цвет линии 100 VDP(45+1)=&B00000000 :'Байт аргументов: 110 ' │ ││ └───────── :' длинный катет - по оси X 120 ' │ │└─────────── :' рисовать н а п р а в о 130 ' │ └──────────── :' рисовать в н и з 140 ' └────────────── :' рисовать в о VRAM 150 VDP(46+1)=&B01110000 :'Выполнение команды LINE 160 ' └▲─┘└▲─┘ :' 170 ' │ └─────────── :'Код логической операции 180 ' └─────────────── :'Код команды LINE 190 A$=INPUT$(1) :'К о н е ц