Browse Source

zasm: support symbols in .dw directive

pull/10/head
Virgil Dupras 5 years ago
parent
commit
95f53d0ce3
4 changed files with 20 additions and 18 deletions
  1. +1
    -1
      apps/zasm/directive.asm
  2. +0
    -17
      apps/zasm/instr.asm
  3. +18
    -0
      apps/zasm/literal.asm
  4. +1
    -0
      apps/zasm/tests/test1.asm

+ 1
- 1
apps/zasm/directive.asm View File

@@ -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


+ 0
- 17
apps/zasm/instr.asm View File

@@ -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


+ 18
- 0
apps/zasm/literal.asm View File

@@ -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

+ 1
- 0
apps/zasm/tests/test1.asm View File

@@ -3,6 +3,7 @@
label1:
inc a ; comment
ld hl, label2
.dw label2
; comment
.db 42
label2:


Loading…
Cancel
Save