diff --git a/apps/zasm/directive.asm b/apps/zasm/directive.asm index 9a88272..55946bc 100644 --- a/apps/zasm/directive.asm +++ b/apps/zasm/directive.asm @@ -33,7 +33,7 @@ handleDW: call toWord call readWord ld hl, scratchpad - call parseNumber + call parseNumberOrSymbol ld a, ixl ld (direcData), a ld a, ixh diff --git a/apps/zasm/instr.asm b/apps/zasm/instr.asm index b56cec2..09ca3ea 100644 --- a/apps/zasm/instr.asm +++ b/apps/zasm/instr.asm @@ -115,23 +115,6 @@ parseIXY: pop hl ret -; Parse string in (HL) and return its numerical value whether its a number -; literal or a symbol. Returns value in IX. -; Sets Z if number or symbol is valid, unset otherwise. -parseNumberOrSymbol: - call parseNumber - ret z - ; Not a number. Try symbol - push de - call symGetVal - jr nz, .notfound ; Z already unset - ; Found! value in DE. We need it in IX - ld ixh, d - ld ixl, e - ; Z already set -.notfound: - pop de - ret ; find argspec for string at (HL). Returns matching argspec in A. ; Return value 0xff holds a special meaning: arg is not empty, but doesn't match ; any argspec (A == 0 means arg is empty). A return value of 0xff means an diff --git a/apps/zasm/literal.asm b/apps/zasm/literal.asm index 9457375..7d2f1aa 100644 --- a/apps/zasm/literal.asm +++ b/apps/zasm/literal.asm @@ -113,3 +113,21 @@ parseNumber: call hasHexPrefix jr z, parseHexadecimal jr parseDecimal + +; Parse string in (HL) and return its numerical value whether its a number +; literal or a symbol. Returns value in IX. +; Sets Z if number or symbol is valid, unset otherwise. +parseNumberOrSymbol: + call parseNumber + ret z + ; Not a number. Try symbol + push de + call symGetVal + jr nz, .notfound ; Z already unset + ; Found! value in DE. We need it in IX + ld ixh, d + ld ixl, e + ; Z already set +.notfound: + pop de + ret diff --git a/apps/zasm/tests/test1.asm b/apps/zasm/tests/test1.asm index faa81a3..5723960 100644 --- a/apps/zasm/tests/test1.asm +++ b/apps/zasm/tests/test1.asm @@ -3,6 +3,7 @@ label1: inc a ; comment ld hl, label2 + .dw label2 ; comment .db 42 label2: