zasm: make "double parsing" a bit more solid

It was previously skipped on a local label.
This commit is contained in:
Virgil Dupras 2019-05-14 14:35:34 -04:00
parent 7972b92be1
commit 99a7c94c9f
2 changed files with 10 additions and 12 deletions

View File

@ -133,7 +133,14 @@ parseLine:
call _parseDirec
jr .end ; Z is correct
.label:
push hl
call _parseLabel
pop hl
jr nz, .end ; error out
; We're finished here. However, because it's a label, it's possible that
; another logical line follows directly after the label. Let's parse
; this and propagate error.
call parseLine
; Continue to .end, Z has proper value
.end:
pop bc
@ -194,18 +201,10 @@ _parseLabel:
; When we're not in the first pass, we set the context (if label is not
; local) to that label.
call symIsLabelLocal
jr z, .noContext ; local? don't set context
jr z, .success ; local? don't set context
call symSetContext
jr nz, .error ; NZ? this means that (HL) couldn't be
; found in symbol list. Weird
.noContext:
; We're finished here. However, because it's a label, it's possible that
; another logical line follows directly after the label. Let's parse
; this and propagate error.
ex hl, de ; recall end of label position from DE
; into HL
call parseLine
jr z, .success
; NZ? this means that (HL) couldn't be found in symbol list. Weird
jr .error
.registerLabel:
ld de, (curOutputOffset)

View File

@ -4,8 +4,7 @@ addDE:
add a, e
jr nc, .end ; no carry? skip inc
inc d
.end:
ld e, a
.end: ld e, a
pop af
ret