Browse Source

zasm: allow zasm to omit its 3rd argument

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

fixes #90
pull/94/head
Virgil Dupras 4 years ago
parent
commit
0f2b3aca24
3 changed files with 59 additions and 5 deletions
  1. +4
    -4
      apps/lib/util.asm
  2. +0
    -1
      emul/shell/user.h
  3. +55
    -0
      tests/unit/test_lib_util.asm

+ 4
- 4
apps/lib/util.asm View File

@@ -20,10 +20,10 @@ toWS:
; Set Z if non-WS found, unset if end-of-string.
rdWS:
ld a, (hl)
call isWS
jr nz, .ok
cp 0x01 ; if a is null, carries and unsets z
ret c
call isWS
jr nz, .ok
inc hl
jr rdWS
.ok:
@@ -97,8 +97,8 @@ strlen:
ld c, a
cpir ; advances HL to the char after the null
.found:
; 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,
; 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,
; we stay in the 8-bit realm, so C only.
add hl, bc
sub c


+ 0
- 1
emul/shell/user.h View File

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

; *** JUMP TABLE ***


+ 55
- 0
tests/unit/test_lib_util.asm 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:

Loading…
Cancel
Save