.equ	RAMSTART	0x4000
.equ	ZASM_REG_MAXCNT		0xff
.equ	ZASM_LREG_MAXCNT	0x40
.equ	ZASM_REG_BUFSZ		0x1000
.equ	ZASM_LREG_BUFSZ		0x200

jp	test

.inc "core.asm"
.inc "str.asm"
.inc "lib/util.asm"
.inc "zasm/util.asm"
.inc "zasm/const.asm"
.equ	SYM_RAMSTART	RAMSTART
.inc "zasm/symbol.asm"

testNum:	.db 1

sFOO:		.db "FOO", 0
sFOOBAR:	.db "FOOBAR", 0
sOther:		.db "Other", 0

test:
	ld	sp, 0xffff

	; Check that we compare whole strings (a prefix will not match a longer
	; string).
	call	symInit
	ld	hl, sFOOBAR
	ld	de, 42
	call	symRegisterGlobal
	jp	nz, fail
	ld	hl, sFOO
	ld	de, 43
	call	symRegisterGlobal
	jp	nz, fail

	ld	hl, sFOO
	call	symFindVal		; don't match FOOBAR
	jp	nz, fail
	ld	a, d
	or	a
	jp	nz, fail
	ld	a, e
	cp	43
	jp	nz, fail
	call	nexttest

	ld	hl, sOther
	call	symFindVal
	jp	z, fail
	call	nexttest

	; success
	xor	a
	halt

nexttest:
	ld	hl, testNum
	inc	(hl)
	ret

fail:
	ld	a, (testNum)
	halt