-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathbas05-10.txt
413 lines (382 loc) · 26.8 KB
/
bas05-10.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
В а р и а н т 6
Давайте все-таки обсуждать вкус ананаса
с теми, кто его не ел!
Почти по М.Жванецкому
Этот оператор применяется на компьютерах MSX-2, оснащенных видеоинтер-
фейсом: COPY SCREEN [ р е ж и м 1] [, р е ж и м 2]
Это позволяет преобразовать изображение, полученное с внешнего источни-
ка видеосигнала, в цифровые данные, записанные на экранной странице.
Параметры р е ж и м 1, р е ж и м 2 могут принимать два значения:
0: (по умолчанию) кадр записывается на отображенной экранной странице;
1: кадр записывается на странице, номер которой равен номеру отображен-
ной минус 1. В этом случае номер отображенной страницы должен быть нечет-
ным.
Предполагается, что экран подготовлен к работе с изображением, приходя-
щим от внешнего источника видеосигнала.
Для этой цели имеется оператор
┌──────────────────────────────┐
│ SET VIDEO R,Y,C,S,A,V,R │
└──────────────────────────────┘
где: SET, VIDEO - служебные слова;
R - числовой параметр, значение которого определяет источник видео-
сигнала:
0 - (по умолчанию) изображение от компьютера;
1 - изображение от компьютера;
2 - смешивание изображения от компьютера и ТВ-сигнала;
3 - на дисплей поступает ТВ-сигнал;
Y - числовой параметр, который управляет интенсивностью изображения
от источника видеосигнала:
0 - (по умолчанию) нормальная интенсивность;
1 - интенсивность ТВ-сигнала уменьшена наполовину;
C - числовой параметр, который определяет направление передачи дан-
ных о цветности:
0 - (по умолчанию) вывод цветных данных на видеомагнитофон;
1 - ввод цветных данных от внешнего источника;
S - числовой параметр, который определяет происхождение сигнала син-
хронизации:
0 - (по умолчанию) внутренняя синхронизация;
1 - внешняя синхронизация (невозможна, когда R=0);
A - числовой параметр, который позволяет смешивать AUDIO-сигнал ком-
пьютера и сигнал от внешнего источника видеосигнала:
0 - (0 по умолчанию) звук только от компьютера;
1 - смешивание с внешним сигналом (правый канал);
2 - смешивание с внешним сигналом (левый канал);
3 - смешивание по обоим каналам;
V - числовой параметр, указывающий тип разъема для ввода внешнего
видеосигнала:
0 - (по умолчанию) разъем RGB;
1 - разъем RCA;
R - числовой параметр, описывающий состояние сигнала управления AV
на разъеме RGB:
0 - выхода через разъем RGB нет;
1 - выход через разъем RGB разрешен.
┌───────────────────────────────────────────────────────────┐
│ Отметим, что оператор COPY можно использовать в режимах │
│ SCREEN 5, SCREEN 6, SCREEN 7, SCREEN 8 │
└───────────────────────────────────────────────────────────┘
П р и м е р 19.
──────────────
NEW
Ok
10 SCREEN 6
20 LINE(20,70)-(30,80),15,BF:LINE(40,20)-(100,90),3,BF
30 FOR I=1 TO 1000:NEXT:COPY(20,70)-(110,90) TO (130,70)
40 GOTO 40
Меняя в 10-й строке номера экранов, Вы можете в этом убедиться!
Отметим, что в версии BASIC, называемой Advanced BASIC,для профессиона-
льных компьютеров IBM PC/XT (XT -от "eXTended"-"развитый, расширенный") и
IBM PC/AT (AT - от"Advanced Technology"-"передовая техника и технология"),
используются два оператора, действия которых аналогичны действию операто-
ра COPY версии MSX-BASIC:
α) GET(X1,Y1)-(X2,Y2),A
Данный оператор "считывает" в массив A характеристики точек экрана,рас-
положенных в заданной прямоугольной области;
β) PUT(X,Y),A, с п о с о б
Оператор "накладывает" массив точек на прямоугольную область экрана с
управляемым способом формирования цветности (задаваемым параметром с п о-
с о б).
V.11. Р е ж и м SCREEN 6 (только для компьютера MSX-2)
Экран в режиме SCREEN 6 такой же, как и в режиме SCREEN 5 (см.рис.7),
но могут использоваться только 4 цвета.
0 511
0┌───────────────────┐──▶X
│▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨│
│▨▨▨▨▨ SCREEN6 ▨▨▨▨▨│
│▨▨▨ 512╳212 точек▨▨│
│▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨│ Р и с. 8
211│─ ─ ─ ─ ─ ─ ─ ─ ─ ─┘
▼
Y
CLS устанавливает цвет ф о н а, имеющий номер 0 (прозрачный).
Для установления цветов можно выбирать номер, лежащий в пределах от 0
до 31 (хотя используется только 4 палитры). Именно поэтому оператор COLOR
должен быть выполнен после оператора SCREEN 6 !
Цвет задается значением двух младших битов номера палитры, введенного
оператором COLOR. (Например, число 23=&b00010111 подразумевает использова-
ние цвета 3=&b11). Если номер палитры принадлежит [16,31], то для бордюра
принимаются в расчет уже четыре младших бита. (Первые два определяют цвет
точек с четными координатами, а два последних - точек с нечетными коорди-
натами. В итоге бордюр будет покрыт мелкой сеткой из точек двух цветов.)
Все графические операторы работают так же, как и в режиме SCREEN 3.
П р и м е р.
───────────
Ok
10 SCREEN 6:COLOR 15,17,1:CIRCLE(255,106),100,3:PAINT STEP(0,0),2,3
20 GOTO 20
Получается окружность! Радиус по вертикали (автоматически) сжимается
для соответствия разнице масштаба между абсциссой и ординатой.
Работа с экранными страницами и внешним видеосигналом такая же, как в
SCREEN 5.
Учтите лишь следующий момент: формула,дающая размер массива переменных,
копирующего блок экрана, теперь выглядит так:
┌ (2·│X1-X2│+1)·(│Y1-Y2│+1)+7 ┐
│ ─────────────────────────── │ + 4 , где [ ] - символ операции выделе-
└ 2 ┘ ния целой части.
V.12. Р е ж и м SCREEN 7 (только для компьютера MSX-2
с видеопамятью 128 Кбайтов)
┌─────────────────────────────────────────────────────────────┐
│ Этот режим максимально удобен для многоцветных рисунков! │
└─────────────────────────────────────────────────────────────┘
0 511
0┌───────────────────┐──▶X
│▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨│
│▨▨▨▨▨ SCREEN7 ▨▨▨▨▨│
│▨▨▨ 512╳212 точек▨▨│
│▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨│ Р и с. 9
211│─ ─ ─ ─ ─ ─ ─ ─ ─ ─┘
▼
Y
Этот режим похож на режим SCREEN 6, но:
1) экранные страницы нумеруются от 0 до 1;
2) допускается одновременное использование 16 цветов.
Формула, необходимая для вычисления размера массива, принимающего дан-
ные блока экрана, та же, что и в SCREEN 5:
┌ (4·│X1-X2│+1)·(│Y1-Y2│+1)+7 ┐
│ ─────────────────────────── │ + 4 ,где [ ] - символ для операции выде-
└ 8 ┘ ления целой части.
V.13. Р е ж и м SCREEN 8 (только для компьютера MSX-2
с видеопамятью 128 Кбайтов)
Экран содержит 212 строк по 256 точек, как в SCREEN 5.
0 255
0┌───────────────────┐──▶X
│▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨│
│▨▨▨▨▨ SCREEN8 ▨▨▨▨▨│
│▨▨▨ 256╳212 точек▨▨│
│▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨│ Р и с. 10
211│─ ─ ─ ─ ─ ─ ─ ─ ─ ─┘
▼
Y
Этот режим характеризуется количеством цветов, которые могут выводить-
ся одновременно. Цвет каждой точки кодируется в одном байте, и следова-
тельно, имеет значения, лежащие в пределах от 0 до 255. Они кодируются
следующим образом: ┌────────────────────────────┐
│ Байт ц в е т а = GGGRRRBB │
└────────────────────────────┘
Первые три бита (G) представляют значения от 0 до 7 и определяют интен-
сивность з е л е н о г о цвета ("Green"-"зеленый").
Следующие три бита (R) устанавливают интенсивность к р а с н о г о
("Red"-"красный"),и последние два (B) - интенсивность с и н е г о ("Blue"-
"синий") цвета.
Например, 10 SCREEN 8
20 PSET(3,0),&B11100000:PSET(5,10),&B00000011
30 GOTO 30
Цвета изображения, фона и бордюра определяются как в режиме SCREEN 2
посредством оператора COLOR (или графических операторов для цвета текста),
но значения лежат в пределах от 0 до 255.
Введенное значение и пропорции цвета соотносятся следующим образом:
ц в е т = 32*G+4*R+B
В SCREEN 8 палитры не используются: желаемые оттенки задаются непосред-
ственно.
П р и м е р. NEW
─────────── Ok
10 SCREEN 8:FOR I=0 TO 255:COLOR,I:CLS
40 FOR J=0 TO 300:NEXT J,I
Имеются только д в е экранные страницы, как и в режиме SCREEN 7.
Формула, необходимая для вычисления размера массива, принимающего ко-
пию блока экрана, имеет следующий вид:
┌ (8·│X1-X2│+1)·(│Y1-Y2│+1)+7 ┐
│ ─────────────────────────── │ ,где [ ] - символ для операции выделе-
└ 8 ┘ ния целой части.
Разумеется, запись этого выражения на языке MSX-BASIC очевидна:
INT( (8* (ABS(X1-X2)+1) * (ABS(Y1-Y2)+1) +7)/8 )
Вспомним, что для выполнения оператора COPY необходимо задать числовой
массив достаточно большой для того,чтобы вместить данные о расцветке всех
точек рассматриваемой области экрана.
Приведем простую программу, подсчитывающую минимальное количество эле-
ментов для такого массива числовых значений. В начале работы программа вы-
дает запрос на ввод координат, которые будут задаваться в операторе COPY,
а также просит указать,какой режим графического вывода будет использовать-
ся.
П р и м е р.
───────────
NEW
Ok
10 INPUT"Введите номер режима экрана (5,6,7 или 8)";I
20 INPUT"Введите координаты первой точки (X1,Y1)";X1,Y1
30 INPUT"Введите координаты второй точки (X2,Y2)";X2,Y2
40 S=4:C=8:IF I=6 THEN S=2:C=2 ELSE IF I=8 THEN 60
50 M=INT((S*(ABS(X1-X2)+1)*(ABS(Y1-Y2)+1)+7)/C)+4:GOTO 70
60 M=INT((8*ABS(X1-X2)+1)*(ABS(Y1-Y2)+1)+7/8)
70 PRINT "SCREEN"I:PRINT "X1-"X1,"Y1-"Y1:PRINT "X2-"X2,"Y2-"Y2
80 PRINT "Размерность массива- "M:END
run
Введите номер режима экрана (5,6,7 или 8) ? 5
Введите координаты первой точки (X1,Y1) ? 50,50
Введите координаты второй точки (Х2,Y2) ? 71,85
SCREEN 5
X1- 50 Y1- 50
X2- 71 Y2- 85
Размерность массива- 400
Ok
V.14. Д о п о л н е н и е
1. П р и м е р простейшего г р а ф и ч е с к о г о редактора [22].
───────────
Редактор позволяет не только рисовать стрелками, но и включать-отклю-
чать цвет пера нажатием на пробел. Вокруг точки,в которой в данный момент
находится перо, можно построить окружность или звезду. Для построения ок-
ружности нужно нажать на клавишу "О", после чего ввести значение радиуса
(окончание ввода - нажатие на клавишу "RETURN"). Нажатие на "Z" и ввод ве-
личин R (радиус окружности, проходящей через вершины звезды), N (количест-
во вершин) и M=2 позволяет построить звезду. Для ввода чисел использует-
ся подпрограмма "ВВОД".
NEW
Ok
10 DIM PR(2),PD$(2)
20 PD$(0)="R=":PD$(1)="N=":PD$(2)="M=":PI=4*ATN(1)
30 SCREEN 2:OPEN"GRP:"AS#1
40 X=128:Y=96:C=4
50 PSET(X,Y),C
60 S=STICK(0)
70 P$=INKEY$
80 IF S=1 OR S=2 OR S=8 THEN Y=Y-1
90 IF S=2 OR S=3 OR S=4 THEN X=X+1
100 IF S=4 OR S=5 OR S=6 THEN Y=Y+1
110 IF S=6 OR S=7 OR S=8 THEN X=X-1
120 IF P$=" " AND C=15 THEN C=4:GOTO 160 '──▶
130 IF P$=" " AND C=4 THEN C=15
140 IF P$="O" OR P$="o" THEN GOSUB 500 '──▶
150 IF P$="Z" OR P$="z" THEN GOSUB 1000 '──▶
160 PSET(X,Y)
170 GOTO 50 '──▶
500 'О к р у ж н о с т ь
510 K=0:GOSUB 1500
520 CIRCLE(X,Y),PR(0)
530 RETURN
1000 ' З в е з д а
1010 K=2:GOSUB 1500
1020 R=PR(0):N=PR(1):M=PR(2)
1030 PSET(X,Y-R)
1040 FOR I=1 TO N
1050 U=I*2*PI*M/N+PI/2
1060 X1=X+R*COS(U):Y1=Y-R*SIN(U)
1070 LINE-(X1,Y1)
1080 NEXTI
1090 RETURN
1500 ' В в о д
1510 FOR J=0 TO K
1520 F$=""
1530 LINE(0,0)-(255,10),4,BF
1540 PSET(0,0),4:PRINT #1,PD$(J);
1550 C$=INPUT$(1):PRINT #1,C$;
1560 IF ASC(C$)=13 THEN 1580
1570 F$=F$+C$:GOTO 1550
1580 PR(J)=VAL(F$)
1590 NEXT J
1600 LINE(0,0)-(255,10),4,BF:RETURN
2. П р и м е р простейшего редактора с п р а й т о в [22].
───────────
Программа предназначена для создания спрайтов размером 8╳8. По решетке
клавишами управления курсором перемещается двухцветный указатель(он виден
и на фоне цвета 4, и на фоне цвета 15). При нажатии на клавишу INS в соот-
ветствующую клетку вставляется квадратик цвета 15. Такие квадратики обра-
зуют изображение спрайта. Для удаления квадратика нужно нажать клавишу
"DEL". Справа от решетки отображается вид спрайта, сформированный к данно-
му моменту. После нажатия на клавишу "Пробел" производится переключение
в режим SCREEN 1, в котором печатаются десятичные коды, необходимые для
создания спрайта и сам спрайт.После этого программа завершает свою работу.
NEW
Ok
10 DIM A(7)
20 SCREEN 2,1
30 SPRITE$(2)=CHR$(192)+CHR$(128)+CHR$(128)+CHR$(192)
35 SPRITE$(3)=CHR$(48)+CHR$(16)+CHR$(16)+CHR$(48)
40 FOR X=0 TO 140 STEP 20
50 FOR Y=0 TO 140 STEP 20
60 LINE(X,Y)-(X+20,Y+20),,B
70 NEXT Y,X
80 X=10:Y=10:I=7:J=0
90 PUT SPRITE 2,(X-4,Y-5),15,2
95 PUT SPRITE 3,(X-4,Y-5),4,3
100 PUT SPRITE 1,(200,50),,1
110 S=STICK(0)
120 IF S<> 0 THEN GOSUB 500:'Перемещение
130 P$=INKEY$
140 IF P$=" "THEN 200
150 IF P$<>""THEN GOSUB 1000:'Удаление,вставка
160 GOTO 90
200 SCREEN 1
210 PRINT"СПРАЙТ"
220 PRINT:PRINT"DATA":PRINT
230 FOR K=0 TO 7
240 PRINT A(K);
250 IF K<>7 THEN PRINT",";
260 NEXTK
270 PRINT:PRINT
280 PUT SPRITE 0,(120,130),,1
290 END
500 'Управление стрелками
510 IF (S=1 OR S=2 OR S=8) AND Y> 10 THEN Y=Y-20:J=J-1
520 IF (S=2 OR S=3 OR S=4) AND X<150 THEN X=X+20:I=I-1
530 IF (S=4 OR S=5 OR S=6) AND Y<150 THEN Y=Y+20:J=J+1
540 IF (S=6 OR S=7 OR S=8) AND X> 10 THEN X=X-20:I=I+1
550 RETURN
1000 'Удаление и вставка
1010 IF ASC(P$)=18 AND POINT(X,Y)=4 THEN LINE (X-4,Y-4)-(X+4,Y+4),,BF:
A(J)=A(J)+2^I
1020 IF ASC(P$)=127 AND POINT(X,Y)=15 THEN LINE (X-4,Y-4)-(X+4,Y+4),4,
BF:A(J)=A(J)-2^I
1030 S$=""
1040 FOR K=0 TO 7
1050 S$=S$+CHR$(A(K))
1060 NEXT K
1070 SPRITE$(1)=S$
1080 RETURN
3. П р и м е р программы, обеспечиваюшей д в и ж е н и е фона.
───────────
10 'А в т о р: Высотков Д.М.
20 COLOR 15,1,1:SCREEN 1,3:KEY OFF:WIDTH 32:VDP(1)=VDP(1)XOR64
30 SPRITE$(0)=STRING$(8,255):FC=2 'Этот спрайт будет двигаться!
40 DATA 8142241818244281,4224181824428181,2418182442818142,18182442818
14224,1824428181422418,2442818142241818,4281814224181824,8181422418182
442 'Данные для формирования символов движущегося фона ("вверх-вниз")
50 DATA 0142241010244201,4224101024420101,2410102442010142,10102442010
14224,1024420101422410,2442010142241010,4201014224101024,0101422410102
442 'Данные для формирования символов движущегося фона("вправо-влево")
60 FOR I=33 TO 48:READ A$:FOR T=2 TO 16 STEP 2 'Формирование
70 VPOKE 8*I+T/2-1,VAL("&H"+MID$(A$,T-1,2)):NEXT:NEXT ' символов
80 W$=STRING$(32,CHR$(255))
90 FOR Y=0 TO 22:PRINT W$; 'Заполнение экрана строками W$
100 NEXT:LOCATE 0,22:FOR I=33 TO 40
110 J$(1)=J$(1)+CHR$(I):NEXT:FOR I=41 TO 40:J$(2)=J$(2)+CHR$(I):NEXT
120 FOR I=48 TO 41 STEP 1:J$(4)=J$(4)+CHR$(I):NEXT
130 FOR I=40 TO 33 STEP 1:J$(3)=J$(3)+CHR$(I):NEXT
140 LOCATE0,22:PRINT SPACE$(32)
150 LOCATE0,22:PRINTJ$(1)
160 PUT SPRITE 9,(100,63),1,0
170 FOR Q=0 TO 64 STEP 16:M=M+1 ' Стирание "бяки", возникающей
180 PUT SPRITE M,(Q,175),1,0 ' на экране
190 NEXT:VDP(1)=VDP(1) XOR 64 ' Включение экрана
200 FOR I=0 TO 7:LOCATE I,22,1
210 NEXT:YW=YW+1
220 IF YW=20 THEN LOCATE 0,22:PRINT J$(FC):FC=FC+1:YW=0 'Замена "бяки"
230 IF FC=5 THEN FC=1
240 GOTO 200
К а н а - слоговая азбука японского письма
(результат графического сокращения иерогли-
фов).Существует (с.18 в.) в двух вариантах:
катакана (используется для записи заимство-
ванных слов) и хирагана (используется для
собственно японских слов).
Советский Энциклопедический словарь
4. А теперь о "загадочном" операторе
┌────────────┐
│ PUT KANJI │ .
└────────────┘
Приведем небольшой пример:
10 SCREEN 5:COLOR 15,0,0
20 M$="National":M=LEN(M$)
30 FOR X=1 TO M
40 CD=&H2300+ASC(MID$(M$,X,1)) 'Видимо, &H2300 - адрес?!
50 PUT KANJI (X*16-5,20),CD,11
55 PUT KANJI (X*16-5,70),CD,11
57 PUT KANJI (X*16-8,90),CD,11
60 NEXT:A$=INPUT$(1):SCREEN 0:LIST
Выполнив эту программу на компьютере, Вы получите на экране дисплея ок-
рашенные горизонтальные полосы. Видимо (это всего лишь наше предположе-
ние!), оператор PUT KANJI позволяет выводить на экран японские иероглифы,
изображенные на прямоугольном фоне заданного цвета (в программе код цвета-
- 11). Но информации о иероглифах в памяти (а может быть в видеопамяти)
компьютера почему-то уже нет?! А полосы (фон) остались!
Кстати, оператор PUT KANJI может содержать необязательный параметр ти-
па OR,AND,XOR,PSET,PRESET,TOR,TAND,TXOR,TPSET,TPRESET,расположенный после
указания цвета через запятую.