300
NEXT
310
210
GOTO
320
MOVE
cx,100
330
FOR
x=0
TO
360
340
DRAW
cx+SIN(x)*50+10*RND,100+COS(x)*25+10*RND,1
350
NEXT
360
DRAW cx,100:MOVE cx,90:FILL
370
RETURN
380
ENT
-1,1,1,1
390
SOUND
1,25,400,15,1,15
400
FOR y=100+hr TO
410
GRAPHICS PEN 7,1:MOVE x,y,2:PRINT
420
GRAPHICS PEN 8,1:MOVE x,y-2,3:PRINT
430
NEXT
440
GOTO
70
Para explicar cómo funciona, una vez más tenemos que expresar los números de INK en binario.
Empezando por el número máximo (el 15), asignamos el color cyan a todas las tintas que tienen
activo el bit del '8' (de la 15 a la 8). Después damos el color verde a todas las que tienen activado
el bit del '4' (de la 7 a la 4). Las tintas 2 y 3 tienen a 1 el bit del '2' y les asignamos el color rojo.
Finalmente, asignamos el color blanco a la tinta 1 y dejamos la tinta 0 en azul.
Los gráficos se envían a la pantalla en modo OR (líneas 230 y 240). El color que se ve en la
pantalla en cada pixel está determinado por el bit más significativo del resultante en ese punto.
Así pues, una imagen que esté en un plano 'más significativo' predomina sobre otra que esté en
un plano 'menos significativo', pero el fondo se conserva y vuelve a ser visible si se retira la
imagen 'más significativa'. La forma de retirar la imagen consiste en dibujarla en modo AND: las
tintas 7, 11, 13 y 14 borran las tintas 8, 4, 2 y 1, respectivamente (líneas 280 y 290).
Gráficos con el segundo banco de 64K de RAM
Para concluir este capítulo ofrecemos un programa 'diseñador de pantallas gráficas' que utilizan
los 64K adicionales de RAM.
10
'Diseñador de pantallas, por David Radisic
20
' copyright (c) AMSOFT 1985
30
'
40
'No olvide ejecutar BANKMAN antes que este programa
50
' **************************************************
60
'
70
ON ERROR GOTO
2740
80
DEFINT a-x
90
MODE
1:ch=127:ord=1:pn(0)=0:pn(1)=26:pn(2)=15:pn(3)=6:
pn(4)=0:pn=1:norx=1:menu=1:zzz=HIMEM
100
DIM
orden$(22)
110
norx$(0)="Normal":norx$(1)="XOR
120
RESTORE:READ
ords$(1),ords$(2):ord$=CHR$(16)+CHR$(&7F)+ords$(1)+ords$(2)
130
READ ordnum:FOR
140
READ parar$:IF
150
WINDOW #0,1,40,1,3:PAPER #0,0:PEN #0,1:CLS
160
WINDOW #1,1,40,4,4:PAPER #1,3:PEN #1,1:CLS
170
ORIGIN
0,0,0,640,0,334
180
x=320:y=200:MOVE x,y
STEP
10
1
-132
STEP
-2
i=1
TO ordnum:READ orden$(i):NEXT
parar$<>"**"
THEN ord$(ord)=parar$:ord =ord+1:GOTO
Manual de Amstrad CPC 6128 (revisión 2008) - Página 364
pr$;
pr$;
":norx$(2)="Transp":norx$(3)="XOR
#0
#1
"
140