Przeglądaj źródła

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 lat temu
rodzic
commit
28e1ba5e26
1 zmienionych plików z 11 dodań i 5 usunięć
  1. +11
    -5
      apps/zasm/main.asm

+ 11
- 5
apps/zasm/main.asm Wyświetl plik

@@ -9,9 +9,9 @@ main:
ld bc, 0 ; C is our written bytes counter ld bc, 0 ; C is our written bytes counter
.loop: .loop:
call parseLine 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 ld c, a
call gotoNextLine call gotoNextLine
jr nz, .stop ; error? stop jr nz, .stop ; error? stop
@@ -25,8 +25,9 @@ main:
#include "directive.asm" #include "directive.asm"


; Parse line in (HL), write the resulting opcode(s) in (DE) and returns the ; 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. ; to where we should write the next upcode.
; Sets Z if parse was successful, unset if there was an error or EOF.
parseLine: parseLine:
push bc push bc


@@ -51,9 +52,14 @@ parseLine:
call copy call copy
pop hl pop hl
call JUMP_ADDDE call JUMP_ADDDE
jr .success
.success:
ld ixl, a
xor a ; ensure Z
jr .end jr .end
.error: .error:
xor a
xor ixl
call JUMP_UNSETZ
.end: .end:
pop bc pop bc
ret ret


Ładowanie…
Anuluj
Zapisz