; de - pointer
; hl - count
strlen:
ld hl, 0
.loop
ld a, (de)
and a : jr z, .exit
inc hl
inc de
jr .loop
.exit
ret
module CompareBuff
; Pushes A to buffer
push
push af
ld b, 32 : ld hl, buffer + 1 : ld de, buffer
.loop
ld a, (hl) : ld (de), a : inc hl : inc de : djnz .loop
pop af
ld hl, buffer + 31 : ld (hl), a
ret
; HL - Compare string(null terminated)
; A - 0 NOT Found
; 1 Found
search:
ld b, 0 : push hl
.loop:
ld a, (hl) : inc hl : inc b : and a : jp nz, .loop
dec b : pop hl : push bc : push hl
pop hl
ld de, buffer + 32
.sourceLoop
dec de : djnz .sourceLoop
pop bc
.compare
push bc : push af
ld a, (de) : ld b, a
pop af : ld a, (hl) : cp b : pop bc : ld a, 0 : ret nz
inc de : inc hl
djnz .compare
ld a, 1
ret
clear:
xor a : ld hl, buffer : ld de, buffer + 1 : ld bc, 32 : ld (hl), a : ldir
ret
buffer ds 32
endmodule