diff --git a/apps/zasm/directive.asm b/apps/zasm/directive.asm index ae1800e..74fd4bd 100644 --- a/apps/zasm/directive.asm +++ b/apps/zasm/directive.asm @@ -142,17 +142,27 @@ handleEQU: handleORG: call readWord + jr nz, .badfmt call parseExpr - ret nz + jr nz, .badarg push ix \ pop hl call zasmSetOrg cp a ; ensure Z ret +.badfmt: + ld a, ERR_BAD_FMT + jr .error +.badarg: + ld a, ERR_BAD_ARG +.error: + call unsetZ + ret handleFIL: call readWord + jr nz, .badfmt call parseExpr - ret nz + jr nz, .badarg push bc push ix \ pop bc xor a @@ -163,6 +173,14 @@ handleFIL: cp a ; ensure Z pop bc ret +.badfmt: + ld a, ERR_BAD_FMT + jr .error +.badarg: + ld a, ERR_BAD_ARG +.error: + call unsetZ + ret handleINC: call readWord diff --git a/tools/tests/zasm/errtests.sh b/tools/tests/zasm/errtests.sh index 77bb662..596f4c8 100755 --- a/tools/tests/zasm/errtests.sh +++ b/tools/tests/zasm/errtests.sh @@ -22,11 +22,15 @@ chkerr "ld a, hl" 2 chkerr ".db foo" 2 chkerr ".dw foo" 2 chkerr ".equ foo bar" 2 +chkerr ".org foo" 2 +chkerr ".fill foo" 2 chkerr "ld a," 3 chkerr "ld a, 'A" 3 chkerr ".db 0x42," 3 chkerr ".dw 0x4242," 3 chkerr ".equ" 3 chkerr ".equ foo" 3 +chkerr ".org" 3 +chkerr ".fill" 3 chkerr "ld a, 0x100" 4 chkerr ".db 0x100" 4