aboutsummaryrefslogtreecommitdiff
path: root/lib/cpcrslib/cpc_PutMaskSp4x16.s
diff options
context:
space:
mode:
authorJuan J. Martinez <jjm@usebox.net>2021-05-03 08:21:10 +0100
committerJuan J. Martinez <jjm@usebox.net>2021-05-03 10:00:00 +0100
commitc3b0fa04a663fe233765b83d3be41a42aa08c25d (patch)
tree0befda349001ef6ce306b39378f9c70ad917363e /lib/cpcrslib/cpc_PutMaskSp4x16.s
downloadreturn-of-traxtor-cpc-c3b0fa04a663fe233765b83d3be41a42aa08c25d.tar.gz
return-of-traxtor-cpc-c3b0fa04a663fe233765b83d3be41a42aa08c25d.zip
Initial import for public releaseHEADmain
Diffstat (limited to 'lib/cpcrslib/cpc_PutMaskSp4x16.s')
-rw-r--r--lib/cpcrslib/cpc_PutMaskSp4x16.s56
1 files changed, 56 insertions, 0 deletions
diff --git a/lib/cpcrslib/cpc_PutMaskSp4x16.s b/lib/cpcrslib/cpc_PutMaskSp4x16.s
new file mode 100644
index 0000000..4fbbd61
--- /dev/null
+++ b/lib/cpcrslib/cpc_PutMaskSp4x16.s
@@ -0,0 +1,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
+