1
0
mirror of https://github.com/hsoft/collapseos.git synced 2024-11-23 19:48:06 +11:00

zasm: implement error conditions in .equ

This commit is contained in:
Virgil Dupras 2019-05-27 14:07:07 -04:00
parent 436ff51c39
commit 371076190f
2 changed files with 16 additions and 3 deletions

View File

@ -109,6 +109,7 @@ handleEQU:
push bc push bc
; Read our constant name ; Read our constant name
call readWord call readWord
jr nz, .badfmt
; We can't register our symbol yet: we don't have our value! ; We can't register our symbol yet: we don't have our value!
; Let's copy it over. ; Let's copy it over.
ld de, DIREC_SCRATCHPAD ld de, DIREC_SCRATCHPAD
@ -117,14 +118,23 @@ handleEQU:
; Now, read the value associated to it ; Now, read the value associated to it
call readWord call readWord
jr nz, .badfmt
ld hl, scratchpad ld hl, scratchpad
call parseExpr call parseExpr
jr nz, .end jr nz, .badarg
ld hl, DIREC_SCRATCHPAD ld hl, DIREC_SCRATCHPAD
push ix \ pop de push ix \ pop de
call symRegister call symRegister ; TODO: handle duplicate symbol error, OOM, etc.
cp a ; ensure Z
jr .end
.badfmt:
ld a, ERR_BAD_FMT
jr .error
.badarg:
ld a, ERR_BAD_ARG
.error:
call unsetZ
.end: .end:
xor a ; 0 bytes written
pop bc pop bc
pop de pop de
pop hl pop hl

View File

@ -21,9 +21,12 @@ chkerr "ld a, foo" 2
chkerr "ld a, hl" 2 chkerr "ld a, hl" 2
chkerr ".db foo" 2 chkerr ".db foo" 2
chkerr ".dw foo" 2 chkerr ".dw foo" 2
chkerr ".equ foo bar" 2
chkerr "ld a," 3 chkerr "ld a," 3
chkerr "ld a, 'A" 3 chkerr "ld a, 'A" 3
chkerr ".db 0x42," 3 chkerr ".db 0x42," 3
chkerr ".dw 0x4242," 3 chkerr ".dw 0x4242," 3
chkerr ".equ" 3
chkerr ".equ foo" 3
chkerr "ld a, 0x100" 4 chkerr "ld a, 0x100" 4
chkerr ".db 0x100" 4 chkerr ".db 0x100" 4