zasm: adjust parseLine success condition

De-couple "success" from "wrote something to (DE)" so that directive
parsing can be considered successful without writing to (DE).
This commit is contained in:
Virgil Dupras 2019-05-01 10:16:57 -04:00
parent a00bc8cc4b
commit 28e1ba5e26
1 changed files with 11 additions and 5 deletions

View File

@ -9,9 +9,9 @@ main:
ld bc, 0 ; C is our written bytes counter
.loop:
call parseLine
or a ; is zero? stop
jr z, .stop
add a, c
jr nz, .stop
ld a, c
add a, ixl
ld c, a
call gotoNextLine
jr nz, .stop ; error? stop
@ -25,8 +25,9 @@ main:
#include "directive.asm"
; Parse line in (HL), write the resulting opcode(s) in (DE) and returns the
; number of written bytes in A. Advances HL where tokenization stopped and DE
; number of written bytes in IXL. Advances HL where tokenization stopped and DE
; to where we should write the next upcode.
; Sets Z if parse was successful, unset if there was an error or EOF.
parseLine:
push bc
@ -51,9 +52,14 @@ parseLine:
call copy
pop hl
call JUMP_ADDDE
jr .success
.success:
ld ixl, a
xor a ; ensure Z
jr .end
.error:
xor a
xor ixl
call JUMP_UNSETZ
.end:
pop bc
ret