mirror of
https://github.com/hsoft/collapseos.git
synced 2024-12-25 16:58:05 +11:00
zasm: support symbols in .dw directive
This commit is contained in:
parent
c000d5cfb1
commit
95f53d0ce3
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -3,6 +3,7 @@
|
||||
label1:
|
||||
inc a ; comment
|
||||
ld hl, label2
|
||||
.dw label2
|
||||
; comment
|
||||
.db 42
|
||||
label2:
|
||||
|
Loading…
Reference in New Issue
Block a user