summaryrefslogtreecommitdiff
path: root/home/array.asm
diff options
context:
space:
mode:
Diffstat (limited to 'home/array.asm')
-rwxr-xr-xhome/array.asm44
1 files changed, 44 insertions, 0 deletions
diff --git a/home/array.asm b/home/array.asm
new file mode 100755
index 00000000..0abf9b7d
--- /dev/null
+++ b/home/array.asm
@@ -0,0 +1,44 @@
+IsInArray::
+; Find value a for every de bytes in array hl.
+; Return index in b and carry if found.
+
+ ld b, 0
+ ld c, a
+.loop
+ ld a, [hl]
+ cp -1
+ jr z, .NotInArray
+ cp c
+ jr z, .InArray
+ inc b
+ add hl, de
+ jr .loop
+
+.NotInArray:
+ and a
+ ret
+
+.InArray:
+ scf
+ ret
+
+SkipNames::
+; Skip a names.
+ ld bc, NAME_LENGTH
+ and a
+ ret z
+.loop
+ add hl, bc
+ dec a
+ jr nz, .loop
+ ret
+
+AddNTimes::
+; Add bc * a to hl.
+ and a
+ ret z
+.loop
+ add hl, bc
+ dec a
+ jr nz, .loop
+ ret