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