jp test .inc "core.asm" .inc "str.asm" .inc "lib/util.asm" .inc "lib/ari.asm" .inc "lib/parse.asm" .equ EXPR_PARSE parseLiteral .inc "lib/expr.asm" .inc "basic/parse.asm" test: ld sp, 0xffff call testParseThruth ; success xor a halt testParseThruth: ld hl, .t1 call .true ld hl, .t2 call .true ld hl, .t3 call .true ld hl, .t4 call .true ld hl, .t5 call .true ld hl, .t6 call .true ld hl, .t7 call .true ld hl, .t8 call .true ld hl, .f1 call .false ld hl, .f2 call .false ld hl, .f3 call .false ld hl, .f4 call .false ld hl, .f5 call .false ld hl, .f6 call .false ld hl, .e1 call .error ret .true: call parseTruth jp nz, fail or a jp z, fail jp nexttest .false: call parseTruth jp nz, fail or a jp nz, fail jp nexttest .error: call parseTruth jp z, fail jp nexttest .t1: .db "42", 0 .t2: .db "42+4=50-4", 0 .t3: .db "1<2", 0 .t4: .db "2>1", 0 .t5: .db "2>=1", 0 .t6: .db "2>=2", 0 .t7: .db "1<=2", 0 .t8: .db "2<=2", 0 .f1: .db "42-42", 0 .f2: .db "42+4=33+2", 0 .f3: .db "2<2", 0 .f4: .db "1>2", 0 .f5: .db "1>=2", 0 .f6: .db "2<=1", 0 .e1: .db "foo", 0 testNum: .db 1 nexttest: ld a, (testNum) inc a ld (testNum), a ret fail: ld a, (testNum) halt ; used as RAM sandbox: