Browse Source

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).
pull/10/head
Virgil Dupras 5 years ago
parent
commit
28e1ba5e26
1 changed files with 11 additions and 5 deletions
  1. +11
    -5
      apps/zasm/main.asm

+ 11
- 5
apps/zasm/main.asm 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


Loading…
Cancel
Save