소스 검색

zasm: support symbols in .dw directive

pull/10/head
Virgil Dupras 5 년 전
부모
커밋
95f53d0ce3
4개의 변경된 파일20개의 추가작업 그리고 18개의 파일을 삭제
  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 파일 보기

@@ -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 파일 보기

@@ -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 파일 보기

@@ -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 파일 보기

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


불러오는 중...
취소
저장