zasm: allow zasm to omit its 3rd argument

A bug in rdWS made zasm error out when omiting its 3rd argument.

fixes #90
This commit is contained in:
Virgil Dupras 2020-02-18 15:46:55 -05:00
parent 9515d63d47
commit 0f2b3aca24
3 changed files with 59 additions and 5 deletions

View File

@ -20,10 +20,10 @@ toWS:
; Set Z if non-WS found, unset if end-of-string. ; Set Z if non-WS found, unset if end-of-string.
rdWS: rdWS:
ld a, (hl) ld a, (hl)
call isWS
jr nz, .ok
cp 0x01 ; if a is null, carries and unsets z cp 0x01 ; if a is null, carries and unsets z
ret c ret c
call isWS
jr nz, .ok
inc hl inc hl
jr rdWS jr rdWS
.ok: .ok:
@ -97,8 +97,8 @@ strlen:
ld c, a ld c, a
cpir ; advances HL to the char after the null cpir ; advances HL to the char after the null
.found: .found:
; How many char do we have? We have strlen=(NEG BC)-1, since BC started ; How many char do we have? We have strlen=(NEG BC)-1, since BC started
; at 0 and decreased at each CPIR loop. In this routine, ; at 0 and decreased at each CPIR loop. In this routine,
; we stay in the 8-bit realm, so C only. ; we stay in the 8-bit realm, so C only.
add hl, bc add hl, bc
sub c sub c

View File

@ -1,4 +1,3 @@
.equ SHELL_RAMSTART 0x4100
.equ USER_CODE 0x4200 ; in sync with glue.asm .equ USER_CODE 0x4200 ; in sync with glue.asm
; *** JUMP TABLE *** ; *** JUMP TABLE ***

View File

@ -0,0 +1,55 @@
jp test
.inc "ascii.h"
.inc "core.asm"
.equ STDIO_RAMSTART RAMSTART
.inc "stdio.asm"
.inc "common.asm"
.inc "lib/ari.asm"
.inc "lib/fmt.asm"
.inc "lib/util.asm"
test:
ld sp, 0xffff
call testRdWS
; success
xor a
halt
testRdWS:
ld hl, .allGood
ld ix, .testGood
call testList
ld hl, .allBad
ld ix, .testBad
jp testList
.testGood:
call rdWS
jp assertZ
.testBad:
call rdWS
jp assertNZ
; Strings ending with a non-WS, and thus yielding Z
.g1:
.db " X", 0
.g2:
.db "X", 0
.allGood:
.dw .g1, .g2, 0
; Strings ending with a WS, and thus yielding NZ
.b1:
.db 0
.b2:
.db " ", 0
.allBad:
.dw .b1, .b2, 0
RAMSTART: