aboutsummaryrefslogtreecommitdiff
path: root/lib/cpcrslib/cpc_PutMaskSp4x16.s
blob: 4fbbd61aa67c06c6f197a2988b00e29a6761c82c (plain)
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
.globl _cpc_PutMaskSp4x16

_cpc_PutMaskSp4x16::

	LD IX,#2
	ADD IX,SP
	LD L,2 (IX)
	LD H,3 (IX)
	LD E,0 (IX)
	LD D,1 (IX)
	.DB #0XFD
	LD H,#16
	LD B,#7
loop_alto_mask_4x16:
	EX DE,HL
	LD A,(DE)	;leo el byte del fondo
	AND (HL)	;lo enmascaro
	INC HL
	OR (HL)		;lo enmascaro
	LD (DE),A	;actualizo el fondo
	INC DE
	INC HL
	;COMO SOLO SON 4 BYTES, es más rápido y económico desplegar la rutina
	LD A,(DE)	;leo el byte del fondo
	AND (HL)	;lo enmascaro
	INC HL
	OR (HL)		;lo enmascaro
	LD (DE),A	;actualizo el fondo
	INC DE
	INC HL
	LD A,(DE)	;leo el byte del fondo
	AND (HL)	;lo enmascaro
	INC HL
	OR (HL)		;lo enmascaro
	LD (DE),A	;actualizo el fondo
	INC DE
	INC HL
	LD A,(DE)	;leo el byte del fondo
	AND (HL)	;lo enmascaro
	INC HL
	OR (HL)		;lo enmascaro
	LD (DE),A	;actualizo el fondo
	INC DE
	INC HL
	.DB #0XFD
	DEC H
	RET Z
	EX DE,HL
	LD C,#0XFC
	ADD HL,BC
	JP NC,loop_alto_mask_4x16
	LD BC,#0XC050
	ADD HL,BC
	LD B,#7
	JP loop_alto_mask_4x16